Le Campus 8e édition
Linux Installation, configuration et applications
Michael Kofler
Linux Livre Page I Mardi, 23. septembre 2008 1:05 13
Linux Installation, configuration et administration des systèmes Linux
Linux Livre Page II Mardi, 23. septembre 2008 1:05 13
Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et fiable. Cependant, Pearson Education France n’assume de responsabilités, ni pour son utilisation, ni pour les contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient résulter de cette utilisation. Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques. Ils ne sont en aucun cas destinés à une utilisation commerciale ou professionnelle. Pearson Education France ne pourra en aucun cas être tenu pour responsable des préjudices ou dommages de quelque nature que ce soit pouvant résulter de l’utilisation de ces exemples ou programmes. Tous les noms de produits ou autres marques cités dans ce livre sont des marques déposées par leurs propriétaires respectifs. Publié par Pearson Education France 47 bis, rue des Vinaigriers 75010 PARIS Tél. : 01 72 74 90 00 www.pearson.fr
Mise en pages : TyPAO ISBN : 978-2-7440-4088-7 Copyright© 2009 Pearson Education France Tous droits réservés
Titre original : Linux - Installation, Konfiguration, Anwendung Traduit et adapté de l’allemand par Isabelle Hurbain-Palatin et Sandrine Burriel ISBN original : 978-3-8273-2478-8 Copyright © 2007 by Addison-Wesley Verlag All rights reserved
Addison-Wesley Verlag Pearson Education Deutschland GmvH Martin-kollar-Straße 10-12, D-81829 München/Germany
Aucune représentation ou reproduction, même partielle, autre que celles prévues à l’article L. 122-5 2˚ et 3˚ a) du code de la propriété intellectuelle ne peut être faite sans l’autorisation expresse de Pearson Education France ou, le cas échéant, sans le respect des modalités prévues à l’article L. 122-10 dudit code. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.
Linux Livre Page III Mardi, 23. septembre 2008 1:05 13
Linux Installation, configuration et administration des systèmes Linux
Michael Kofler
Linux Livre Page IV Mardi, 23. septembre 2008 1:05 13
Linux Livre Page V Mardi, 23. septembre 2008 1:05 13
Table des matières
Préface ...................................................................................................................... Conception ..................................................................................................... Ce que vous ne trouverez pas dans cet ouvrage.............................................
1 2 3
Styles utilisés dans ce livre ............................................................................
3
PARTIE 1 – PREMIERS PAS ET INSTALLATION 1 Qu’est-ce que Linux ? ........................................................................................... 1.1
1.2
Introduction.................................................................................................... Noyau ............................................................................................................
5 5 6
Caractéristiques du noyau..............................................................................
6
Prise en charge du matériel............................................................................ Quelques distributions Linux courantes ........................................................
7 8 11
Distributions minimales.................................................................................
14
Problème du choix .........................................................................................
Distributions ...................................................................................................
1.3 1.4
Fantasmes et réalité ........................................................................................ Licences libres ................................................................................................ Conflits de licences entre les logiciels libres et propriétaires ........................
1.5 1.6
Histoire de Linux ............................................................................................ Brevets logiciels et autres sujets d’énervement................................................. Brevets logiciels ............................................................................................
14 14 17 19 20 21 21
Multimédia et DRM ......................................................................................
22
Procès SCO....................................................................................................
23
2 Installation .............................................................................................................. 2.1
Prérequis ........................................................................................................ 32 ou 64 bits ? ...............................................................................................
2.2 2.3
Démarrage de l’installation de Linux .............................................................. Bases du partitionnement du disque................................................................ Systèmes de fichiers ......................................................................................
25 25 26 27 28 30
Nom des partitions.........................................................................................
30
Linux Livre Page VI Mardi, 23. septembre 2008 1:05 13
VI
LINUX
2.4
Partitionnement du disque dur........................................................................
Réduction de la partition Windows ............................................................... Nombre et taille des partitions....................................................................... Quel système de fichiers utiliser ? ................................................................. 2.5
Choix des paquetages......................................................................................
Recommandations pour l’installation ............................................................ 2.6 2.7 2.8 2.9
2.10
Configuration de base ..................................................................................... Installation du chargeur d’amorçage............................................................... Installations non standard............................................................................... Problèmes lors de l’installation ....................................................................... Problèmes de matériel ................................................................................... Problèmes liés au clavier ............................................................................... Problèmes après l’installation ......................................................................... L’ordinateur ne démarre plus......................................................................... Le système graphique ne démarre pas ........................................................... Le clavier ne fonctionne pas .......................................................................... Les menus sont dans la mauvaise langue ......................................................
3 Premiers pas sous Linux ...................................................................................... 3.1
Démarrer et arrêter Linux .............................................................................. Déconnexion ..................................................................................................
Éteindre Linux ............................................................................................... 3.2
Clavier, souris et presse-papiers ......................................................................
Raccourcis clavier importants ....................................................................... Utilisation de la souris ................................................................................... 3.3
Documentation sous Linux..............................................................................
4 Gnome ...................................................................................................................... 4.1 4.2
Conception du bureau..................................................................................... Nautilus .......................................................................................................... Graver des CD et des DVD ...........................................................................
Accéder aux répertoires réseau...................................................................... 4.3 4.4
Programmes Gnome ....................................................................................... Trucs et astuces...............................................................................................
5 KDE ........................................................................................................................... 5.1 5.2 5.3
Conception du bureau..................................................................................... Dolphin........................................................................................................... Konqueror ...................................................................................................... Utilisation en tant que gestionnaire de fichiers .............................................
Accès aux répertoires réseau ......................................................................... Adresses spéciales ......................................................................................... 5.4 5.5
Applications KDE ........................................................................................... Trucs et astuces...............................................................................................
31 32 33 35 36 37 37 40 40 41 41 42 42 42 43 43 44 45 45 46 47 47 47 48 48 51 52 56 60 60 62 63 67 68 71 72 72 74 74 75 77
Linux Livre Page VII Mardi, 23. septembre 2008 1:05 13
VII
TABLE DES MATIÈRES
PARTIE 2 – LA BUREAUTIQUE SOUS LINUX 6 Navigateurs Internet (Firefox, Konqueror) .................................................... Firefox ............................................................................................................ Fonctionnalités de base..................................................................................
79 79 80
Configuration .................................................................................................
83
Extensions (fichiers XPI)............................................................................... Konqueror ...................................................................................................... Navigateurs en mode texte............................................................................... Plugins (Adobe Reader, Flash, Java)................................................................ Adobe Reader ................................................................................................
85 86 87 88 89
Adobe/Macromedia Flash .............................................................................
90
Sun Java .........................................................................................................
92
7 E-mail (Thunderbird, Evolution, Kontact) ...................................................... Rouages internes de la gestion des e-mails ...................................................
95 95 98
Courrier local .................................................................................................
98
6.1
6.2 6.3 6.4
7.1
7.2
7.3
7.4
Bases ..............................................................................................................
Formats de boîtes aux lettres et conversion ...................................................
99
Signature et chiffrement d’e-mails ................................................................ Configuration d’un compte ............................................................................
100 103 103
Fonctionnalités de base..................................................................................
104
Extensions et fonctionnalités additionnelles .................................................
107
Importer ou synchroniser des e-mails Windows............................................ Configuration d’un compte ............................................................................
109 110 111
Fonctionnalités de base..................................................................................
111
Fonctionnalités supplémentaires ...................................................................
114 115
Thunderbird...................................................................................................
Evolution ........................................................................................................
Kontact...........................................................................................................
8 OpenOffice .............................................................................................................. 8.1
Introduction.................................................................................................... OpenOffice face à Microsoft Office ..............................................................
8.2 8.3 8.4
Traitement de texte (OpenOffice Writer) ......................................................... Tableur (OpenOffice Calc) .............................................................................. Présentation (OpenOffice Impress)..................................................................
119 119 121 122 126 127
Linux Livre Page VIII Mardi, 23. septembre 2008 1:05 13
VIII
LINUX
Bases de données (OpenOffice Base)................................................................ Programmation de macros .............................................................................. Alternatives à OpenOffice ...............................................................................
130 132 133
9 Appareils photo numériques, numérisation, gestion des photos ..........
135 136 137 139 143 145 146 148
8.5 8.6 8.7
9.1 9.2 9.3 9.4 9.5 9.6 9.7
Appareils photo numériques ........................................................................... Numérisation .................................................................................................. gThumb.......................................................................................................... digiKam.......................................................................................................... F-Spot............................................................................................................. KPhotoAlbum................................................................................................. XSane .............................................................................................................
10 Gimp ......................................................................................................................... 10.1 10.2
Formats de fichiers.......................................................................................... Premiers pas ................................................................................................... Impression .....................................................................................................
10.3
Règles de survie ..............................................................................................
11 Audio et vidéo ....................................................................................................... 11.1
Bases .............................................................................................................. Glossaire .......................................................................................................
Formats audio et vidéo .................................................................................. Lire des CD audio.......................................................................................... Lecture de DVD vidéo ................................................................................... Situation juridique, paquets complémentaires............................................... 11.2
Lecteurs audio et vidéo ...................................................................................
Lecteurs en ligne de commande .................................................................... Amarok (lecteur audio) ................................................................................. Banshee (lecteur audio) ................................................................................. KAudioCreator (extracteur de CD) ............................................................... MPlayer (lecteur audio, vidéo et télévision) ................................................. Noatun (lecteur audio et vidéo) ..................................................................... RealPlayer et Helix Player (lecteur audio et vidéo) ...................................... Rhythmbox (lecteur audio) ............................................................................ Sound Juicer (lecteur et extracteur de CD).................................................... Totem (lecteur audio et vidéo) ....................................................................... xine (lecteur audio, vidéo et TV) ................................................................... xmms ............................................................................................................. 11.3
Regarder la télévision avec DVB-T ..................................................................
149 151 152 154 155 157 158 158 160 162 163 163 164 164 164 165 165 165 166 166 167 168 168 169 169 170
Linux Livre Page IX Mardi, 23. septembre 2008 1:05 13
IX
TABLE DES MATIÈRES
PARTIE 3 – OUTILS UNIX ET LINUX 12 La console ............................................................................................................... 12.1 12.2 12.3
Consoles texte et fenêtres de console................................................................ Afficher et modifier des fichiers texte............................................................... Éditeurs de texte ............................................................................................ Aide du système ..............................................................................................
13 Gestion des fichiers .............................................................................................. 13.1
Interaction avec des fichiers et des répertoires ................................................. Répertoires.....................................................................................................
Commandes élémentaires de gestion des fichiers et des répertoires ............. Déterminer l’espace nécessaire aux fichiers et répertoires ............................ Caractères joker ............................................................................................. Problèmes liés à l’utilisation des caractères joker ......................................... Fichiers cachés .............................................................................................. 13.2 13.3
Liens............................................................................................................... Chercher des fichiers....................................................................................... which et whereis ............................................................................................
locate ............................................................................................................. find et grep ..................................................................................................... Beagle ............................................................................................................ Tracker ........................................................................................................... Google Desktop ............................................................................................. 13.4
Archiver et sécuriser des données....................................................................
Compresser et archiver des données (gzip, tar, zip) ...................................... Sauvegardes (rsync) ....................................................................................... 13.5
Graver des CD et des DVD..............................................................................
Créer et tester des images ISO ...................................................................... Graver des CD ............................................................................................... Graver des DVD ............................................................................................ 13.6
Droits d’accès, utilisateurs et groupes propriétaires.........................................
Bits spéciaux.................................................................................................. Changer les droits d’accès d’un fichier ou d’un répertoire............................ 13.7 13.8
13.9 13.10
Propriétaire, groupe et bits d’accès de nouveaux fichiers ................................. Listes de contrôle d’accès et attributs étendus ................................................. Listes de contrôle d’accès.............................................................................. Attributs étendus ............................................................................................ Structure des répertoires sous Linux ............................................................... Fichiers de périphériques................................................................................
173 173 176 176 178 181 181 181 182 184 185 186 187 188 189 189 190 190 192 193 193 194 194 196 197 198 199 200 202 203 204 205 206 207 208 209 211
Linux Livre Page X Mardi, 23. septembre 2008 1:05 13
X
LINUX
14 Gestion des processus ......................................................................................... 14.1
Démarrer, gérer et arrêter des processus .........................................................
Démarrer des programmes ............................................................................ Processus en avant-plan et en arrière-fond .................................................... Liste de tous les processus courants (ps, top) ................................................ Hiérarchie des processus ............................................................................... Forcer la fin d’un processus (kill, xkill) ......................................................... Partage du temps de calcul (nice, renice) ...................................................... Redirections et tubes ..................................................................................... 14.2 14.3
Lancer des processus sous une autre identité (su) ............................................ Lancer des processus sous une autre identité (sudo)......................................... sudo sous Ubuntu ..........................................................................................
sudo sous SUSE............................................................................................. 14.4
Processus du système (démons) .......................................................................
Threads du noyau .......................................................................................... Démarrer et arrêter des démons..................................................................... 14.6
Démarrer automatiquement des processus (crontab)........................................
Modifier la configuration ...............................................................................
15 Convertisseurs graphiques, audio et texte .................................................... 15.1 15.2 15.3 15.4 15.5
Convertisseurs graphiques .............................................................................. Conversion audio et vidéo ............................................................................... Conversion de texte......................................................................................... Conversion de noms de fichiers ....................................................................... Conversion de documents................................................................................
16 Outils réseau .......................................................................................................... 16.1 16.2
Connaître l’état du réseau............................................................................... Travailler sur un autre ordinateur................................................................... Utiliser SSH sans mot de passe .....................................................................
16.3
Transférer des fichiers..................................................................................... FTP ................................................................................................................ SFTP (Secure FTP) ....................................................................................... wget................................................................................................................ rsync .............................................................................................................. BitTorrent ......................................................................................................
17 Vim ............................................................................................................................ 17.1
Rapide introduction ........................................................................................ Aide ...............................................................................................................
17.2 17.3
Déplacement du curseur.................................................................................. Modifier du texte ............................................................................................
213 213 213 214 214 216 217 218 218 219 220 222 222 223 224 225 227 228 231 231 232 234 235 235 237 237 240 242 243 243 246 246 247 248 251 252 253 254 255
Linux Livre Page XI Mardi, 23. septembre 2008 1:05 13
XI
TABLE DES MATIÈRES
Chercher et remplacer .................................................................................... Éditer plusieurs fichiers en même temps.......................................................... Trucs et astuces...............................................................................................
258 259 260
18 Emacs et XEmacs ...................................................................................................
263 263 264 265 266 266 268 269 270 270 271 272 273 274 275 276 277 278 279 279 281
17.4 17.5 17.6
18.1
Rapide introduction ........................................................................................ Charger et enregistrer des fichiers, quitter le programme .............................
Commandes élémentaires .............................................................................. Système d’aide .............................................................................................. 18.2 18.3 18.4 18.5
Bases .............................................................................................................. Déplacement du curseur.................................................................................. Marquer, supprimer et coller du texte ............................................................. Éditer du texte ................................................................................................ Tabulations.....................................................................................................
Indenter manuellement du texte .................................................................... 18.6 18.7
Texte continu .................................................................................................. Chercher et remplacer .................................................................................... Recherche avec des expressions rationnelles ................................................
Chercher et remplacer ................................................................................... 18.8 18.9 18.10
Tampon et fenêtre ........................................................................................... Modes d’édition spécifiques............................................................................. Unicode .......................................................................................................... GNU Emacs et Unicode ................................................................................
XEmacs et Unicode ....................................................................................... Saisie de caractères spéciaux étrangers .........................................................
19 bash ........................................................................................................................... 19.1
Qu’est-ce qu’un shell ?.................................................................................... Passer à un autre shell....................................................................................
19.2 19.3
Configuration de base ..................................................................................... Saisie de commandes....................................................................................... Complètement des commandes et noms de fichiers ......................................
Changer de shell par défaut ...........................................................................
Raccourcis clavier importants ....................................................................... Alias............................................................................................................... 19.4
Redirections....................................................................................................
Tubes ............................................................................................................. Multiplication des sorties avec tee................................................................. Résumé de la syntaxe ....................................................................................
283 283 284 284 284 285 286 287 288 289 290 290 291
Linux Livre Page XII Mardi, 23. septembre 2008 1:05 13
XII
LINUX
19.5 19.6 19.7
Lancer des commandes ................................................................................... Mécanismes de substitution............................................................................. Variables......................................................................................................... Variables locales et globales (variables d’environnement) ............................
Variables importantes .................................................................................... 19.8
Programmation shell.......................................................................................
291 293 297 298 299 300
PARTIE 4 – CONFIGURATION ET ADMINISTRATION DU SYSTÈME 20 Configuration de base ......................................................................................... 20.1 20.2
Introduction.................................................................................................... Configuration de la console en mode texte ....................................................... Configuration de kbd (clavier, police) ...........................................................
Configuration de la console (clavier, police) ................................................. Configuration de gpm (souris) ....................................................................... 20.3 20.4
Date et heure................................................................................................... Utilisateurs et groupes, mots de passe.............................................................. Administration des utilisateurs ......................................................................
Administration des groupes ........................................................................... Mots de passe ................................................................................................ Collaboration entre fichiers de configuration ................................................ PAM (Pluggable Authentication Modules ou modules d’authentification enfichables) .................................................................................................... Administration des utilisateurs sur un réseau ................................................ 20.5
Configuration des langues, internationalisation, Unicode................................. Bases sur les jeux de caractères .....................................................................
Configurer la localisation et le jeu de caractères ........................................... 20.6
Référence relative au matériel .........................................................................
Processeur et mémoire................................................................................... Gestion de l’énergie (ACPI, APM)................................................................ Interfaces et bus système ............................................................................... Système Hotplug (udev, D-Bus et HAL) ....................................................... Interfaces réseau ............................................................................................ Interface graphique (X) ................................................................................. Système audio (ALSA) ................................................................................. Supports de données (disques durs, CD-ROM, DVD, etc.) .......................... Clavier et souris ............................................................................................. Imprimante, appareil photo numérique, scanner ........................................... 20.7
Fichiers journaux et messages du noyau..........................................................
301 301 304 305 306 306 307 308 310 312 313 316 316 318 318 319 321 324 325 326 327 329 330 331 331 333 334 334 334
Linux Livre Page XIII Mardi, 23. septembre 2008 1:05 13
XIII
TABLE DES MATIÈRES
21 Gestion des logiciels et des paquetages ........................................................ 21.1
Gestionnaire de paquetages RPM....................................................................
Notions de base ............................................................................................. Syntaxe et exemples ...................................................................................... 21.2
Yum (gestion de paquetages RPM) ..................................................................
Configuration ................................................................................................. Exemples ....................................................................................................... Téléchargements et mises à jour automatiques ............................................. 21.3 21.4 21.5
Yum Extender (Yumex)................................................................................... Gestion de paquetages sous Debian (dpkg)....................................................... Syntaxe et exemples ...................................................................................... APT................................................................................................................
Configuration ................................................................................................. Exemples ....................................................................................................... Téléchargements et mises à jour automatiques ............................................. 21.6
Synaptic..........................................................................................................
Problèmes ...................................................................................................... 22.7 21.8
Aptitude.......................................................................................................... Conversion entre deux formats de paquetages .................................................
22 Système XWindow ................................................................................................ 22.1
Glossaire......................................................................................................... Glossaire matériel ..........................................................................................
22.2 22.3
Problème des pilotes........................................................................................ Démarrer et arrêter X..................................................................................... Fichiers de journalisation de X ......................................................................
Déterminer la version de X............................................................................ 22.4
Configuration de base ..................................................................................... Construction du fichier de configuration xorg.conf .......................................
Section Monitor (écran)................................................................................. Section Device (carte graphique)................................................................... Section Screen (résolution, nombre de couleurs) .......................................... Section ServerLayout .................................................................................... Section Files .................................................................................................. Section Module .............................................................................................. Section ServerFlags....................................................................................... Définir ses propres modes graphiques ........................................................... XVideo...........................................................................................................
339 340 340 342 344 345 346 347 347 348 348 349 350 351 352 352 353 354 355 357 357 358 360 362 363 364 364 365 366 367 368 369 370 370 371 371 372
Linux Livre Page XIV Mardi, 23. septembre 2008 1:05 13
XIV
LINUX
22.5
Pilotes ATI/AMD.............................................................................................
Pilote radeon ................................................................................................. Pilote fglrx ..................................................................................................... Pilote radeonhd ............................................................................................. 22.6 22.7
Pilotes Intel..................................................................................................... Pilotes NVIDIA............................................................................................... Pilote nv .........................................................................................................
Pilote nvidia ................................................................................................... 22.8 22.9
Pilotes VESA, Framebuffer et VGA................................................................. Clavier............................................................................................................ Configuration de base ....................................................................................
VerrNum et VerrMaj ...................................................................................... Saisie de caractères étrangers ........................................................................ 22.10
Souris et pavé tactile .......................................................................................
Pavé tactile..................................................................................................... 22.11 22.12 22.13
Portable et vidéoprojecteur ............................................................................. Graphismes 3D ............................................................................................... Bureau 3D ...................................................................................................... AIGLX...........................................................................................................
Compiz Fusion .............................................................................................. 22.14
Polices.............................................................................................................
Configuration sans serveur de fontes ............................................................. Installation de polices TrueType et Type1 supplémentaires .......................... Anticrénelage................................................................................................. 22.15
Outils X ..........................................................................................................
23 Administration du système de fichiers ........................................................... 23.1 23.2 23.3
Fonctionnement général.................................................................................. Noms de périphériques pour les disques durs et les autres supports de données .................................................................... Partitionnement du disque dur........................................................................ Règles de base ...............................................................................................
Problèmes de compatibilité ........................................................................... fdisk ............................................................................................................... parted............................................................................................................. Interfaces graphiques (gparted et qtparted) .................................................. 23.4 23.5
Types de systèmes de fichiers........................................................................... Gestion du système de fichiers (mount et /etc/fstab) ............................................. Déterminer l’état courant d’un système de fichiers .......................................
Monter et démonter des systèmes de fichiers manuellement ........................
372 373 373 374 374 375 375 375 376 377 377 379 380 382 383 383 387 389 392 393 394 397 398 399 400 401 402 404 408 408 409 410 413 415 416 420 421 422
Linux Livre Page XV Mardi, 23. septembre 2008 1:05 13
XV
TABLE DES MATIÈRES
Monter automatiquement des systèmes de fichiers ....................................... Syntaxe de /etc/fstab ...................................................................................... 23.6
Les systèmes de fichiers Linux.........................................................................
Généralités ..................................................................................................... Systèmes de fichiers ext (ext2, ext3 et ext4) .................................................. Système de fichiers reiserfs ........................................................................... Système de fichiers xfs .................................................................................. 23.7
Systèmes de fichiers Windows .........................................................................
Système de fichiers VFAT ............................................................................. Système de fichier NTFS (pilote ntfs) ........................................................... Système de fichiers NTFS (ntfsmount) .......................................................... Système de fichiers NTFS (ntfs-3g) .............................................................. Systèmes de fichiers NTFS (Captive, Paragon)............................................. 23.8
CD, DVD et disquettes ....................................................................................
CD et DVD de données ................................................................................. CD audio et DVD vidéo ................................................................................ Disquettes ...................................................................................................... 23.9 23.10
Supports de données externes (USB, Firewire, etc.) ......................................... Systèmes de fichiers réseau et virtuels ............................................................. Systèmes de fichiers réseau Unix (NFS) .......................................................
Répertoires réseau Windows (cifs, smbfs) ..................................................... 23.11 23.12
Partitions et fichiers d’échange........................................................................ LVM ............................................................................................................... Glossaire ........................................................................................................
Mettre en place un système LVM simple ...................................................... Redimensionner un système de fichiers ........................................................ 23.13
Optimiser les paramètres du disque dur..........................................................
hdparm........................................................................................................... SMART .........................................................................................................
24 Démarrage du système ....................................................................................... 24.1
GRUB.............................................................................................................
Détails du démarrage du système .................................................................. 24.2 24.3
GRUB – Utilisation ......................................................................................... GRUB – Configuration.................................................................................... Descriptions des disques durs et partitions....................................................
Paramètres globaux de menu.lst .................................................................... Éléments du menu dans menu.lst .................................................................. Tester la configuration de GRUB ..................................................................
423 423 426 426 428 433 434 435 437 437 438 439 440 441 441 443 443 443 447 447 448 450 451 452 453 454 455 455 456 459 459 459 461 463 464 464 466 468
Linux Livre Page XVI Mardi, 23. septembre 2008 1:05 13
XVI
LINUX
24.4
GRUB – Installation........................................................................................
Réinstallation de GRUB ................................................................................ Installation sur une disquette ......................................................................... Installation sur un support USB .................................................................... 24.5 24.6
GRUB – Résolution de problèmes ................................................................... Options d’amorçage du noyau......................................................................... Options d’amorçage importantes...................................................................
Options SMP ................................................................................................. Options APM et ACPI ................................................................................... 24.7
InitV...............................................................................................................
Aperçu d’InitV .............................................................................................. Niveau d’exécution ........................................................................................ Modifier le niveau d’exécution ...................................................................... inittab............................................................................................................. Initialisation du système ................................................................................ Scripts InitV .................................................................................................. Processus InitV sous Debian ......................................................................... Processus InitV sous Red Hat et Fedora ....................................................... Processus InitV sous SUSE ...........................................................................
25 Noyau et modules ................................................................................................. 25.1
25.2
25.3
Modules du noyau........................................................................................... Commandes de gestion des modules ............................................................. Configuration des modules ............................................................................ Dépendances entre modules (modules.dep, modules*.map) ......................... Paramètres des modules et ordre des périphériques ...................................... Syntaxe de modprobe.conf............................................................................. Compiler un module supplémentaire ............................................................ Configurer et compiler son propre noyau ........................................................ Installer les paquetages nécessaires ............................................................... Configurer le noyau ....................................................................................... Compiler et installer le noyau........................................................................ Créer un fichier initrd .....................................................................................
468 468 469 470 471 472 472 473 473 474 474 474 475 475 476 476 477 478 478 481 481 482 483 484 485 485 487 487 488 489 490 490
PARTIE 5 – CONFIGURATION RÉSEAU ET SERVEUR 26 Configurer l’accès réseau (réseau local, Wi-Fi) ............................................. 26.1
Bases réseau.................................................................................................... Glossaire ........................................................................................................
Adresses IP .................................................................................................... IPv6 ...............................................................................................................
493 493 493 496 499
Linux Livre Page XVII Mardi, 23. septembre 2008 1:05 13
XVII
TABLE DES MATIÈRES
26.2 26.3
Activer manuellement un contrôleur LAN....................................................... Fichiers de configuration du réseau local......................................................... Configuration de base ....................................................................................
Correspondance entre contrôleur et interface réseau..................................... Configuration et initialisation des interfaces réseau (Debian et Ubuntu) ...... Configuration et initialisation des interfaces réseau (Red Hat, Fedora) ........ Configuration et initialisation des interfaces réseau (SUSE) ........................ 26.4
Bases sur le Wi-Fi ...........................................................................................
Standards, glossaire ....................................................................................... Paramètres de connexion Wi-Fi ..................................................................... Sécurité d’un réseau Wi-Fi ............................................................................ Prise en charge du Wi-Fi par Linux ............................................................... 26.5 26.6 26.7 26.8
Activer manuellement le contrôleur Wi-Fi....................................................... Fichiers de configuration Wi-Fi ....................................................................... NetworkManager............................................................................................ Zeroconf et Avahi ............................................................................................
27 Accès à Internet ..................................................................................................... 27.1
Outils de configuration.................................................................................... Configuration d’un modèle analogique .........................................................
Configuration RNIS ....................................................................................... Configuration ADSL...................................................................................... 27.2
27.3
Configuration manuelle d’un modem .............................................................. Winmodems ...................................................................................................
Configuration manuelle de pppd ................................................................... Configuration matérielle de l’ADSL ................................................................ Configuration manuelle de PPPoE ................................................................ Configuration manuelle de PPTP ..................................................................
28 Passerelle Internet (mascarade et DHCP) ....................................................... 28.1
Introduction.................................................................................................... Topologie du réseau utilisé comme exemple .................................................
Installation d’une passerelle Internet ............................................................. Comparaison entre un routeur matériel et une passerelle Linux ................... 28.2
Mascarade (NAT)............................................................................................
Notions de base ............................................................................................. Mascarade avec iptables ................................................................................ Activation et désactivation automatique de la mascarade ............................. Problèmes ...................................................................................................... Configuration des clients ...............................................................................
500 505 505 509 510 511 512 512 513 515 516 518 520 524 526 528 531 531 531 533 533 534 534 535 537 537 538 541 541 542 543 544 545 545 546 547 547 548
Linux Livre Page XVIII Mardi, 23. septembre 2008 1:05 13
XVIII
LINUX
28.3
Serveur DHCP et serveur de noms intégré (dnsmasq) ......................................... Introduction à DHCP .....................................................................................
Paramétrage du serveur de noms ................................................................... Configuration de dnsmasq ............................................................................. Configuration des clients ............................................................................... 28.4
Serveur DHCP (dhcpcd) ..................................................................................
29 Sécurité du réseau ................................................................................................ 29.1 29.2 29.3
Types de sécurité............................................................................................. Bases de l’analyse réseau................................................................................. Sécuriser les services réseau ............................................................................ Bases de xinetd ..............................................................................................
hosts.allow et hosts.deny ............................................................................... 29.4
Introduction aux pare-feu ...............................................................................
Pare-feu pour un ordinateur personnel .......................................................... Pare-feu pour le réseau local ......................................................................... 29.5
Pare-feu avec iptables ...................................................................................... Introduction ...................................................................................................
Tables et chaînes de règles iptables ............................................................... Remettre à zéro le pare-feu............................................................................ Sécuriser l’accès à Internet ............................................................................ Sécuriser un client sans-fil sans VPN ............................................................ Sécuriser un client sans-fil avec PPTP-VPN ................................................. Sécuriser une passerelle Internet ................................................................... Journalisation................................................................................................. Exécuter automatiquement les règles du filtre .............................................. 29.6
Filtrage web (Squid) ....................................................................................... Configuration et démarrage ...........................................................................
Configuration en tant que serveur mandataire-cache transparent...................... Règles de contrôle d’accès ............................................................................ Filtre web avec DansGuardian ......................................................................
30 Serveur de réseau local (CUPS, NFS et Samba) ............................................ 30.1
CUPS – Les fondamentaux..............................................................................
Processus d’impression ................................................................................. Configuration de base de CUPS .................................................................... Administration de CUPS dans un navigateur web ........................................ Commandes d’administration de CUPS ........................................................ HP Linux Imaging and Printing (HPLIP)......................................................
548 548 549 550 553 554 557 557 559 561 561 563 564 564 565 567 567 568 569 570 571 572 573 575 576 577 577 580 582 582 587 587 588 589 592 593 594
Linux Livre Page XIX Mardi, 23. septembre 2008 1:05 13
XIX
TABLE DES MATIÈRES
30.2
CUPS – Configuration d’une imprimante........................................................
Configuration d’une imprimante locale ......................................................... Configuration d’une imprimante réseau (côté serveur) ................................. Configuration d’une imprimante réseau (côté client) .................................... 30.3
NFS ................................................................................................................
Installation et configuration ........................................................................... NFS4 .............................................................................................................. 30.4
Samba – Les fondamentaux ............................................................................
Protocole et services ...................................................................................... Droits d’accès et systèmes de sécurité........................................................... 30.5 30.6 30.7
Client Samba .................................................................................................. Samba – Configuration de base et mise en service............................................ Samba – Partager des répertoires.................................................................... Sécurité au niveau des partages .....................................................................
Sécurité au niveau utilisateur ......................................................................... 30.8
Samba – Imprimantes réseau ..........................................................................
595 596 597 598 600 601 602 603 603 604 606 607 610 610 612 614
PARTIE 6 – UTILISATION DE PLUSIEURS SYSTÈMES SIMULTANÉMENT 31 Lancer des programmes Windows (Wine, CrossOver) .............................. 31.1 31.2
Wine............................................................................................................... Dérivés commerciaux de Wine ........................................................................ CrossOver ......................................................................................................
Cedega ...........................................................................................................
32 Virtualisation avec VMware, VirtualBox, QEMU et KVM ........................... 32.1 32.2 32.3 32.4
Notions de base ............................................................................................... VMware Workstation, Player et Server ........................................................... VirtualBox ...................................................................................................... QEMU et KVM ..............................................................................................
33 Xen ............................................................................................................................ 33.1 33.2
Introduction.................................................................................................... Détails techniques ........................................................................................... Variantes de la virtualisation .........................................................................
Architecture et terminologie .......................................................................... Restrictions .................................................................................................... Gestion du matériel ....................................................................................... Accès au réseau .............................................................................................
617 618 621 621 622 623 624 628 629 632 637 637 638 638 638 639 640 640
Linux Livre Page XX Mardi, 23. septembre 2008 1:05 13
XX
LINUX
Accès au disque dur ....................................................................................... Sortie graphique ............................................................................................
Syntaxe du fichier de configuration du domU .................................................. Administration de Xen....................................................................................
642 642 643 645 646 651 652 653 653 654 654 655
A Références thématiques ...................................................................................... Gestion des fichiers ....................................................................................... ACL (listes de contrôle d’accès) et EA (attributs étendus) ................................ Recherche de fichiers..................................................................................... Traitement de fichiers texte ........................................................................... Compresser et archiver des fichiers ............................................................... Graver des CD/DVD...................................................................................... Convertisseurs ............................................................................................... Gestion des programmes et des processus .................................................... Gestion des utilisateurs et des groupes .......................................................... Administration du système de fichiers .......................................................... Gestion de paquetages ................................................................................... Fonctions réseau ............................................................................................ Administration de l’imprimante .................................................................... Gestion du matériel ....................................................................................... Noyau et modules .......................................................................................... Démarrage et arrêt du système ...................................................................... Terminal et console texte ............................................................................... Aide en ligne ................................................................................................. Divers............................................................................................................. bash – Gestion des variables.......................................................................... bash – Programmation ................................................................................... bash – Commandes ........................................................................................
657 657 657 658 658 659 659 659 660 660 661 662 662 663 663 663 663 664 664 664 665 665 665
33.3 33.4 33.5 33.6
Gestion des fichiers image ............................................................................... Mettre en place le système de base Xen (dom0)................................................ Créer des systèmes invités (domU) .................................................................. Installation de Windows (HVM) ................................................................... Interaction avec le système domU démarré (SDL, VNC)......................................
Console Xen .................................................................................................. SDL ............................................................................................................... VNC............................................................................................................... 33.7 33.8
Annexes
Linux Livre Page XXI Mardi, 23. septembre 2008 1:05 13
XXI
TABLE DES MATIÈRES
B Sources d'information .......................................................................................... Debian ........................................................................................................... Fedora ............................................................................................................ Mandriva ........................................................................................................ openSUSE ..................................................................................................... Red Hat .......................................................................................................... SUSE ............................................................................................................. Ubuntu et ses variantes .................................................................................. Informations généralistes .............................................................................. Autour du logiciel libre .................................................................................
667 667 667 667 667 668 668 668 668 668
INDEX .......................................................................................................................
669
Linux Livre Page XXII Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 1 Mardi, 23. septembre 2008 1:05 13
Préface
Linux fait aujourd’hui partie, avec Microsoft Windows et Apple Mac OS X, des trois systèmes d’exploitation les plus populaires et les plus importants sur le marché des ordinateurs personnels. Il a pu conquérir une part considérable du marché des serveurs, gagne lentement mais sûrement en popularité sur le marché des ordinateurs de bureau et fait fonctionner de nombreux systèmes embarqués (des appareils complets ne ressemblant pas à des ordinateurs). Votre routeur ADSL ou Wi-Fi est probablement basé sur Linux. Le préjugé selon lequel Linux serait difficile à utiliser est aujourd’hui dépassé. Son utilisation est évidemment différente de celle de Windows, mais le saut conceptuel n’est pas plus important qu’entre Windows XP et Windows Vista, par exemple. De plus, la plupart des distributions Linux sont gratuites et prouvées plus sûres que Windows. Vous n’aurez ainsi aucun problème de virus ou de chevaux de Troie. Cet ouvrage
Si Linux est aussi simple à utiliser, pourquoi ce livre contient-il plus de 700 pages ? Il y a plusieurs raisons à cela : • Linux fait plus que remplacer Windows sur les ordinateurs de bureau. Il fournit d’innombrables fonctionnalités et applications supplémentaires, depuis l’automatisation des tâches quotidiennes à la configuration de serveurs réseau. Les concepts de navigation web, de courrier électronique et de suite bureautique vous sont sans doute familiers, mais ces thèmes plus complexes demandent un traitement plus fouillé. • Il n’existe pas un Linux, mais plusieurs distributions Linux. Pour simplifier, une distribution est un ensemble de programmes autour de Linux. Les plus connues regroupent Debian, Red Hat, SUSE, Mandriva et Ubuntu. Cette diversité a de nombreux avantages, mais aussi un inconvénient majeur : certains détails dépendent de la distribution. Ce livre essaie de suivre une approche aussi indépendante de la distribution que possible. Il est cependant impossible d’éviter de traiter de temps à autre des différentes variantes : ce qui fonctionne d’une manière sous SUSE peut fonctionner différemment sous Debian. • Pour finir, mon but est que vous utilisiez Linux, mais surtout que vous le compreniez. Cet ouvrage peut sembler difficile d’accès : vous n’y trouverez pas de captures d’écran légendées "Cliquez ici". L’objectif est plutôt d’expliquer les fondations de Linux et de vous rapprocher de la philosophie Unix/Linux. Si vous n’avez pas encore essayé Linux, il est temps de procéder à cette première expérience.
Linux Livre Page 2 Mardi, 23. septembre 2008 1:05 13
2
LINUX
Si vous le connaissez déjà, cet ouvrage répondra à de nombreuses questions et vous fera évoluer vers le statut d’utilisateur avancé. Lorsque vous l’aurez lu, vous saurez créer des règles de pare-feu avec iptables et mettre en place des machines virtuelles avec Xen. Vous serez à l’aise avec Linux au point de pouvoir lire et comprendre n’importe quel ouvrage professionnel sur Linux ou Unix, qu’il s’agisse d’un livre sur la configuration d’un serveur de courrier électronique ou sur l’administration de réseaux hétérogènes. En résumé, ce livre vous offre les fondations de vos connaissances sur Linux. J’utilise moi-même Linux depuis environ 15 ans et je ne l’ai jamais regretté. Permettez-moi de vous transmettre mon enthousiasme pour Linux ! Michael Kofler, juillet 2007 Remerciements
Je tiens à remercier : • Linus Torvalds, qui a apporté sa pierre (son noyau ?) à l’édifice ; • les milliers de développeurs qui ont fait de Linux un système complet formidable ; • Margot Neuschmied, pour sa très belle image de couverture de l’édition allemande ; • l’éditeur Addison-Wesley, qui m’a donné le temps dont j’avais besoin pour écrire ce livre ; • ainsi qu’Heidi, Sebastian et Matthias, à qui ce livre est dédié.
Conception Ce livre se découpe en 6 parties, complétées de deux annexes : • La Partie 1 (Chapitres 1 à 5) sert d’introduction et vous accompagne dans vos premiers pas sous Linux, depuis l’installation jusqu’à l’utilisation des systèmes graphiques Gnome et KDE. • La Partie 2 (Chapitres 6 à 11) décrit les applications du système Linux. Vous trouverez des trucs et astuces associés à la navigation web, aux clients de courrier électronique, au travail bureautique avec OpenOffice.org, au tri des photos ou encore à la retouche photo avec Gimp. • La Partie 3 (Chapitres 12 à 19) s’intéresse aux fondations de Linux et à ses outils. Le livre devient alors plus technique. Vous découvrirez comment parcourir le système de fichiers, convertir les documents et les images dans un autre format, et utiliser efficacement l’interpréteur de commandes bash. • La Partie 4 (Chapitres 20 à 25) traite de la configuration. Que vous ayez des problèmes avec votre matériel ou des besoins très spécifiques, vous apprendrez à administrer votre système de fichiers, configurer votre système graphique (y compris les graphismes 3D et le bureau 3D), installer et actualiser des paquets, modifier le démarrage de votre système, ainsi qu’ajuster et compiler le noyau et ses modules. • La Partie 5 (Chapitres 26 à 30) explique la configuration du réseau, depuis le client (réseau local, réseau sans fil, modem, RNIS, ADSL) jusqu’au serveur (passerelle Internet, DNS, NFS, Samba, etc.). Nous parlerons aussi de la sécurité et en particulier des parefeu qui empêchent toute intrusion dans votre réseau depuis l’extérieur.
Linux Livre Page 3 Mardi, 23. septembre 2008 1:05 13
3
PRÉFACE
• La Partie 6 (Chapitres 31 à 33) évoque le thème de la virtualisation. Elle montre comment lancer des programmes Windows grâce à Wine et mettre en place des machines virtuelles qui peuvent accueillir des systèmes Linux ou Windows, grâce à VirtualBox et Xen. • Les Annexes A et B fournissent des pointeurs vers les différentes distributions et les documentations associées, ainsi qu’une brève référence thématique des commandes.
Ce que vous ne trouverez pas dans cet ouvrage Linux est trop vaste pour être décrit entièrement dans un livre. À notre grand regret, voici les éléments non traités dans cet ouvrage : • Matériel. Ce livre décrit uniquement le matériel que j’ai pu tester moi-même. Il est impossible d’aborder toutes les variantes de matériel. Si vous désirez mettre en service du matériel moderne sous Linux, explorez Internet. • Programmation. Ce livre ne traite pas vraiment de programmation. Nous ne parlerons ni de langages de programmation, ni des éléments internes du noyau. Nous expliquerons en revanche comment recompiler un noyau, mais des connaissances en programmation ne sont pas nécessaires. • Administration réseau et système. Nous nous limiterons aux besoins d’un utilisateur privé qui connecte son propre ordinateur à Internet et qui administre un petit réseau local. Si vous désirez utiliser Linux sur un serveur dans un gros réseau et adopter la sécurité et les considérations de performances correspondantes, vous devrez vous pencher sur des ouvrages plus avancés. • Applications multimédias. Ce livre ne traite que des éléments de base en ce qui concerne le multimédia (lecture audio et vidéo, gravure de CD et DVD). • Programmes commerciaux. À quelques exceptions près (CrossOver, VMware), cet ouvrage fait l’impasse sur les programmes commerciaux.
Styles utilisés dans ce livre Ce livre fournit souvent des commandes. Les parties effectivement saisies sont donc distinguées par du gras. Le reste des listings se compose de l’invite de commande (qui dépend du système) et des sorties des commandes. Dans l’exemple suivant, seul ls *.jpg est saisi et permet d’afficher la liste de tous les fichiers .jpg du répertoire. utilisateur$ ls *.jpg dscf2532.jpg dscf2533.jpg dscf2534.jpg ... root
Certaines commandes ne peuvent être lancées que par l’administrateur du système, root. La représentation de ces commandes commence alors par root# : root# /etc/init.d/nfs restart
Linux Livre Page 4 Mardi, 23. septembre 2008 1:05 13
4 sudo
LINUX
Dans certaines distributions (par exemple, Ubuntu), le compte root est désactivé. Dans ce cas, les commandes système sont lancées à l’aide de sudo. Vous devez alors donner votre mot de passe, ce qui ne sera pas indiqué systématiquement dans le livre. Vous trouverez plus d’informations sur sudo au Chapitre 14. utilisateur$ sudo /etc/init.d/nfs restart Password: *********
Commandes sur plusieurs lignes
Si certaines commandes sont trop longues pour tenir sur une seule ligne, elles sont écrites sur plusieurs lignes, qui sont séparées par le caractère \. Vous pouvez dans ce cas taper la commande en une ligne sans les caractères \ ou la séparer en plusieurs lignes comme dans le livre. \ peut aussi être utilisé sous Linux comme caractère permettant d’exécuter une commande de plusieurs lignes.
Linux Livre Page 5 Mardi, 23. septembre 2008 1:05 13
PARTIE 1 – PREMIERS PAS ET INSTALLATION
Qu’est-ce que Linux ?
1
Qu’est-ce que Linux ? Pour répondre à cette première question, nous allons expliquer quelques concepts utilisés tout au long de cet ouvrage : le système d’exploitation, Unix, les distributions, le noyau, etc. Un aperçu rapide des caractéristiques de Linux et des applications disponibles rend évidente la richesse des utilisations de ce système. Ce chapitre est un court survol de l’histoire encore jeune de Linux. Vous découvrirez comment Linux a été développé et sur quels composants il est basé. La GPL (General Public License) est bien sûr un point majeur de cette histoire : elle définit sous quelles conditions Linux peut être redistribué. Elle fait de Linux un système libre, où "libre" signifie bien plus que simplement "gratuit".
1.1
Introduction
Linux est un système d’exploitation comparable à Unix. La différence majeure tient au fait que Linux peut être copié avec l’intégralité de son code source (pour plus de détails sur les conditions sous lesquelles Linux et les programmes qu’il contient peuvent être redistribués, voir section 1.4). Système d’exploitation
Un système d’exploitation est un ensemble de programmes prenant en charge les fonctions les plus basiques d’un ordinateur : l’interface entre l’utilisateur et la machine (gestion du clavier, de l’écran, etc.), ainsi que la gestion des ressources du système (capacité mémoire, disque dur, etc.). Un système d’exploitation est nécessaire pour lancer des applications et enregistrer des données dans un fichier. Au cours de l’histoire de l’informatique, différents systèmes d’exploitation ont été développés. Jusqu’ici, vous avez probablement été en contact avec l’un des nombreux systèmes d’exploitation Windows (3.1, 95, 98, SE, ME, NT, 2000, XP, 2003, Vista), voire avec leur prédécesseur, MS-DOS. On peut citer d’autres systèmes d’exploitation, comme ceux des ordinateurs Apple et des ordinateurs déjà oubliés, Commodore Amiga et Atari ST.
Unix
Bien avant tous ces systèmes d’exploitation, il y avait Unix. D’un point de vue historique, ce dernier est considéré comme un système d’exploitation très ancien. Pourtant, il s’agit d’un système moderne, équipé dès le départ de fonctionnalités qui ne sont apparues sous une forme comparable chez Microsoft que bien plus tard (avec Windows NT). Unix fournissait déjà un environnement multitâche, une séparation des processus (et donc une plus grande stabilité), des droits d’accès clairs pour les fichiers (et donc davantage de sécurité dans le cadre d’un système multi-utilisateur), des fonctions réseau sophistiquées, etc. Mais Unix n’offrait, il y a encore une ou deux décennies, qu’une interface
Linux Livre Page 6 Mardi, 23. septembre 2008 1:05 13
6
LINUX
utilisateur spartiate et avait des besoins matériels importants. C’est pourquoi Microsoft ou Apple, malgré des systèmes d’exploitation moins spectaculaires, ont eu nettement plus de succès qu’Unix, qui est resté cantonné aux stations de travail coûteuses en environnement scientifique ou technique. Linux
Linux n’est en théorie qu’une nouvelle variante d’Unix. On compte au nombre de ses particularités la mise à disposition gratuite de son code source et la prise en charge de matériels très divers. La large diffusion de Linux ces dernières années, ainsi que l’explosion d’Internet et des besoins associés en serveurs stables, extensibles et performants ont offert une nouvelle jeunesse au monde d’Unix, que l’on avait probablement enterré prématurément. Unix est ici utilisé comme un terme générique qui regroupe divers systèmes d’exploitation dérivant d’Unix. Leur nom se termine parfois en -ix (Irix, Xenix, etc.), mais ce n’est pas une règle absolue (HPUX, Solaris, etc.). Ces noms sont généralement des marques déposées par leurs détenteurs respectifs. Unix est lui-même une marque déposée. Les droits associés ont changé plusieurs fois de propriétaire ces dernières années. Vous pouvez installer plusieurs systèmes d’exploitation en parallèle sur votre ordinateur. Le menu de démarrage vous offre alors le choix de démarrer l’un de ces systèmes, qu’il s’agisse de Windows, de Linux ou d’un autre système d’exploitation. Vous pouvez de plus accéder à votre système de fichiers Windows sous Linux.
Noyau Le terme Linux ne recouvre, strictement parlant, que le noyau. Il s’agit de la partie la plus interne d’un système d’exploitation, qui contient les fonctions les plus élémentaires comme la gestion du disque, la gestion des processus et le contrôle du matériel. Les informations contenues dans ce livre se basent sur le noyau 2.6. Comme Linux est toujours activement développé, de nouvelles versions du noyau voient constamment le jour. Mais n’ayez crainte : lorsque le noyau Linux fonctionne de manière stable sur votre ordinateur, il est rare de devoir le modifier. La plupart des distributions s’occupent des mises à jour de sécurité nécessaires. Nous parlerons plus en détail du noyau et de ses caractéristiques au Chapitre 25. Nous décrirons également comment compiler votre propre noyau. Attention à ne pas confondre les différents numéros de version de Linux : le noyau en possède un, tout comme les bibliothèques, les compilateurs, les programmes, les distributions, etc. Tous ces numéros de version sont indépendants les uns des autres. La meilleure description de votre système Linux est le nom et le numéro de version de votre distribution, par exemple Ubuntu 8.04.
Caractéristiques du noyau • Linux est un système multitâche (plusieurs processus peuvent fonctionner en même temps), multi-utilisateur (plusieurs utilisateurs peuvent l’utiliser en même temps), qui prend en charge la pagination (le transfert de données de la mémoire au disque dur
Linux Livre Page 7 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
7
lorsqu’il n’y a plus assez de RAM à disposition), les bibliothèques partagées (celles qui contiennent les fonctions du système ne sont chargées qu’une seule fois, même lorsque plusieurs processus les utilisent), la communication interprocessus et le multitraitement (souvent appelé SMP pour Symmetric Multi Processing, qui recouvre l’utilisation de plusieurs processeurs ou cœurs de processeurs). • Linux permet d’exploiter pratiquement toute la gamme de matériel PC. En dehors des plateformes de type Intel, il existe également des versions pour d’innombrables architectures. Linux fonctionne aussi sur des stations de travail Sun, des ordinateurs Apple, etc. Linux devient également de plus en plus populaires sur les systèmes embarqués, qui ne sont pas à proprement parler des PC. Si vous possédez par exemple un routeur Wi-Fi, il est possible qu’il tourne sous Linux ! • Linux permet d’utiliser de nombreux systèmes de fichiers. Le système ext3 est un des plus fréquents. Les fonctions de journalisation s’assurent que le système peut être redémarré très rapidement après un arrêt inopiné (comme lors d’un orage). Les pertes de données sont même dans ce cas improbables. • Linux fournit également une large palette de protocoles réseau (TCP/IP, y compris IPv6, IPsec, PPP, etc.).
Prise en charge du matériel Linux prend en charge presque tout le matériel PC. Il existe cependant quelques exceptions : • Les cartes graphiques très récentes ne sont souvent pas prises en charge, ou partiellement. Les fabricants de matériel (ATI, NVIDIA) fournissent des pilotes pour quelques cartes, mais leur intégration à Linux peut être difficile. • Les ordinateurs portables récents incluent souvent du matériel que Linux ne peut pas utiliser, ou partiellement. • Les ordinateurs portables ont presque toujours une carte Wi-Fi. De nombreux modèles standard sont facilement pris en charge, mais les modèles récents ou exotiques posent souvent problème. • Les périphériques spécifiques à Windows, comme les imprimantes GDI, les Winmodems et certains scanners, sont une autre source de problèmes. La particularité de ces périphériques est qu’ils n’utilisent pas de standards ouverts, mais fonctionnent avec des pilotes développés uniquement pour Windows. Le développement de pilotes pour Linux échoue souvent du fait que les fabricants ne fournissent aucune spécification ou interdisent l’utilisation de ces spécifications dans du code libre. Pour toutes ces raisons, avant de vous décider pour l’achat d’un nouvel ordinateur ou d’une extension matérielle, vérifiez que tous les composants sont pris en charge sous Linux. Les pages web suivantes contiennent des informations utiles. Un bon point de départ est le Hardware-HOWTO (attention, sa traduction française n’est pas toujours à jour). Vous trouverez ces liens, sous leur forme actualisée, sur ma page web http://www.kofler.cc.
Linux Livre Page 8 Mardi, 23. septembre 2008 1:05 13
8
LINUX
Pages web sur le thème du matériel sous Linux Aperçu : http://www.tldp.org/HOWTO/HOWTO-INDEX/hardware.html Traduction du Hardware-HOWTO : http://www.traduc.org/docs/HOWTO/vf/Hardware-HOWTO.html Hardware4Linux : http://hardware4linux.info/ Cartes graphiques : http://wiki.x.org/wiki/VideoDrivers Imprimantes : http://www.linuxprinting.org Scanners : http://www.sane-project.org/ Winmodems : http://linmodems.org Wi-Fi : http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wireless.html USB : http://www.linux-usb.org Firewire : http://www.linux1394.org/ Portables : http://www.linux-on-laptops.com http://tuxmobil.org/ http://tuxmobil.org/lang_french.html SUSE/Novell : http://fr.opensuse.org/Matériel http://cdb.suse.de Red Hat : https://hardware.redhat.com/ Mandriva : http://club.mandriva.com/xwiki/bin/view/KB/HardwareIndex#cd Ubuntu : http://doc.ubuntu-fr.org/materiel
1.2
Distributions
Nous n’avons pas encore répondu complètement à la question initiale : "Qu’est-ce que Linux ?". La plupart des utilisateurs s’intéressent peu au noyau, tant qu’il fonctionne et qu’il prend en charge le matériel présent. Pour eux, le terme Linux regroupe un ensemble de programmes, généralement fournis par la distribution. C’est sous cette acception qu’est généralement reconnu Linux : un noyau, auquel sont ajoutés de nombreux petits outils, les environnements de bureau KDE et Gnome, différents paquetages de bureautique, le programme graphique Gimp, d’innombrables langages de programmation et au moins autant de programmes serveur (serveur web, serveur de courrier électronique, serveur de fichiers, serveur d’impression, etc.). Cette unité composée du noyau et de ses programmes complémentaires est appelée distribution. Elle permet d’installer Linux rapidement et confortablement. Les distributions sont pour la plupart disponibles à l’achat sous forme de CD ou de DVD et peuvent généralement être téléchargées sur Internet. En raison de la taille des données (souvent plusieurs gigaoctets), la copie d’une distribution ou son installation directement sur le réseau demande une excellente connexion Internet. Les distributions se différencient principalement sur ces points : • Étendue et actualité. Le nombre, le choix et l’actualité des programmes et des bibliothèques fournis diffèrent selon les distributions. Certaines se rengorgent du nombre de CD fournis.
Linux Livre Page 9 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
•
•
•
•
•
•
9
Pour éviter aux utilisateurs de devoir changer trop souvent de CD lors de l’installation ou des mises à jour ultérieures, certaines distributions fournissent également des DVD. Outils d’installation et de configuration. Les programmes d’installation, de configuration et de maintenance du système aident à modifier les centaines de fichiers de configuration du système de manière simple. Des outils fonctionnels pour l’installation et la configuration représentent d’énormes économies de temps. Configuration du bureau (KDE, Gnome). La plupart des distributions offrent le choix à l’utilisateur entre KDE, Gnome et d’éventuels autres gestionnaires de fenêtres. Certaines différences existent également dans la configuration de détail de KDE ou de Gnome, touchant à l’aspect extérieur, à l’ordre des menus, etc. Reconnaissance et configuration du matériel. Linux gère la majorité du matériel PC. Il est donc agréable que les distributions détectent automatiquement le matériel et permettent de l’utiliser immédiatement. Si cela ne fonctionne pas, il faut bien souvent en passer par une configuration manuelle, ce que la plupart des utilisateurs de Linux redoutent. Systèmes de paquetages. On administre les applications grâce aux paquetages. Le système de paquetages influe sur la facilité d’installation de programmes supplémentaires et de mise à jour des programmes. Il existe principalement trois systèmes de paquetages incompatibles entre eux : RPM (utilisé entre autres chez Mandriva, Red Hat et SUSE), DEB (Debian, Ubuntu) et TGZ (Slackware). Maintenance et mises à jour de sécurité. Linux est un système très dynamique. Même après la sortie d’une distribution, de nombreuses nouveautés importantes apparaissent : des failles de sécurité sont souvent découvertes dans divers programmes. Une bonne distribution se différencie par le fait qu’il existe un système de mises à jour semiou entièrement automatique pour les installer sans effort. La période pendant laquelle les mises à jour de sécurité sont disponibles prend une importance croissante. La règle de base est généralement celle-ci : plus la distribution est chère, plus cette période est longue. Voici quelques exemples : pour Fedora, cette période est d’environ 13 mois (un mois après la sortie des deux versions suivantes) ; pour Ubuntu Linux, 18 mois en circuit normal et trois à cinq ans pour les versions LTS (actuellement 6.04 et 8.04) ; pour openSUSE, deux ans ; pour Red Hat Enterprise Linux, cinq ans ; et pour Novell/SUSE Enterprise Server, cinq ans. Ces données étaient valables en 2007. Chercher la période de disponibilité des mises à jour sur le site web des distributions est néanmoins fastidieux. En dehors des produits entreprise les plus chers, aucune distribution ne veut apparemment indiquer la durée de la période d’assistance. Mais en principe, vous ne pouvez utiliser une distribution de manière sûre que pendant le laps de temps au cours duquel vous pouvez obtenir des mises à jour. Après cette période, vous devez passer à une version plus récente pour des raisons de sécurité. Disponibilité des sources de paquetages. À quoi bon bénéficier du meilleur système de paquetages et des mises à jour les plus actuelles si le dépôt de paquetages sur Internet n’est disponible que la moitié du temps ou s’il est horriblement lent ? Il est malheureusement difficile d’obtenir des références sur ce point. Les dépôts de paquetages de petites distributions moins répandues sont souvent plus facilement accessibles que ceux des grosses distributions, qui distribuent des mises à jour à des milliers d’utilisateurs
Linux Livre Page 10 Mardi, 23. septembre 2008 1:05 13
10
Distributions commerciales
Distributions gratuites
LINUX
quotidiennement. Mais si la distribution devient soudainement populaire, la situation peut très vite s’inverser... De plus, les grosses distributions ont plus de chances d’avoir un ou plusieurs miroirs distribuant leurs mises à jour. • Existence d’un système "live". Quelques distributions permettent d’utiliser Linux directement depuis un CD-ROM. Cette utilisation est certes lente et peu souple, mais permet d’essayer Linux très simplement. De plus, un live CD est une solution idéale pour réparer un système Linux présent sur le disque dur, mais endommagé. • Plateformes cibles (architecture du processeur). De nombreuses distributions ne fonctionnent que sur les processeurs compatibles Intel ou AMD, et fournissent en général une variante 32 bits et 64 bits. Il existe également des distributions pour d’autres plateformes, par exemple Sparc (Sun) ou PowerPC. • Documentation. Il existe de grandes différences dans la qualité et la quantité des documentations disponibles. • Assistance. Quelques distributions fournissent une assistance gratuite pour l’installation (par courrier électronique ou téléphone). • Présence de logiciels commerciaux. Certaines distributions offrent non seulement les paquetages Linux libres, mais aussi des programmes sous licence commerciale. • Licence. La plupart des distributions Linux sont disponibles sans limitation gratuitement sur Internet. Certaines posent cependant quelques limites. Les distributions d’entreprise de Red Hat et de Novell n’offrent un accès au système de mises à jour qu’à leurs clients enregistrés. Certaines distributions interdisent la revente. Comme Linux et la plupart des programmes fournis sont disponibles librement (voir section 1.4 sur les licences), cette interdiction de revente s’applique principalement à l’utilisation des marques déposées. Les restrictions de redistribution s’appliquent également lorsque la distribution fournit des logiciels commerciaux. L’allégation de gratuité de Linux est en contradiction avec le prix de certaines distributions, pour la plupart pensées pour les entreprises. On peut cependant en comprendre facilement la raison : même si Linux et la plupart des applications sont effectivement disponibles gratuitement sur Internet, l’assemblage des composants demande du temps et du savoir-faire. Un bon programme d’installation vaut souvent le prix de la distribution ! Il permet d’économiser du temps d’installation et de configuration aux nouveaux venus à Linux. La production d’un ou de plusieurs CD, tout comme l’impression d’un manuel coûtent également de l’argent. Un bon service de mises à jour est tout aussi important : il propose de nouvelles versions des programmes impactés par une faille de sécurité. Pour finir, il ne faut pas négliger l’assistance personnelle proposée par certaines distributions pour régler les problèmes d’installation. Une distribution est d’autant plus chère qu’elle fournit de nombreux programmes commerciaux. En d’autres mots, dans une distribution commerciale, vous ne payez pas le logiciel en soi, mais les services associés. Malgré la commercialisation grandissante du marché Linux, il existe encore de nombreuses distributions entièrement gratuites. Les acteurs populaires sont actuellement Debian, Fedora, SUSE et Ubuntu. Dans le cas de ces distributions, vous téléchargez les fichiers ISO sur Internet et les gravez vous-même en CD ou DVD d’installation. Si votre accès Internet est trop lent, des entreprises proposent ces CD et DVD à bas prix (par exemple, en France, http://www.ikarios.com/).
Linux Livre Page 11 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
Quelle distribution pour quel but ?
11
Déterminer la meilleure distribution et laquelle conseiller à qui tient souvent de la guerre de religions. Lorsqu’on a choisi une distribution et que l’on s’est habitué à ses particularités, il est difficile d’en changer. Cela n’est faisable qu’en réinstallant l’ensemble du système, ce qui peut s’avérer fastidieux. Les critères de choix d’une distribution sont l’actualité de ses composants (version du noyau et des programmes importants, comme le compilateur C ou les environnements de bureau), la qualité des outils d’installation et de configuration, l’assistance fournie, la présence d’un manuel, etc. La concurrence des distributions pour leur développement est stimulante ; installer des programmes non fournis par la distribution (en particulier, les programmes commerciaux) peut s’avérer délicat. Une bibliothèque manquante ou trop ancienne est souvent la raison pour laquelle un programme ne se lance pas. Éliminer ce type de problèmes est presque impossible, en particulier pour les débutants. Aujourd’hui, certaines entreprises n’assurent l’assistance sur leurs produits que lorsqu’ils sont utilisés avec une distribution donnée (et la distribution choisie diffère bien évidemment d’une entreprise à l’autre). Pour éviter ce genre de problèmes, le projet Linux Standard Base a été créé. La spécification LSB définit des règles qui sont un dénominateur commun à toutes les distributions qui font partie du projet LSB : http://www.linuxbase.org.
Quelques distributions Linux courantes La liste suivante des distributions les plus importantes (dans l’ordre alphabétique et non exhaustive) offre une première orientation. Notez cependant que le paysage des distributions Linux se transforme rapidement. De nouvelles distributions apparaissent et gagnent vite en popularité (effet de mode important), tandis que d’autres perdent rapidement leur importance ou sont même abandonnées. Cette section n’est qu’un instantané, en aucun cas objectif, de la situation du marché en 2008. Debian − www.debian. org
Debian est la plus ancienne des distributions totalement gratuites. Elle a été composée par des développeurs Linux engagés, qui mettent en avant sa grande stabilité et le respect des règles du jeu du logiciel libre. L’interprétation stricte de cette philosophie a entraîné à plusieurs reprises des retards dans l’achèvement de nouvelles versions. Mais certaines idées de Debian (par exemple, le gestionnaire de paquetages très professionnel) ont été décisives pour d’autres distributions. Debian contient des versions de programmes plutôt anciennes. En raison des aides limitées à la configuration, elle n’est pas conseillée aux débutants sous Linux. Il existe cependant de nombreuses distributions dérivées de Debian (par exemple, Ubuntu et Xandros), plus adaptées à ces derniers.
Fedora − www.fedora project.org
Fedora (anciennement Fedora Core) est la branche de développement gratuite de Red Hat Linux. Son développement est géré et assisté par Red Hat. La communauté open-source est invitée à apporter son aide, mais a peu d’influence sur les décisions stratégiques.
Linux Livre Page 12 Mardi, 23. septembre 2008 1:05 13
12
LINUX
Une nouvelle version de Fedora sort environ tous les six mois. Les mises à jour sont fournies jusqu’à un mois après la sortie des deux versions suivantes. La durée de vie d’une version est donc d’environ 13 mois, ce qui est plutôt court. Red Hat fait clairement remarquer que Fedora ne vise pas une utilisation commerciale. Au cours des dernières années, elle s’est établie comme une distribution moderne et incroyablement robuste, dont la courte durée de mises à jour est le principal défaut. Pour Red Hat, Fedora est une manière de tester les nouvelles fonctionnalités sans mettre en péril la stabilité des versions entreprise. Les programmes qui font leurs preuves sont plus tard intégrés à ces dernières. Pour les fans de Linux, l’intérêt de Fedora réside dans le fait qu’elle joue un rôle de précurseur dans le développement technique de Linux. Les nouvelles fonctionnalités de Linux se trouvent bien souvent d’abord dans Fedora, avant d’être reprises dans les autres distributions. Gentoo − www.gentoo. org
Gentoo vise les développeurs et les utilisateurs qui désirent une flexibilité et un contrôle optimal de leur distribution. Sa particularité est que chaque paquetage de programme peut être compilé et ainsi optimisé pour le matériel sur lequel il fonctionne. Les professionnels de Linux peuvent bien sûr compiler leurs propres programmes sur n’importe quelle distribution, mais Gentoo les assiste très bien grâce à des outils de configuration adaptés.
Knoppix − www.knoppix. net
La spécificité de Knoppix est qu’elle ne doit pas nécessairement être installée sur le disque dur. Elle fonctionne directement depuis le live CD. Knoppix dérive de Debian. Parallèlement au système original assemblé par Klaus Knopper, il existe d’innombrables variantes, qui diffèrent de par les programmes (par exemple, pour des applications scientifiques) ou les langues proposées (espagnol, japonais, etc.). La version la plus connue de Knoppix en français, composée par le groupe Linux Azur, se nomme Kaella. Il existe de nombreux autres systèmes "live", tels que Kantonix, Slax, Ubuntu, Mandriva One, etc. C’est cependant Klaus Knopper qui a aidé à répandre ces systèmes.
Mandriva − www.mandri va.com
Mandriva provient de la fusion entre Mandrake Linux (France) et Connectiva (Brésil). Mandrake Linux était l’une des plus grandes distributions aux côtés de Red Hat et de SUSE. Aujourd’hui, sa popularité tend à décroître en dehors des pays d’origine (Mandriva reste néanmoins très présente en France).
Novell − www.novell. com/linux
Novell, qui a acheté en novembre 2003 l’entreprise allemande SUSE, est actuellement le numéro 2 du marché commercial de Linux. Tout comme Red Hat, Novell suit deux chemins. D’une part, diverses distributions à destination des entreprises sont commercialisées sous les noms Novell et SUSE. D’autre part, la distribution openSUSE est gratuite et vise les utilisateurs privés et les développeurs de Linux (voir ci-après). Au printemps 2006, Novell a établi un accord avec Microsoft qui la protège des procès liés aux brevets de Microsoft. Ce qui semble à première vue un grand pas en avant pour Linux est en fait considéré d’un œil critique par de nombreux développeurs de logiciels libres : l’accord Novell/ Microsoft est-il le préalable à des procès sur les brevets envers d’autres entreprises Linux ?
Red Hat − www.redhat. com
Red Hat est l’entreprise Linux la plus réputée sur le plan international. Ses distributions dominent le marché américain. Le système de paquetages basé sur le format RPM (développé par Red Hat) a été repris par de nombreuses distributions. Red Hat est particulièrement connue des entreprises. Les versions entreprise (RHEL ou Red Hat Enterprise Linux) sont comparativement plus chères, mais offrent une grande stabilité et
Linux Livre Page 13 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
13
une politique de mises à jour valable cinq ans. Les développeurs et les utilisateurs enthousiastes qui cherchent un système Red Hat gratuit peuvent se tourner vers Fedora (voir ci-dessus). Slackware − www.slackware.com
Lancée en 1994, Slackware est l’une des plus anciennes distributions Linux. À l’époque, les CD n’existaient pas et étaient remplacés par des douzaines de disquettes. Aujourd’hui, Slackware ne parvient plus à concurrencer les autres distributions en ce qui concerne la maintenance et l’installation. Elle conserve malgré tout de nombreux fans, qui préfèrent la continuité et la stabilité à de jolis outils d’installation et de configuration.
SUSE/ openSUSE − www.opensu se.org
SUSE était, jusqu’à son rachat par Novell, l’entreprise dominante du marché Linux européen, en particulier dans les pays germanophones. Cette marque déposée est utilisée pour diverses distributions commerciales de Novell. Il existe également la distribution gratuite openSUSE, qui vise les utilisateurs privés et les développeurs de Linux. Comme Fedora, openSUSE sert de laboratoire de développement et de test pour les versions entreprise. Le processus de développement a été réorganisé en 2005. Depuis cette date, les bêta-tests, les listes de discussion et la base de données de bogues, ainsi que la distribution terminée sont accessibles gratuitement. Contrairement à Fedora, openSUSE est toujours disponible en tant que boîte contenant un manuel d’utilisation et une assistance. La période de mises à jour de deux ans se démarque également de celle de Fedora, plus minimaliste.
Ubuntu
Ubuntu est une distribution récente très intéressante. Lancée en octobre 2004, elle est aujourd’hui la distribution Linux la plus populaire. Une nouvelle version sort tous les six mois et peut être utilisée pendant au moins 18 mois. Basée sur Debian, Ubuntu est plus simple d’utilisation. Le média d’installation est particulièrement petit : un seul CD suffit. Au besoin, d’innombrables paquetages peuvent être installés depuis Internet. Ubuntu, ainsi que ses mises à jour, sont disponibles gratuitement. Elle est commercialement prise en charge par l’entreprise Canonical (fondée par le sudafricain Mark Shuttleworth et dont le siège se situe sur l’île de Man). Ubuntu est basée sur Gnome, mais présente de nombreuses variantes comme Kubuntu (avec KDE), Xubuntu (avec XFCE comme gestionnaire de fenêtres), Edubuntu (pour les écoles) et Ubuntu Server (spécialisé dans les applications serveur).
Xandros
Xandros est une distribution commerciale basée sur Corel (Corel a tenté d’entrer dans le marché Linux en 1999, mais a échoué ; Xandros a racheté Corel Linux). Grâce à une utilisation simplifiée, elle vise surtout les débutants et les personnes venant de Windows. De nombreux tests l’ont décrite comme la distribution la plus accessible aux utilisateurs. Certaines versions contiennent CrossOver Office, qui permet l’installation et l’utilisation de Microsoft Office sous Linux. Xandros a récemment fait beaucoup parler d’elle, du fait de son installation par défaut sur les PC ultraportables EEE d’Asus. Vous trouverez sur les pages suivantes un aperçu des distributions les plus populaires du moment, qu’elles soient commerciales ou non : http://www.distrowatch.com/ ; http://lwn.net/Distributions/ ; http:/ /www.linuxhq.com/dist.html
Linux Livre Page 14 Mardi, 23. septembre 2008 1:05 13
14
LINUX
Distributions minimales En plus des "grosses" distributions présentées dans la section précédente, il existe sur Internet d’innombrables assemblages de systèmes miniatures (pouvant même tenir sur une disquette !). Ces distributions se basent pour la plupart sur des versions du noyau plus anciennes et plus petites. Elles sont conçues avant tout pour des tâches spécialisées, qu’il s’agisse de maintenance (système de secours) ou de systèmes utilisables sans installation (qui se lancent directement depuis une ou plusieurs disquettes ou un CD). Celles-ci sont pratiques pour utiliser Linux sur un ordinateur qui ne vous appartient pas et sur lequel vous ne voulez ou pouvez pas partitionner le disque. Devil Linux
Devil Linux est un exemple typique de petite distribution Linux, qui vise à construire un pare-feu, un routeur ou une passerelle Internet. Elle fonctionne directement depuis un CD ; les paramètres de configuration sont enregistrés sur une disquette ou sur une clé USB (le disque dur est donc accessoire !). Les besoins matériels sont également très restreints : un processeur compatible avec un Intel 486 et 32 Mo de RAM suffisent.
Damn Small Linux
Damn Small Linux est une autre distribution minimale populaire. Elle tient sur un mini-CD (environ 50 Mo), mais fournit toutes les fonctions de base d’une distribution de bureau.
Problème du choix À l’issue des travaux nécessaires à cet ouvrage et après avoir installé de nombreuses distributions Linux, mon rêve d’assembler tous les avantages d’une distribution sans payer le prix de leurs inconvénients reste inassouvi. Par conséquent, il est difficile de recommander une distribution donnée. Les débutants sous Linux peuvent néanmoins d’abord utiliser une distribution très répandue, comme Fedora, openSUSE, Ubuntu ou Mandriva, car ils n’auront aucun problème à trouver des informations sur Internet, dans des livres ou dans la presse. Il est donc plus simple d’obtenir de l’aide en cas de problème. Les distributions éprouvées sont également un bon choix en ce qui concerne les aides à l’installation ou à la configuration de matériels inhabituels ou non standard. Pour finir, elles facilitent largement la recherche de paquetages complémentaires ou de mises à jour. Les utilisateurs de distributions commerciales doivent décider s’ils sont prêts à payer pour une assistance professionnelle. Dans ce cas, leur choix peut s’orienter vers les leaders du marché Red Hat et Novell. Les alternatives gratuites regroupent par exemple Debian, Ubuntu (en particulier, les versions LTS) et les clones de Red Hat (CentOS, Scientific Linux ou encore White Box Linux).
1.3
Fantasmes et réalité
Cette section regroupe quelques préjugés contre Linux. Mon but est de présenter une image non biaisée de Linux, sans les exagérations des fans enthousiastes, ni le sombre tableau dépeint par ses adversaires, qui le rendent bien pire qu’il n’est par crainte de voir leur propre entreprise en danger. Linux est plus rapide que Windows
Cette phrase n’est ni correcte, ni incorrecte. Il existe, en effet, des programmes qui fonctionnent plus vite sous Linux ou sous Windows. Mais on ne peut en tirer aucune conclusion
Linux Livre Page 15 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
Linux utilise moins de ressources que Windows
15
générale valide. Le résultat dépend du système pour lequel le programme a été optimisé, des versions de Windows et de Linux, du matériel utilisé, etc. Il est vrai que Linux peut fonctionner sur un PC 486 avec quelques mégaoctets de RAM. Mais dans cette configuration, il ne fonctionne qu’en mode texte, avec tout de même plus de fonctionnalités qu’une version de Windows tournant sur le même ordinateur. Les choses sont néanmoins différentes lorsqu’on compare une distribution récente de Linux avec Windows XP. Pour travailler confortablement dans un environnement graphique, tous deux ont des besoins matériels relativement similaires.
Linux est plus sûr que Windows
Linux tient cependant la comparaison par rapport à Windows Vista, qui nécessite pour son interface graphique complète une configuration matérielle énorme. Les effets 3D du bureau fonctionnent sous Linux sur des ordinateurs plus anciens. On peut certes s’interroger sur la nécessité de ces effets graphiques, que ce soit sous Linux ou sous Windows. Mais, dans tous les cas, ils sont impressionnants. Un bureau sans effets 3D sera probablement démodé dans deux à trois ans. Tous les systèmes d’exploitation souffrent de problèmes de sécurité. En général, Linux s’en sort plutôt bien, mais on trouve encore des failles de sécurité présentes depuis plusieurs années sous Linux et d’autres Unix, y compris dans les programmes réseau. La sûreté de Linux dépend également de son utilisation : • Dans le cadre d’une utilisation bureautique, Linux est à l’inverse de Windows pratiquement exempt de virus. Il n’y a eu jusqu’ici aucun virus notable, alors que sous Windows, ils paralysent régulièrement des entreprises entières. La raison principale est que l’administration des droits sous Linux empêche les applications courantes d’endommager gravement le système. À la différence de Windows, il est également déconseillé sous Linux de lancer des programmes avec des droits d’administrateur système lorsque ceux-ci ne sont pas strictement nécessaires. • Lorsque Linux est utilisé comme serveur réseau ou Internet, la sécurité dépend largement de la maintenance du système. Ces dernières années, presque tous les problèmes de sécurité ont été corrigés avant que le risque de sécurité ne soit connu et puisse être utilisé par des pirates. Si vous actualisez régulièrement les logiciels de votre ordinateur, les intrus ont peu de chances de pouvoir pénétrer dans votre système. La plupart des distributions fournissent des outils qui facilitent de telles mises à jour. Les grosses distributions Linux offrent en général un système de mises à jour pour plusieurs années. Vous actualisez ainsi les programmes déjà installés dès qu’il existe une version plus récente ou plus sûre. Le système de mises à jour fonctionne souvent très bien, mais nécessite une bonne connexion à Internet : pour la plupart des distributions, il faut prévoir des douzaines de téléchargements, parfois de plus d’une centaine de mégaoctets. Les produits Microsoft disposent d’un système comparable de mises à jour depuis Windows XP SP2. La sécurité des systèmes Linux dépend également de l’étendue de vos propres compétences. Si un débutant se précipite, configure un serveur Internet et le connecte au réseau, il ne faut pas s’attendre à ce que ce serveur soit sécurisé de manière optimale. La littérature à ce propos ne manque pas.
Linux Livre Page 16 Mardi, 23. septembre 2008 1:05 13
16 Linux est plus stable que Windows
LINUX
Lorsque Linux est devenu populaire, Windows 95 commençait son avancée triomphale. L’assertion "Linux est plus stable que Windows" était alors facile à corroborer. Entre temps, Microsoft a commercialisé des versions de Windows respectables et stables. Dans tous les cas, les affirmations quant à la stabilité de Linux réclament une différentiation importante : • Le noyau est en soi extraordinairement stable. Je travaille depuis de nombreuses années sous Linux et j’ai rarement expérimenté un plantage complet du système d’exploitation (il s’agissait en général d’un problème de matériel défectueux ou mal configuré). Les utilisateurs qui se servent de Linux comme d’un serveur réseau parlent souvent de temps de fonctionnement (uptime) de plusieurs mois. Cela signifie que le système peut tourner pendant plus d’un an sans interruption et fournir ses services sans protester. Les redémarrages font souvent suite à des mises à jour du noyau. La stabilité du système ne fait donc aucun doute. • En revanche, si on parle de Linux en tant que système complet avec les applications associées (et donc d’une distribution complète, avec X, KDE ou Gnome, etc.), la stabilité apparaît alors beaucoup moins bonne. En particulier, les grosses applications comme OpenOffice.org ne sont pas à l’abri d’un plantage sous Linux. Les programmes serveur fonctionnent cependant pour la plupart sans souci. La stabilité de Linux dépend également de la manière dont il est utilisé. Les meilleurs résultats sont généralement obtenus dans un contexte de serveur réseau ou de station de travail dédiée au travail scientifique ou à la programmation. Plus les programmes s’approchent d’une utilisation bureautique, plus vous risquez de connaître de mauvaises performances en termes de stabilité.
Linux est moins cher que Windows
Cette affirmation est facile à argumenter : Linux est disponible gratuitement. Elle est cependant contestée chez Microsoft, qui indique qu’il faut aussi prendre en compte les coûts de formation et autres (ce qui présuppose que la connaissance de Windows est innée, mais pas celle de Linux). De plus, toutes les distributions Linux ne sont pas gratuites. De nombreuses entreprises optent pour les offres plus chères de Red Hat ou de Novell, qui fournissent une meilleure assistance, des mises à jour plus longues, de la maintenance, etc. Même si l’on tient compte de ces éléments, l’argument économique de Linux n’est pas à nier.
Linux est compliqué à installer
Lorsqu’on achète un PC, Windows est généralement déjà préinstallé. L’installation de Linux est donc une complication supplémentaire. Mais elle n’est pas plus compliquée que celle de Windows (mais qui installe Windows soi-même de nos jours ?). La prise en charge des matériels récents est cependant problématique ; elle est en général meilleure sous Windows, car chaque fabricant de composants fournit un pilote Windows pour ses périphériques. Les pilotes sous Linux doivent souvent être développés par la communauté, ce qui peut prendre du temps.
Linux est complexe à utiliser
Ce préjugé est ancien, mais il n’est plus vrai, ou alors dans une très faible mesure. L’utilisation de Linux est différente de celle de Windows, tout comme celle de Mac OS. La prise en main de Linux n’est vraiment pas compliquée, mais la perte des habitudes prises sous Windows peut parfois être difficile.
Linux n’est pas adapté aux applications multimédias
Cette affirmation dépend de ce que l’on entend par "applications multimédias". • Linux peut lire ou coder les fichiers audio. Il peut aussi être utilisé comme enregistreur numérique de vidéo, graveur de CD et de DVD, etc. Récupérer, modifier et imprimer des images numériques ne pose également aucun problème.
Linux Livre Page 17 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
17
• Pour l’instant, Linux ne possède pas de système de DRM (Digital Rights Management, gestion des droits numériques), nécessaire pour exploiter les téléchargements légaux audio et vidéo. La plupart des distributions Linux ne fournissent pas non plus par défaut de lecteur DVD. Il existe des programmes sur Internet prévus pour cela, mais leur légalité dépend des pays. De plus, l’utilisation des fonctions 3D des cartes graphiques les plus récentes peut être difficile. Le matériel multimédia récent pose également souvent problème sous Linux. La tendance actuelle de l’industrie des médias est malheureusement de supprimer de plus en plus de droits aux consommateurs et d’empêcher l’utilisation de Linux comme plateforme multimédia. Les brevets et les algorithmes de chiffrement empêchent les implémentations par des logiciels libres. C’est pourquoi Linux n’est pas adapté aux applications multimédias. Les programmes Windows ne fonctionnent pas sous Linux
De nombreux programmes, comme Microsoft Office ou Adobe Photoshop, ne sont actuellement disponibles que pour Windows et Mac OS. Ce problème peut cependant être contourné : • Il existe pour de nombreux programmes des équivalents sous Linux, comme OpenOffice.org ou le programme graphique Gimp. • Certains programmes peuvent être lancés sous Linux grâce à l’émulateur gratuit Wine. Ce dernier est cependant peu intuitif et donc réservé aux utilisateurs chevronnés. • CrossOver, basé sur Wine, augmente cette compatibilité. Il facilite l’installation et l’exécution de la plupart des composants Office, ainsi que de quelques autres programmes. • Les outils de virtualisation tels que VMware ou Xen vont même plus loin : ils émulent un ordinateur complet. Vous pouvez y installer Windows et ainsi le lancer dans une fenêtre. Cela fonctionne très bien, mais nécessite du matériel puissant (en particulier, beaucoup de RAM) et il s’agit d’une solution relativement chère : vous avez besoin d’une licence Windows, à laquelle s’ajoute éventuellement celle du programme de virtualisation.
1.4
Licences libres
Cette section traite moins de Linux que de la question des logiciels libres et des différentes licences existantes. L’idée de base du logiciel libre est que le code source est disponible librement et qu’il peut être étendu ou modifié par quiconque. Une restriction peut néanmoins s’appliquer : quiconque distribue des produits développés à partir de code libre doit luimême distribuer librement son code. Le concept de logiciel libre n’empêche nullement la vente de produits libres. Cela peut sembler à première vue contradictoire. Mais cette liberté s’applique plus au code qu’au produit fini. Cette libre disponibilité réglemente aussi la tarification des produits libres : quiconque vend la compilation d’un logiciel libre doit proposer d’autres services (manuel, assistance,
Linux Livre Page 18 Mardi, 23. septembre 2008 1:05 13
18
GPL (General Public License)
LINUX
etc.) pour survivre. Si le tarif n’est pas lié à des services, d’autres entreprises trouveront le moyen d’offrir la même chose moins cher. Le but d’un développeur de logiciels libres est de parvenir à un système dont le code est librement accessible et qu’il le reste. Pour éviter les abus, de nombreux logiciels libres sont sous licence GNU General Public License (GPL). La GPL s’appuie sur la Free Software Foundation (FSF). Cette organisation, créée par Richard Stallman (souvent appelé RMS et auteur entre autres de l’éditeur Emacs), a pour but de mettre à disposition du public des logiciels libres de qualité. Le principe de base de la GPL est que n’importe qui peut modifier le code et même vendre le programme résultant, mais doit alors garantir aux utilisateurs/consommateurs les mêmes droits : avoir le code source à disposition, pouvoir le modifier et le redistribuer gratuitement. Tous les programmes GNU doivent être distribués avec le texte de la GPL. Cette dernière ne doit pas être confondue avec le domaine public, où il n’existe aucune licence. La GPL empêche donc que quelqu’un développe à partir d’un programme GPL et vende cette nouvelle version sans fournir les modifications sous forme de code source. Chaque modification profite donc à l’ensemble des utilisateurs. Le texte de la GPL se trouve ici : http://www.gnu.org/licenses/gpl.html Une version en français, mais non validée légalement, est consultable à l’adresse suivante : http://www.linux-france.org/article/these/gpl.html L’idée de base de la GPL est facile à comprendre, mais certains détails soulèvent quelques questions, dont les réponses figurent sur cette page : http://www.gnu.org/licenses/gpl-faq.html
Versions de la GPL
Les versions les plus utilisées de la GPL sont actuellement la GPL 1 (1985) et la GPL 2 (1991). Sortie en juin 2007, la GPL 3 ne concerne pour l’instant que quelques projets. Les principales nouveautés sont les suivantes : • L’internationalisation. La GPL 3 devrait être compatible avec la législation de davantage de pays. • Les brevets logiciels. Lorsqu’un logiciel est développé et distribué sous GPL 3, ses utilisateurs ne peuvent pas intenter de procès sur la base de brevets logiciels. • Les DRM. La GPL 3 prend position contre les DRM et indique que celles-ci sont fondamentalement incompatibles avec l’idée de la GPL.
LGPL (Lesser General Public License)
L’adoption de la GPL 3 reste à voir. Par exemple, de nombreux développeurs du noyau, y compris Linus Torvalds, s’opposent au passage du noyau sous GPL 3. Cela semble également difficile en pratique : tous les développeurs ayant participé au noyau doivent s’accorder. De plus, certains développeurs de logiciels libres sont très critiques vis-à-vis des nouveautés de la GPL 3, en particulier en ce qui concerne les brevets et les DRM. Vous trouverez plus d’informations sur la GPL 3 à l’adresse http://gplv3.fsf.org/. La LGPL (GNU Lesser GPL) est une variante de la GPL. La différence majeure est qu’une bibliothèque sous licence LGPL peut être utilisée par des produits commerciaux, dont le code n’est pas disponible gratuitement. Sans la LGPL, les bibliothèques sous GPL ne pourraient être utilisées que dans des programmes GPL, ce qui serait bien souvent une restriction non désirée pour les programmes commerciaux.
Linux Livre Page 19 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
Autres licences libres
19
Toutes les parties d’une distribution ne répondent pas aux mêmes licences. Le noyau et de nombreux outils dépendent de la GPL, mais certains composants et logiciels ont d’autres licences : • Le système XWindow a sa propre licence. Il a été au départ développé par l’université américaine MIT. La licence est dérivée d’une ancienne licence MIT. • Certains outils réseau sont sous licence BSD. BSD est, comme Linux, un système Unix libre. Cette licence est moins contraignante que la GPL, car elle permet l’utilisation commerciale du code sans rediffusion des modifications. Elle est donc intéressante pour les développeurs qui ne souhaitent pas ouvrir le code de leurs produits. • Certains programmes sont sous double licence. On peut, par exemple, utiliser MySQL pour des projets libres sous GPL gratuitement. Le développement d’un produit commercial basé sur MySQL et sa vente (sans mettre à disposition le code) imposent l’utilisation de la licence commerciale. La diffusion de MySQL coûte alors de l’argent. • D’autres programmes sont des programmes propriétaires, mais utilisables gratuitement. Un exemple connu est Adobe Reader, qui permet de lire des documents PDF. Il peut être utilisé librement sous Linux, mais son code source n’est pas disponible. Certaines distributions distinguent les produits en fonction des droits liés à leur utilisation ou leur redistribution. Sous Debian, les programmes pouvant poser problème se trouvent dans le répertoire non-free. Le maquis des licences gratuites plus ou moins libres est délicat à appréhender. La marge de concepts est large entre l’interprétation parfois extrémiste de "libre" au sens de la GPL et les clauses limitatives de certaines entreprises qui désirent appeler leur logiciel "libre" (puisque c’est moderne), mais qui veulent en réalité garder tout contrôle sur leur code. Pour plus d’informations sur les licences libres et open-source, reportez-vous à l’adresse http://www.opensource.org.
Conflits de licences entre les logiciels libres et propriétaires Licences libres pour les développeurs de logiciels
Si vous souhaitez développer des logiciels et les vendre avec Linux, ou combinés à des logiciels ou des bibliothèques libres, vous devrez sans doute vous débattre dans la problématique parfois complexe des différentes licences logicielles. En effet, de nombreuses licences libres ne permettent la redistribution que si le code source est également mis à disposition librement dans le cadre d’une licence libre. Il existe cependant des exceptions qui facilitent l’utilisation commerciale de composants libres. C’est par exemple le cas pour Apache et PHP, qui peuvent être redistribués gratuitement en combinaison avec un programme fermé. En ce qui concerne le serveur de bases de données MySQL, si un client désire vendre un programme basé sur ce serveur sans en fournir le code source, il doit se procurer une licence commerciale et payante de MySQL. Plus les licences des composants libres sur lesquels vous vous basez sont différentes, plus la redistribution est compliquée.
Linux Livre Page 20 Mardi, 23. septembre 2008 1:05 13
20
LINUX
Le respect des règles de la GPL peut parfois être porté devant la justice. Divers cas d’entreprises ayant utilisé des bibliothèques libres sans mettre à disposition leur code sont documentés sur le site web http://gpl-violations.org. En général, un accord peut être atteint sans procès. Problème des pilotes
Un problème se pose pour certains composants matériels (en particulier, les cartes graphiques d’ATI ou de NVIDIA) : leurs pilotes se composent d’un petit module de noyau (libre) et de divers programmes ou bibliothèques dont le code source n’est pas disponible (propriétaire). Le module du noyau n’a pour but que de fournir une interface entre le noyau et le pilote propriétaire. Pour la plupart des utilisateurs de Linux, ces pilotes sont une bonne chose : ils sont gratuits et permettent d’utiliser du matériel pour lequel il n’existe aucun pilote complet. La raison est que les fabricants de matériel refusent de fournir les informations nécessaires au développement de pilotes, puisqu’elles sont la propriété de l’entreprise, qui ne désire pas les offrir à la concurrence. La question est donc de savoir dans quelle mesure ces pilotes, en raison des liens étroits avec le noyau (qui est lui soumis à la GPL), violent la GPL. Beaucoup de développeurs ne les acceptent qu’à contrecœur. Une redistribution directe de ces pilotes avec des produits GPL n’est pas possible ; l’utilisateur doit donc généralement les télécharger et les installer lui-même. Il existe même des efforts visant à modifier le noyau pour que ce type de pilotes ne fonctionne plus. Reste à savoir si cette conception des règles de la GPL profite ou nuit à l’idée du logiciel libre. Les optimistes pensent qu’interdire ces pilotes obligerait les entreprises à développer des pilotes libres ou à fournir les spécifications nécessaires à ce développement. Les pessimistes craignent que le matériel concerné ne soit plus facilement utilisable. L’issue de ce conflit n’est pour l’instant pas en vue.
1.5
Histoire de Linux
1982 : GNU
L’histoire de Linux pourrait débuter avec celle d’Unix, mais la place manque. Cette rétrospective commence donc avec la fondation du projet GNU par Richard Stallman. GNU signifie GNU is Not Unix, GNU n’est pas Unix. Ce projet a développé dès 1982 des outils libres pour les Unix propriétaires. Ces outils ont été utilisés comme version de remplacement des composants originaux sur de nombreux systèmes, qu’il s’agisse du compilateur C GNU GCC, de l’éditeur Emacs ou de divers utilitaires comme find et grep.
1989 : la GPL
Il était temps, sept ans après le début du projet GNU, de créer la première version de la GPL. Cette licence s’assure que le code reste libre.
1991 : le noyau Linux version 0.01
La première version du noyau Linux (version 0.01) a été développée par Linus Torvalds à Helsinki. Le code du programme a été distribué en septembre 1991 sur Internet. Très vite, des programmeurs du monde entier se sont intéressés à cette idée et ont développé des extensions : un meilleur système de gestion de fichiers, des pilotes pour divers composants matériels, des programmes supplémentaires comme un émulateur DOS, etc. Tous ces composants ont été mis à disposition gratuitement et le système complet a grandi à une vitesse hallucinante. Le développement de ce nouveau système d’exploitation n’aurait pas été possible sans la communication entre les programmeurs du monde entier via Internet.
Linux Livre Page 21 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
21
Dès que le noyau Linux a été suffisamment développé pour que le compilateur C GNU fonctionne, la palette des outils GNU est soudain devenue disponible pour Linux. Un système complet était né du noyau brut, ce qui faisait de Linux un environnement de développement bien plus attractif. Les facteurs qui ont fait de Linux un environnement de développement plus attractif ont été le système de fichiers de Minix, des logiciels réseau provenant des Unix BSD, le système XWindow du MIT et le portage de XFree86, ainsi que de nombreux logiciels libres comme LaTeX. Linus Torvalds n’est donc pas la seule personne à l’origine de Linux (même si, sans lui, il n’existerait probablement pas sous sa forme actuelle). Ce système a été développé par de nombreuses personnes engagées qui ont produit du code libre pendant des années, que ce soit sur leur temps libre, dans le cadre de leurs études d’informatique ou d’un emploi dans des entreprises comme IBM ou HP. Le noyau Linux représente à lui seul plusieurs millions de lignes de code ! 1994 : les premières distributions
Les étudiants passionnés d’informatique pouvaient télécharger, compiler et installer euxmêmes Linux et ses composants. Son utilisation s’est néanmoins largement développée grâce aux premières distributions, qui empaquetaient des logiciels sur des disquettes ou des CD-ROM et fournissaient un programme d’installation. Quatre distributions de cette époque subsistent encore : Debian, Red Hat, Slackware et SUSE.
1996 : le manchot
En 1996, le manchot Tux devient le logo de Linux. Ils sont depuis inséparables.
1998 : Microsoft déclare la guerre à Linux
Avec la déferlante Internet, Linux s’impose largement sur les serveurs. Une certaine reconnaissance de Linux vient avec la phrase de Steve Ballmer : "Microsoft is worried about free software..." ("Microsoft est inquiet face au logiciel libre…"). Un an plus tard, Red Hat fait une entrée spectaculaire en bourse.
2002 : Linux pour le bureau
Après l’achat de StarOffice par Sun et l’ouverture de son code source, OpenOffice.org 1.0 voit le jour en 2002. Il s’agit d’une suite bureautique complète, avec une interface confortable (KDE ou Gnome). Elle rend Linux utilisable dans les bureaux et auprès du grand public. Linux sort alors du marché des informaticiens et des serveurs, une étape que de nombreux Unix propriétaires n’ont pas franchie. En 2003, la ville de Munich décide de remplacer Windows NT par Linux sur ses postes.
1.6
Brevets logiciels et autres sujets d’énervement
De nombreux signes montrent que Linux aura à l’avenir une diffusion et une importance plus grande : le développement progresse sur tous les niveaux (noyau, programmes serveur, applications) et de plus en plus d’entreprises et d’administrations reconnaissent les avantages de Linux. Mais certaines embûches peuvent se présenter sur le chemin.
Brevets logiciels Les brevets logiciels protègent, aux États-Unis comme dans de nombreux pays, les idées, concepts et algorithmes de logiciels. Des brevets sont déposés pour tout ce qui est imaginable,
Linux Livre Page 22 Mardi, 23. septembre 2008 1:05 13
22
LINUX
y compris des éléments triviaux comme l’affichage d’une barre de progression ou la célèbre commande en un clic (Amazon). Leur abus et l’absurdité des durées de protection en comparaison de la vitesse d’évolution de l’informatique contribuent à alimenter la résistance contre les brevets logiciels. Ainsi, un programme dépassant quelques lignes de code, quel qu’il soit, peut violer un brevet logiciel quelque part dans le monde. Les grandes entreprises avec des portefeuilles de brevets importants visent principalement à éviter des actions réciproques (une sorte d’équilibre de la terreur), mais la communauté libre et certains développeurs se sentent menacés par les brevets logiciels. Ils les considèrent comme nuisibles pour le progrès et la concurrence. Les brevets logiciels pourraient être une arme puissante pour Microsoft contre Linux − Microsoft n’a cependant jusqu’ici entrepris aucune action en ce sens et doit lui-même lutter contre de nombreux procès liés aux brevets. La décision de l’Office européen des brevets contre l’introduction des brevets logiciels en Europe à l’été 2005 a été l’une des rares lueurs d’espoir. Mais, comme Linux est également employé en dehors de l’Europe, les brevets logiciels limitent le champ d’action de beaucoup de distributions : nombre d’entre elles, par exemple, ne fournissent pas de bibliothèques pour lire des MP3 par peur des procès, car des algorithmes sont protégés par des brevets. Chaque utilisateur doit donc installer lui-même les bibliothèques ou programmes correspondants. Ce qui n’est que gênant dans le cas des fichiers MP3 pourrait dans le cadre d’autres fonctions mener à de lourdes limitations des distributions Linux. Ensemble de brevets de la communauté libre
Mais la situation n’est pas sans espoir. En particulier, quelques entreprises pro-Linux comme IBM disposent d’importants portefeuilles de brevets. Certaines entreprises Linux ont ellesmêmes commencé à collecter des brevets, en partie "offerts" par des entreprises pour des usages libres. La situation est absurde : un droit des brevets mal conçu oblige la communauté libre à créer des brevets pour pouvoir se protéger contre des éventuels procès. Vous trouverez des détails sur les outils de la communauté à l’encontre des brevets aux adresses suivantes : http://www.patent-commons.org/ ; http://www.openinventionnetwork.com/
Multimédia et DRM Chiffrement des DVD
Le marché du multimédia est un autre problème. Par exemple, vous ne pouvez pas lire actuellement vos DVD achetés en toute légalité sous Linux. La limitation est juridique et non technique. La plupart des DVD sont protégés par un algorithme de chiffrage plutôt primitif. Cette protection pourrait être facilement levée, mais dans de nombreux pays, la loi interdit la distribution de la bibliothèque nécessaire et la description de son installation. Les nouveaux disques HD-DVD et Blue-Ray, déjà prêts pour le marché, sont mieux protégés. La protection s’applique à toute la chaîne des composants matériels (carte graphique, moniteur, etc.). Les DVD haute résolution ne sont donc pas non plus lisibles sous Linux.
DRM (Digital Rights Management) ou gestion des droits numériques
La situation n’est pas meilleure pour les données (audio, vidéo et texte) protégées par des DRM. Ces dernières englobent tout dispositif visant à réduire l’utilisation des données, par exemple à une période de temps ou à un ordinateur donné. Cela a pour effet de les limiter à certains matériels (par exemple, l’iPod) ou systèmes d’exploitation (Windows ou Mac OS). Les opposants aux DRM déclinent ce sigle en Digital Restriction Management − gestion des restrictions numériques.
Linux Livre Page 23 Mardi, 23. septembre 2008 1:05 13
QU’EST-CE QUE LINUX ?
23
Développer des DRM dans le cadre de logiciels libres n’est pas simple : si le code d’un programme pour déchiffrer des données protégées par DRM est accessible, il peut être modifié pour supprimer la restriction des DRM. Le développement de DRM libres n’en est donc qu’à ses débuts. Rien ne permet de dire que ces programmes pourront un jour être utilisés. À l’heure actuelle, l’utilisation de contenus protégés par DRM est difficile sous Linux. Si vous ne voulez pas utiliser de logiciels illégaux pour supprimer les protections, vous devez attendre des programmes propriétaires provenant des fournisseurs des DRM. Il n’existe pour l’instant aucun programme de ce type sous Linux. Pour iTunes, la solution est d’utiliser CrossOver et la version Windows d’iTunes sous Linux.
Procès SCO Le procès SCO est un véritable roman. Le 7 mars 2003, l’entreprise SCO a intenté un procès à IBM. Elle l’accusait, entre autres, d’avoir inclus dans le noyau Linux du code d’Unix sous copyright de SCO. Selon elle, toute utilisation de Linux à partir du noyau 2.4 était donc illégale. Pour régulariser la situation, elle a demandé aux utilisateurs de Linux de payer une licence spéciale, au prix fort. En dehors de Microsoft, SCO a trouvé peu de clients, de sorte que l’offre de licence n’existe plus sur son site web. IBM a réagi par un contre-procès, et Red Hat s’est joint à la bataille en intentant également un procès à SCO. De nombreux commentateurs voient dans ce mouvement une guerre par procuration, dans laquelle Microsoft serait derrière SCO. D’autres pensent que cette dernière ne cherchait qu’à augmenter sa valeur boursière. Les développeurs de la communauté, y compris Linus Torvalds, ont adopté le point de vue selon lequel les considérations de SCO ne s’appliquaient pas. SCO avait elle-même vendu une distribution Linux et accepté la GPL. D’une manière générale, le fait qu’elle n’indiquait pas précisément les lignes de code sujettes à copyright a été largement critiqué. Cette critique a été renforcée par la déclaration à l’été 2006 du juge chargé de l’affaire, selon lequel les deux tiers des points du procès étaient considérés comme nuls et non avenus.
Linux Livre Page 24 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 25 Mardi, 23. septembre 2008 1:05 13
Installation
2
Ce chapitre est un aperçu de l’installation d’un système Linux sur un PC doté d’un processeur compatible Intel Pentium. Il ne s’attache pas à une distribution spécifique, mais parle des étapes importantes de l’installation, comme le partitionnement du disque. Pour plus d’informations, reportez-vous à l’Annexe B qui offre des liens vers la documentation des processus d’installation de nombreuses distributions. L’installation de Linux s’est grandement simplifiée ces dernières années. Dans le cas idéal (matériel standard et espace disponible sur le disque dur), 30 minutes devraient suffire pour obtenir un système fonctionnel. L’installation se complique néanmoins lorsque, comme souvent, l’ordinateur dispose déjà d’un système d’exploitation Windows, qui doit être préservé. Des problèmes liés au matériel peuvent également surgir lorsque celui-ci est très vieux, très récent, ou dans le cas de certains ordinateurs portables.
2.1
Prérequis
Pour pouvoir installer Linux, quelques conditions sont nécessaires : • Vous avez besoin d’un ordinateur avec un processeur compatible Intel Pentium. Tous les processeurs 32 et 64 bits d’Intel et AMD (depuis le Pentium et le K6) appartiennent à cette catégorie. Il existe également des distributions pour d’autres architectures de processeurs, comme l’IBM PowerPC. • Il faut suffisamment de mémoire vive. Pour utiliser les gestionnaires de bureau KDE et Gnome confortablement, 256 Mo sont un minimum. Disposer de plus de mémoire est évidemment un avantage. • Une partition libre avec assez de place sur votre disque dur est également nécessaire. La quantité d’espace disponible dépend de la distribution et des programmes à installer. À l’heure actuelle, 5 à 8 Go sont une bonne valeur indicative. • Votre matériel doit être reconnu et pris en charge par Linux. C’est aujourd’hui le cas de la majorité du matériel standard. Les cartes graphiques les plus récentes, certaines cartes Wi-Fi, ainsi que certains ordinateurs portables peuvent poser problème. La plupart des imprimantes GDI et des Winmodems ne sont pas non plus reconnus (voir section 1.1 pour des liens à propos du matériel). • Certains programmes XWindow utilisent le bouton du milieu de la souris. Une souris à trois boutons ou à molette est donc pratique. Celles à deux boutons peuvent émuler le troisième en appuyant sur les deux boutons simultanément, ce qui est à la longue pénible. Comme nous l’avons vu au chapitre précédent, il existe des distributions minimales qui fonctionnent avec des besoins matériels plus réduits. Dans ce chapitre, nous considérons cependant que vous installez une distribution "normale", comme Fedora, Debian, Kubuntu, Mandriva, Red Hat, SUSE ou Ubuntu.
Linux Livre Page 26 Mardi, 23. septembre 2008 1:05 13
26
LINUX
Si vous utilisez des programmes de virtualisation comme VirtualBox ou VMware, vous pouvez installer Linux dans un environnement virtuel contenu dans Windows. Cela facilite l’installation, mais diminue les fonctionnalités (accès limité au matériel, vitesse d’exécution réduite, etc.).
32 ou 64 bits ? Avantages et inconvénients
De plus en plus d’ordinateurs portables ou de bureau contiennent un processeur 64 bits. La principale différence avec les processeurs 32 bits est que ces derniers ne peuvent adresser directement que 2 Go de mémoire. C’est donc un avantage lorsque vous avez plus de 2 Go de RAM et que vous désirez faire fonctionner des programmes ayant de gros besoins en mémoire et si vous utilisez une distribution 64 bits. En pratique, ces conditions sont réunies sur les ordinateurs qui fonctionnent en tant que serveur réseau ou serveur de base de données, ou faisant fonctionner plusieurs systèmes Linux en parallèle grâce à la virtualisation. Pour une utilisation bureautique standard, l’architecture 64 bits offre peu d’avantages et aucune amélioration sensible des performances (bien que l’on prétende souvent l’inverse). L’architecture 64 bits présente également certains inconvénients : • La quantité de RAM et la place nécessaire sur le disque dur sont plus importantes. • Certains programmes ne fonctionnent qu’en mode 32 bits. Pour les faire tourner sur un système 64 bits, il faut installer d’innombrables bibliothèques en double (en version 32 bits et 64 bits). Les distributions s’occupent du fonctionnement interne, mais la solution n’est pas très élégante.
Distributions 64 bits
• Le troisième problème disparaît heureusement avec la montée en popularité des architectures 64 bits : pour certains composants matériels, il n’existe pas de pilote libre. Pour utiliser ces composants, il faut installer les pilotes propriétaires du fabricant. Si celui-ci ne fournit que des pilotes 32 bits, ils ne fonctionneront pas avec un système 64 bits. Vous aurez alors le choix de ne pas faire fonctionner cet élément ou de réinstaller une distribution 32 bits. Les avantages des architectures 64 bits n’apparaissent, pour des raisons techniques, que lorsque toute la distribution, ou au moins la majorité des programmes et des bibliothèques est en 64 bits. Une distribution universelle 32/64 bits est donc impossible. Il existe, en revanche, pour la plupart des distributions deux versions : une version 32 bits (souvent nommée i386, i586, i686, selon les familles de processeurs Intel) et une version 64 bits (x86_64 ou AMD64). SUSE fournit les deux versions sur un seul DVD double-couche, mais il s’agit tout de même de deux versions différentes de la même distribution. Les processeurs 64 bits courants sont rétrocompatibles avec les processeurs 32 bits. Il est donc possible d’installer au choix sur une architecture 64 bits une distribution 32 ou 64 bits. Cette décision est définitive : changer de modèle de distribution ne peut ensuite se faire qu’en réinstallant le système. Les ordinateurs et systèmes d’exploitation 64 bits seront probablement la norme dans quelques années. Il sera alors rare de se demander s’il faut installer une version 32 ou 64 bits. À l’heure actuelle, l’argumentation se résume ainsi : une distribution 64 bits ne présente pour un utilisateur normal ni avantage, ni inconvénient majeur mais, comme 64 bits sonne mieux que 32 bits, la version 64 bits est souvent installée.
Linux Livre Page 27 Mardi, 23. septembre 2008 1:05 13
27
INSTALLATION
2.2
Premiers paramètres
Démarrage de l’installation de Linux
Pour lancer l’installation, placez le CD ou le DVD de Linux dans votre lecteur et redémarrez votre machine. À la place du démarrage de votre système déjà installé, le programme d’installation devrait démarrer depuis le CD. Si ce n’est pas le cas, il est possible que le BIOS de votre ordinateur ne permette pas l’amorçage depuis le CD. Pour vérifier cela, vous devez entrer dans le BIOS de votre ordinateur, grâce à une touche spéciale juste après le démarrage de l’ordinateur (souvent Suppr ou F1). Les éventuelles modifications dépendent du modèle de votre carte mère et ne sont donc pas décrites ici (reportez-vous au manuel de votre carte mère). Presque toutes les distributions lancent un programme d’installation graphique. Pour que celui-ci puisse démarrer, une carte graphique compatible VGA et suffisamment de RAM sont nécessaires. Ces conditions sont remplies sur les ordinateurs récents. Selon le matériel, il se peut que la carte graphique ne soit pas reconnue dès le départ ou que le moniteur devienne noir après le démarrage du programme d’installation. Ce problème survient surtout sur les écrans plats connectés à la carte graphique via un câble DVI, si la carte passe en mode analogique. Dans ce cas, de nombreuses distributions peuvent également être installées en mode texte. Le passage d’une installation graphique à une installation en mode texte dépend de la distribution. Sur certaines distributions, vous pouvez choisir des paramètres, comme la langue ou la disposition du clavier, avant même le démarrage du système (voir Figure 2.1). D’autres distributions vous le proposent quelques secondes après le démarrage.
Figure 2.1 Choix de la langue au début d’une installation de SUSE.
Linux Livre Page 28 Mardi, 23. septembre 2008 1:05 13
28
LINUX
Certains programmes de configuration utilisent le nombre de touches comme signe distinctif des claviers. Voici quelques valeurs utiles pour déterminer le vôtre :
Choix du clavier
Clavier anglais sans touche Windows
101 touches
Clavier international sans touche Windows
102 touches
Clavier anglais avec touches Windows
104 touches
Clavier international avec touches Windows
105 touches
Vous pouvez aussi activer ou désactiver les touches mortes. Il s’agit, par exemple, des touches ` ou ~. Cette option n’active pas les touches en soi, mais la composition des lettres avec ces touches. Vous pouvez ainsi taper la lettre ? sous la forme ~ N. Pour saisir les signes directement (par exemple ~), vous devez taper la touche correspondante suivie d’un espace. La désactivation des touches mortes complique la saisie des caractères étrangers, mais s’avère sensée si vous ne tapez pas de caractères spéciaux dans d’autres langues et correspond aux usages sous Windows. Configuration de la souris
En général, les souris et les pointeurs de portables sont automatiquement reconnus. Si votre souris ne possède pas de molette, cochez l’option Emulate 3 Buttons (émulation du troisième bouton). Ainsi, vous pourrez simuler le clic sur le troisième bouton en cliquant simultanément sur les deux autres.
Messages du noyau
La plupart des distributions affichent des messages du noyau lors du démarrage, mais vous pouvez les ignorer. Ils ne sont utiles que si le programme d’installation plante au démarrage.
Fonctionneme nt interne
Les programmes d’installation fonctionnent eux-mêmes sous Linux. Par conséquent, un noyau minimal est chargé dès l’amorçage du support d’installation, ainsi que certains modules matériels (disques durs, carte réseau, lecteur CD ou DVD). Si le programme n’arrive pas à charger les bons modules, vous devez fournir les informations correspondantes.
2.3
Bases du partitionnement du disque
Après le démarrage du programme d’installation et divers paramétrages élémentaires, le partitionnement du disque dur est la première étape importante de l’installation. De nombreux programmes d’installation proposent de le faire automatiquement, mais attention : le résultat correspondra rarement à vos souhaits. Qu’est-ce qu’une partition ?
Les partitions sont des sections sur le disque dur. Sous Windows, elles sont représentées par une lettre (par exemple, C: ou D:) et se comportent comme des disques durs en soi. Dans le cas le plus simple, il n’existe qu’une seule partition pour tout le disque. Lorsque vous achetez un PC avec le système Windows préinstallé, c’est souvent le cas.
Pourquoi créer plus de partitions ?
Vous avez besoin de plusieurs partitions dès lors que vous désirez faire fonctionner plusieurs systèmes d’exploitation sur votre ordinateur. Cela est dû au fait que les différents systèmes d’exploitation ont en général des systèmes de fichiers différents. Même si plusieurs systèmes peuvent utiliser le même système de fichiers, il est souvent indispensable de les
Linux Livre Page 29 Mardi, 23. septembre 2008 1:05 13
INSTALLATION
29
installer dans des partitions différentes, afin d’éviter les doublons et les conflits dans les noms de répertoires et de fichiers. De plus, sous Linux, il est souvent utile de créer plusieurs partitions : par exemple, une pour le système d’exploitation, une pour les données des utilisateurs et une autre appelée partition d’échanges (équivalent au fichier d’échange sous Windows). Types de partitions
Il en existe trois types : les partitions primaires, les partitions étendues et les partitions logiques. Un disque dur ne peut contenir que quatre partitions primaires. On peut cependant définir l’une d’entre elles comme une partition étendue. Dans cette dernière, on peut créer plusieurs partitions logiques. Tout cela provient de la limite historique de quatre partitions primaires. Notez que certains outils de partitionnement ne font pas la différence au niveau de l’interface utilisateur entre les différents types de partitions et s’occupent eux-mêmes de leur répartition en interne. Une partition étendue n’est qu’un conteneur pour des partitions logiques. On ne peut enregistrer des données que sur les partitions primaires ou logiques. Le terme "type de partition" est également utilisé dans un autre contexte. Chaque partition se voit associer un nombre qui indique le système pour lequel elle est créée (par exemple, Windows, Linux, Novell Netware, BSD, etc.) ou le rôle qui lui est attribué.
Nombre maximal de partitions
Le nombre de partitions dépend du type de disque dur (IDE, SATA, SCSI) et de la version de Linux. Ce dernier peut en effet créer au maximum 16 partitions sur un disque, dont 12 partitions logiques. Les disques IDE sont une exception : avec le pilote correspondant sous Linux, on peut créer 64 partitions (dont 60 logiques). Le pilote IDE est cependant de plus en plus rarement utilisé au profit du pilote SCSI.
Aide au partitionnement
Chaque système d’exploitation a son propre outil pour modifier la géométrie d’un disque. Sous Windows 9x/ME, le programme DOS FDISK est encore utilisé. Depuis Windows NT, il existe un outil confortable avec une interface utilisateur graphique. L’accès à cet outil dépend de la version de Windows. Sous Windows Vista, il faut lancer Panneau de configuration, Système et maintenance, Outils d’administration, Gestion de l’ordinateur, Gestion des disques. Sous Linux, il existe plusieurs programmes d’aide au partitionnement. Si ceux-ci posent problème, les utilisateurs avancés peuvent utiliser les commandes fdisk ou parted. Il est très difficile de modifier rétrospectivement le partitionnement d’un disque. En général, le contenu d’une partition est perdu lorsque sa taille est modifiée. Le déplacement de partitions n’est pas non plus prévu. Il existe des programmes spéciaux, commerciaux ou gratuits, qui permettent d’effectuer cette tâche, mais avec beaucoup de limitations. Il est donc conseillé de bien réfléchir au schéma de partitions dès le départ. Les utilisateurs avancés de Linux savent dépasser ces limitations en utilisant le système LVM. Il s’agit d’une couche intermédiaire entre les partitions et les systèmes de fichiers. Comme l’administration de LVM est relativement compliquée, cette option n’est pas proposée aux débutants.
Linux Livre Page 30 Mardi, 23. septembre 2008 1:05 13
30
LINUX
Systèmes de fichiers Le partitionnement permet de réserver de la place sur un disque. Avant de pouvoir enregistrer des données sur une partition, il faut créer un système de fichiers. Celui-ci contient les fichiers et les informations de gestion associées. Windows et Linux proposent différents systèmes : • Sous Windows, on peut utiliser le système VFAT (Windows 9x et Windows ME) ou NTFS, plus moderne (Windows NT/2000/XP/Vista). • Sous Linux, le système ext3 est dominant. Les alternatives actuelles sont xfs et reiserfs (voir section 23.6 pour plus d’informations). La création d’un système de fichiers sur une partition s’appelle le formatage. Sous Windows, on peut effectuer cette opération via un menu contextuel dans l’Explorateur ou avec le programme FORMAT. Sous Linux, le programme d’installation s’occupe du formatage et appelle en arrière-plan des commandes telles que mkfs.ext3 ou mkfs.xfs. Formater une partition supprime toutes les données qui s’y trouvent. Le partitionnement et le formatage de disques effacent, en général, les partitions concernées. Il existe quelques exceptions et des outils spéciaux pour redimensionner les partitions sans perte.
Nom des partitions Sous Windows
Sous Linux
Schéma sd-*
Sous Windows, les partitions utilisables par le système sont indiquées par les lettres des lecteurs. A: et B: sont réservées aux lecteurs de disquettes. Les lettres suivantes désignent les partitions primaires et logiques du disque (la partition étendue n’a pas de lettre et n’est donc pas accessible). Les partitions des systèmes de fichiers étrangers (y compris les partitions Linux) n’ont pas de lettre de lecteur et sont inaccessibles à la plupart des programmes. Les partitions ne sont montrées que dans les programmes de partitionnement. Sous Linux, on accède aux disques et aux partitions via les fichiers de périphériques. Il existe deux schémas de nommage de ces fichiers. Le schéma utilisé dépend de deux facteurs : le système de bus des disques durs (IDE, SATA ou SCSI) et, pour les disques IDE, du pilote de disques durs. Nous allons décrire ci-après ces deux schémas (voir Chapitre 25 pour plus d’informations). Le schéma sd-* est le schéma standard pour tous les disques durs SATA, SCSI, USB et Firewire, ainsi que pour les disques IDE utilisant le pilote de disques libata (ce qui dépend de la distribution). Les disques sont alors accessibles par les noms /dev/sda, /dev/sdb, /dev/ sdc, etc. Pour accéder à une partition et non à l’intégralité du disque, on ajoute le numéro de la partition au nom du disque. Les chiffres 1 à 4 désignent les partitions primaires et étendues. Les partitions logiques commencent à 5, même lorsqu’il y a moins de quatre partitions primaires et étendues.
Linux Livre Page 31 Mardi, 23. septembre 2008 1:05 13
31
INSTALLATION
Schéma hd-*
Le schéma hd-* n’est utilisé que pour les disques durs IDE, lorsque Linux utilise l’ancien pilote IDE. Le câblage physique des disques décide de leur nom. /dev/hda désigne le premier périphérique (maître) du premier canal IDE. /dev/hdb désigne le second périphérique (esclave) du premier canal IDE. /dev/hdc et /dev/hdd désignent respectivement le maître et l’esclave du second canal IDE. La numérotation des partitions est identique à celle du schéma sd-*. Cette désignation très technique des partitions ne vous servira normalement que lors de l’installation et de l’administration. Au quotidien, les partitions actives sont disponibles comme des répertoires. À l’inverse de Windows, il n’y a pas de lettre de lecteur.
2.4
Partitionnement du disque dur
La création de nouvelles partitions est l’une des étapes les plus importantes de l’installation de Linux. Tous les programmes d’installation actuels contiennent un assistant de partitionnement simple à utiliser. La Figure 2.2 montre un exemple d’éditeur de partitions, celui de Fedora. Les détails de l’utilisation de cet éditeur dépendent de la distribution.
Figure 2.2 Éditeur de partitions de Fedora.
Se pose alors une question fondamentale : combien de partitions devez-vous créer, et de quelle taille ? Quels effets cela a-t-il sur la vitesse d’exécution, la maintenance et une éventuelle réinstallation ?
Linux Livre Page 32 Mardi, 23. septembre 2008 1:05 13
32
LINUX
Réduction de la partition Windows On se trouve souvent dans la situation d’un système Windows déjà installé sur une seule partition qui remplit tout le disque. Même si cette dernière contient des douzaines de gigaoctets libres, cela ne change rien : Linux a besoin pour son installation d’une ou de plusieurs partitions. Et avant de les créer, vous devez réduire la partition Windows, si possible sans perdre de données. La solution la plus radicale et la plus simple consiste à la supprimer. Mais la plupart des débutants sous Linux désirent garder Windows comme système d’exploitation alternatif, que ce soit pour jouer ou lancer des programmes qui n’existent pas sous Linux. Nous supposerons donc que Windows est déjà installé et qu’il sera utilisé de nouveau après l’installation de Linux. Redimensionnement pendant l’installation
Pour la plupart des distributions (Debian, Mandriva, SUSE, Ubuntu), le programme d’installation est capable de réduire une partition Windows trop grosse et le système de fichiers qui s’y trouve. Vous pouvez alors modifier la taille de la partition dans l’outil de partitionnement ou appeler la fonction de redimensionnement de la partition via un menu. Cette opération fonctionne pour les systèmes de fichiers VFAT et NTFS. Début 2007, le redimensionnement des partitions Windows Vista avec des programmes Linux posait encore d’énormes problèmes. Lorsque vous lirez ce livre, toutes les distributions actuelles devraient être compatibles avec Vista. Cependant, soyez prudent lorsque vous installez des distributions plus anciennes. Il est plus sûr de redimensionner la partition avant l’installation, grâce aux outils fournis par Windows Vista.
Redimensionnement avant l’installation
Si ce redimensionnement est impossible ou ne fonctionne pas, vous pouvez effectuer cette opération avec d’autres outils : • Directement sous Windows. Windows Vista propose un outil de réduction des partitions. Lancez Panneau de configuration > Outils d’administration > Gestion de l’ordinateur > Gestion des disques. Cliquez du bouton droit sur la partition et lancez Réduire le volume. Les versions précédentes de Windows ne permettent pas de redimensionnement. Vous pouvez supprimer et recréer la partition, mais cela en supprime tout le contenu. • Avec un système Linux "live". Les systèmes live, tels que Knoppix, GParted ou SystemRescueCD, contiennent différents programmes pour réduire les partitions Windows. L’utilisation de ces outils est cependant complexe. L’outil le plus convivial est gparted (voir Chapitre 23).
Réinstaller Linux et Windows
• Avec des programmes commerciaux. Vous pouvez aussi utiliser des outils commerciaux, plus confortables mais coûteux. Le plus connu est PartitionMagic de Norton/Symantec : http://www.symantec.com/norton/products/overview.jsp?pcid =sp&pvid=pm80. Si votre ordinateur ne possède aucun système d’exploitation et si vous désirez installer Windows et Linux, commencez par Windows. Son installation propose également de partitionner le disque dur. Dans ce cas, indiquez uniquement l’espace dont vous avez besoin (par exemple 50 Go), et non l’ensemble du disque. Dans le doute, choisissez une valeur plus petite : il est plus simple d’agrandir une partition que de la réduire.
Linux Livre Page 33 Mardi, 23. septembre 2008 1:05 13
INSTALLATION
Achat d’un nouvel ordinateur
33
Certains revendeurs, chez qui vous pouvez acheter un ordinateur sans Windows, peuvent également partitionner le disque. Cela n’est guère possible si vous achetez votre machine dans une grande chaîne − Windows sera alors préinstallé.
Nombre et taille des partitions On me pose souvent la question suivante : si on considère un disque de n Go, quel est le meilleur partitionnement ? Il n’existe malheureusement pas de réponse universelle. Cette section propose cependant quelques règles de base sur le nombre et la taille des partitions. Il est probable que le concept même de partitions multiples vous étonne. Puisqu’une seule partition suffit pour Windows, il devrait en être de même pour Linux. Ce dernier peut fonctionner sur une seule partition, mais c’est loin d’être optimal. Il est plus courant de partitionner le disque, comme nous allons le décrire. Partition système
La partition système est la seule dont vous ayez vraiment besoin. Elle contient le système Linux et tous ses programmes. Cette partition s’appelle toujours /. Il s’agit du point du système de fichiers auquel est liée la partition (point de montage). / désigne aussi la racine, c’est-à-dire le début de l’arborescence de fichiers. C’est pourquoi la partition système est parfois aussi appelée partition racine ou partition root. La taille raisonnable pour installer et utiliser une distribution complète varie entre cinq et dix gigaoctets. Il faut bien sûr ajouter l’espace nécessaire à vos propres données (vous pouvez les enregistrer dans une partition séparée). Vous pouvez installer plusieurs distributions sur un même ordinateur (comme sur mon ordinateur de test). Pour cela, vous aurez besoin pour chacune d’elles d’une partition système différente. Les autres partitions peuvent être partagées entre les systèmes. Lorsque le système est bien configuré, vous pouvez choisir au démarrage entre Windows et toutes les distributions Linux installées.
Partition d’amorçage
Selon les cas, il peut être conseillé de créer une partition d’amorçage nommée /boot. Elle contient les données nécessaires à la première phase du démarrage de l’ordinateur. Il s’agit en particulier du fichier du noyau, vmlinuz*, du fichier de disque virtuel, initrd*, et des petits fichiers nécessaires au gestionnaire d’amorçage. La partition /boot ne contient donc que quelques mégaoctets de données. La partition d’amorçage peut régler certains problèmes de démarrage. Vous devez envisager de l’utiliser dans les cas suivants : • Le BIOS de votre carte mère date d’avant 1998. Vous rencontrerez alors probablement la limite des 1 024 cylindres. Cela signifie que les données nécessaires à l’amorçage de l’ordinateur doivent se trouver dans les 1 024 premiers cylindres du disque dur, soit en général les 7,9 premiers gigaoctets. Pour satisfaire cette limite, la partition d’amorçage donc être placée avant les autres partitions. L’ordre des partitions suivantes n’a pas d’importance. • Vous utilisez pour la partition système un système de fichiers particulier ou chiffré, LVM ou RAID. Dans ce cas, le chargeur d’amorçage ne peut pas lire les données de la partition
Linux Livre Page 34 Mardi, 23. septembre 2008 1:05 13
34
LINUX
système. Les données utilisées par le processus d’amorçage doivent être enregistrées sur une partition avec un système de fichiers standard, typiquement ext2 ou ext3.
Partition de données
Partitions supplémentaires
Partition d’échanges
Dans le doute, la création d’une partition d’amorçage ne peut pas nuire. Toutefois, si vous envisagez d’installer plusieurs distributions en parallèle sur votre disque, la séparation des différentes partitions système et partitions d’amorçage associées crée une fragmentation souvent peu claire du disque dur. Une partition de données permet de séparer les données système de vos propres données. Cela présente un avantage important : vous pourrez par la suite réinstaller une autre distribution ou réinstaller votre système dans la partition système sans mettre en danger la partition de données séparée. On utilise généralement /home comme point de montage pour cette partition de données. Je ne peux pas conseiller de taille pour cette partition, car elle dépend largement de l’utilisation de votre système Linux. On peut encore diviser le disque en partitions supplémentaires. Si vous utilisez Linux en tant que serveur réseau ou serveur de bases de données, vous pouvez modifier les partitions du système pour séparer les données correspondantes. Tant qu’il existe de l’espace non partitionné sur votre disque, augmenter le nombre et la taille des partitions d’un système existant ne pose aucun problème. Si vous ne savez pas comment répartir votre espace, vous pouvez toujours laisser une partie du disque vide. La partition d’échanges ou de swap est le pendant du fichier d’échanges sous Windows. Lorsque Linux n’a pas assez de mémoire, il place dans cette partition le contenu de la RAM qui n’est pas utilisée à cet instant. Utiliser une partition complète (et non un fichier comme sous Windows) améliore les performances en termes de rapidité d’exécution. Linux peut être configuré pour utiliser un fichier d’échanges au lieu d’une partition, mais ce fonctionnement n’est ni courant, ni rapide. À l’inverse des autres partitions, la partition d’échanges n’a pas de nom (pas de point de montage). Elle est en effet utilisée directement et non via un système de fichiers. Si vous avez beaucoup de RAM, il peut être tentant de se passer d’une partition d’échanges, mais ce n’est pas conseillé. Lorsque Linux ne trouve plus de RAM, des processus en cours d’exécution (programmes) doivent être arrêtés, sans que l’on puisse prévoir lesquels, ce qui peut avoir des conséquences imprévues (voire provoquer un plantage). S’il existe une partition d’échanges, Linux ralentira beaucoup en raison du manque de mémoire, ce qui est certes désagréable, mais vous laissera une chance de réagir et de régler le problème en terminant le programme fautif vous-même. La partition d’échanges ne sert donc pas tant de réserve de mémoire que d’avertissement d’urgence. La bonne taille d’une partition d’échanges se situe entre une et deux fois la taille de votre mémoire vive − si vous avez beaucoup de RAM, une taille équivalente suffit. Si vous utilisez la fonction Suspend to Disk de l’ordinateur, cette partition doit avoir au moins la taille de votre RAM. Sur les systèmes 32 bits, sa taille est limitée à 2 Go. Si vous avez besoin de plus d’espace, vous devez créer plusieurs partitions d’échanges. Cela est cependant rarement utile : si vos applications nécessitent autant d’espace, Linux passe sans cesse les données entre les partitions d’échanges et la RAM, et n’est en pratique plus utilisable. Dans ce cas, il ne faut pas ajouter de l’espace, mais de la RAM.
Linux Livre Page 35 Mardi, 23. septembre 2008 1:05 13
35
INSTALLATION
Résumé
Taille des partitions pour un usage privé partition d’échanges (une à deux fois la taille de la RAM) /
partition système (5 à 10 Go ; prévoir plus pour les développeurs)
/home
partition de données (à adapter selon vos besoins)
Quel système de fichiers utiliser ?
ext2, ext3, ext4
Linux prend en charge de nombreux systèmes de fichiers, parmi lesquels ext2, ext3, ext4, reiserfs, reiser4 et xfs (voir Chapitre 23). Tous ces systèmes à l’exception d’ext2 sont journalisés, ce qui permet de sécuriser les données dans le cas d’un arrêt inopiné du système (par exemple, lors d’un orage). Toutes les distributions ne fournissent pas tous les systèmes de fichiers pendant l’installation. Je conseille donc aux débutants d’utiliser si possible ext3. Ce système est mûr, stable et presque considéré comme le standard sous Linux. Même Novell et SUSE, qui ont longtemps préféré reiserfs, favorisent maintenant ext3 comme système par défaut. À l’été 2006, le système de fichiers ext4 est né ; il est censé remplacer ext3. Mais jusqu’à ce qu’il soit considéré comme suffisamment abouti, mieux vaut l’éviter.
LVM, RAID
Partition d’échanges
Bien qu’ancien, ext2 a encore une raison d’être. Il est compatible avec ext3, mais n’a pas de fonction de journalisation. Il est donc plus rapide lors des opérations d’écriture. Certaines distributions permettent de mettre en place un système LVM ou RAID lors de l’installation. LVM (Logical Volume Manager ou gestionnaire de volumes logiques) permet de créer des partitions virtuelles et de les redimensionner alors que l’ordinateur est en service. RAID (Redundant Array of Inexpensive Disks ou ensemble redondant de disques durs bon marché) permet de lier une partition à plusieurs disques pour obtenir un système plus rapide ou plus sûr. LVM et RAID ont l’inconvénient de rendre l’administration plus difficile. Ils ne sont pas conseillés aux utilisateurs inexpérimentés. Notez que certaines distributions, comme Red Hat ou Fedora, font de LVM un standard. Si ce n’est pas ce que vous voulez, vous devrez partitionner le disque manuellement. La partition d’échanges n’a pas de vrai système de fichiers. Elle doit être formatée avec l’outil mkswap avant sa première utilisation. Toutes les distributions Linux s’en chargent pendant l’installation.
Résumé
Systèmes de fichiers pour un usage privé [swap] /boot / /home
pas de système de fichiers ext2 ext3 ext3
Linux Livre Page 36 Mardi, 23. septembre 2008 1:05 13
36
LINUX
2.5
Choix des paquetages
Vous pouvez, dans de nombreuses distributions, choisir lors de l’installation les composants, programmes et paquetages à installer. Il est rarement justifié de tout installer, pour les raisons suivantes : • Le nombre important de logiciels dépasse souvent les utilisateurs inexpérimentés. Il est plus clair de procéder à une installation de base et d’ajouter au fur et à mesure les programmes nécessaires, ce qui se fait sans problème. • Il existe des programmes incompatibles entre eux. Par exemple, vous ne pouvez pas avoir deux serveurs de courrier électronique sur une seule machine ; vous devez en choisir un. • Si vous utilisez l’ordinateur en tant que serveur, les risques de sécurité augmentent avec le nombre de services ouverts sur la machine. Les paquetages de fonctions réseau que vous n’utilisez pas ne doivent pas être installés. Les paquetages sont souvent choisis grâce à des groupes préconfigurés (voir Figure 2.3). Dans le cas de certaines distributions, comme Ubuntu, vous n’avez aucune influence sur les paquets installés. Seul le système de base sera installé ; les programmes suivants le seront lorsque le besoin s’en fera sentir.
Figure 2.3 Choix des paquetages lors d’une installation de Fedora.
Les versions actuelles de Red Hat et de Fedora n’utilisent le CD/DVD comme source que pendant l’installation. Si vous avez besoin ensuite d’un autre programme, vous devez le télécharger depuis Internet. Cela fonctionne sans problème et garantit que vous disposez de la version la plus récente. En revanche, une bonne connexion à Internet est nécessaire. Si ce n’est pas le cas, il vaut mieux installer dès le début tous les paquetages dont vous êtes susceptibles d’avoir besoin.
Linux Livre Page 37 Mardi, 23. septembre 2008 1:05 13
37
INSTALLATION
Recommandations pour l’installation Gnome ou KDE
Services réseau
Outils de développement et en-têtes du noyau
Certaines distributions proposent de choisir entre les systèmes de bureau KDE et Gnome − vous pouvez aussi installer les deux systèmes en parallèle. Il s’agit de deux interfaces utilisateur différentes pour Linux. En résumé, Gnome est plus simple à utiliser, mais KDE propose davantage de fonctionnalités et de possibilités de configuration. Si vous installez les deux, vous aurez une souplesse maximale et vous pourrez choisir lors de chaque connexion de lancer KDE ou Gnome. Nous décrirons les deux environnements aux Chapitres 4 et 5. Pour une utilisation bureautique de Linux, vous n’avez pas besoin de serveur (que ce soit un serveur web, NFS ou de courrier électronique). Il existe cependant trois exceptions : • Pour pouvoir utiliser votre imprimante, vous avez besoin d’un serveur d’impression, en général CUPS. Ce dernier est généralement installé par défaut. • Pour accéder à votre ordinateur depuis un poste distant, vous devez installer le serveur SSH sshd. • Si vous désirez partager des dossiers avec des ordinateurs sous Windows, vous devez installer Samba. Même si les utilisateurs débutants de Linux ont rarement l’ambition de recompiler leur noyau, je conseille généralement l’installation des outils de développement élémentaires, tels que gcc et make, ainsi que des fichiers d’en-tête du noyau (souvent installés automatiquement). Vous pourrez alors compiler des modules du noyau. Cela peut être utile pour installer les pilotes de votre carte graphique ou utiliser VMware ou tout autre logiciel de virtualisation − il n’est cependant pas nécessaire d’installer tout le code du noyau.
2.6
Mot de passe root
Gestion des utilisateurs
Configuration de base
Cette section pose quelques bases pour la configuration de l’installation, qui peut varier selon la distribution. En effet, certaines distributions réduisent la configuration au minimum. Cette dernière se fait alors dans le système déjà lancé. De manière générale, tous les paramètres de l’installation peuvent être modifiés par la suite. Vous pouvez donc reporter la configuration des éléments facultatifs à plus tard. Sous Linux, l’utilisateur root est responsable de l’administrateur du système. Il possède des droits illimités au système, ce qui implique un potentiel de dommages non négligeable. Il est donc vivement conseillé de protéger l’accès root par un mot de passe. Certaines distributions, dont Ubuntu, désactivent complètement le compte root. Il n’est donc pas nécessaire de le protéger par un mot de passe. Les tâches administratives sont effectuées par des utilisateurs prédéterminés, qui doivent chacun fournir leur propre mot de passe. Il est peu courant, sous Linux, de travailler avec l’utilisateur root en dehors des tâches administratives. Pour écrire une lettre, compiler un programme ou surfer sur Internet, on se connecte en tant qu’utilisateur standard. Pendant l’installation, vous pouvez créer un ou
Linux Livre Page 38 Mardi, 23. septembre 2008 1:05 13
38
LINUX
plusieurs utilisateurs, dotés chacun d’un mot de passe, et par la suite, en créer de nouveaux, modifier les mots de passe, etc. Les noms des utilisateurs doivent se composer d’un maximum de huit lettres ou chiffres. Évitez les caractères accentués ou spéciaux − cela ne fonctionne pas toujours. Il est courant d’utiliser uniquement des lettres minuscules, mais ce n’est pas une obligation. Les mots de passe doivent contenir entre six et huit signes. Ils sont idéalement composés de lettres majuscules, minuscules, chiffres et caractères spéciaux, comme +-*/_.,;:()[]. Évitez les caractères accentués et ceux qui ne sont pas définis dans la table de caractères ASCII. Dans de nombreuses distributions, il n’est pas possible de tester le clavier avant de taper les différents mots de passe, en particulier root. Si vous n’arrivez pas à vous connecter à votre ordinateur après l’installation, il peut s’agir d’un problème de clavier, par exemple toujours en QWERTY au moment de la saisie du mot de passe. Configuration réseau
Pour connecter votre ordinateur à un réseau local, il faut établir une configuration réseau. Celle-ci peut être automatique s’il existe un serveur DHCP (serveur qui envoie aux ordinateurs du réseau leur configuration réseau). Dans ce cas, elle se réduit souvent à un clic sur la bonne case et éventuellement à la saisie d’un nom d’ordinateur. Lorsque vous configurez votre réseau manuellement, on vous demande les paramètres suivants (pour plus d’informations, voir Chapitre 26) :
Wi-Fi
• Nom d’hôte et de domaine. Ils correspondent sous Windows au nom de l’ordinateur et du groupe de travail. Dans un réseau local, le nom de domaine est généralement fourni. Celui de l’hôte doit être unique. N’utilisez pas localhost, qui a une signification particulière. • Adresse IP de l’ordinateur. Il s’agit d’une chaîne de caractères sous la forme a.b.c.d (par exemple 192.168.27.35) qui identifie l’ordinateur sur le réseau local. Les deux ou trois premiers chiffres de l’adresse sont généralement fixés à l’avance ; les suivants doivent être uniques sur le réseau. • Masque de sous-réseau, adresse du réseau et de broadcast. Un réseau local est décrit par deux ou trois masques. Par exemple, si le réseau s’étend sur tous les numéros 192.168.27.x, le masque de sous-réseau est 255.255.255.0 (ce qui est généralement le cas pour les petits réseaux locaux). L’adresse du réseau est alors 192.168.27.0 et celle de broadcast 192.168.27.255. • Adresse de la passerelle. Lorsqu’un ordinateur du réseau local fournit l’accès à Internet à tous les autres ordinateurs du réseau, vous devez indiquer cette adresse. • Adresse du serveur de noms. Le serveur de noms, ou DNS (Domain Name Server), sert à résoudre les noms réseau en adresses IP. Il permet donc de taper dans un navigateur http://www.yahoo.com et d’atteindre automatiquement l’ordinateur dont l’IP correspond à ce nom. Il peut également servir à atteindre un ordinateur du réseau local s’il permet la résolution des noms locaux. Lorsque les adresses du serveur de noms et de la passerelle sont correctes, vous pouvez accéder à Internet. Configurer une carte Wi-Fi pendant l’installation n’est utile que si vous désirez utiliser l’accès au réseau sans-fil pendant l’installation. En plus des paramètres précédents, vous
Linux Livre Page 39 Mardi, 23. septembre 2008 1:05 13
INSTALLATION
Accès à Internet par modem, RNIS ou ADSL
Pare-feu
SELinux, AppArmor
Mises à jour
Mode graphique
Imprimante, scanner, carte son
Fuseau horaire
Langue
39
devez alors indiquer l’identifiant du réseau (SSID ou ESSID), le mode de chiffrement (WEP, WPA ou WPA2) et le mot de passe. Lorsque le système fonctionne, le logiciel NetworkManager est plus confortable à utiliser. Si votre ordinateur ne fait pas partie d’un réseau local, vous accédez probablement à Internet via un modem, une carte RNIS ou un modem ADSL. Ceux-ci ne fonctionnent d’emblée que dans les cas simples. Il peut donc être sage de repousser la configuration d’Internet à plus tard (voir Chapitre 27). La plupart des distributions protègent l’accès au réseau ou à Internet grâce à un pare-feu. Ce dernier laisse passer les connexions initiées par le poste, mais bloque les requêtes de connexions entrantes, ce qui augmente significativement la sécurité. Si vous envisagez de proposer des services réseau sur votre ordinateur (comme un serveur SSH ou web), vous pouvez définir des exceptions pour ces services et permettre un accès depuis l’extérieur. Nous parlerons de la mise en place d’un pare-feu au Chapitre 29. Certaines distributions ajoutent au pare-feu des systèmes de protection supplémentaires, qui protègent les programmes importants contre d’éventuels dysfonctionnements. Red Hat et Fedora fournissent SELinux, et SUSE, le système AppArmor. Si vous n’utilisez que les programmes de votre distribution, SELinux et AppArmor fonctionnent sans problème. La sécurité effective de ces systèmes est controversée, car ils sont encore neufs et peu utilisés en pratique. Si vous envisagez d’installer des programmes réseau compilés par vos soins ou si vos besoins de configuration s’éloignent de ceux prévus par la distribution, SELinux et AppArmor peuvent poser problème. La solution est alors de les désactiver. De nombreuses distributions proposent d’effectuer une mise à jour du système avant même le premier démarrage, afin d’actualiser les programmes critiques concernant la sécurité de l’ordinateur. Cela dépend bien sûr de la configuration de votre accès à Internet. La plupart des programmes d’installation configurent eux-mêmes XWindow pour toutes les sorties graphiques. Les éléments critiques de cette configuration sont la reconnaissance de la carte graphique et la saisie des paramètres du moniteur (résolution, fréquence), s’ils ne sont pas reconnus. Certaines distributions permettent de configurer une imprimante, une carte son et d’autres périphériques matériels. Si tout fonctionne bien, rien ne s’y oppose. Mais en cas de problème, il vaut mieux reporter la configuration à plus tard (voir Chapitre 9 pour les scanners, Chapitre 20 pour les cartes son et Chapitre 30 pour les imprimantes). Afin de paramétrer correctement l’heure, le programme d’installation doit savoir si l’horloge interne (CMOS, au niveau matériel) de l’ordinateur est réglée à l’heure locale ou en UTC (Universal Coordinated Time), et dans quel fuseau horaire vous vous trouvez. Si votre ordinateur dispose d’un accès permanent à Internet, de nombreuses distributions peuvent être configurées pour synchroniser l’heure avec un serveur de date (serveur NTP) sur Internet. En général, Linux s’installe dans la langue utilisée pendant l’installation − pour la plupart des lecteurs de cet ouvrage, il s’agit donc du français. Il est conseillé d’installer également les fichiers de langue anglaise (ce dont la plupart des distributions s’occupent par défaut). Ainsi, vous êtes assuré d’avoir au moins le texte anglais s’il n’existe pas de traduction française.
Linux Livre Page 40 Mardi, 23. septembre 2008 1:05 13
40
LINUX
Si certaines personnes veulent utiliser votre ordinateur dans une autre langue que celle par défaut, vous devez installer les paquetages de localisation correspondants. Vous pourrez alors choisir la langue désirée lors de la connexion au système.
2.7
Problèmes
Démarrage de l’ordinateur
Cette section s’intéresse à la manière dont Linux doit être démarré. La plupart des distributions installent à cet effet le logiciel GRUB. Il peut aussi s’agir du programme déjà ancien LILO, mais c’est de plus en plus rare. Le premier secteur du disque dur est appelé MBR (Master Boot Record ou enregistrement d’amorçage maître), où la plupart des programmes d’installation placent GRUB et LILO. Par conséquent, le secteur d’amorçage, souvent préalablement occupé par Windows, est écrasé. GRUB ne sert donc pas seulement à amorcer Linux, mais il pointe aussi vers le chargeur d’amorçage de Windows. Au démarrage de l’ordinateur, un petit menu s’affiche. Vous pouvez alors choisir de démarrer Linux ou Windows. Si vous optez pour ce dernier, GRUB active le chargeur d’amorçage de Windows qui se trouve dans le premier secteur de la partition de Windows. Installer le chargeur d’amorçage fonctionne désormais dans presque toutes les configurations matérielles et logicielles. Cependant, dans certains cas rares, un problème survient. Vous ne pouvez alors lancer ni Windows, ni Linux. Nous parlerons de cette situation à la section 2.10. Si tout se passe bien, vous devriez obtenir lors du démarrage de l’ordinateur un menu dans lequel vous pouvez choisir le système d’exploitation que vous désirez démarrer. L’aspect de ce menu dépend du programme d’installation. Vous pouvez enfin faire vos premiers pas sous Linux (voir Chapitre 3).
2.8 Installation sur un disque dur externe
Installation du chargeur d’amorçage
Installations non standard
Cette section évoque deux formes d’installation moins fréquentes dans la pratique. Les détails dépendent évidemment de la distribution choisie. On peut installer Linux sur un disque dur externe en USB ou en Firewire. Cette variante peut sembler séduisante, en particulier sur les portables dont le disque dur intégré est plein. Le problème est le démarrage du système Linux. On peut alors procéder de deux manières : • Installer le chargeur d’amorçage sur le premier secteur du disque dur externe. Il faut alors configurer le BIOS pour qu’il utilise celui-ci comme premier périphérique d’amorçage. En d’autres termes, si le disque dur externe est branché, Linux démarre ; sinon, ce sera Windows installé sur le disque interne. • Installer le chargeur d’amorçage sur le premier secteur du disque interne. Dans ce cas, le processus ne fonctionne que si le chargeur d’amorçage et Linux reconnaissent immédiatement le disque externe (sans avoir à charger de pilote). Il n’existe pas de solution universelle, car tout dépend de la manière dont le BIOS gère les disques externes pendant l’amorçage.
Linux Livre Page 41 Mardi, 23. septembre 2008 1:05 13
41
INSTALLATION
On peut aussi installer Linux sur une grosse clé USB, qui est alors reconnue comme disque dur externe. Installation réseau
Lors d’une installation réseau, les fichiers ne sont pas lus sur un CD ou un DVD, mais sur le réseau. Il existe alors deux variantes qui se différencient par la manière dont l’installation commence : • Démarrage de l’installation avec un CD contenant le programme d’installation. Il configure la connexion au réseau et récupère ensuite toutes les données sur le réseau ou sur Internet via FTP, HTTP, NFS ou SMB. Cette méthode est pratique pour les grosses distributions disponibles gratuitement sur Internet, comme Debian ou openSUSE. Il n’est alors pas nécessaire de télécharger des ISO volumineuses et de graver plusieurs CD ou DVD ; il suffit de télécharger une ISO de CD de démarrage, ne dépassant généralement pas les 50 Mo. • Installation réseau. La "vraie" installation réseau implique que votre ordinateur puisse lire ses données d’amorçage sur le réseau. C’est possible sur la plupart des cartes mères, mais il faut le configurer dans le BIOS et mettre en place un serveur permettant ce type d’utilisation. Dans les deux cas, il faut prévoir une bonne connexion au réseau ou à Internet.
2.9
Problèmes lors de l’installation
Cette section traite des problèmes typiques que vous pouvez rencontrer pendant l’installation, et des solutions possibles. Comme nous ne pouvons pas aborder l’intégralité de l’univers de Linux, vous devez apprendre à vous aider vous-même, et le plus tôt sera le mieux. S’aider soi-même
Que faire lorsque vous avez un problème d’installation, que l’ordinateur ne répond pas ou que le matériel n’est pas reconnu ? Le premier réflexe est évident : avant de démarrer l’installation, lisez le fichier README et les notes de version (Release Notes) qui se trouvent sur Internet ou sur le CD-ROM. Le site web de la distribution concernée est également un bon point de départ. Il contient souvent des pages et des forums dédiés à la résolution des problèmes les plus fréquents. Les groupes de discussion sur Linux sont aussi une source intéressante et généralement à jour. Allez à l’adresse http://groups.google.fr. Si vous saisissez par exemple "linux" et le nom d’un périphérique, vous trouverez sans doute de nombreuses discussions relatives à ce dernier, et avec un peu de chance et de patience, une réponse à votre problème.
Problèmes de matériel Si des composants matériels importants ne sont pas reconnus lors de l’installation, ou si leur détection plante, il peut être utile de passer des paramètres au noyau (voir Chapitre 24).
Linux Livre Page 42 Mardi, 23. septembre 2008 1:05 13
42
LINUX
Problèmes liés au clavier Dans les premières phases de l’installation, il se peut que le clavier français ne soit pas encore installé et que vous disposiez d’un clavier américain. C’est également souvent le cas pendant le démarrage du chargeur d’amorçage. Le clavier QWERTY US est représenté à l’adresse http://fr.wikipedia.org/wiki/QWERTY ; cette illustration peut être pratique pour retrouver des correspondances avec un clavier AZERTY français.
2.10 Problèmes après l’installation Il arrive que l’installation se passe sans soucis et que les problèmes commencent après le redémarrage de l’ordinateur.
L’ordinateur ne démarre plus Le pire après une installation de Linux est que l’ordinateur ne démarre plus ou que l’un des systèmes d’exploitation ne soit plus accessible. Il peut s’agir d’une des situations suivantes : • Linux plante (problème de matériel). Après le redémarrage, l’ordinateur affiche quelques messages puis plante, avec ou sans message d’erreur. Cause probable : il s’agit d’un problème matériel. Résolution : vous pouvez aider Linux à détecter certains composants matériels grâce à des options passées au noyau lors de l’amorçage (voir Chapitre 24). Mais cela ne fonctionne qu’avec ceux directement accessibles par le noyau, sans module intermédiaire. On peut passer des options d’amorçage directement au noyau. Dans GRUB, passez du mode graphique au mode texte grâce à Échap. Choisissez avec les touches de direction la distribution Linux à démarrer et tapez E. Vous accéderez alors à l’éditeur de GRUB, qui affiche quelques lignes comme celles-ci : kernel (hd0,11)/boot/vmlinuz root=/dev/hda12 splash=silent vga=normal initrd (hd0,11)/boot/initrd
Choisissez la ligne du noyau (commençant par kernel) et appuyez à nouveau sur E pour l’éditer. La touche Entrée valide les modifications et Échap revient au menu d’amorçage d’où vous pourrez redémarrer Linux. La modification des paramètres ne fonctionne que pour ce démarrage et n’est pas enregistrée pour les suivants. • Linux plante (unable to mount root fs). Le noyau a démarré, mais Linux n’a pas pu trouver sa partition système. Cause probable : la configuration de GRUB a échoué. Cela peut arriver lorsque le câblage des disques durs a été modifié. Résolution : indiquez la bonne partition lors du démarrage sous la forme root=/dev/ hdb8. Lorsque cela fonctionne, vous pouvez reconfigurer GRUB et recréer une disquette d’amorçage. Si le nom de la partition a été modifié (par exemple, si le disque a été recâblé), il faut aussi modifier le fichier /etc/fstab (voir Chapitre 23).
Linux Livre Page 43 Mardi, 23. septembre 2008 1:05 13
43
INSTALLATION
• Linux ne démarre pas. Lorsque l’ordinateur redémarre, il lance Windows sans poser de question. Il ne semble pas y avoir trace de Linux. Cause probable : l’installation de GRUB n’a pas fonctionné pour une raison ou une autre. Résolution : démarrez un système de maintenance ou un live CD et réinstallez GRUB (voir Chapitre 24). • Windows ne démarre pas. Après le démarrage, Linux se lance automatiquement. Il ne semble pas y avoir trace de Windows. Cause probable : l’installation de GRUB a fonctionné, mais Linux se lance automatiquement ou Windows n’apparaît pas dans le menu. Il est possible que le menu n’apparaisse que lorsque l’utilisateur appuie sur Échap. Résolution : si un menu s’affiche, choisissez windows avec les touches de direction et appuyez sur Entrée. Dans le cas contraire, démarrez Linux et explorez la configuration de GRUB pour y ajouter un élément de menu pour Windows (voir Chapitre 24). • Ni Linux, ni Windows ne démarrent. GRUB est exécuté, mais affiche rapidement une liste sans fin de messages d’erreur. Cause probable : l’installation de GRUB est endommagée. Résolution : démarrez un système de maintenance ou un live CD, et réinstallez GRUB (voir Chapitre 24).
Le système graphique ne démarre pas Il arrive que le système démarre, mais seulement en mode texte. XWindow, à la base des systèmes de bureau KDE ou Gnome, ne fonctionne pas. Démarrage automatique de X
La première étape consiste à vérifier si le système n’est pas configuré pour démarrer en mode texte. Pour démarrer X manuellement, connectez-vous en mode texte (indiquez votre nom d’utilisateur et votre mot de passe) et lancez la commande startx. Si cela fonctionne, le système graphique fonctionne. Il faut alors configurer le système pour qu’il lance le système graphique au démarrage. Selon la distribution, il faut modifier /etc/inittab ou s’assurer qu’un script démarre le gestionnaire d’affichage (voir Chapitre 24).
Reconfigurer X
Si startx ne fonctionne pas, le problème provient sans doute d’une configuration incomplète ou erronée. Vous trouverez des informations sur la création d’une configuration X correcte au Chapitre 22.
Le clavier ne fonctionne pas Les problèmes de clavier sont souvent liés à la disposition du clavier : Linux pense que vous tapez avec un clavier US, alors que vous utilisez un modèle français. Cette configuration est différente pour le mode texte et le mode graphique (voir Chapitres 20 et 22).
Linux Livre Page 44 Mardi, 23. septembre 2008 1:05 13
44
LINUX
Les menus sont dans la mauvaise langue Tous les programmes affichent par défaut les messages d’erreur ou les menus en anglais. De nombreux programmes (en particulier, Gnome et KDE) peuvent aussi les afficher dans plusieurs langues (voir Chapitre 20). En général, il faut installer les paquetages correspondant à votre langue, qui assurent la traduction des menus et des autres textes.
Linux Livre Page 45 Mardi, 23. septembre 2008 1:05 13
Premiers pas sous Linux
3
Ce chapitre vise à vous aider lors de vos premiers pas sous Linux : comment vous connecter, lancer des programmes, vous déconnecter ou redémarrer l’ordinateur. Il vous indique aussi où trouver de la documentation, que ce soit sur le système installé ou sur Internet. La difficulté est que sous Linux, on peut configurer chaque petit détail. Ainsi, le menu de démarrage du bureau est légèrement différent dans chaque distribution. Une combinaison de touches sous Red Hat peut avoir un effet différent sous SUSE. C’est pourquoi nous emploierons de nombreuses formulations de type "généralement" ou "la plupart" dans ce chapitre. La seule alternative serait de détailler le fonctionnement de chaque distribution, que vous trouverez dans la documentation correspondante.
3.1
Langue, bureau
Démarrer et arrêter Linux
Pour démarrer Linux, vous devez redémarrer votre ordinateur. Vous ne pouvez pas le démarrer depuis Windows, à moins de le lancer dans un programme comme VMware et de le faire fonctionner dans un environnement virtuel. Au démarrage, indiquez dans le menu que vous désirez lancer Linux et non Windows. Le processus de démarrage dure environ deux minutes, mais varie en fonction de la distribution et du matériel. De nombreuses distributions affichent une barre de progression pendant le démarrage. D’autres montrent les innombrables détails du démarrage du système. Ces informations ne sont néanmoins utiles qu’en cas de dysfonctionnement. Normalement, le processus d’amorçage se termine par l’affichage d’un écran de connexion graphique. Vous pouvez vous connecter avec votre nom d’utilisateur et votre mot de passe. Pour finir, l’environnement de travail par défaut de votre distribution, généralement Gnome ou KDE, s’affiche. Vous trouverez une description plus détaillée de ces deux environnements aux Chapitres 4 et 5. Ne vous connectez pas en tant que root ; utilisez un identifiant de connexion sans privilège. L’utilisateur root a des droits illimités. Il n’est pas courant de travailler en root sous Linux. Seules quelques tâches administratives et certains programmes demandent les droits root − auxquels vous pouvez accéder en indiquant le mot de passe root ou, sous Ubuntu, votre propre mot de passe. Nous expliquerons au Chapitre 20 comment modifier le mot de passe root et créer de nouveaux utilisateurs. Si vous avez installé plusieurs jeux de fichiers de localisation (pour plusieurs langues) ou plusieurs systèmes de bureau (par exemple, Gnome et KDE), vous pouvez choisir la langue et le bureau que vous désirez lancer lors de la connexion. Les paramètres dépendent de la distribution, mais prennent souvent la forme d’une liste déroulante dans la boîte de connexion ou d’un menu séparé (voir Figure 3.1).
Linux Livre Page 46 Mardi, 23. septembre 2008 1:05 13
46
LINUX
Figure 3.1 Écran de connexion sous Ubuntu.
Connexion automatique
Connexion en mode texte
On peut configurer Gnome et KDE pour qu’ils démarrent automatiquement une session. Cela est plus confortable, mais n’est pas optimal du point de vue de la sécurité (voir Chapitres 4 et 5). On peut également accéder à de nombreuses fonctionnalités de Linux en mode texte. Une installation serveur supprimera souvent le système XWindow et son démarrage automatique sera désactivé. Vous devrez donc vous connecter en mode texte (voir Chapitre 12). Lorsque le système XWindow est installé, vous pouvez le démarrer depuis une console avec la commande startx. Si cette dernière affiche des erreurs, X n’est pas bien configuré. Nous expliquerons comment régler ce problème au Chapitre 22.
Déconnexion
Changement d’utilisateur sans déconnexion
Les menus KDE et Gnome proposent tous deux une commande pour se déconnecter. La dénomination exacte varie selon les distributions et l’environnement. Elle termine tous les programmes qui fonctionnent dans l’environnement graphique (enregistrez au préalable tous vos fichiers) et ramène l’utilisateur à la boîte de connexion, à partir de laquelle il peut se reconnecter ou éteindre l’ordinateur. Pour changer d’utilisateur, il faut théoriquement se déconnecter et se reconnecter sous un autre nom. Gnome et KDE permettent cependant de le faire sans déconnexion. Pour cela, le système graphique est démarré une seconde fois (deux systèmes sont lancés en même temps), ce qui nécessite plus de ressources. On peut alors changer d’utilisateur rapidement avec un raccourci clavier.
Linux Livre Page 47 Mardi, 23. septembre 2008 1:05 13
47
PREMIERS PAS SOUS LINUX
Déconnexion du mode texte
Si vous travaillez en mode texte, utilisez la combinaison de touches Ctrl+D ou la commande exit pour vous déconnecter.
Éteindre Linux Les utilisateurs d’interface graphique ont une commande dans le menu pour éteindre l’ordinateur ou une option dans la fenêtre de connexion. En mode texte, il faut utiliser la commande shutdown -h now. Elle ne peut être exécutée que par root.
3.2
Clavier, souris et presse-papiers
Raccourcis clavier importants Les raccourcis clavier dépendent du mode dans lequel vous travaillez : graphique ou texte. Cette section présuppose que vous avez ouvert une session graphique. Les raccourcis sont définis selon trois niveaux de programmes : • Le système XWindow, pour les fonctions élémentaires du système graphique, définit peu de raccourcis clavier. • Les environnements Gnome et KDE sont construits au-dessus de X. Ils définissent également peu de raccourcis. Ceux-ci ont été harmonisés ces dernières années pour qu’ils soient identiques sous Gnome et KDE, au moins pour les fonctions les plus importantes. Précisons que les raccourcis concernés sont en fait gérés par le gestionnaire de fenêtre, et non par le gestionnaire de bureau (voir Chapitre 22). • Les raccourcis clavier restants proviennent naturellement des différents programmes. Ils dépendent donc de ce que vous êtes en train de faire : surfer sur le web avec Firefox, écrire une lettre avec OpenOffice.org ou modifier du code avec l’éditeur Emacs. Il existe une multitude de raccourcis que nous ne pouvons pas décrire ici. Cependant, de nombreuses applications graphiques utilisent les mêmes raccourcis que sous Windows. Par exemple, on copie du texte dans le presse-papiers avec Ctrl+Inser ou Ctrl+C ; on colle du texte avec Maj+Inser ou Maj+V et on enregistre un fichier avec Ctrl+S. Nous ne pouvons malheureusement pas garantir que les raccourcis suivants fonctionnent pour toutes les distributions. Certaines s’éloignent des conventions, mais ils peuvent tous être reconfigurés. Raccourcis clavier sous X c+a+B c+a+1 à 6 a+7 a+c+7 8 etc.
arrête le système X en entier passe du mode graphique aux consoles texte 1 à 6 passe du mode texte au mode graphique passe d’un mode graphique à un autre, si par exemple plusieurs utilisateurs sont connectés
Linux Livre Page 48 Mardi, 23. septembre 2008 1:05 13
48
LINUX
Raccourcis clavier importants du bureau (Gnome, KDE) a+t a+1 a+2 a+3 a+4
change la fenêtre courante affiche le menu du bureau démarre un programme affiche le menu de la fenêtre courante ferme la fenêtre et termine le programme
Si vous devez saisir des caractères dans une langue étrangère, il se peut que vous ne disposiez pas de la touche correspondante sur votre clavier. Gnome et KDE fournissent tous deux des outils de table de caractères : gucharmap sous Gnome, KCharMap sous KDE. OpenOffice.org a également une fenêtre qui permet la saisie de tels caractères.
Saisie de caractères étrangers
Utilisation de la souris Linux tend de plus en plus à s’orienter vers les conventions d’utilisation de Windows ou de Mac OS. Il existe cependant certaines particularités relatives au bureau qui sont regroupées dans cette section. Clic simple ou clic double
Sous Gnome, il faut pour de nombreuses opérations (y compris l’ouverture d’un fichier) double-cliquer sur l’élément concerné. Sous KDE, il est en revanche plus courant d’utiliser le simple clic.
Copier et coller du texte à la souris
Dans presque tous les programmes Linux, vous pouvez copier et coller du texte à la souris. Pour marquer le texte à copier, sélectionnez-le avec le bouton gauche. Le texte ainsi marqué est copié dans un tampon. Lorsque vous appuierez ensuite sur le bouton du milieu, il sera collé à l’endroit où le curseur se trouve, dans la même application ou dans une application différente. Attention, lorsque vous serez habitué à ce fonctionnement, il sera difficile de vous en passer − en particulier sous Windows.
3.3
Documentation sous Linux
La documentation sous Linux est impressionnante. Elle est en partie fournie avec le système et disponible sur Internet. Les experts peuvent également jeter un œil au code source, qui est souvent bien documenté. Cette section présente un aperçu des principales sources d’information. Plus la documentation est volumineuse, plus il est difficile de trouver la réponse à un problème. L’astuce qui règle tout est souvent perdue au milieu d’informations périmées, de cas spécifiques à une version ou une distribution, et de discussions sans fin. Notez cependant que la compréhension de l’anglais est un avantage. Qu’il s’agisse de l’aide d’un programme ou de la description d’un service, les traductions en français sont, pour autant qu’elles existent, souvent incomplètes ou obsolètes. Aide des applications
Presque tous les programmes graphiques fournissent une aide liée à l’application lorsqu’on appuie sur F1. Si cela ne fonctionne pas, assurez-vous que les données d’aide sont installées.
Linux Livre Page 49 Mardi, 23. septembre 2008 1:05 13
PREMIERS PAS SOUS LINUX
49
Dans certaines grosses applications, comme Gimp ou OpenOffice.org, l’aide peut se trouver dans un paquetage à part qui n’est pas installé par défaut. man et info
Pour de nombreuses commandes en mode texte, man nom ou info nom fournissent une description de la commande et une référence de la syntaxe. Nous en parlerons plus en détail au Chapitre 12.
Documentation des paquetages
Sous Linux, les programmes sont installés sous forme de paquetages. Un paquetage contient tous les fichiers nécessaires à une application et, bien souvent, des fichiers de documentation. Celle-ci se trouve, selon la distribution, dans /usr/share/doc/nom_du_paquetage (sous Debian, Fedora, Red Hat et Ubuntu) ou /usr/share/doc/packages/ nom_du_paquetage (sous SUSE). Que faire lorsque vous cherchez la documentation d’une commande sans savoir à quel paquetage elle appartient ? La première étape est de trouver le nom exact de la commande. Lancez pour cela la commande which -a commande : utilisateur$ which -a cp /bin/cp
Il faut ensuite déterminer à quel paquetage appartient le fichier. Cette opération dépend de votre distribution. La commande suivante indique que cp fait partie du paquetage coreutils : utilisateur$ rpm -qf /bin/cp coreutils-6.9.43 utilisateur$ dpkg -S /bin/cp coreutils: /bin/cp
La commande rpm est utilisée dans les distributions Fedora, Red Hat, SUSE ou Mandriva, et dpkg sous Debian et Ubuntu. Forums et wikis sur Internet
Il existe d’innombrables forums, wikis et pages web sur Linux, maintenus par les acteurs du marché et les utilisateurs enthousiastes. Une énumération serait ici inutile : une simple recherche des termes "fedora forum" ou "ubuntu wiki" propose de nombreuses pages. En ce qui concerne les questions spécifiques à une distribution, vous aurez plus de chances de trouver votre bonheur si votre distribution est populaire.
Groupes de discussion
Les groupes de discussion sont principalement utilisés par des utilisateurs expérimentés de Linux. Vous n’y trouverez peut-être pas de discussions courantes faciles à suivre, mais vous pourrez chercher des informations dans les archives. En particulier, les problèmes de configuration ou de matériel ont probablement été rencontrés par quelqu’un d’autre. Le moteur de recherche le plus utilisé pour les groupes de discussion est Google : http://groups.google.com.
Linux Documentation Project
Le Linux Documentation Project (projet de documentation de Linux) a pour but de rassembler la documentation autour de Linux. Vous trouverez plus d’informations à son sujet sur la page du projet : http://www.tldp.org/. La documentation se divise principalement en trois types : les HOWTO ou guides pratiques, les FAQ (Foires aux Questions) et les guides (sous forme de livres). Mais de nombreux
Linux Livre Page 50 Mardi, 23. septembre 2008 1:05 13
50
Documentations en français
LINUX
textes du LDP ne sont plus maintenus et sont obsolètes. De plus en plus de projets de documentation utilisent un wiki, que tous les utilisateurs peuvent le cas échéant corriger. Une partie de la documentation du LDP est traduite en français par le projet http://www.traduc.org. Les mêmes réserves quant à l’actualité des documentations s’appliquent, d’autant plus qu’une traduction peut ne pas être à jour par rapport à la version originale. Notons pour terminer deux sites utiles en français. Le premier, Léa Linux (http://www.lea-linux.org), est un site de documentation en français. On y trouve énormément d’informations utiles, en particulier en ce qui concerne le matériel. Tous les publics (du débutant au professionnel) sont visés par les différents articles du site. Le second, Unix Garden (http://www.unixgarden.com), est un site géré par les Éditions Diamond qui éditent entre autres les magazines GNU/Linux Magazine France et Linux Pratique. Unix Garden reprend, quelques mois après leur publication sous forme papier, les articles de ces magazines. On peut donc y trouver des articles pratiques intéressants, même s’il ne s’agit pas à proprement parler d’un site d’entraide ou de documentation.
Linux Livre Page 51 Mardi, 23. septembre 2008 1:05 13
4
Gnome Lorsque vous travaillez sous Windows ou Mac OS, il n’existe qu’une seule interface utilisateur qui fait partie du système d’exploitation. La situation est différente sous Linux. Le système d’exploitation ne sert qu’aux opérations de base. L’interface utilisateur est un programme situé un niveau au-dessus. Il existe de nombreux systèmes de bureau. Les plus populaires sont actuellement Gnome et KDE (voir Chapitre 5). Qu’il s’agisse de Gnome ou de KDE, les fonctions de base d’un gestionnaire de bureau sont les mêmes et regroupent : • la gestion du bureau, composé d’une ou deux barres (ou panneaux) contenant le menu de démarrage, le gestionnaire de tâches et d’autres mini-applications ; • un gestionnaire de fenêtres servant à régler le comportement des fenêtres (comment changer de fenêtre active, comment les déplacer, etc.) ; • de nombreuses applications et programmes de configuration. Ce chapitre se consacre aux fonctions basiques de Gnome. Mais attention : deux installations de Gnome se ressemblent rarement. D’une part, une nouvelle version sort tous les six à douze mois − mais les changements visibles pour les utilisateurs ont été plutôt modestes au cours des dernières années. D’autre part, chaque distribution modifie Gnome à sa discrétion : la construction du menu de démarrage, les effets graphiques du bureau et le choix des programmes et logiciels de configuration peuvent varier fortement. Ce chapitre se base sur la version 2.22 de Gnome, telle que configurée dans Ubuntu 8.04. De nombreux programmes ajoutant des fonctionnalités et des éléments graphiques au bureau sont installés avec Gnome.
Gnome contre KDE
Pour des raisons historiques, il existe deux environnements de bureau concurrents sous Linux. Le projet KDE se basait sur la bibliothèque Qt de l’entreprise TrollTech. Les premières versions de Qt étaient considérées comme restrictives par rapport à la GPL (elle est depuis complètement compatible). Une partie de la communauté Linux trouvait que ces restrictions allaient trop loin et a fondé le projet concurrent Gnome. La question de savoir lequel de Gnome ou de KDE est le meilleur gestionnaire de bureau échauffe encore aujourd’hui les esprits. Les deux bureaux sont tout à fait adaptés à une utilisation bureautique standard. Gnome est plus accessible et plus simple à apprendre, mais KDE fournit aux utilisateurs avancés davantage de possibilités de configuration et de personnalisation. Ces derniers ont donc une préférence pour KDE, tandis que Gnome joue un grand rôle dans l’environnement commercial de Linux (Red Hat et Novell sont plutôt orientés vers Gnome). De nombreuses distributions laissent à leurs utilisateurs le choix entre les bureaux et proposent des paquetages pour les deux environnements. Il est donc possible d’installer les systèmes en parallèle et de choisir un bureau lors de la connexion.
Linux Livre Page 52 Mardi, 23. septembre 2008 1:05 13
52
LINUX
Plus important encore : vous pouvez parfaitement utiliser ces deux programmes en parallèle. Par exemple, si vous utilisez Gnome comme environnement de bureau, rien ne vous empêche d’utiliser KDE K3b pour graver vos CD et DVD. Ils sont d’ailleurs compatibles entre eux au point que même les commandes de glisser-déposer fonctionnent sans problème. Travailler sans environnement de bureau
Gnome et KDE fournissent certes de nombreuses fonctionnalités, mais ils demandent des capacités assez importantes en termes de mémoire vive et de processeur. Sur les ordinateurs limités en ressources, il est préférable de se passer d’un environnement de bureau. Si vous désirez une interface graphique, utilisez pour la gestion de vos fenêtres un gestionnaire de fenêtres, comme XFCE. Il existe des distributions, comme Xubuntu, qui sont optimisées pour ce choix de paquetages. Vous pouvez aussi choisir de fonctionner en mode texte. C’est largement suffisant pour les serveurs réseau ou les pare-feu.
4.1
Conception du bureau
Connexion et déconnexion
Avant de pouvoir travailler sous Gnome, vous devez vous connecter avec votre nom d’utilisateur et votre mot de passe. Sur l’écran de connexion, il existe un menu Options (généralement en bas à gauche), dans lequel vous pouvez choisir la langue et l’environnement de bureau que vous souhaitez lancer lorsqu’il en existe plusieurs. Pour vous déconnecter ou redémarrer l’ordinateur, choisissez l’élément correspondant du menu Système (qui peut, selon les distributions, s’appeler Quitter, Terminer, Se déconnecter, etc.). Selon le matériel, vous pouvez aussi lancer le mode d’hibernation ou d’économie d’énergie de l’ordinateur.
Changement d’utilisateur
Gnome permet de changer d’utilisateur sans que l’utilisateur courant ait à se déconnecter. Le plus élégant est d’utiliser le programme fast-user-switch-applet présent depuis la version 2.20. Cette application s’affiche normalement à droite du tableau de bord et indique par défaut le nom de l’utilisateur connecté. Un clic de souris affiche une liste de tous les utilisateurs et désigne ceux qui sont déjà connectés avec une coche. Choisir un élément dans ce menu affiche, pour des raisons de sécurité, une nouvelle boîte de dialogue de connexion. En interne, un nouveau système graphique (nouveau serveur X) est démarré pour chaque utilisateur, ce qui nécessite beaucoup de ressources. L’utilisation par plusieurs utilisateurs en parallèle ne fonctionne donc correctement que sous les ordinateurs rapides. Pour changer d’utilisateur, on utilise les combinaisons de touches suivantes : Ctrl+Alt+F7 Ctrl+Alt+F8 Ctrl+Alt+F9
premier utilisateur deuxième utilisateur troisième utilisateur
Certaines distributions réservent le F8 à un écran de journalisation et les utilisateurs sont donc décalés (F7 pour le premier, F9 pour le deuxième, F10 pour le troisième, etc.). Si l’application de changement d’utilisateur n’est pas sur le tableau de bord, on peut la lancer manuellement en cliquant du bouton droit sur le tableau de bord et en choisissant Ajouter au tableau de bord... puis, dans la fenêtre qui s’affiche, Outil de changement d’utilisateur. Bureau
Après la connexion, vous vous trouvez sur le bureau Gnome. Son apparence dépend beaucoup des distributions. La Figure 4.1 illustre Gnome sous Ubuntu.
Linux Livre Page 53 Mardi, 23. septembre 2008 1:05 13
53
GNOME
Figure 4.1 Le bureau Gnome.
Zone de travail
Tableaux de bord
Le bureau se compose habituellement des éléments suivants : • deux "barres" ou tableaux de bord, en haut et en bas de l’écran ; • le menu Gnome dans le tableau de bord du haut ; • la liste des tâches dans le tableau de bord du bas ; • des icônes et diverses applications d’aide (applets) dans les deux tableaux de bord ; • la zone de travail effective entre les deux tableaux de bord. Les éléments du bureau sont configurables presque sans limite. Vous pouvez, par exemple, placer les deux tableaux de bord d’un seul côté, supprimer des éléments des tableaux de bord, en ajouter d’autres, en modifier les propriétés, etc. Vous pouvez accéder aux boîtes de configuration correspondantes avec le bouton droit. Au départ, la zone de travail est presque vide, à l’exception de quelques icônes pour les lecteurs externes. Selon la configuration, on peut aussi trouver des icônes supplémentaires pour la corbeille, le répertoire personnel, etc. On peut créer des fichiers et des répertoires sur la zone de bureau. Ceux-ci sont alors représentés par des icônes. Il s’agit physiquement des fichiers créés dans le répertoire ~/Desktop. La représentation et la gestion des icônes (aspect, emplacement, etc.) sont gérées par le gestionnaire de fichiers de Gnome, Nautilus. Leurs propriétés sont enregistrées dans le répertoire ~/.nautilus/metafiles/*. Un tableau de bord est une zone rectangulaire située sur l’un des côtés de l’écran (habituellement, en haut ou en bas). Il n’a en soi aucune fonction ; il n’est qu’un conteneur pour d’autres éléments du bureau (les applets, comme le menu et la liste des tâches).
Linux Livre Page 54 Mardi, 23. septembre 2008 1:05 13
54
LINUX
On peut déplacer facilement les tableaux de bord à la souris. La plupart des applications sont prévues pour des tableaux de bord horizontaux. Si ces derniers sont placés sur le côté droit ou gauche de l’écran, cela peut mener à des résultats non optimaux. Il est également possible de réunir les éléments des deux tableaux de bord par défaut dans un seul. Les distributions de SUSE et de Novell sont configurées ainsi. Applets
Les applets sont des programmes exécutés dans les tableaux de bord. En plus de celles présentes par défaut, il en existe d’innombrables dont les plus importantes sont présentées ciaprès. Pour ajouter une applet à un tableau de bord, cliquez sur celui-ci du bouton droit et lancez Ajouter au tableau de bord (voir Figure 4.2).
Figure 4.2 Ajouter des applets.
Vous pouvez modifier certaines propriétés des applets dans le menu contextuel qui s’ouvre avec le bouton droit. L’applet la plus importante est sans doute le menu Gnome (voir Figure 4.1). Il se compose de trois groupes : Applications pour démarrer les programmes, Raccourcis pour ouvrir des répertoires ou démarrer le gestionnaire de fichiers Nautilus, et Système pour configurer, administrer et quitter le système. La clarté de ce menu dépend largement de la configuration. Ubuntu est exemplaire, car le menu ne contient que les programmes les plus utilisés. À l’inverse, la configuration de base de Debian est systématique et exhaustive, redondante, et souvent déroutante pour les débutants. Vous pouvez glisser-déposer un programme souvent utilisé dans un endroit vide du tableau de bord. L’icône qui apparaît vous permet de démarrer rapidement l’application en question. Vous pouvez aussi modifier vous-même le menu. Pour cela, utilisez l’éditeur de menu alacarte qui se trouve sous Ubuntu dans Système > Préférences > Menu principal. Il contient de nombreuses lignes que vous pouvez activer ou désactiver. Vous pouvez aussi définir de nouveaux éléments de menu ou les grouper différemment.
Linux Livre Page 55 Mardi, 23. septembre 2008 1:05 13
55
GNOME
Novell, mécontent du menu Gnome, a développé son propre menu. Il facilite l’accès aux programmes les plus utilisés, et aux documents et répertoires récemment ouverts (voir Figure 4.3).
Figure 4.3 Variante du menu Gnome fournie par openSUSE 10.3.
Liste des fenêtres
L’applet Liste des fenêtres affiche une icône qui correspond à la barre des tâches de Windows. Dans la boîte de dialogue de configuration, vous pouvez choisir si les fenêtres d’un programme (par exemple, celles de Gimp ou les documents OpenOffice.org ouverts) doivent être groupées par programme. Cela améliore la vue d’ensemble lorsque beaucoup de fenêtres sont ouvertes, mais augmente le nombre de clics nécessaires pour changer de fenêtre. Certains comportements des fenêtres, comme le déplacement, l’agrandissement ou la minimisation, dépendent du gestionnaire de fenêtre. Gnome en fournit plusieurs ; c’est généralement le programme metacity qui est utilisé par défaut.
Espaces de travail
Les espaces de travail permettent de partager les fenêtres de programmes sur plusieurs bureaux virtuels et de passer d’un bureau à l’autre. Cela facilite le travail et améliore la vue d’ensemble lorsque plusieurs fenêtres sont ouvertes simultanément. Vous pouvez, par exemple, lancer le programme graphique Gimp sur son propre espace de travail. Ainsi, toutes ses fenêtres seront sur un seul et même espace, tandis que les autres fenêtres seront sur un second espace de travail. L’applet Sélecteur d’espaces de travail gère des espaces de travail. Dans Préférences, vous pouvez choisir le nombre d’espaces souhaité. Il est possible de configurer une fenêtre donnée afin qu’elle soit visible sur tous les espaces de travail. Ouvrez le menu de la fenêtre avec le bouton droit ou Alt+Espace, puis activez l’option Toujours sur l’espace de travail visible.
Zone de notification
Lorsque le tableau de bord affiche la zone de notification, les programmes en tâche de fond peuvent y laisser des notifications, par exemple lorsque de nouvelles mises à jour
Linux Livre Page 56 Mardi, 23. septembre 2008 1:05 13
56
LINUX
sont disponibles ou lorsqu’un nouveau courrier électronique est arrivé. Cette zone n’a en soi aucune fonction ; il s’agit plutôt d’un conteneur pour les icônes des autres programmes.
4.2
Nautilus
Le programme Nautilus est le gestionnaire de fichiers de l’environnement de bureau Gnome. Il permet d’accéder aux fichiers et répertoires de l’ordinateur, ainsi qu’aux lecteurs externes et aux répertoires réseau, de graver des CD et des DVD, etc. Nautilus est un programme plutôt universel (voir Figure 4.4).
Figure 4.4 Nautilus.
Cette section traite de l’utilisation de Nautilus, mais ne rentre pas dans les détails de la gestion des fichiers sous Linux. Ce thème fait l’objet d’un chapitre complet, le Chapitre 13. Démarrage
On démarre généralement Nautilus depuis le menu Gnome en choisissant Raccourcis > Dossier personnel. Le menu Raccourcis contient également des autres éléments qui facilitent l’accès à d’autres répertoires. Le gestionnaire de fichiers affiche par défaut le contenu du répertoire choisi sous forme de symboles. Chaque fichier est représenté par une icône qui, pour certains, donne un aperçu du contenu. Cet aperçu ne fonctionne par défaut que pour les fichiers locaux (et non pour les répertoires réseau) et ceux relativement petits. Vous pouvez modifier ce comportement dans Édition > Préférences > Aperçu. Pour ne pas avoir à regénérer sans cesse les aperçus, Nautilus enregistre les images dans le répertoire ~/.thumbnails. La plupart des programmes Gnome utilisent ce répertoire.
Linux Livre Page 57 Mardi, 23. septembre 2008 1:05 13
GNOME
57 Cliquez sur Affichage > Zoom avant et Affichage > Zoom arrière pour modifier la taille des icônes. Pour afficher les informations détaillées des fichiers, choisissez Affichage > Voir en tant que liste dans le menu.
Barre latérale
Le panneau gauche de la fenêtre contient normalement une barre latérale, qui permet de passer rapidement dans plusieurs répertoires importants (il s’agit de raccourcis). Vous pouvez cependant y afficher d’autres choses, comme l’arborescence des répertoires, des informations sur le répertoire courant ou une liste des derniers répertoires visités (Historique). F9 masque ou affiche cette barre latérale.
Changer de répertoire
Sous les diverses icônes, se trouvent des boutons qui permettent de changer rapidement de répertoire. Ils indiquent le chemin du répertoire courant (par exemple, en bas à gauche de la Figure 4.4, le chemin est /usr/bin). Nautilus peut aussi afficher un chemin complet en tant que barre d’adresse, ce qui facilite la saisie rapide d’un autre répertoire. Il est possible de passer d’un mode à l’autre en cliquant sur le bouton Bascule entre le mode à texte et à boutons de la barre d’emplacement (à gauche de la barre en question). Certaines distributions configurent Nautilus en mode spatial. Cela signifie que lorsqu’on change de répertoire, une nouvelle fenêtre s’ouvre. Certains développeurs de Gnome trouvent ce mode plus intuitif, mais tous les utilisateurs ne sont pas de cet avis. Pour modifier ce comportement, activez l’option Toujours ouvrir dans des fenêtres de navigation dans Édition > Préférences > Comportement.
Ouvrir des fichiers
La plupart des fichiers s’ouvrent avec un double-clic. Le gestionnaire de fichiers ouvre automatiquement le programme correspondant. Si le type de fichier n’est pas connu, cliquez dessus du bouton droit et lancez Ouvrir avec une autre application. S’ouvre alors une boîte de dialogue dans laquelle vous pouvez choisir la plupart des programmes installés sur l’ordinateur. Certains fichiers peuvent être ouverts avec plusieurs programmes. Par exemple, on peut ouvrir les images avec un outil de visualisation, l’éditeur graphique Gimp ou Firefox. L’un de ces programmes est défini par défaut. Pour le modifier, cliquez du bouton droit sur le fichier, choisissez Propriétés > Ouvrir avec et indiquez le programme de votre choix. Cette propriété s’appliquera à tous les fichiers du même type, comme par exemple tous les fichiers PNG.
Déplacer et copier des fichiers
Les fichiers sélectionnés sont copiés avec Ctrl+C, coupés avec Ctrl+X (et supprimés de leur endroit d’origine) et collés avec Ctrl+V. Il est néanmoins plus simple de déplacer les fichiers à la souris, et non au clavier, en les passant d’une fenêtre du gestionnaire de fichiers à l’autre grâce à un glisser-déposer. Ils sont alors normalement déplacés et non copiés. Mais il existe des exceptions à cette règle, lorsque par exemple l’opération de glisser-déposer part d’un CD ou d’un lecteur réseau. Dans ce cas, le curseur de la souris est agrémenté d’un symbole plus (+), pour que la signification de l’opération soit claire. Si vous désirez copier plutôt que déplacer des fichiers, appuyez pendant le glisser-déposer sur la touche Ctrl. Si vous souhaitez que le navigateur vous demande quoi faire, commencez
Linux Livre Page 58 Mardi, 23. septembre 2008 1:05 13
58
Chercher des fichiers
Fichiers cachés
Droits d’accès
LINUX
le glisser-déposer, puis appuyez sur Alt avant de déposer le fichier. Lorsque vous relâchez la souris, un menu apparaît : vous pouvez alors copier ou déplacer le fichier, ou encore créer un raccourci (lien). La commande Aller à > Recherche des fichiers offre une vue peu intuitive pour chercher des fichiers. Nautilus fait la liste de tous les fichiers dont le nom correspond au terme saisi dans le champ de recherche. Il n’est pas possible d’effectuer une recherche sur le texte des fichiers. Une limitation des résultats sur un type de documents donné est normalement prévue, mais mes tests sous Ubuntu 8.04 n’ont pas été concluants à ce sujet. Notez que, par défaut, le répertoire racine est parcouru (et non le répertoire courant). Vous pouvez aussi utiliser la commande Raccourcis > Rechercher des fichiers dans le menu Gnome. Cela lance le programme gnome-search-tool. Ce dernier permet d’utiliser davantage de critères de recherche, mais il est relativement lent. Les outils de recherche tels que Beagle ou Tracker sont bien plus efficaces (voir Chapitre 13). Sous Linux, tous les fichiers et dossiers dont le nom commence par un point sont considérés comme cachés. Cela signifie qu’ils ne sont pas affichés par le gestionnaire de fichiers, ni par les boîtes de dialogue de choix de fichier. Ils contiennent souvent des paramètres de configuration ou d’autres fichiers qui ne doivent pas être modifiés directement. L’accès direct à ces fichiers n’est, en général, approprié que dans des cas exceptionnels (par exemple, lorsque vous désirez faire une copie de sauvegarde de votre répertoire de courrier électronique ~/.mozillathunderbird). Pour les afficher dans le gestionnaire de fichiers, cliquez dans le menu sur Affichage > Afficher les fichiers cachés. Un utilisateur ne peut pas lire ou modifier tous les dossiers ou répertoires. Linux enregistre donc pour chaque fichier et répertoire le propriétaire et les droits d’accès. Les concepts sousjacents seront expliqués au Chapitre 13. Pour modifier ces droits, cliquez du bouton droit sur le fichier ou le répertoire, puis allez dans Propriétés, Permissions (voir Figure 4.5).
Figure 4.5 Permissions d’un fichier.
Linux Livre Page 59 Mardi, 23. septembre 2008 1:05 13
59
GNOME
Supprimer un fichier
Supports externes
Lorsque vous supprimez un fichier, il atterrit d’abord dans la corbeille. Vous pouvez voir le contenu de cette dernière dans le gestionnaire de fichiers grâce à la commande Aller à > Corbeille, ou en cliquant directement sur son icône. Les fichiers ne sont supprimés que lorsque vous les sélectionnez et appuyez sur Suppr. Par défaut, le gestionnaire de fichiers ne permet pas de supprimer directement des fichiers. Si c’est ce que vous souhaitez, dans la fenêtre Édition, Préférences, Comportement, activez l’option Inclure une commande supprimer qui ignore la corbeille. Si vous insérez un CD ou un DVD, ou si vous branchez un lecteur USB, Firewire ou eSATA, une nouvelle fenêtre Nautilus s’ouvre automatiquement pour présenter le contenu de ce nouveau support. Depuis Gnome 2.22, Nautilus se lance lui-même ou s’occupe de lancer un programme adapté. Les paramètres associés sont définis dans la boîte de dialogue Édition, Préférences, Supports. N’oubliez pas de déconnecter explicitement les disques durs externes et les clés USB avant de les débrancher de l’ordinateur. Pour cela, cliquez du bouton droit sur l’icône du support et choisissez Démonter.
Adresses spéciales de Nautilus
On peut indiquer des adresses spéciales dans le champ d’adresse de Nautilus ou dans Aller à > Emplacement. C’est souvent le moyen le plus rapide d’ouvrir des répertoires réseau dans Nautilus. Le tableau suivant résume les adresses et protocoles importants : Adresses spéciales de Nautilus computer:
liste de tous les supports de données
fonts:
liste de toutes les polices disponibles (ne fonctionne pas sous Gnome 2.22)
ftp://nomd’hôte
accès à un serveur FTP
network:
utilisation comme navigateur réseau
sftp://nomd’hôte
accès à un serveur SFTP (protocole SSH)
smb:
utilisation comme navigateur réseau Windows
smb://nomd’hôte
accès à un répertoire réseau d’un ordinateur sous Windows
themes:
liste de tous les thèmes du bureau Gnome (ne fonctionne pas sous Gnome 2.22)
trash:
corbeille (fichiers supprimés sous Nautilus)
La version 2.22 de Gnome peut avoir des problèmes sur les accès FTP et Samba qui ne fonctionnent plus comme avant. L’affichage des polices et des thèmes ne fonctionne plus non plus. Espérons que les mises à jour et la version 2.24 régleront ces problèmes.
Linux Livre Page 60 Mardi, 23. septembre 2008 1:05 13
60
LINUX
Graver des CD et des DVD CD et DVD de données
Copier des CD et des DVD
Fichiers ISO
Rien de plus simple que de graver quelques fichiers ou un répertoire sur un CD ou un DVD. La fenêtre Créateur de CD/DVD apparaît automatiquement lorsqu’on place un CD ou un DVD dans le lecteur. Si ce n’est pas le cas, démarrez le programme avec Raccourcis > Créateur de CD/DVD. Déplacez ensuite vos fichiers ou répertoires à sauvegarder par glisserdéposer depuis une autre fenêtre. Pour finir, lancez Fichier > Graver un disque, puis configurez si nécessaire la vitesse de gravure et quelques options, et c’est parti ! Il n’existe malheureusement pas de fonction de vérification pour s’assurer que le CD ou le DVD gravé n’a pas d’erreur. Pour copier un CD ou un DVD, placez-le dans le lecteur et lancez dans le menu Système Raccourcis > Poste de travail. Cliquez du bouton droit sur l’icône du CD, puis lancez Copier le disque. Les fichiers ISO sont pour la plupart de gros fichiers qui regroupent l’ensemble du contenu d’un CD ou d’un DVD dans un format spécial. Pour graver un tel fichier, cliquez dessus du bouton droit et choisissez Graver un disque. Vous pouvez auparavant visualiser le contenu du fichier ISO. Double-cliquez dessus pour ouvrir le gestionnaire d’archives qui gère le fichier ISO exactement comme un fichier Zip. En revanche, vous ne pouvez pas modifier son contenu. Vous pouvez aussi créer vous-même une ISO de CD ou de DVD. Dans le créateur de CD/DVD, il suffit de choisir Image de fichier dans la commande Graver un disque.
Accéder aux répertoires réseau Partages Windows
La commande Raccourcis, Réseaux lance une fenêtre Nautilus qui affiche après quelques secondes des icônes pour tous les réseaux reconnus. En pratique, il s’agit souvent d’une seule icône. Lorsqu’on double-clique dessus, cela affiche tous les réseaux Windows reconnus. Un double-clic supplémentaire permet d’accéder à tous les ordinateurs sur un réseau donné. Si l’on double-clique sur l’un de ces ordinateurs, on peut voir les ressources qu’il met à disposition (ce qu’on appelle les partages Windows). Un dernier double-clic permet d’ouvrir le répertoire en question (voir Figure 4.6). Si le répertoire est protégé par un mot de passe, il faut fournir l’identifiant de connexion et le mot de passe. Il est alors possible d’enregistrer ces données dans une base de données de mots de passe protégée par un mot de passe maître. Si Nautilus ne trouve pas de serveurs Windows, la cause est probablement un pare-feu trop restrictif entre votre machine et les ordinateurs sous Windows. Vous pouvez essayer de saisir directement l’adresse smb://<nom du serveur>. Notez que, s’il est généralement simple d’accéder à un répertoire réseau, travailler directement depuis celui-ci ne l’est pas forcément. Par exemple, de nombreux programmes, dont Gimp, ne savent pas ouvrir un fichier sur un lecteur réseau et renvoient souvent des erreurs. Le contournement de ce problème est de copier les fichiers sur un système local.
Répertoires FTP
Nautilus peut également fonctionner comme client FTP. Indiquez dans la barre d’adresse le chemin du répertoire FTP (par exemple ftp://serveur.com/repertoire). Une fois la connexion établie, une boîte de dialogue apparaît, dans laquelle vous pouvez vous connecter de manière
Linux Livre Page 61 Mardi, 23. septembre 2008 1:05 13
61
GNOME
Figure 4.6 On accède à un partage Windows en cinq étapes.
Connexion permanente à un répertoire réseau
anonyme ou via un identifiant et un mot de passe. Si vous le désirez, Nautilus peut enregistrer les données de connexion pour accéder plus rapidement à un répertoire donné. Pour faciliter l’accès à un répertoire réseau, vous pouvez aussi connecter le lecteur réseau de manière permanente. Pour cela, lancez Raccourcis > Se connecter à un serveur..., puis choisissez le protocole réseau (partage Windows, FTP, WebDAV ou SSH par exemple) et indiquez les informations de connexion correspondantes (voir Figure 4.7). Gnome enregistre ces informations, augmente le menu Raccourcis d’une nouvelle ligne et place une icône sur le bureau. Il suffit alors d’un clic pour ouvrir le répertoire correspondant.
Figure 4.7 Connecter un partage Windows de manière permanente.
Linux Livre Page 62 Mardi, 23. septembre 2008 1:05 13
62
LINUX
Selon mes tests sous Ubuntu 8.04 et Fedora 9, tenter de connecter un répertoire réseau Windows génère un message d’erreur. Deux icônes identiques apparaissent sur le bureau, mais disparaissent à la connexion suivante. Espérons que ce problème sera bientôt réglé par une mise à jour de Gnome. Les connexions réseau permanentes ne peuvent pas être modifiées. Pour les supprimer, cliquez du bouton droit sur l’icône et lancez Démonter le volume.
4.3 Outils de configuration
Programmes Gnome
Gnome propose des outils pour la configuration de l’interface graphique et divers aspects de l’administration de l’ordinateur. Ces programmes se trouvent dans les menus Système > Paramètres et Système > Administration. Il est probable que les futures versions de Gnome utilisent gnome-control-center pour lancer ces applications (voir Figure 4.8). Ce programme est déjà fourni par la plupart des distributions, au moins en tant que paquetage optionnel.
Figure 4.8 Le centre de contrôle de Gnome.
Console : gnometerminal
Le programme gnome-terminal est la variante Gnome de la fenêtre de shell (interpréteur de commandes) xterm. Ce programme se distingue par quelques particularités : • Les adresses web sont soulignées automatiquement lorsque la souris passe dessus. Le bouton droit permet de démarrer un navigateur web pour afficher la page. • Si vous glissez-déposez un fichier ou un répertoire depuis Nautilus dans la fenêtre de la console, le nom complet du fichier est inséré. • Ctrl++ et Ctrl+– permettent de modifier la taille de la police. • On peut ouvrir un second terminal dans la même fenêtre à l’aide de Ctrl+Maj+T ou Fichier, Ouvrir un onglet. On peut naviguer entre les onglets grâce à Ctrl+PgPréc et Ctrl+PgSuiv. • Le menu Édition, Profils permet de définir certaines options et comportements. Chaque terminal peut se voir associer un profil propre.
Linux Livre Page 63 Mardi, 23. septembre 2008 1:05 13
GNOME
63
Éditeur de texte : gedit
L’éditeur de texte par défaut de Gnome est gedit. Ce programme est facile à prendre en main et très pratique pour les tâches simples.
Afficher des fichiers PDF ou PostScript : evince
Lorsqu’on double-clique sur un fichier PDF ou PS, le programme Evince démarre et affiche le document. Vous pouvez le parcourir, imprimer des pages, etc. Les PDF plus complexes s’afficheront mieux sous Adobe Reader (en particulier, les PDF comportant des champs à remplir), qui est gratuit, mais pas libre.
Archiver des fichiers : file-roller
Pour envoyer plusieurs fichiers par courrier électronique ou faire des copies de sauvegarde, il est souvent pratique de compresser plusieurs fichiers ou le contenu d’un répertoire. Pour cela, on utilise le gestionnaire d’archives file-roller. Ce dernier permet également de visualiser et de décompresser des archives.
Occupation du disque dur : baobab
Pour connaître les éléments les plus coûteux en termes de place sur votre disque dur, lancez Applications, Accessoires, Analyseur d’utilisation des disques. Ce programme, appelé Baobab, affiche sous une forme graphique les répertoires et sous-répertoires qui contiennent beaucoup de fichiers. Les différents boutons de la barre permettent différentes analyses ; notez qu’une analyse d’un système complet peut être assez longue.
Gestion des mots de passe et des clés : seahorse
Divers programmes Gnome nécessitent la saisie d’identifiants utilisateur et de mots de passe. Pour que ces programmes n’aient pas à gérer eux-mêmes les mots de passe, leur gestion est centralisée dans Gnome. Elle est utilisée entre autres dans Nautilus, Evolution et NetworkManager. La base de mots de passe est sécurisée par un mot de passe maître, demandé lors de la première utilisation du programme. Les accès suivants à la base sont autorisés sans nouvelle saisie de ce mot de passe. Pour supprimer un élément de cette base de données, lancez le programme seahorse via le menu Système, Préférences, Chiffrement et trousseaux. seahorse peut aussi être utilisé pour gérer les clés GPG et SSH.
Gravure de CD audio : Serpentine
Pour graver un CD audio, lancez Applications > Sons et vidéos > Serpentine Audio CD Creator. Serpentine ne fait pas partie de l’installation de base d’Ubuntu 8.04. Vous devrez donc probablement l’installer vous-même grâce au gestionnaire de paquetages. Le fonctionnement du programme est simple : ajoutez les fichiers audio par glisser-déposer, puis cliquez sur Graver sur le disque.
Gravure de CD de données : GnomeBaker et Brasero
La gravure de CD intégrée à Nautilus est simple à utiliser, mais fournit peu de fonctions, par exemple pour graver des CD multisessions. Il faut pour cela utiliser des programmes plus avancés, tels que GnomeBaker ou Brasero.
4.4 Connexion automatique
Trucs et astuces
Lorsque vous démarrez votre ordinateur, vous devez vous connecter avant de pouvoir commencer à travailler. Si vous êtes le seul utilisateur et qu’aucune autre personne ne peut y accéder, vous pouvez automatiser la première connexion lors du démarrage.
Linux Livre Page 64 Mardi, 23. septembre 2008 1:05 13
64
LINUX
Pour cela, lancez le programme gdmsetup dans Système, Administration, Fenêtre de connexion. Dans l’onglet Sécurité, cochez l’option Activer la connexion automatique, puis choisissez votre identifiant dans la liste déroulante (qui ne contient généralement que votre nom). Si Gnome et KDE sont installés en parallèle sur votre ordinateur, il est probable que la connexion soit gérée par KDM et non par GDM. Il faut alors configurer la connexion automatique avec le programme KDE kcmshell . Pour savoir quel gestionnaire de connexion fonctionne, utilisez la commande utilisateur$ ps ax |egrep ’gdm|kdm’
Dans les distributions SUSE et Novell, la configuration de cette fonctionnalité est indépendante du gestionnaire de bureau. Elle est enregistrée dans le fichier /etc/sysconfig/displaymanager. Ne modifiez donc pas la configuration via les outils KDE ou Gnome, mais par le biais de YaST, sans quoi les modifications seront annulées à la première occasion. Démarrage automatique
Lorsque vous vous déconnectez, les programmes sont arrêtés. Si vous désirez les redémarrer lors de votre prochaine connexion, lancez Système > Préférences > Sessions, puis activez l’option Se souvenir automatiquement des applications en cours d’exécution lors de la déconnexion. Lorsque vous vous reconnecterez, tous les programmes en cours redémarreront. Certains rechargent même les documents ouverts − mais cela ne fonctionne que pour les programmes Gnome. Gnome enregistre les programmes à démarrer automatiquement dans des fichiers .desktop situés dans le répertoire ~/.configu/autostart. Les fichiers suivants sont pris en compte : ~/.config/autostart/*.desktop /usr/share/gnome/autostart/*.desktop /etc/xdg/autostart/*.desktop
Éditeur de configuration gconf-editor
configuration personnelle configuration globale de Gnome configuration globale pour tous les bureaux, y compris Gnome et KDE
La boîte de dialogue de configuration des programmes Gnome (en général Éditions > Préférences) ne contient que les options les plus importantes. Pour la plupart des utilisateurs, ces options suffisent et les boîtes de configuration sont ainsi plus simples à utiliser. Les utilisateurs avancés qui désirent accéder aux options supplémentaires peuvent lancer l’éditeur de configuration gconf-editor, depuis un terminal ou l’outil d’exécution auquel on accède grâce à Alt+F2.
Définir les programmes par défaut
La Figure 4.9 montre un exemple de l’éditeur de configuration. Si vous désirez que le graveur de CD de Nautilus utilise la fonction burnproof de votre graveur, activez l’option apps/ nautilus-cd-burner/burnproof. Par défaut, Gnome utilise Firefox comme navigateur web, Evolution comme programme de courrier électronique et gnome-terminal comme programme de console. Si vous désirez changer ces applications, allez dans Système > Préférences > Applications préférées, ou dans le programme gnome-default-application-properties. Les applications associées aux divers supports amovibles sont définies dans gnome-volume-properties (ou dans Systèmes > Préférences > Périphériques et médias amovibles).
Linux Livre Page 65 Mardi, 23. septembre 2008 1:05 13
GNOME
65
Figure 4.9 gconf-editor.
Surveillance du système
Raccourcis clavier
Configuration du clavier
En général, j’aime savoir comment se porte mon système. J’ai donc placé sur mon tableau de bord les deux applets Moniteur système et Moniteur de changements de fréquence du processeur. La première montre la charge processeur courante et, selon la configuration, l’utilisation de la mémoire, l’activité réseau, etc. La seconde indique la fréquence du processeur, ce qui est pratique pour les processeurs dont la fréquence s’adapte à leur utilisation. Si vous avez un ordinateur multiprocesseurs ou multicœurs, utilisez une applet par cœur de processeur. Certaines opérations courantes peuvent être effectuées plus rapidement au clavier qu’à la souris. Le programme gnome-keybindings-properties résume les différents raccourcis clavier et permet d’en définir de nouveaux. On y accède grâce à Systèmes > Préférences > Raccourcis clavier. Le clavier est configuré via le système graphique X, mais les utilisateurs de Gnome peuvent surcharger cette configuration grâce à Système > Préférences > Clavier qui lance le programme gnome-keyboard-properties. Les personnes travaillant en plusieurs langues souhaitent souvent changer facilement de clavier. Pour cela, le plus simple est d’utiliser l’applet Indicateur de claviers.
Linux Livre Page 66 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 67 Mardi, 23. septembre 2008 1:05 13
5
KDE KDE est une alternative populaire à l’environnement de bureau Gnome, présenté au chapitre précédent. Il répond en principe aux mêmes besoins, mais se différencie par son aspect et utilise en interne des bibliothèques et des protocoles différents. L’acronyme KDE, qui signifiait au départ Kool Desktop Environment, s’est plus tard décliné en K Desktop Environment. KDE fournit, comparativement à Gnome, plus de fonctionnalités et de possibilités de configuration qui s’adressent plutôt aux utilisateurs expérimentés de Linux. Son utilisation est un peu plus compliquée, ce qui explique pourquoi de nombreuses distributions se basent par défaut sur Gnome. KDE est alors fourni en option. Mais ne vous laissez pas impressionner. Si votre distribution fournit les paquetages appropriés, rien ne s’oppose à une installation de KDE et de Gnome en parallèle. Vous pourrez alors choisir l’environnement que vous désirez lancer lors de la connexion. KDE se base sur Qt, une bibliothèque commerciale de l’entreprise TrollTech. Qt est sous licence GPL dans le cadre de projets libres. Son utilisation commerciale n’est nécessaire que lorsqu’elle est à la base d’un logiciel développé sous licence propriétaire. Comme Gnome, KDE diffère largement d’une distribution à une autre, que ce soit au niveau de l’écran de connexion, des éléments du menu de démarrage, du comportement du bureau et du choix des programmes. Dans ce chapitre, nous nous baserons sur la version 4.0.3 de KDE d’openSUSE 11. openSUSE 11 est, à l’heure où nous écrivons ces lignes, la distribution qui offre les meilleurs paquetages de KDE 4.
KDE 4.0
Ces dernières années, les développeurs de KDE ont travaillé sur une toute nouvelle version du bureau. La version 4.0, disponible en janvier 2008, a été la source de nombreuses déceptions. En effet, elle ne proposait que les bases du futur système de bureau : diverses bibliothèques et interfaces, dont Phonon (une API multimédia) et Solid (interactions avec le matériel). Vous trouverez plus d’informations à ce sujet aux adresses http://phonon.kde.org et http://solid.kde.org. Malheureusement, de nombreuses applications de KDE 4.0 n’utilisent pas encore ces bibliothèques et font toujours appel à celles de KDE 3. De plus, les "vraies" applications KDE 4 laissent encore à désirer en termes de stabilité. En résumé, l’utilisation de KDE 4.0 n’est conseillée qu’aux développeurs de KDE et aux passionnés. Elle ne fonctionnera probablement bien que pour les versions 4.1, voire 4.2. En attendant, les utilisateurs ont le choix entre un KDE 3.5, stable mais un peu daté, et Gnome.
KDE et la souris
L’une des différences les plus frappantes entre KDE et les autres interfaces utilisateur est le comportement de la souris. Sous KDE, un seul clic (et non un double-clic) suffit pour ouvrir des fichiers, ainsi que pour les opérations similaires. Cela peut être déroutant au départ, mais permet de travailler de manière plus efficace et confortable. De plus, si vous ne vous habituez pas au simple clic, vous pouvez reconfigurer KDE dans ce sens. Pour cela, lancez le programme Configuration du système, puis choisissez le module Clavier & Souris, ouvrez l’onglet Souris et activez l’option Utiliser le double-clic pour ouvrir les dossiers et les fichiers.
Linux Livre Page 68 Mardi, 23. septembre 2008 1:05 13
68
LINUX
5.1 Connexion et déconnexion
Changement d’utilisateur
Bureau
Conception du bureau
Avant de pouvoir travailler avec KDE, vous devez saisir votre identifiant utilisateur et votre mot de passe. L’écran de connexion dispose d’un menu Type de session (généralement, en bas à gauche). Si vous avez installé un autre environnement de bureau ou gestionnaire de fenêtre, vous pouvez choisir le programme à lancer. Pour vous déconnecter ou redémarrer l’ordinateur, choisissez l’élément correspondant du menu KDE (selon la distribution, Terminer, Éteindre, Quitter, Se déconnecter, etc.). Si le matériel le permet, vous pouvez aussi mettre l’ordinateur en veille ou en hibernation. Dans le menu KDE, la commande Quitter > Changer d’utilisateur permet de se connecter avec un second nom d’utilisateur sans que l’utilisateur courant ait à fermer ses programmes. En interne, un nouveau système graphique (nouveau serveur X) est démarré pour chaque utilisateur, ce qui nécessite beaucoup de ressources. L’utilisation par plusieurs utilisateurs en parallèle ne fonctionne donc correctement que sur les ordinateurs rapides. Pour changer d’utilisateur, on utilise les combinaisons de touches suivantes : Ctrl+Alt+F7 premier utilisateur Ctrl+Alt+F8 deuxième utilisateur Ctrl+Alt+F9 troisième utilisateur L’aspect du bureau dépend largement de la distribution. La Figure 5.1 présente le bureau d’openSUSE 11. Il se compose par défaut d’un tableau de bord en bas de l’écran et d’un espace de travail. Le tableau de bord contient le menu KDE, quelques icônes pour démarrer rapidement certaines applications, une liste des tâches avec les icônes de toutes les fenêtres ouvertes et divers programmes d’aide (applets).
Figure 5.1 Le bureau KDE.
Linux Livre Page 69 Mardi, 23. septembre 2008 1:05 13
KDE
69
Plasma
La nouveauté graphique la plus visible de KDE 4 est Plasma. Ce composant permet de placer des objets interactifs sur le bureau ou le tableau de bord, et de les utiliser. Cette fonctionnalité est comparable à celle de Dashboard d’Apple. De plus, Plasma est responsable de l’affichage des icônes sur le bureau et le tableau de bord.
Zone de travail
La zone de travail est au départ plutôt vide, en dehors de quelques icônes pour la corbeille, des programmes importants et les supports de données externes. Vous pouvez créer d’autres fichiers et répertoires sur le bureau − ils seront représentés sous la forme d’icônes. Dans KDE 4, on peut lancer des petits programmes, appelés plasmoïdes, directement sur le bureau. Vous pouvez les ajouter en quelques clics à partir de l’icône Plasma en haut à droite de l’écran. Le choix est encore limité, mais cela évoluera probablement avec les prochaines versions de KDE. L’horloge en haut à droite de la Figure 5.1 sur le bureau en est un exemple. Si vous utilisez des icônes et des plasmoïdes sur votre bureau, le raccourci Ctrl+F12 peut être utile : il minimise toutes les fenêtres et n’affiche que les éléments du bureau. Si vous saisissez à nouveau ce raccourci, les fenêtres reviennent à leur position initiale. La position et la taille des icônes et des plasmoïdes est enregistrée dans le fichier ~/.kde4/ share/config/plasma-appletrc. Lorsque vous créez des fichiers et des dossiers sur le bureau, ils sont en réalité enregistrés dans ~/Desktop.
Tableaux de bord
Un tableau de bord est une zone rectangulaire située sur l’un des côtés de l’écran (habituellement, en bas). Il n’a en soi aucune fonction ; il n’est qu’un conteneur de plasmoïdes. Certains éléments de base comme le menu et la barre des tâches sont, sous KDE 4, des plasmoïdes. On peut donc, même si ce n’est pas courant, placer le menu, la liste des tâches et d’autres contenus habituels du tableau de bord directement sur le bureau. L’avantage principal du tableau de bord est qu’il n’est pas recouvert par les fenêtres. Le menu contextuel Options pour tableau de bord > Paramètres du panneau permet d’en modifier la taille et la position. Il est cependant déconseillé de le placer à droite ou à gauche, car il n’est pas optimisé pour une représentation verticale.
Menu KDE
Le plasmoïde le plus important est sans doute le menu KDE (voir Figure 5.2). Complètement refondu depuis KDE 3, il se divise en cinq catégories : • Favoris contient les principaux programmes de l’utilisateur. La liste n’est pas actualisée automatiquement (en se basant, par exemple, sur la fréquence à laquelle les programmes sont utilisés). Il faut indiquer explicitement dans l’onglet Applications ceux qui doivent s’y trouver à l’aide du menu contextuel. • Applications contient une liste hiérarchisée de tous les programmes. La navigation est différente de celle d’un menu habituel et demande un peu d’habitude. • Poste de travail permet de lancer divers programmes d’administration et d’ouvrir certains répertoires importants : le répertoire personnel, le répertoire racine, la corbeille, divers supports de données externes, etc. • Utilisé récemment contient une liste des programmes, fichiers et répertoires utilisés récemment. • Quitter contient les commandes pour se déconnecter, changer d’utilisateur et redémarrer l’ordinateur.
Linux Livre Page 70 Mardi, 23. septembre 2008 1:05 13
70
LINUX
Figure 5.2 Le menu KDE.
Indépendamment de ces catégories, le menu KDE contient une fonction de recherche. Elle est particulièrement utile pour lancer des programmes rapidement sans avoir à naviguer dans le menu Applications. Selon la distribution, vous pouvez aussi utiliser l’ancienne forme du menu. Pour cela, cliquez du bouton droit sur le bouton du menu et choisissez Passer au style de menu KDE classique. Liste des tâches
Espaces de travail
Le plasmoïde Liste des tâches affiche une icône pour chaque fenêtre et correspond à la barre des tâches de Windows. Malheureusement, il ne permet que des modifications de configuration limitées, contrairement à celui sous KDE 3. C’est le gestionnaire de fenêtres qui gère le comportement des fenêtres : déplacement, agrandissement, minimisation, etc. Sous KDE, c’est le rôle du programme KWin. Le module Comportement des fenêtres de la Configuration du système permet de modifier de nombreuses propriétés : ce que font les boutons de la souris lorsqu’on les utilise dans la barre de titre d’une fenêtre, sous quels critères une nouvelle fenêtre est placée, le verrouillage éventuel des fenêtres contre le déplacement, etc. On peut aussi effectuer de nombreuses opérations sur les fenêtres au clavier. Les raccourcis correspondants se trouvent dans le menu Clavier & Souris de l’outil de configuration du système. Les espaces de travail permettent de partager les fenêtres de programmes sur plusieurs bureaux virtuels et de passer d’un bureau à un autre. Cela facilite le travail et améliore la vue d’ensemble lorsque plusieurs fenêtres sont ouvertes simultanément. La gestion de ces espaces est déléguée au plasmoïde Bip (Configurer les mini-bureaux). La boîte de configuration permet d’indiquer le nombre de bureaux souhaités, ainsi que d’autres options. Pour les fenêtres importantes, on peut définir si elles doivent se trouver sur tous les bureaux (et non sur un seul). Pour cela, activez l’option Vers le bureau, Tous les bureaux dans le menu de la fenêtre.
Linux Livre Page 71 Mardi, 23. septembre 2008 1:05 13
71
KDE
Boîte à miniatures
Notification de nouveaux périphériques
Lorsque le panneau contient une boîte à miniatures, les programmes en tâche de fond peuvent afficher une notification dans le tableau de bord (par exemple, lorsqu’une mise à jour est disponible ou qu’un courrier électronique vient d’arriver). Cette boîte se trouve généralement à droite ou en bas du panneau. Elle n’a en soi aucune fonction : il s’agit d’un conteneur où les autres programmes peuvent représenter une icône. Le plasmoïde Notification de nouveaux périphériques indique qu’un nouveau support de données est connecté et permet d’ouvrir le système de fichiers ou de démonter l’arborescence correspondante.
5.2 Vues
Dolphin
Sous KDE, Dolphin est le gestionnaire de fichiers par défaut. En général, vous pouvez lancer Dolphin via le menu KDE dans Poste de travail, Dossier personnel. Au centre de la fenêtre s’affichent les fichiers pour lesquels il existe trois modes de représentation (voir Figure 5.3) : Icônes, Détails et Colonnes. Le mode Colonnes affiche chaque sous-répertoire dans une nouvelle colonne.
Figure 5.3 Les trois modes de représentation de Dolphin.
Le bouton Aperçu active, quel que soit le mode d’affichage, un aperçu des documents. La taille de cet aperçu peut être modifiée dans Configuration > Configurer Dolphin > Modes de vue > Icônes. Pour les opérations de copie et de déplacement, on peut scinder la fenêtre horizontalement ou verticalement, grâce au bouton Scinder.
Linux Livre Page 72 Mardi, 23. septembre 2008 1:05 13
72
LINUX
Barres complémentaires
Accès aux supports de données
Accès aux répertoires réseau
Le répertoire courant s’affiche dans une barre de navigation sous le menu. Ctrl+L permet de basculer entre deux vues de cette barre : en tant que boutons, ce qui permet de changer rapidement de répertoire, ou sous forme de texte, ce qui permet de saisir rapidement un nouveau chemin. Indépendamment du mode de cette barre, F6 permet de saisir un nouveau chemin. À gauche, à droite et en bas du contenu de la fenêtre, vous pouvez afficher, à partir du menu Afficher, Barre ou grâce aux touches F4, F7, F9 et F11, un terminal, la hiérarchie des répertoires, une liste des emplacements les plus souvent utilisés ou encore des informations sur un fichier donné. Le menu KDE affiche dans le groupe Poste de travail, Stockage amovible, toutes les partitions montées, ainsi que les supports externes (CD, DVD, etc.). Lorsque vous connectez un lecteur USB ou Firewire, le tableau de bord affiche l’information correspondante. Un clic permet d’ouvrir le gestionnaire de fichiers et d’afficher le contenu du support. Avant de débrancher le lecteur, vous devez lancer la commande Éjecter du menu contextuel ou Retirer en toute sécurité dans la barre Emplacements de Dolphin. C’est la seule manière de s’assurer que tous les fichiers sont fermés et qu’aucune perte de données ne surviendra. La barre Emplacement de Dolphin permet aussi d’accéder au réseau local. Mes tests n’ont pas été concluants quant au parcours du réseau. En revanche, le fait d’indiquer directement une adresse sous la forme smb://nom_du_serveur/répertoire fonctionne.
5.3
Konqueror
Le programme Konqueror est un gestionnaire de fichiers pour les utilisateurs avancés, un navigateur web, un client réseau (FTP, SCP, répertoires Windows, etc.) et une visionneuse de documents (images, fichiers d’aide, etc.). En raison des nombreuses fonctions de Konqueror, son menu est malheureusement surchargé et peu clair. De plus, mes tests ont mis en évidence une grande instabilité de Konqueror − de nombreuses opérations qui fonctionnaient sans problème sous KDE 3 sont actuellement plus délicates sous KDE 4.
Utilisation en tant que gestionnaire de fichiers Pour utiliser Konqueror en tant que gestionnaire de fichiers (voir Figure 5.4), cliquez sur le bouton Début ou saisissez ~/ dans la barre d’adresse. Dans le menu Affichage, vous pouvez choisir, comme dans Dolphin, entre trois modes de représentation. La quatrième vue, Afficheur de taille de fichiers, permet de visualiser la place nécessaire aux différents dossiers et répertoires. F9 permet d’afficher ou de masquer la barre de navigation sur le côté droit. On y trouve, entre autres, des signets, différents services, une arborescence de répertoires et un explorateur réseau. L’utilisation du simple clic pour ouvrir des fichiers induit une particularité quant à la sélection des fichiers. Il faut, pour ne pas ouvrir le fichier considéré, appuyer en même temps sur Ctrl ou Maj. Lorsque vous cliquez sur un fichier Zip ou Tar (se terminant par .tar, .tar.gz, .tgz, .zip, etc.), le contenu de l’archive s’affiche dans un nouveau répertoire.
Linux Livre Page 73 Mardi, 23. septembre 2008 1:05 13
73
KDE
Figure 5.4 Konqueror en tant que gestionnaire de fichiers.
Pour copier ou déplacer des fichiers, vous utiliserez souvent deux fenêtres de Konqueror. Il existe une alternative : vous pouvez aussi scinder une fenêtre en deux grâce à Fenêtre, Scinder la vue gauche/droite ou Fenêtre, Scinder la vue haut/bas. Images d’aperçu
Fichiers cachés Droits d’accès
Supprimer des fichiers
Utilisation du disque dur
Konqueror peut afficher des images d’aperçu pour tous les formats de fichiers qu’il connaît (choisir Affichage, Aperçu dans le menu). On peut modifier la taille des icônes d’aperçu grâce à Ctrl++ et Ctrl+–. Pour des raisons d’efficacité, les images d’aperçu ne s’affichent que pour les fichiers dont la taille est inférieure à une taille donnée, limite que l’on peut modifier dans Configuration > Configurer Konqueror > Aperçus & Méta-informations. Les images sont mises en cache dans le répertoire ~/.thumbnails. Pour afficher les fichiers cachés (dont le nom commence par un point), lancez Affichage > Afficher les fichiers cachés. Un utilisateur ne peut pas lire ou modifier tous les dossiers ou répertoires. Linux enregistre donc pour chaque fichier et répertoire le propriétaire et les droits d’accès. Les concepts sousjacents seront expliqués au Chapitre 13. Pour modifier ces droits, cliquez du bouton droit sur le fichier ou le répertoire, puis allez dans Propriétés > Droits d’accès (voir Figure 5.5). Lorsque vous supprimez des fichiers et des dossiers, ceux-ci arrivent d’abord dans la corbeille. Vous pouvez en voir le contenu dans le gestionnaire de fichiers grâce à Aller > Corbeille. Pour les supprimer définitivement, sélectionnez-les dans la corbeille et appuyez sur Suppr. Pour les supprimer sans qu’ils passent par la corbeille, appuyez sur Maj+Suppr. Si vous désirez savoir dans quels répertoires se trouvent les plus grosses quantités de données, vous pouvez utiliser le mode Affichage de la taille de fichiers. Konqueror affiche un graphique qui se compose de rectangles, dont la surface représente la taille des fichiers. Ce graphique peut aussi s’afficher sans les éléments spécifiques à Konqueror, grâce à la commande fsview.
Linux Livre Page 74 Mardi, 23. septembre 2008 1:05 13
74
LINUX
Figure 5.5 Droits d’accès à un fichier.
Accès aux répertoires réseau Navigateur web FTP
SSH
Partages Windows
Pour utiliser Konqueror en tant que navigateur web, saisissez simplement une adresse web dans la barre d’adresse. Nous parlerons de Konqueror en tant que navigateur web au Chapitre 6. Lorsque l’adresse commence par ftp://, Konqueror passe automatiquement en mode FTP. L’interface et l’utilisation sont alors comparables à l’utilisation du programme en tant que gestionnaire de fichiers. Si vous désirez vous connecter au serveur FTP avec un nom d’utilisateur particulier, vous devez écrire l’adresse sous la forme ftp://nom@adresse. Une fois la connexion établie, une boîte de dialogue s’affiche pour la saisie du mot de passe. Konqueror permet aussi de communiquer avec un ordinateur via le protocole SSH et de copier des fichiers. Pour cela, indiquez l’adresse fish://nom@ordinateur. Konqueror montre alors tous les fichiers de l’ordinateur distant. Konqueror permet d’explorer des serveurs Windows ou Samba sur le réseau local. Pour cela, il suffit de taper smb:/ dans la barre d’adresse. Pour accéder directement à un partage, utilisez la syntaxe smb://nom_du_serveur/nom_du_partage. Celle-ci est particulièrement importante lorsque le parcours du réseau n’est pas possible, qu’il s’agisse d’un problème de pare-feu ou de configuration réseau.
Adresses spéciales La liste suivante indique les adresses spéciales les plus importantes de Konqueror. Adresses spéciales de Konqueror Fichiers locaux
file:/etc/fstab tar:/fichierarchive zip:/fichierarchive audiocd:/ trash:/
fichier local accès à un fichier Tar accès à un fichier Zip accès à un CD audio corbeille
Linux Livre Page 75 Mardi, 23. septembre 2008 1:05 13
75
KDE
Réseau
http://www.pearson.fr ftp://utilisateur@mars/répertoire sftp://utilisateur@mars/répertoire fish://utilisateur@mars/répertoire smb://mars/partage
adresse web serveur FTP sur l’ordinateur mars serveur SFTP sur l’ordinateur mars accès SSH à l’ordinateur mars partage Windows
Aide
man:ls info:emacs help:kmail
page de manuel de la commande ls page info du programme emacs aide KDE du programme kmail
Autres
applications:/ fonts:/ remote:/ settings:/
5.4
Configuration de KDE
kprinter
liste de tous les programmes liste de toutes les polices navigateur réseau module de configuration du centre de contrôle
Applications KDE
Cette section présente quelques programmes KDE fréquemment utilisés. Notez qu’il s’agit encore pour la plupart de la version KDE 3. Leur portage sous KDE 4 n’est attendu que pour KDE 4.1 au plus tôt. Les divers modules de configuration de KDE 4 sont regroupés dans un nouveau programme de configuration système (systemsettings, voir Figure 5.6). Comme il n’est pas toujours facile de trouver tout de suite le bon module, il existe une fonction de recherche dans laquelle vous pouvez saisir des mots clés. Si vous êtes déjà dans un module, vous pouvez revenir à la liste des modules grâce au bouton Vue globale. Vous pouvez aussi lancer des modules individuels via la commande kcmshell nom_du_module. Une liste de tous les modules disponibles est accessible avec la commande kcmshell -list. Les modifications sont enregistrées dès que vous cliquez sur le bouton Appliquer. KDE contient, comme Gnome, des modules de configuration qui ne s’appliquent pas au bureau, mais au système (réseau, imprimantes, etc.). Ils sont très utiles sur les distributions qui ne fournissent pas leurs propres outils. Cependant, s’ils existent, utilisez de préférence les programmes de configuration de votre distribution. Dans tous les programmes KDE, l’option Fichier > Imprimer affiche une boîte de dialogue confortable, dans laquelle vous pouvez choisir votre imprimante. Vous pouvez aussi imprimer vers un fichier PostScript ou PDF.
Linux Livre Page 76 Mardi, 23. septembre 2008 1:05 13
76
LINUX
Figure 5.6 Le centre de contrôle de KDE.
La commande kprinter peut également remplacer lpr. Elle imprime le fichier ou les données qui lui sont passées via un redirecteur pipe, |. La boîte de dialogue KDE d’impression s’affiche alors. utilisateur$ kprinter fichier utilisateur$ ls -l | kprinter Archiver des fichiers : Ark
Konqueror permet de visualiser et d’extraire les fichiers qui se terminent par *.tar.gz, *.tgz et *.zip. Cependant, vous ne pouvez pas créer de nouvelle archive ou en modifier une existante par ce biais. Pour cela, il faut utiliser Ark, qui fonctionne d’une manière tout à fait comparable à WinZip.
Application de terminal : Konsole
konsole permet de lancer un ou plusieurs interpréteurs de commandes dans une console texte. Vous pouvez passer d’un terminal à un autre avec Maj et les flèches de direction. Ctrl+Maj et les flèches de direction permettent de changer l’ordre des onglets. Pour créer un nouvel onglet, double-cliquez dans la barre. Notez la possibilité, fort pratique, de copier des noms de fichiers par glisser-déplacer depuis Konqueror.
Gestion des mots de passe : KWalletManager
Lorsque vous remplissez un formulaire de connexion pour la première fois (par exemple, lorsque vous utilisez un outil web de courrier électronique comme IMP), un assistant de configuration du gestionnaire de portefeuilles apparaît. Le programme KWalletManager aide à sécuriser les données. Lors d’une utilisation ultérieure de la même page, il remplira le formulaire pour vous. Il est également utilisé pour centraliser les mots de passe et autres informations critiques dans KMail/Kontact, dans NetworkManager et dans divers autres programmes KDE. L’accès à ces données, chiffrées dans KWalletManager, est sécurisé grâce à un mot de passe maître. Lors d’une session KDE, il suffit de saisir une seule fois le mot de passe maître. Lors de la première utilisation de KWalletManager, un assistant vous aide à la configuration de base du programme. Celle-ci se limite à valider l’utilisation de KWalletManager comme
Linux Livre Page 77 Mardi, 23. septembre 2008 1:05 13
77
KDE
PDF et PostScript : Okular Gestion des clés GPG : Kgpg Éditeurs de texte : KEdit, KWrite, Kate
Pressepapiers : Klipper
Renommage de fichiers : KRename
Gravure de CD et de DVD : K3b
gestionnaire de mots de passe et à saisir un mot de passe maître. Pour des raisons de sécurité, ce dernier doit être différent du mot de passe associé au compte. Lorsque vous cliquez sur un fichier *.pdf ou *.ps, le programme Okular se lance et affiche le document. Vous pouvez alors le parcourir, imprimer des pages, etc. Si vous utilisez des clés GPG pour chiffrer ou signer vos courriers électroniques, ou dans d’autres programmes, il est utile de disposer d’un outil central de gestion des clés. Sous KDE, c’est le programme Kgpg qui s’en charge. Selon la distribution, trois éditeurs de texte peuvent être installés avec KDE : KEdit, KWrite et Kate. Les deux premiers sont simples à utiliser, mais ne fournissent que les fonctions de base. Kate se positionne comme un éditeur pour les programmeurs et les utilisateurs avancés. Vous pouvez regrouper plusieurs fichiers ouverts dans une session, replier des parties de code (fonctions, classes), etc. Le programme Klipper est normalement lancé sous KDE. Son fonctionnement de base est de mémoriser le dernier élément inséré dans le presse-papiers. Le contenu de cet élément est analysé et peut déclencher des actions. Par exemple, un élément commençant par http:// peut entraîner l’ouverture d’une fenêtre qui permet d’ouvrir l’adresse web dans un navigateur. KRename permet de renommer efficacement des fichiers, de les numéroter ou encore de modifier des informations, telles que la date. On peut utiliser à cette fin les expressions rationnelles. Avant toute opération, KRename affiche un résumé des anciens et des nouveaux noms de fichiers. K3b est le programme de gravure le plus polyvalent sous Linux. Sa multitude de fonctions attire même certains utilisateurs convaincus de Gnome. Il permet de graver des CD et des DVD, y compris multisessions, avec de nombreuses options. On peut aussi copier des CD et des DVD, ou encore graver des images ISO. K3b n’est pas encore porté complètement sous KDE 4 et utilise des bibliothèques KDE 3. Le grand nombre d’options et de boîtes de dialogue disponibles peut paraître effrayant à première vue, mais les choix par défaut sont généralement sensés.
5.5 Connexion automatique
Trucs et astuces
Lorsque vous démarrez votre ordinateur, vous devez vous connecter avant de pouvoir commencer à travailler. Si vous êtes le seul utilisateur de l’ordinateur et qu’aucune autre personne ne peut y accéder, vous pouvez automatiser la première connexion lors du démarrage. La fonction de connexion automatique est configurée dans le module Avancé > Gestionnaire de connexion > Commodités des paramètres système, qu’il faut lancer avec des privilèges root. Cochez l’option Activer la connexion automatique, puis choisissez l’utilisateur désiré pour la connexion automatique. Si Gnome et KDE sont installés en parallèle sur votre ordinateur, il est probable que la connexion soit gérée par KDM et non par GDM. Il faut alors configurer la connexion automatique avec le programme KDE kcmshell. Pour savoir quel gestionnaire de connexion fonctionne, utilisez la commande utilisateur$ ps ax |egrep ’gdm|kdm’
Linux Livre Page 78 Mardi, 23. septembre 2008 1:05 13
78
LINUX
Dans les distributions SUSE et Novell, la configuration de cette fonctionnalité est indépendante du gestionnaire de bureau. Elle est enregistrée dans le fichier /etc/sysconfig/displaymanager. Ne modifiez donc pas la configuration via les outils KDE ou Gnome, mais par le biais de YaST, sans quoi les modifications seront annulées à la première occasion. Démarrage automatique
Lorsque vous vous déconnectez, les programmes sont arrêtés. À la connexion suivante, KDE tente de les redémarrer et de rétablir la session. Pour les programmes KDE, cela fonctionne relativement bien. Pour d’autres, cela fonctionne avec certaines limitations (par exemple, le document ouvert n’est pas rechargé), voire pas du tout. Les détails de ce comportement se règlent dans le module Avancé > Gestionnaire de session. Indépendamment de la session, vous pouvez enregistrer les programmes à démarrer automatiquement dans le répertoire ~/.kde[4]. KDE s’attend à trouver dans ce dossier des fichiers *.desktop qui définissent le programme à lancer. Il arrive qu’un programme soit alors lancé en double : une fois pour le rétablissement de la session et une fois par le démarrage automatique. KDE utilise plusieurs répertoires pour connaître les applications à lancer : ~/.kde[4]/Autostart/
configuration personnelle
/usr/share/autostart/
configuration globale de KDE
/etc/xdg/autostart/
configuration globale pour tous les bureaux, y compris Gnome et KDE
Administration distante
Lorsque vous avez un problème avec votre ordinateur, par exemple lorsqu’un programme ne fonctionne pas correctement, un ami peut vous aider grâce à l’administration à distance. Il peut ainsi voir dans une fenêtre de son ordinateur le contenu de votre écran et utiliser tous les programmes avec la souris et le clavier.
Répertoires de configuration
La plupart des programmes KDE enregistrent leurs options dans des fichiers du répertoire ~/.kde/ ou ~/.kde4/. Plusieurs sous-répertoires sont créés, et en particulier les répertoires suivants : ~/.kde[4]/Autostart/
configuration personnelle du démarrage automatique
~/.kde[4]/share/config/
paramètres de configuration
~/.kde[4]/share/apps/
fichiers spécifiques aux programmes
Icône de connexion
L’écran de connexion peut associer une petite image à chaque utilisateur. Pour la modifier, lancez la commande kcmshell kcm_useraccount. Vous pouvez changer votre mot de passe, l’icône de connexion, ainsi que d’autres paramètres personnels. L’icône de connexion est enregistrée au format PNG dans le fichier ~/.face.icon.
Définir les programmes par défaut
Par défaut, KDE utilise Konqueror comme navigateur web, Kontact comme programme de courrier électronique et Konsole comme programme de console. Si vous désirez changer ces applications, allez dans le module Applications par défaut de la Configuration du système.
Raccourcis clavier
Certaines opérations courantes peuvent être effectuées plus rapidement au clavier qu’à la souris. Des raccourcis peuvent s’afficher et être modifiés dans le module Clavier & Souris > Raccourcis clavier. Vous pouvez aussi définir des raccourcis pour démarrer des programmes. Utilisez pour cela kmenuedit et associez un raccourci clavier à un élément du menu KDE.
Linux Livre Page 79 Mardi, 23. septembre 2008 1:05 13
PARTIE 2 – LA BUREAUTIQUE SOUS LINUX
Navigateurs Internet (Firefox, Konqueror)
6 E-mail, FTP, SSH
Messagerie instantanée, VoIP
Ce chapitre se focalise essentiellement sur les deux navigateurs Internet les plus populaires sous Linux, Firefox et Konqueror. Si je n’aborderai que brièvement leur utilisation (vous savez déjà comment naviguer sur le Web), vous trouverez en revanche ici des astuces de configuration, d’installation de greffons (Adobe Reader, Flash, Java), etc. Les clients de lecture et de composition d’e-mails seront présentés au prochain chapitre. Vous trouverez au Chapitre 16 les astuces concernant le téléchargement de fichiers par FTP, wget et Torrent, et celles traitant de la manipulation de SSH et scp. Les services Internet IRC (Internet Relay Chat) et IM (messagerie instantanée ou Instant Messaging) ne seront pas traités dans le cadre de cet ouvrage : dans les deux cas, il s’agit de formes de communication dynamiques impliquant un contact direct entre les interlocuteurs (c’est-à-dire que les deux personnes doivent être en ligne simultanément). Si vous souhaitez utiliser uniquement IRC, le programme XChat (http://www.xchat.org/) est un bon choix. Les programmes Kopete (http:// kopete.kde.org/) et Konversation (sous KDE) ainsi que Pidgin (http://www.pidgin.im/) (sous Gnome et anciennement connu sous le nom gaim) sont quant à eux des clients universels qui prennent en charge divers protocoles de messagerie instantanée en plus d’IRC (par exemple AIM, ICQ, MSN et Yahoo!) [http://lwn.net/ Articles/216456/ (article en anglais)]. Un autre point que nous laisserons de côté dans cet ouvrage est le sujet de la Voix sur IP (abrégé en VoIP) et de la téléphonie sur Internet. Le programme le plus connu pour cet usage est le logiciel commercial Skype (http:// www.skype.com/download/skype/linux/). La version Linux en est gratuite, mais elle est quelque peu obsolète comparée à son homologue Windows. Ekiga (http://ekiga.org/) est, par exemple, une alternative open-source intéressante à Skype.
6.1 Histoire et nom
Firefox
Firefox peut se réjouir d’une adoption croissante sous Windows, mais il est également et de très loin le navigateur Internet le plus populaire sous Linux. Voici, rapidement, quelques mots présentant l’origine du logiciel : en 1998, la société Netscape a "libéré" le code source de Netscape Navigator, qui est donc devenu un projet open-source. Dans le cadre du projet Mozilla a vu le jour la suite applicative Mozilla, qui comprenait un navigateur web, un client de courrier électronique et de news, ainsi qu’un éditeur HTML, le tout en une seule application. En 2002, parce que le code était devenu illisible, les développeurs ont décidé
Linux Livre Page 80 Mardi, 23. septembre 2008 1:05 13
80
LINUX
d’en séparer les différents composants. Depuis lors, le nouveau logiciel Mozilla Firefox ne contient que les fonctionnalités de navigation web, tandis que le logiciel Mozilla Thunderbird (que nous présentons au chapitre suivant) gère les fonctionnalités de courrier électronique et de news. D’autres rejetons de ce projet, que nous ne présentons pas dans cet ouvrage, sont l’éditeur HTML Nvu et l’agenda Mozilla Sunbird. Certains développeurs du projet Mozilla, sceptiques quant à la séparation des fonctionnalités, ont fondé un nouveau projet dénommé Seamonkey et destiné à unifier de nouveau toutes ces fonctions dans un même logiciel. AOL a par ailleurs un temps proposé sa propre version personnalisée, fondée sur le code de Mozilla. Ce chapitre ne s’intéressera toutefois qu’à la version 3.0 de l’outil Mozilla Firefox en tant que tel. Firefox et Debian
Par le passé, les termes de licence plutôt drastiques du projet Firefox ont causé des remous chez bien des développeurs Linux : bien qu’il s’agisse de code open-source, un programme ne peut s’appeler Firefox que s’il contient du code source "officiel" produit par les développeurs Firefox. Ce qui a en particulier conduit à des problèmes fréquents lors des mises à jour : de nombreuses distributions Linux proposaient une version de Firefox intégrée à la distribution et lui ajoutaient toutes les mises à jour de sécurité au fur et à mesure, plutôt que systématiquement contraindre leurs utilisateurs à mettre à niveau leur installation vers la dernière version de Firefox. De telles mises à jour de sécurité ne répondaient toutefois pas aux conditions d’utilisation de la licence Firefox. Même si, sur ce point, les camps de Linux et Firefox sont parvenus à un compromis grâce à Mark Shuttleworth (Ubuntu), Debian a choisi d’intégrer le navigateur Web Firefox et le client de courrier électronique Thunderbird à sa distribution sous des noms qui lui sont propres. Ainsi, sous Debian, Firefox s’appelle Iceweasel et Thunderbird s’appelle Icedope. Ceci permet à Debian de proposer des modifications du code ou des icônes propres sans avoir à se préoccuper de Firefox.
Fonctionnalités de base L’utilisation du navigateur ne présente rien de nouveau par rapport à ce à quoi vous êtes habitué avec n’importe quel autre navigateur : vous cliquez sur des liens, enregistrez des signets pour les pages importantes, etc. Je ne reviendrai pas ici sur ces fonctionnalités élémentaires, je pense que vous les maîtrisez déjà. Comme tous les navigateurs Internet modernes, Firefox peut ouvrir plusieurs pages au sein d’une même fenêtre, à l’aide des onglets. Pour ouvrir une nouvelle sous-fenêtre, on utilise soit la combinaison de touches Ctrl+T, soit un clic droit de la souris sur un lien pour choisir Ouvrir le lien dans un nouvel onglet, dans le menu contextuel qui apparaît. Les combinaisons de touche Ctrl+PgPréc ou Ctrl+PgSuiv permettent de passer d’un onglet à l’autre. Ctrl+W permet de fermer l’onglet courant. Fenêtres pop-up
De nombreux sites web utilisent JavaScript pour ouvrir des fenêtres "pop-up" de publicité. Firefox l’empêche dans la plupart des cas et affiche un avertissement sous la barre d’adresse. Si vous le souhaitez, vous pouvez, en cliquant sur cet avertissement, autoriser l’ouverture de la fenêtre pop-up qui a été bloquée ou autoriser systématiquement les fenêtres pop-up pour le site web concerné. Par exemple, le système de gestion des comptes en ligne de ma banque ne fonctionne que par fenêtre pop-up. J’ai donc exclu le site de ma banque de la protection contre les fenêtres pop-up.
Linux Livre Page 81 Mardi, 23. septembre 2008 1:05 13
NAVIGATEURS INTERNET (FIREFOX, KONQUEROR)
81
Figure 6.1 Le navigateur web Firefox.
Affichage des caractères étrangers
Recherche de texte
Recherche web
Marque-pages (Bookmarks)
Pour configurer la gestion des fenêtres pop-up ainsi que la liste des sites autorisés, passez par la boîte de dialogue Édition > Préférences > Contenu. Firefox tente de reconnaître automatiquement le jeu de caractères des pages web, ce qui fonctionne généralement bien. Dans certains cas rares, toutefois, le navigateur échoue et affiche alors mal les caractères étrangers (y compris les caractères accentués français, par exemple). Dans de tels cas, vous devez participer à la reconnaissance du jeu de caractères. Essayez par exemple de choisir Affichage > Encodage des caractères > Unicode (UTF-8) ou > Occidental (ISO-8859-1). Édition > Rechercher ou la combinaison de touches Ctrl+F permettent d’ouvrir une boîte de dialogue de recherche. Plus rapide encore, toutefois, la combinaison / A B C permet de localiser le texte abc. Ctrl+G réitère la recherche. Utiliser ’ A B C constitue une variante qui permet de rechercher des liens contenant le texte abc. Pour effectuer une recherche Google, plutôt que vous rendre sur la page www.google.com ou www.google.fr, vous pouvez saisir le mot-clé de votre recherche directement dans le champ figurant à droite de la barre de navigation. Outre Google, d’autres moteurs de recherche y sont également préconfigurés. Le menu de sélection vous permet également de définir un nouveau moteur de recherche. L’entrée de menu Ajouter des moteurs de recherche vous conduit à une page du site Firefox grâce à laquelle vous intégrerez au menu de recherche, en un seul clic de souris sur le lien correspondant, le moteur que vous aurez choisi parmi un grand nombre de moteurs de recherche populaires proposés. Vous pouvez consulter les marque-pages dans Firefox dans trois endroits différents : par le biais du menu Marque-pages, dans une barre d’outils (Affichage > Barre d’outils) ou dans le panneau latéral, que vous pouvez activer ou désactiver par la combinaison de touches Ctrl+B. Pour enregistrer un nouveau signet, vous utiliserez au choix la combinaison de touches Ctrl+D ou un glisser-déposer de l’adresse courante dans la barre de signets ou dans le panneau latéral. Lorsque vous souhaitez réorganiser vos signets, passez par Marque-pages > Gérer les marque-pages. Une même boîte de dialogue vous permet d’effacer, de déplacer, de renommer, de trier, d’exporter ou d’importer tous vos marque-pages. En interne à Firefox, les marquepages sont stockés dans une base de données SQLite correspondant au fichier : ~/.mozilla/firefox/nnnn.default/places.sqlite
Linux Livre Page 82 Mardi, 23. septembre 2008 1:05 13
82
LINUX
Marque-pages intelligents
Les marque-pages intelligents sont une nouveauté de Firefox 3 : ils vous donnent un accès rapide aux dix signets les plus utilisés et aux dix derniers marque-pages enregistrés.
Flux RSS
De nombreux sites web présentent régulièrement des nouveautés et proposent également des liens vers les articles sous la forme de flux RSS. Il s’agit là de fichiers XML spécialement mis en forme qui, à chaque nouveauté, proposent une description succincte ainsi qu’un lien. Firefox peut présenter un flux RSS de ce type sous la forme de marque-pages dynamiques. Le contenu du marque-page se met à jour automatiquement lorsque de nouvelles informations sont disponibles. À chaque site web proposant un flux RSS, Firefox présente au côté droit de la barre d’adresse un symbole orange ("S’abonner à cette page..."). Cliquez sur ce symbole et confirmez ensuite la boîte de dialogue de configuration. Le marque-page dynamique apparaît maintenant comme un groupe de marque-pages renvoyant aux entrées effectives du flux.
Historique
Firefox conserve pour quelques jours le nom et l’adresse de chaque site web consulté. Cet historique de navigation peut être affiché dans le panneau latéral par le biais de la combinaison de touches Ctrl+H, où vous pouvez également effectuer des recherches. Vous modifierez la durée de stockage des pages visitées, qui est en standard configurée à 90 jours, dans Édition > Préférences > Vie privée.
Téléchargements
Pour télécharger un fichier sur votre ordinateur, il suffit dans la plupart des cas de cliquer sur le lien correspondant. Firefox vous demande alors si vous souhaitez ouvrir le fichier à l’aide d’un programme externe ou l’enregistrer sur le disque dur. Si cela ne fonctionne pas, effectuez un clic droit sur le lien et choisissez Enregistrer la cible sous. Pour les téléchargements dont la durée dépasse quelques secondes, une boîte de dialogue d’état apparaît automatiquement. Par défaut, les téléchargements Firefox sont enregistrés dans le dossier ~/Desktop. Si vous souhaitez indiquer manuellement l’emplacement à chaque téléchargement, ouvrez Édition > Préférences > Général et activez l’option Me demander où enregistrer chaque fichier.
Mots de passe
Lorsque vous remplissez des formulaires de connexion (par exemple pour utiliser un service de webmail), une boîte de dialogue apparaît qui vous demande si les informations de connexion doivent être enregistrées. Cela vous épargne le fait de devoir saisir à nouveau toutes les informations à la visite suivante. Ce confort possède naturellement un prix : lorsqu’une personne étrangère a accès à votre ordinateur, Firefox lui donne également accès à tous les sites web sécurisés par un mot de passe. Par conséquent, vous pouvez protéger tous les mots de passe enregistrés par le biais d’un mot de passe dit principal. Celui-ci sert à protéger l’ensemble des autres mots de passe. Par la suite, vous devrez saisir le mot de passe principal à chaque session lorsque Firefox accède pour la première fois à la base de données des mots de passe. Pour définir ce mot de passe, ouvrez Édition > Préférences > Sécurité et activez l’option Utiliser un mot de passe principal.
Impressions
Avant de lancer l’impression, vous pouvez choisir par le biais de Fichier > Mise en page la taille du papier ainsi que l’orientation du document (portrait ou paysage). Fichier > Aperçu avant impression vous permet d’avoir une idée de la mise en forme avant l’impression effective. Fichier > Imprimer lance l’impression de la page et vous permet de choisir l’imprimante souhaitée ainsi que l’échelle à appliquer ou encore diverses options pour l’impression des cadres. Dans de nombreuses distributions, Firefox utilise le format de papier américain US Letter, ce qui peut (suivant l’imprimante) conduire à des problèmes en Europe. Pour fixer le format standard au format A4, ouvrez
Linux Livre Page 83 Mardi, 23. septembre 2008 1:05 13
NAVIGATEURS INTERNET (FIREFOX, KONQUEROR)
83
dans Firefox la page about:config, recherchez l’option print.postscript.paper_size et modifiez-en la valeur par un double-clic sur A4. La nouvelle configuration est prise en compte dès que vous relancez Firefox. Mises à jour de Firefox
Vous êtes peut-être familiarisé avec les mises à jour automatiques de Firefox disponibles dans la version Windows. Sous Linux, ce type de mise à jour n’est pas possible. Ici, c’est l’outil de gestion centralisée des paquetages qui gère l’ensemble des mises à jour. La plupart des distributions Linux proposent un paquetage Firefox mis à jour à chaque fois qu’une mise à jour Firefox est publiée.
Configuration Fichiers de configuration
Proxy (serveur mandataire)
Taille des caractères
Java et JavaScript
Cookies
Firefox génère à son premier lancement le répertoire ~/.mozilla/firefox/profil.default, où profil est une chaîne de caractères aléatoire. Dans ce répertoire, Firefox enregistre tous les paramètres, les marque-pages, le cache, etc. Si votre ordinateur est connecté à Internet ou à un réseau local mais que vous ne parveniez pas à naviguer sur le Web, il est possible que votre réseau local utilise un serveur proxy, ou serveur mandataire. C’est un ordinateur placé entre votre PC et Internet. Il sert de stockage intermédiaire et accélère ainsi l’accès à des pages fréquemment consultées. Le proxy peut également servir à bloquer l’accès à certaines pages données ou à journaliser tous les accès web. Nous verrons au Chapitre 29 comment mettre en place un serveur proxy sous Linux. Pour utiliser un serveur mandataire avec Firefox, ouvrez la boîte de dialogue Édition > Préférences > Avancé, onglet Réseau puis bouton Paramètres, et renseignez l’adresse obligatoire du ou des serveurs proxy. En règle générale, il suffit de remplir les champs correspondant aux serveurs proxy HTTP et FTP. Le numéro de port approprié est le 8080. Si vous ne connaissez pas l’adresse de votre proxy, contactez votre administrateur système. Si la taille des caractères d’une page donnée est trop grande ou trop petite à votre goût, vous pouvez jouer sur le facteur d’agrandissement au moyen des combinaisons de touches Ctrl++ ou Ctrl+–. Vous pouvez également faire tourner la molette de votre souris tout en appuyant sur la touche Ctrl. Pour modifier de façon permanente la taille par défaut des caractères, ouvrez la boîte de dialogue Édition > Préférences > Contenu et configurez-y la police par défaut et sa taille d’affichage. Le bouton Avancé vous permet aussi de paramétrer une taille minimale pour les polices. Par défaut, Java et JavaScript sont activés. Vous trouverez les options correspondantes dans la boîte de dialogue Édition > Préférences > Contenu. Toutefois, Java ne fonctionnera que si un environnement Java est installé conjointement à un greffon Mozilla (voir un peu plus loin dans ce chapitre). Les cookies sont de minuscules fichiers stockés sur votre ordinateur. Ils permettent à un site web de vous reconnaître lors d’une visite ultérieure et d’enregistrer des informations contextuelles. Par ailleurs, les cookies sont fréquemment nécessaires dans le cadre de transactions commerciales (identification, panier d’achats). Les cookies ne sont pas dangereux et améliorent dans bien des cas le confort de navigation. Par conséquent, Firefox accepte par défaut les cookies de la majorité des sites web. L’usage des cookies peut toutefois, dans une certaine mesure, être détourné pour garder une trace des
Linux Livre Page 84 Mardi, 23. septembre 2008 1:05 13
84
Cache local
about:config
LINUX
sites web que vous consultez. Pour cette raison, la boîte de dialogue Édition > Préférences > Vie privée permet de refuser la totalité ou une partie des cookies. Firefox gère un cache local dans lequel sont enregistrées les dernières pages web, images, etc. consultées. Si vous ouvrez ultérieurement la même page web et qu’elle n’ait pas changé entre-temps, cette page peut alors être chargée directement depuis le cache local, ce qui est naturellement beaucoup plus rapide. Par défaut, 50 Mo d’espace disque sont réservés pour le cache. Vous pouvez augmenter ou diminuer ce volume par le biais de l’option Édition > Préférences > Avancé > Réseau > Stockage hors connexion ; et également y vider le contenu du cache. Dans la fenêtre principale, l’adresse about:cache vous renvoie la liste de tous les fichiers actuellement stockés dans le cache. Vous pouvez modifier les paramètres de configuration essentiels grâce au confort des boîtes de dialogue proposées par Édition > Préférences. Il existe par ailleurs d’innombrables options supplémentaires, plus rarement utilisées. Lorsque vous saisissez l’adresse about:config dans la barre d’adresse de Firefox, puis que vous appuyez sur la touche Entrée (voir Figure 6.2), vous obtenez une liste alphabétique de ces options ainsi que leurs valeurs courantes. Le champ de texte Filtre vous permet de limiter la liste des options affichées à celles correspondant au texte fourni. Pour modifier la valeur d’une option, effectuez un double-clic sur celle-ci.
Figure 6.2 Configuration de Firefox.
Bouton central de la souris
MIME
Firefox propose une fonctionnalité particulièrement utile vous permettant d’ouvrir rapidement des URL fournies sous la forme de texte (et non de liens). Pour ce faire, sélectionnez l’adresse en question à l’aide de la souris. Il vous suffit alors de cliquer sur le bouton central de la souris pour ouvrir directement l’adresse, entre-temps enregistrée dans le presse-papiers. Sur certaines distributions, en particulier Ubuntu, cette fonctionnalité est malheureusement désactivée. Pour l’activer, saisissez dans la barre d’URL l’adresse about:config et recherchez ensuite l’option middlemouse.content-LoadURL. Un double-clic sur cette option vous permet alors de la faire basculer de la valeur false à la valeur true. L’acronyme MIME signifie Multipurpose Internet Mail Extensions. MIME sert à indiquer au navigateur web quel programme celui-ci doit lancer lorsque vous cliquez sur le lien correspondant à un fichier MP3 ou PDF. Firefox prend en compte les paramètres MIME généraux de Linux ainsi que les informations MIME de tous les greffons installés (voir un peu plus loin dans ce chapitre). Le fichier XML ~/.mozilla/firefox/profil/mimeTypes.rdf (difficile à lire) contient des paramètres supplémentaires pour la gestion des types MIME. La boîte de dialogue Ouvrir (qui apparaît systématiquement lorsque Firefox reconnaît un type MIME mais ne parvient pas à identifier le programme associé) est la méthode la plus simple pour enregistrer de nouveaux paramètres MIME ou modifier des paramètres existants. Vous pouvez alors choisir un programme parmi la liste proposée ou fournir le chemin
Linux Livre Page 85 Mardi, 23. septembre 2008 1:05 13
NAVIGATEURS INTERNET (FIREFOX, KONQUEROR)
85
complet d’un autre programme (sous Linux, la plupart des programmes sont situés dans le répertoire /usr/bin). La boîte de dialogue Édition > Préférences > Applications vous donne une vue d’ensemble de tous les paramètres MIME spécifiques à Firefox. Vous pouvez également y modifier ou supprimer des paramètres existants, mais non y ajouter de nouvelles entrées (voir Figure 6.3).
Figure 6.3 Paramètres MIME de Firefox.
Xulrunner
La plupart des distributions installent des paquets distincts pour Firefox (l’interface utilisateur) et xulrunner (l’exécutable de rendu). Les fichiers xulrunner sont responsables de la présentation effective des pages web, c’est-à-dire de leur rendu. XUL est l’acronyme de XML User Interfaces Language et comprend, outre l’exécutable de rendu à proprement parler (qui se trouve dans la bibliothèque Gecko), divers composants supplémentaires. La séparation entre Firefox et xulrunner présente l’avantage de permettre à d’autres programmes devant également assurer le rendu de pages HTML (par exemple le client e-mail Thunderbird) d’accéder au paquetage commun xulrunner. Par le passé, chaque programme devait installer son propre exécutable de rendu. Ceci conduisait donc à des redondances et à des problèmes de maintenance.
Extensions (fichiers XPI) Les fichiers XPI (cross platform installation) contiennent des extensions Firefox dont les fichiers d’installation sont empaquetés dans une archive conjointement à du code d’installation JavaScript. L’éventail des extensions disponibles est très large et couvre aussi bien des utilitaires de blocage de la publicité (par le biais d’extensions de l’interface utilisateur) ou d’aide au téléchargement que des outils de développement HTML (par exemple pour tester les fichiers CSS).
Linux Livre Page 86 Mardi, 23. septembre 2008 1:05 13
86
LINUX
La boîte de dialogue Outils > Modules complémentaires > Catalogue propose quelquesunes des extensions les plus populaires en téléchargement direct. Vous trouverez par ailleurs des extensions supplémentaires en cliquant sur le lien Parcourir tous les modules complémentaires, qui conduit à la page suivante : https://addons.mozilla.org/fr/firefox Pour installer des extensions, il vous suffit alors de cliquer sur le lien du fichier XPI correspondant. De nombreuses extensions ne prennent effet que lorsque vous relancez Firefox. Outils > Modules complémentaires > Extensions vous donne un aperçu de toutes les extensions déjà installées et vous permet également de les désinstaller. Ubuntu propose certaines des extensions les plus populaires dans des paquetages propres. Ceci présente l’avantage de pouvoir installer et mettre à jour ces extensions dans le cadre de la gestion des paquetages d’Ubuntu (lien Obtenir les extensions Ubuntu dans la boîte de dialogue Outils > Modules complémentaires > Catalogue). Avant l’exécution du code d’installation XPI, Firefox vous adresse un avertissement : les fichiers XPI peuvent également contenir du code malveillant. Prenez cet avertissement très au sérieux. Les risques potentiels posés par les extensions Firefox sont comparables à ceux des fichiers ActiveX de Microsoft Internet Explorer ! N’installez pas une extension si vous n’êtes pas convaincu de sa nécessité et de sa sécurité. Par défaut, Firefox autorise l’installation de fichiers XPI provenant uniquement des sites web addons.mozilla.org et update.mozilla.org. Si vous souhaitez accepter d’autres sites web ou d’autres sources de fichiers XPI, vous devrez modifier dans la boîte de dialogue Édition > Préférences > Sécurité le paramétrage correspondant à l’option Prévenir lorsque les sites essaient d’installer des modules complémentaires.
6.2
Konqueror
Le programme Konqueror, déjà présenté au chapitre relatif à KDE, est un navigateur universel. Il permet de présenter des fichiers locaux, des pages web, des répertoires FTP, des images, etc. Nous n’allons toutefois décrire ici que quelques particularités relatives à son utilisation en tant que navigateur web. Configuration
Il n’existe probablement aucun autre navigateur sur lequel vous puissiez modifier autant de paramètres de configuration. La boîte de dialogue accessible par Configuration > Configurer Konqueror présente 18 modules, chacun comprenant lui-même plusieurs pages de paramètres !
Recherche rapide
Outre les recherches web traditionnelles, que vous pouvez effectuer de la même manière que sur tout autre navigateur dans un champ de texte, vous pouvez aussi rechercher un terme directement depuis la barre d’adresse. Des raccourcis spéciaux sont définis à cet effet. Si, par exemple, vous saisissez dans la barre d’adresse gg:abc, une recherche sur le terme abc est effectuée dans http://www.google.com. Vous pouvez compléter la liste des raccourcis existants avec vos propres entrées par le biais du module de configuration Raccourcis Web.
Mots de passe
Konqueror enregistre les mots de passe et les informations de connexion dans le système de gestion des mots de passe Kwallet de KDE (voir Chapitre 5).
Linux Livre Page 87 Mardi, 23. septembre 2008 1:05 13
NAVIGATEURS INTERNET (FIREFOX, KONQUEROR)
87
Figure 6.4 Konqueror en tant que navigateur web.
Extensions
Java
Konqueror utilise en règle générale les mêmes extensions que Mozilla (mais on parle dans le cadre de Konqueror de "modules externes"). Lorsque celles-ci ne fonctionnent pas, jetez un coup d’œil au module de configuration Modules externes : vous pourrez y vérifier quelles extensions Konqueror a identifiées et configurer dans quels répertoires rechercher des extensions. Le bouton Rechercher de nouveaux modules externes vous permet d’importer dans la liste des extensions disponibles pour Konqueror celles que vous venez d’installer et qui n’y apparaissent pas encore. Lorsque Konqueror identifie certaines extensions Firefox et d’autres non, la cause probable en est que Konqueror ignore le nouveau répertoire d’extensions xulrunner. Vous devez alors ajouter (suivant votre distribution) le répertoire /usr/lib/xulrunner/plugins ou /usr/lib/ xulrunner-addons/plugins. Outre les extensions Firefox, Konqueror propose également des extensions propres, spécifiques à KDE. Parmi les fonctionnalités les plus populaires, on trouve la traduction des pages web, une fonctionnalité de rafraîchissement automatique (Auto-refresh) des pages web après un temps donné, ainsi qu’un afficheur DOM permettant de visualiser la structure HTML d’une page web. Ces extensions doivent, bien souvent, être installées séparément. Sur Fedora, elles sont par exemple regroupées dans le paquetage konq-plugins. Konqueror n’utilise pas directement l’extension Java mais fait appel à KJAS (KDE Java applet server, fichier kjavaappletviewer.so). KJAS lance lui-même l’interpréteur Java et donc le programme java. Si Konqueror rencontre des difficultés pour trouver ce fichier, vous pouvez en obtenir le chemin complet par le biais de la commande which java, puis copier le résultat de cette commande dans le module de configuration de Konqueror intitulé Java et JavaScript.
6.3
Navigateurs en mode texte
Vous vous demandez probablement quel intérêt peut avoir un navigateur web en mode texte. De fait, il n’est pas rare de travailler dans la console texte sous Linux et d’avoir besoin de consulter rapidement une page web ou une documentation HTML, ce que permettent
Linux Livre Page 88 Mardi, 23. septembre 2008 1:05 13
88
LINUX
justement les programmes elinks, lynx et w3m. Par ailleurs, vous pouvez également utiliser ces programmes pour convertir des documents HTML en texte simple. L’utilisation de ces trois programmes est similaire. Les pages de manuel ainsi que le système d’aide intégré documentent leurs nombreuses options ainsi que leurs raccourcis clavier. Pour des raisons de place, je ne présenterai donc ici à titre d’exemple que le programme le plus connu, Lynx. L’utilisation de Lynx est simple : vous lancez en général ce programme avec, en paramètre, l’URL d’un site web ou le chemin d’un fichier HTML. Lynx charge le document et présente la première page, où les titres et liens sont identifiés par des couleurs différentes. Lorsque vous lancez Lynx avec l’option -use_mouse, vous pouvez également faire appel à la souris : un clic gauche vous permet de suivre un lien, le bouton central affiche un menu contextuel, tandis que le bouton droit vous permet de revenir à la page précédente. Par défaut, Lynx utilise pour l’affichage le jeu de caractères Latin-1. Pour représenter correctement les caractères spéciaux dans une console Unicode, saisissez également l’option -display_charset=utf-8. La commande suivante vous montre comment utiliser Lynx pour convertir du HTML en texte simple :
Lynx
utilisateur$ lynx -dump source.html > cible.txt
6.4
Synthèse des plugins
Plugins (Adobe Reader, Flash, Java)
Les plugins sont des programmes d’extension permettant d’ajouter des fonctionnalités au navigateur web. Il est plutôt réjouissant de constater que Firefox et Konqueror utilisent le même système de Plugins Mozilla pour gérer ces plugins. Une fois installés, ils fonctionnent aussi bien pour l’un que pour l’autre de ces programmes. Dans la suite de ce chapitre, je supposerai toutefois que vous travaillez avec Firefox. Ces extensions ne peuvent être utilisées avec un navigateur en mode texte. Lorsque Firefox rencontre une page dont le contenu réclame un plugin non encore installé, il présente un avertissement adapté ainsi qu’un bouton d’installation. Toutefois, l’installation d’un plugin depuis Firefox et sous Linux ne fonctionne fondamentalement pas ! De nombreux plugins ne sont disponibles que pour Windows et non pour Linux. Et, même lorsqu’il existe des versions pour Linux, l’installation se fait obligatoirement manuellement, comme vous allez le voir plus en détail pour les trois plugins suivants : le lecteur de PDF Adobe Reader, Flash (Adobe/Macromedia) et Java (Sun). Un autre plugin disponible pour Linux est le lecteur audio Real Player, dont l’installation sera décrite au Chapitre 11. Il n’est pas nécessaire, pour ces plugins, de configurer le type MIME. Les fichiers du plugin contiennent tous les paramètres requis. Vous pouvez obtenir un aperçu de tous les plugins actuellement installés, ainsi que des formats de fichiers gérés par ceux-ci, lorsque vous saisissez dans la barre d’adresse de votre navigateur about:plugins avant d’appuyer sur Entrée. La boîte de dialogue Outils > Extensions complémentaires > Plugins (une nouveauté de Firefox 3) vous indique également la liste de tous les plugins. Vous pouvez y désactiver des plugins individuels mais cela n’a pas systématiquement fonctionné correctement lors de mes tests.
Linux Livre Page 89 Mardi, 23. septembre 2008 1:05 13
NAVIGATEURS INTERNET (FIREFOX, KONQUEROR)
89
Répertoires
Suivant la distribution Linux et la version de Firefox que vous utilisez, vous trouverez les fichiers de plugins dans l’un ou l’autre des emplacements suivants : • dans le répertoire /usr/lib[64]/xulrunner/plugins ; • dans le répertoire /usr/lib[64]/xulrunner-addons/plugins ; • dans le répertoire /usr/lib[64]/firefox/plugins ; • dans le répertoire /usr/lib[64]/mozilla/plugins ; • dans le répertoire ~/.mozilla/plugins ; • dans tous les répertoires que renvoie la variable d’environnement MOZ_PLUGIN_PATH. La multiplicité des répertoires possibles conduit à ce que, sur de nombreux ordinateurs, les plugins ne soient pas installés à un seul emplacement commun pour tous mais qu’ils soient dispersés sur l’ensemble du disque dur. Pour des raisons de compatibilité, xulrunner tient également compte des répertoires spécifiques de Mozilla et Firefox.
libstdc++
Certaines versions anciennes des plugins décrits ci-après nécessitent la bibliothèque libstdc++.so.5. Assurez-vous préalablement qu’un tel fichier est bien présent dans le répertoire /usr/lib ; dans le cas contraire, installez le paquetage contenant ce fichier. Sous Fedora, ce paquetage porte le nom compat-libstdc++-33, car cette bibliothèque est compatible avec le compilateur GCC 3.3.
Plugins 64 bits
Pour divers plugins commerciaux, comme Adobe Reader ou Adobe Flash, il n’existe malheureusement qu’une version compilée pour 32 bits. Pour rendre compatibles des plugins 32 bits avec la version 64 bits de Firefox, la plupart des distributions utilisent le programme nspluginwrapper : http://gwenole.beauchesne.info/projects/nspluginwrapper/
Adobe Reader Adobe Reader est un programme qui permet de consulter des documents PDF. Il existe à cet effet divers autres programmes Linux (Evince dans l’environnement Gnome, KPDF et Okular dans KDE, ghostscript, etc.), mais Adobe Reader présente plusieurs avantages : • meilleure qualité de rendu ; • fonctionnalité d’impression sophistiquée ; • confort d’utilisation ; • diverses fonctionnalités supplémentaires (saisie de formulaires PDF, possibilité de réaliser des modifications simples sur certains fichiers PDF spéciaux). Le lecteur Adobe Reader est certes disponible gratuitement sur Internet mais, pour des raisons de licence, la plupart des distributions ne sont pas en mesure d’intégrer des paquetages Adobe Reader officiels à leur produit. Pour cette raison, vous devrez dans la très grande majorité des cas télécharger directement le programme depuis le site web d’Adobe et l’installer manuellement. Installation manuelle
Vous trouverez à l’adresse suivante une version 32 bits du lecteur Adobe Reader sous la forme d’un paquetage Debian, d’un paquetage RPM ou d’une archive tar : http://www.adobe.com/products/acrobat/readstep2_allversions.html
Linux Livre Page 90 Mardi, 23. septembre 2008 1:05 13
90
LINUX
Ces trois variantes comprennent également le plugin Firefox ainsi que la prise en charge du JavaScript. Pour installer le paquetage Debian ou RPM, procédez comme à l’accoutumée avec la commande dpkg -i ou rpm -i. Pour installer l’archive TAR, exécutez dans une console la série de commandes ci-après : root# tar xzf Desktop/AdobeReader_n.n.tar.gz root# cd AdobeReader root# ./INSTALL
Utilisation en tant que plugin Firefox
Durant l’installation, confirmez le répertoire d’installation /usr/local/Adobe/Acrobatn ainsi que l’installation automatique du plugin Mozilla en appuyant sur la touche Entrée. Les commandes de lancement pour les menus Gnome et KDE sont également ajoutées lors de l’installation. Le lecteur Adobe Reader de Firefox peut être utilisé de deux manières différentes : soit en tant que plugin, soit en tant que programme externe. De nombreux utilisateurs sont habitués à la première variante car c’est le fonctionnement par défaut une fois Acrobat installé. Toutefois, à titre personnel, je préfère la seconde utilisation et utiliser les fonctionnalités d’Adobe Reader dans une fenêtre propre. Pour ouvrir les documents PDF dans une fenêtre distincte, ouvrez la boîte de dialogue Édition > Préférences > Applications et, dans le menu déroulant correspondant à l’entrée "Document PDF", choisissez Autre... et saisissez alors le chemin /usr/bin/acroread (ou, si l’option est disponible, choisissez Utiliser Adobe Reader (par défaut), qui diffère de l’option Utiliser Adobe Reader (dans Firefox), en ouvrant le document dans une fenêtre Adobe Reader propre). Adobe Reader prend en charge JavaScript. Ce langage de script peut être utilisé pour de nombreuses fonctionnalités utiles, mais il présente également un risque de sécurité potentiel et peut servir à envoyer des informations à la lecture d’un document PDF. Ceci constitue une invasion de votre vie privée. Vous pouvez consulter sur ce site (en anglais) des informations supplémentaires à ce propos : http://lwn.net/Articles/129729/ Pour désactiver JavaScript au sein d’Adobe Reader, ouvrez la boîte de dialogue Édition > Préférences > JavaScript et décochez l’option correspondante.
Adobe/Macromedia Flash
Installation
Le lecteur Adobe Flash Player (autrefois dénommé Macromedia Flash) permet de jouer des animations Flash. Ce programme est conçu comme un plugin, c’est-à-dire que les animations apparaissent directement dans le navigateur web (souvent à l’intérieur même d’une page dont les autres éléments sont statiques). Flash est, le plus souvent, utilisé pour de la publicité. Il existe toutefois des applications utiles de Flash, par exemple pour lire des vidéos, utiliser des cartes interactives, etc. De nombreux sites web (mal conçus) ne peuvent par ailleurs être consultés qu’avec Flash. Le plugin Adobe Flash est, comme Adobe Reader, disponible gratuitement, mais pour le moment uniquement en version 32 bits. Malheureusement, ses termes de licence empêchent la plupart des distributions de mettre à la disposition des utilisateurs le paquetage correspondant. SUSE et Mandriva, qui ont contracté des accords avec Adobe, sont toutefois deux exceptions à cette règle.
Linux Livre Page 91 Mardi, 23. septembre 2008 1:05 13
NAVIGATEURS INTERNET (FIREFOX, KONQUEROR)
91
Certaines distributions proposent un petit paquetage contenant un script d’installation qui se charge de télécharger et d’installer le plugin Flash dans sa version courante. Par exemple, le paquetage flashplugin-nonfree d’Ubuntu (source multiverse) joue ce rôle d’installateur de Flash. Lorsque vous souhaitez ultérieurement mettre à jour le plugin Flash, vous pouvez exécuter la commande update-flashplugin. Lorsqu’il n’existe pour votre distribution ni paquetage Flash ni script d’installation, vous devez installer vous-même Flash. La page suivante vous propose de télécharger Flash soit sous la forme d’un paquetage RPM, soit sous forme d’archive TAR : http://www.adobe.com/fr/products/flashplayer/ Sur les distributions comprenant un système de gestion des paquetages RPM, il vous suffit d’exécuter la commande rpm -i nom_du_paquetage pour installer le plugin. Sur toute autre distribution, exécutez la série de commandes présentée ci-après. Flash est alors installé dans le répertoire de plugins de votre dossier personnel. Si vous souhaitez installer Flash pour l’ensemble de votre système, vous devez exécuter le programme d’installation en tant qu’utilisateur root. utilisateur$ tar xzf Desktop/install_flash_player_9_linux.tar.gz utilisateur$ cd install_flash_player_9_linux/ utilisateur$ ./flashplayer-installer
Tester Flash
Figure 6.5 Tester Flash.
Lorsque vous voulez supprimer Flash, il vous suffit d’effacer le fichier libflashplayer.so des répertoires /usr/lib/mozilla/plugins et ~/.mozilla/plugins. Si vous utilisez la version 64 bits de Fedora 9, le plugin Flash 32 bits ne fonctionnera qu’après l’installation de quelques paquetages supplémentaires, ainsi que la déclaration explicite du plugin auprès de nspluginwrapper. Après avoir redémarré Firefox, ouvrez la page suivante pour tester votre installation : http://www.adobe.com/shockwave/welcome/
Linux Livre Page 92 Mardi, 23. septembre 2008 1:05 13
92
LINUX
Cette page de test contient deux animations (voir Figure 6.5) : la première est basée sur Shockwave for Director (ou, plus simplement, Shockwave), la seconde, sur Shockwave Flash (ou, plus simplement, Flash). Comme vous n’avez installé que le plugin Flash, seul le second élément de cette page de test fonctionne. Il n’existe malheureusement aucun plugin Shockwave pour Linux. FlashBlock
Aussi sympathiques que soient les animations Flash, leur omniprésence pour la publicité devient particulièrement pesante. C’est ici qu’intervient l’extension Firefox FlashBlock. Tous les objets Flash d’une page web apparaissent alors sous la forme de boutons "f" : l’animation se lance uniquement lorsque vous cliquez sur l’un de ces boutons (voir Figure 6.6). Vous trouverez cette extension Firefox particulièrement utile en saisissant flashblock dans le champ de recherche de la boîte de dialogue Outils > Modules complémentaires > Catalogue. Vous pourrez alors installer l’extension en cliquant sur le bouton Ajouter à Firefox... Pour que l’installation prenne effet, vous devrez relancer Firefox.
Figure 6.6 FlashBlock en pratique.
gnash et swfdec
Les composants logiciels importants qui ne sont pas distribués sous licence libre sont une épine dans le pied de la communauté open-source. Il n’est donc pas surprenant qu’il existe également des alternatives open-source à Flash, à savoir Gnu flash movie player (abrégé en gnash), ainsi que la bibliothèque swfdec. Ces deux projets comptent également un plugin pour navigateur web. Ils ne sauraient toutefois constituer un substitut à part entière du plugin Flash d’origine, dans la mesure où ils présentent encore des limitations non négligeables en termes de compatibilité et de qualité de rendu. Vous trouverez davantage d’informations sur ces deux projets aux adresses : http://www.gnu.org/software/gnash/ ; http://swfdec.freedesktop.org/wiki/
Sun Java Pour être en mesure d’utiliser des applets Java dans votre navigateur web, vous aurez besoin d’un plugin Java. Suivant votre distribution, vous aurez le choix entre, d’une part, la version d’origine de Sun (qui n’est toutefois disponible qu’en version 32 bits et ne peut collaborer avec l’outil nspluginwrapper) et, d’autre part, deux implémentations open-source fondées sur IcedTea ou OpenJDK. Bien que la qualité de ces deux solutions open-source soit devenue, avec le temps, satisfaisante et qu’OpenJDK couvre environ 99 % des fonctionnalités de Sun Java, les utilisateurs de distributions 32 bits préfèrent généralement utiliser la
Linux Livre Page 93 Mardi, 23. septembre 2008 1:05 13
NAVIGATEURS INTERNET (FIREFOX, KONQUEROR)
93
version de Sun. Pour l’utilisateur d’une distribution 64 bits souhaitant bénéficier de Java dans son navigateur web, OpenJDK est la solution à privilégier. Depuis 2006/2007, Sun a non seulement passé la majeure partie du code de Java sous licence GPL, mais également facilité de manière substantielle la redistribution de l’outil Sun Java d’origine. Certaines distributions peuvent donc proposer des paquetages Sun Java que vous pouvez installer sans difficulté avec votre gestionnaire de paquetages (par exemple openSUSE ou Ubuntu). Installation
S’il n’existe aucun paquetage Sun Java pour votre distribution, vous devrez mettre la main à la pâte. Vous trouverez sur le site web ci-après les fichiers d’installation pour les systèmes 32 et 64 bits, au choix sous la forme d’un paquetage RPM ou d’une archive auto-extractible : http://www.java.com/fr/download/manual.jsp Pour les distributions proposant un système de gestion des paquetages RPM, il vous suffit alors d’exécuter la commande rpmi -i nom_du_paquetage pour mener à bien l’installation. Sur toute autre distribution, vous devrez exécuter la série de commandes présentée ci-après : root# mkdir /usr/local/java root# cd /usr/local/java root# chmod u+x jre-6u6-linux-i586.bin root# ./jre-6u6-linux-i586.bin
Au cours de l’installation, un accord de licence vous sera présenté. Pour en interrompre l’affichage, appuyez sur la touche Q ; pour confirmer votre accord, saisissez yes puis appuyez sur la touche Entrée. L’installation se poursuit alors sans nécessiter d’intervention supplémentaire de votre part. Toutefois, le fichier de plugin Java n’est pas installé dans le répertoire de plugins Mozilla. Vous devez donc mettre en place vous-même un lien symbolique : root# cd /usr/lib/mozilla/plugins/ root# ln -s /usr/local/java/jre1.6.0_06/plugin/i386/ns7/libjavaplugin_oji.so .
Si vous avez installé Java sous la forme d’un paquetage RPM, les fichiers Java se trouvent alors dans le répertoire /usr/java. La commande ln correspondante a alors l’allure suivante : root# cd /usr/lib/mozilla/plugins/ root# ln -s /usr/java/jre1.6.0_06/plugin/i386/ns7/libjavaplugin_oji.so . Test
Pour confirmer que tout fonctionne correctement, ouvrez la page web suivante dans votre navigateur. Une applet avec le petit bonhomme dansant doit normalement apparaître. Cette applet vous renseigne également sur la version de Java installée (voir Figure 6.7). http://www.java.com/fr/download/help/testvm.xml Il est possible d’installer en parallèle plusieurs environnements Java. Il ne doit toutefois y avoir qu’un seul plugin Java pour votre navigateur web ! Si vous installez Sun Java mais que vous souhaitiez conserver un environnement Java open-source existant, vous devrez alors désinstaller le paquetage de plugin correspondant (par exemple sur Fedora, java-1.6.0-openjdk-plugin ).
Linux Livre Page 94 Mardi, 23. septembre 2008 1:05 13
94 Figure 6.7 Page de test pour le plugin Java.
LINUX
Linux Livre Page 95 Mardi, 23. septembre 2008 1:05 13
E-mail (Thunderbird, Evolution, Kontact)
7
E-mail en mode texte
Serveur de courrier électronique
Outils pour le courrier électronique
Ce chapitre présente l’utilisation des trois clients de courrier électronique les plus populaires sous Linux : • Thunderbird est déjà bien connu de nombreux utilisateurs provenant du monde Windows. Il s’agit du composant e-mail correspondant à Firefox. Le client e-mail possède une présentation fonctionnelle et n’est pas surchargé de fonctionnalités accessoires. • Evolution est le client e-mail par défaut de l’environnement de bureau Gnome. Ce programme a été conçu, dès le début, comme une alternative à Outlook. Par conséquent, il présente de nombreuses fonctionnalités auxiliaires : outre les e-mails, il vous permet également de gérer vos rendez-vous et votre carnet d’adresses, de synchroniser ces données avec un PDA, etc. Evolution peut également être utilisé avec un serveur Microsoft Exchange ou avec Groupwise. • Kontact est l’homologue d’Evolution pour KDE. Kontact propose une interface unifiée pour plusieurs composants individuels de KDE permettant de gérer les e-mails, le carnet d’adresses, les rendez-vous, etc. Si vous recherchez uniquement une fonctionnalité de courrier électronique, utilisez KMail plutôt que Kontact. De nombreux afficionados de Linux et d’Unix préfèrent lire et composer leurs e-mails dans une console. À cet effet, on dispose d’un large éventail de programmes, par exemple cone, mutt et pine. Les amateurs d’Emacs n’ont pas besoin de quitter leur éditeur favori, grâce au mode e-mail qu’il propose. Pour qui souhaite automatiser l’envoi de courriers par le biais d’un script, un coup d’œil à la commande mail devrait se révéler profitable. Dans ce chapitre, je ne décrirai toutefois que les trois clients graphiques déjà cités et présenterai très rapidement l’utilisation de mutt. Un autre sujet que nous ne pourrons aborder dans ce livre faute de place est la mise en place de votre propre serveur de courrier. Il existe pour cela aussi toute une palette de programmes, par exemple sendmail, postfix, qmail ou encore exim. Dans la nomenclature Unix, on parle pour ce type d’outil de MTA (Mail Transfer Agent), tandis que l’on désigne les clients e-mails comme Thunderbird par le terme de MUA (Mail User Agent). Entre les MUA et MTA, de nombreux outils peuvent intervenir dans la chaîne de transmission du courrier, pour filtrer les spam ou les virus (bogofilter, spamassassin), traiter automatiquement les e-mails ou automatiser les réponses (procmail), récupérer les courriers depuis un serveur POP par le biais d’une commande (fetchmail), etc. Toutefois, je ne peux ici que mentionner ces quelques commandes sans les détailler, sous peine de transformer ce chapitre en un livre à lui seul.
7.1
Bases
Du point de vue de l’utilisateur, il est trivial d’envoyer et de recevoir des e-mails. C’est toutefois loin d’être le cas de tous les mécanismes intervenant en coulisse. Cette section vise
Linux Livre Page 96 Mardi, 23. septembre 2008 1:05 13
96
Compte
LINUX
donc à fournir quelques informations de base sur le fonctionnement du courrier électronique. Si vous êtes uniquement à la recherche d’un client e-mail facile à utiliser, vous pouvez tout simplement sauter cette section. Lorsque votre fournisseur d’accès Internet ou votre société vous met à disposition une adresse e-mail, on désigne également ce service par le terme de compte. Comme il est courant aujourd’hui, pour un utilisateur, de posséder plusieurs adresses électroniques, la majorité des clients de courrier peut gérer plusieurs comptes à la fois. Pour pouvoir lire des e-mails depuis votre compte et en envoyer, votre fournisseur de services vous met à disposition un certain nombre d’informations qui sont généralement comparables à celles du tableau ci-dessous. Informations relatives au compte e-mail illustrées par des exemples Adresse e-mail Adresse du serveur entrant (POP ou IMAP) Nom d’utilisateur/Identifiant de connexion à la boîte aux lettres Mot de passe pour la boîte aux lettres Adresse du serveur sortant (SMTP) Nom d’utilisateur/Identifiant de connexion au serveur SMTP Mot de passe pour le serveur SMTP
Lignes d’entête
[email protected] ou
[email protected] imap.societe.fr ou pop.fai.fr chofer ou 12345678 xxxxxxxx smtp.societe.fr ou mail.fai.fr chofer ou 12345678 xxxxxxxx
Bien souvent, on utilise l’adresse e-mail en guise d’identifiant de connexion à la boîte aux lettres. Dans de nombreux cas, l’identifiant de connexion au serveur SMTP et le mot de passe sont les mêmes que ceux de la boîte aux lettres. Il n’est pas rare non plus qu’aucune authentification ne soit nécessaire au niveau du serveur SMTP ou que l’authentification auprès du serveur de courrier entrant suffise pour se connecter au serveur sortant. Les comptes e-mails conçus pour être lus dans un navigateur web (webmail) requièrent souvent de modifier préalablement certaines options de sécurité pour permettre une utilisation en mode POP ou IMAP. Au début de chaque e-mail figurent un certain nombre de lignes d’en-tête comprenant les adresses de l’émetteur et du destinataire, l’objet, ainsi que diverses autres informations. Lignes d’en-tête d’un e-mail Subject: objet From: adresse To: adresse Reply-To: adresse CC: adresse Bcc: adresse
description succincte du contenu (une ligne) adresse e-mail de l’expéditeur adresse e-mail du destinataire en cas de réponse, envoyer l’e-mail non pas à l’adresse From: mais à l’adresse fournie ici envoyer une copie de l’e-mail à l’adresse Cc: (carbon copy) similaire à Cc:, mais les destinataires To: et Cc: du courrier ne peuvent voir les destinataires Bcc: (blind carbon copy)
Linux Livre Page 97 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
MIME
97
La notion de MIME (Multipurpose Internet Mail Extensions) est utilisée de deux manières différentes au niveau des clients de courrier. D’une part, une configuration appropriée des types MIME permet au client e-mail de gérer correctement les pièces jointes et, par exemple, de bien ouvrir un fichier MP3 envoyé par e-mail avec un lecteur de MP3. Nous donnerons plus d’informations sur la configuration des types MIME au chapitre 13. D’autre part, MIME peut également intervenir au niveau du codage du texte de l’e-mail. À l’origine, le système de courrier électronique n’a été conçu que pour les caractères ASCII codés sur 7 bits. Les courriers comprenant des caractères spéciaux (et tout caractère dont le code est supérieur à 127) présentent donc des difficultés. Pour contourner ces problèmes, différents types MIME ont été définis pour l’encodage des e-mails.
Signature
Très souvent, vous devrez conclure tous vos e-mails de la même manière, à savoir une ou plusieurs lignes contenant le nom de votre société, une adresse, etc. Pour ne pas avoir à saisir systématiquement les mêmes lignes à chaque nouveau courrier, vous pouvez définir dans la plupart des clients de courrier électronique ce que l’on appelle une signature. Les clients utilisent automatiquement à cet effet le fichier ~/.signature.
Protocoles
Les trois abréviations POP, SMTP et IMAP désignent différents protocoles de transport des e-mails entre votre ordinateur et le fournisseur de services gérant votre courrier : • POP. Pour le transport des e-mails depuis le serveur jusqu’à votre ordinateur, c’est généralement le protocole POP (Post Office Protocol) qui est utilisé. Pour que le client de courrier puisse communiquer avec le prestataire, il a besoin de trois informations : l’adresse du serveur POP, le nom d’utilisateur et le mot de passe du compte sur le serveur POP. • IMAP. Le protocole IMAP (Internet Message Access Protocol) constitue une alternative à POP. La différence principale avec POP réside dans le fait que les courriers sont généralement stockés sur le serveur IMAP. Le client de courrier électronique ne sert alors dans ce cas qu’à communiquer avec le serveur. IMAP est une solution optimale lorsque vous souhaitez pouvoir gérer votre courrier depuis différents ordinateurs sans pour autant devoir subir les inconvénients d’un système par webmail. IMAP est principalement utilisé dans les grandes entreprises. En revanche, assez peu de prestataires d’e-mails proposent des services IMAP. En effet, l’IMAP impose des exigences assez fortes au niveau des ressources. Tous les clients présentés dans ce chapitre prennent en charge l’IMAP mais, faute de prestataire proposant ce protocole, je n’ai pas pu le tester moi-même. • SMTP. Enfin, pour l’envoi des e-mails, c’est le protocole SMTP (Simple Mail Transfer Protocol) qui intervient. Pour communiquer avec le serveur SMTP du prestataire, le client de courrier n’a besoin que de l’adresse de ce serveur. C’est le prestataire qui définit si l’authentification sur ce serveur est obligatoire ou non. Avec certains fournisseurs, une authentification POP préalablement réussie suffit pour accéder automatiquement au serveur SMTP. D’autres fournisseurs exigent une authentification SMTP distincte. Lors de la configuration de votre compte, vous pouvez pour de nombreux clients e-mails configurer le numéro de port associé à POP, IMAP et SMTP. Ce n’est toutefois que rarement nécessaire car ce sont généralement les valeurs standard qui sont utilisées (POP = 110, IMAP = 143, SMTP = 25). Vous trouverez au chapitre 29 une explication sur les ports et leur utilisation.
Linux Livre Page 98 Mardi, 23. septembre 2008 1:05 13
98
LINUX
Rouages internes de la gestion des e-mails Il existe différentes manières de gérer vos e-mails : • Logiciel autonome local. C’est le cas le plus courant, qui consiste à gérer vos e-mails sur votre ordinateur local à l’aide d’un client de courrier (MUA) comme Thunderbird. Ce logiciel s’occupe de tous les aspects de la gestion des e-mails, depuis la réception jusqu’à l’émission en passant par la rédaction ou le stockage. C’est ainsi que fonctionnent les trois clients présentés dans ce chapitre. • Partage local des tâches. Cette seconde variante correspond à la méthodologie Unix usuelle, qui consiste à répartir des tâches individuelles entre différents programmes : dans ce cas, vous utilisez un serveur d’e-mail local (MTA) pour l’envoi des courriers, fetchmail pour la récupération de nouveaux e-mails sur le serveur POP de votre fournisseur et, enfin, un client de courrier de votre choix qui fait appel à ces deux autres outils. Cette conception était autrefois très répandue sous Unix/Linux mais elle se fait maintenant de plus en plus rare à cause du surcroît de travail de configuration qu’elle occasionne. Elle est toutefois obligatoire lorsque vous utilisez des clients de courrier en mode texte. Ces programmes ne sont en effet pas en mesure de récupérer ou d’envoyer des e-mails par eux-mêmes. • Webmail. Une dernière alternative consiste aussi à utiliser l’un des nombreux systèmes de webmail à votre disposition (par exemple Yahoo!, Gmail, etc.). Pour cela, vous avez besoin non pas d’un logiciel dédié au traitement du courrier mais uniquement d’un navigateur web. Dans ce cas, ce chapitre ne vous est d’aucune utilité.
Courrier local Traditionnellement, Unix et Linux utilisent les e-mails comme un moyen de communication locale. De nombreux services réseau consignent ainsi les erreurs survenues non seulement dans un fichier journal mais également par envoi d’e-mails à l’utilisateur root. Du fait que de nombreux utilisateurs de Linux ne remarquent jamais l’existence de tels e-mails, le courrier local devient de plus en plus passé de mode. De nombreuses distributions utilisent toutefois encore ce système pour émettre divers avertissements (par exemple Red Hat et Fedora). Pour être en mesure de lire ces e-mails, vous devez connaître le mécanisme qui les sous-tend. L’émission de courrier local intervient entièrement indépendamment de votre client de courrier et fonctionne uniquement parce que, sur de nombreuses distributions Linux, un logiciel d’envoi d’e-mails (ou, a minima, d’émission locale) tel que sendmail est installé par défaut. Inbox
"Émission locale" signifie que le courrier est ajouté à la fin du fichier /var/spool/mail/ nom_d_utilisateur. Ce fichier, au format mbox, contient pour chaque utilisateur tous les nouveaux courriers (c’est-à-dire tous ceux qui n’ont pas encore été consultés). On désigne donc plus simplement ce fichier par l’appellation Inbox. Par ailleurs, le logiciel fetchmail mentionné ci-dessus ajoute à cet Inbox les courriers récupérés depuis un serveur POP externe.
Lire des courriers locaux
Le risque que vous ne soyez jamais amené à voir ces e-mails est grand, et ce pour deux raisons : tout d’abord, la majorité des clients de courrier graphiques ignorent /var/spool/ mail/nom_d_utilisateur ; par ailleurs, les e-mails système sont majoritairement adressés à l’utilisateur root, tandis que vous travaillez généralement en tant qu’utilisateur normal.
Linux Livre Page 99 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
99
La solution au premier problème consiste à utiliser, pour lire le courrier local, un programme qui prend en considération /var/spool/mail/nom_d_utilisateur. C’est le cas, entre autres, de tous les logiciels de courrier en mode texte (par exemple cone, mail, mutt et pine). Pour contourner le second obstacle, vous avez le choix entre deux méthodes : soit vous vous identifiez en tant qu’utilisateur root (su -l ou sudo -s) avant de lancer un logiciel de courrier en mode texte, soit vous ajoutez au fichier /etc/aliases une ligne redirigeant tous les e-mails adressés à root vers votre propre boîte aux lettres locale. mutt
Pour lire les e-mails locaux, vous disposez du client en mode texte mutt, installé par défaut sur Red Hat et Fedora et disponible pour l’ensemble des autres distributions. Dans une console, commencez par exécuter la commande su -l pour vous identifier en tant qu’utilisateur root, puis lancez le programme avec la commande mutt. Les titres de tous les e-mails apparaissent alors sur la page principale : à l’aide des flèches du clavier, vous pouvez vous déplacer dans la boîte aux lettres. La touche Entrée affiche le texte complet de l’e-mail sélectionné. La touche Espace vous permet de parcourir le contenu du courrier. La touche J vous permet de passer à l’e-mail suivant, tandis que la touche I vous ramène à la boîte aux lettres. La touche ? affiche un texte d’aide présentant les principaux raccourcis clavier. La touche Q permet de quitter le programme.
/etc/aliases
Il est naturellement bien plus élégant de rediriger tous les e-mails adressés à l’utilisateur root vers la boîte aux lettres de l’utilisateur normalement responsable de l’administration de la machine. Lorsque sendmail est installé comme MTA, il vous suffit pour cela d’ajouter à la fin du fichier /etc/aliases une ligne construite sur le modèle suivant. À l’avenir, l’utilisateur kofler recevra tous les e-mails adressés à root. # à la fin de /etc/aliases ... root:
kofler
Cette modification prendra effet seulement après que vous aurez exécuté la commande newaliases. Pour lire les e-mails, vous pouvez maintenant vous passer de la commande su -l ; vous devrez en revanche toujours faire appel à un programme capable de lire la boîte aux lettres locale. Outre les outils en mode texte tels que mutt, Evolution et Kontact entrent également dans cette catégorie (cela nécessite toutefois de configurer un compte supplémentaire en conséquence). Malheureusement, ce n’est plus le cas de Thunderbird depuis sa version 2.
Formats de boîtes aux lettres et conversion Format mbox
Tous les logiciels de courrier offrent la possibilité d’enregistrer les courriers que vous avez reçus et envoyés dans des répertoires de votre ordinateur. C’est ici qu’intervient fréquemment le format mbox : tous les e-mails d’un répertoire (dossier) sont simplement concaténés dans un fichier unique qui peut devenir très volumineux. Les lignes commençant par From marquent la séparation entre deux e-mails.
Linux Livre Page 100 Mardi, 23. septembre 2008 1:05 13
100
Format maildir
Autres formats
LINUX
Si vous avez installé le programme mutt, vous pourrez obtenir avec la commande man mbox davantage d’informations sur ce format. Il est également documenté sur Internet, par exemple à la page : http://www.qmail.org/qmail-manual-html/man5/mbox.html La plupart des clients e-mails génèrent, outre les fichiers mbox, des fichiers supplémentaires de gestion indexant les fichiers de boîtes aux lettres. Ces fichiers permettent un accès plus rapide aux e-mails individuels, mais ils sont incompatibles d’un client à l’autre. La prise en charge (quand elle existe) des hiérarchies de répertoires de courrier et sa mise en œuvre dépendent également du client de courrier. Il n’existe pas de standard commun sur ce point. Le format mbox facilite le passage d’un client e-mails à un autre. En règle générale, il vous suffit pour cela de copier les fichiers mbox (sans les fichiers de gestion) dans le répertoire où le nouveau client e-mail s’attend à les trouver. Outre le format mbox, de nombreux clients e-mails (par exemple Kontact/KMail) prennent également en charge le format maildir. Avec ce format, chaque e-mail est enregistré dans un fichier propre. Une boîte aux lettres est donc alors constituée de tous les fichiers d’un même répertoire. L’avantage évident de ce format est qu’il permet d’effacer plus facilement des courriers individuels. Sous Windows, il n’est naturellement pas question de trouver un standard commun pour la sauvegarde des e-mails. Il existe certes quelques programmes Windows utilisant le format mbox, mais une majorité d’entre eux reposent sur leur propre format d’enregistrement. Si vous souhaitez importer vos e-mails depuis un ordinateur Windows vers un système Linux, vous devrez les convertir au format mbox. Par chance, plusieurs clients de courrier disposent d’outils d’aide à la conversion justement pour ces cas de figure (c’est par exemple le cas de Thunderbird et de Kontact). En outre, il existe divers programmes de conversion spécialisés (il vous suffit par exemple de rechercher sur Internet les termes mbox conversion outlook eudora). En règle générale, il est judicieux, avant de lancer une quelconque conversion, de compresser les répertoires de courrier. Tous les e-mails effacés seront alors effectivement supprimés des fichiers de boîte aux lettres. Pour un utilisateur d’Outlook Express sous Windows souhaitant passer à Thunderbird sous Linux, il faut passer par une étape intermédiaire et installer tout d’abord la version Windows de Thunderbird. De cette manière, les e-mails peuvent être importés depuis Outlook Express. Il suffit ensuite de copier le répertoire de courrier résultant vers Linux.
Signature et chiffrement d’e-mails Si le courrier électronique est bien plus rapide que le système postal usuel, sa sécurité est en revanche beaucoup plus relative : pour toute personne ayant quelques connaissances techniques, il n’est pas difficile d’émettre des e-mails en falsifiant l’adresse de l’expéditeur, de lire ou même de modifier les courriers que vous adressez à d’autres personnes. Pour cette raison, vous ne devriez jamais envoyer de données personnelles importantes (par exemple un numéro de carte bancaire) dans un e-mail qui n’est pas chiffré. La signature et le chiffrement permettent de sécuriser notablement vos communications électroniques. Tous les clients de courrier que nous présentons dans ce livre sont en mesure
Linux Livre Page 101 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
Clé Clé publique et clé privée
Signer
Chiffrement
101
de signer et de chiffrer les e-mails et peuvent naturellement aussi gérer la réception des e-mails signés et chiffrés. Malgré les avantages indéniables que représentent la signature et le chiffrement des e-mails, en pratique vous ne rencontrerez que rarement de tels courriers. La perte de confort occasionnée, la gestion relativement complexe du chiffrement ainsi que l’incompatibilité entre les deux standards utilisés (PGP et S/MIME) constituent des obstacles notoires au développement de ces pratiques. Pour la signature et le chiffrement, on utilise une clé. Une clé électronique est tout simplement un code numérique très long. Pour la signature et le chiffrement des e-mails, on procède de manière dite asymétrique. Chaque clé est donc constituée de deux parties : d’une part la clé privée, qui n’est normalement enregistrée que sur le disque dur de son propriétaire, d’autre part la clé publique, qui est par exemple publiée sur Internet. La particularité de ce fonctionnement asymétrique réside dans le fait qu’une partie de la clé est utilisée pour la signature ou le chiffrement, tandis que l’autre partie de la clé sert à contrôler la signature ou à déchiffrer. Signer un e-mail signifie qu’une somme de contrôle est calculée avant l’envoi du courrier. Cette somme de contrôle est chiffrée et, à partir de celle-ci, le destinataire peut vérifier que l’e-mail provient effectivement de l’expéditeur annoncé et qu’il n’a pas été manipulé depuis son envoi. Lorsque vous signez un e-mail, votre client de courrier utilise votre clé privée. Pour le contrôle de la signature, la clé publique est toutefois suffisante. Cela signifie que vous seul pouvez signer vos e-mails (car vous êtes l’unique propriétaire de votre clé privée). N’importe qui peut en revanche contrôler l’authenticité des e-mails que vous avez signés, car n’importe qui peut accéder à votre clé publique sur Internet. N’importe qui peut lire les e-mails que vous avez signés, même si le destinataire de votre e-mail ne connaît pas votre clé publique ou s’il utilise un client de courrier sans fonctionnalité de signature (par exemple une interface webmail). Dans de tels cas, le code de signature figure en fin du courrier. Ce code n’empêche pas la lecture du contenu effectif de l’e-mail. Un destinataire ne pouvant pas gérer les signatures ne peut toutefois vérifier que vous êtes bien l’auteur de l’e-mail. Le chiffrement d’un e-mail signifie que le courrier est envoyé non pas en texte clair mais sous forme chiffrée. Personne ne peut lire le contenu de ce courrier à moins de connaître la clé permettant de le déchiffrer. Pour le chiffrement, on utilise la clé publique du destinataire du courrier. Par conséquent, si vous souhaitez envoyer un e-mail à Alice, vous devez préalablement connaître la clé publique d’Alice. Le courrier ainsi chiffré ne peut alors être déchiffré qu’à l’aide de la clé privée du destinataire. Alice étant le seul détenteur de cette clé privée, elle est la seule à pouvoir le lire : même si vous êtes l’auteur du message, vous ne pouvez plus le lire ! Votre e-mail chiffré ne peut être lu que par son destinataire, qui possède la partie privée de la clé dont la partie publique a servi au chiffrement. Lorsque le destinataire perd ou efface accidentellement sa clé privée ou lorsqu’il utilise un client de courrier sans fonctionnalités de chiffrement, il ne voit apparaître qu’une longue liste de chiffres et de codes. Le courrier n’a donc aucun sens.
Linux Livre Page 102 Mardi, 23. septembre 2008 1:05 13
102 PGP et S/MIME
LINUX
Il serait bien trop simple de n’avoir qu’une seule méthode pour la signature, le chiffrement et la gestion des clés ! Il existe deux méthodes établies, aussi sûres l’une que l’autre : • PGP, GPG, OpenPGP. À l’origine se trouvait le projet logiciel PGP (Pretty Good Privacy). PGP étant devenu un produit commercial, la communauté open-source a lancé sa propre implémentation compatible avec PGP, GPG (GNU Privacy Guard). Enfin, OpenPGP est un standard Internet public correspondant aussi bien à PGP qu’à GPG. Par défaut, PGP ne permet de signer ou de chiffrer que le courrier lui-même. Si vous souhaitez également signer ou chiffrer les pièces jointes, vous devez utiliser sa variante PGP/MIME. L’aspect le plus remarquable de PGP, d’un point de vue utilisateur, est probablement la facilité avec laquelle il permet de générer soi-même les clés. Pour cette raison, PGP est adapté pour l’utilisation aussi bien dans de grandes entreprises que dans des PME. Même au sein du monde Linux et open-source, PGP domine le marché. Gnome aussi bien que KDE proposent des outils arrivés à maturité technique pour la gestion des clés. Malheureusement, de nombreux clients de courrier sous Windows ne prennent pas en charge PGP ou, pour certains, seulement après l’installation de greffons ou d’extensions. • S/MIME. S/MIME (Secure Multipurpose Internet Mail Extension) se fonde sur d’autres algorithmes de chiffrement. En guise de clé S/MIME, on doit utiliser ce que l’on désigne par le terme de certificat X.509. Des documents signés ou chiffrés par S/MIME ont, vis-à-vis de certaines organisations publiques, la même valeur qu’un document papier signé. Ceci vaut toutefois uniquement lorsque le certificat X.509 utilisé a été émis par une autorité de confiance autorisée (CA ou Certificate Authority) après contrôle de données d’identification personnelles (par exemple le passeport). De tels certificats sont par conséquent très coûteux, du fait de l’important travail administratif requis, mais ils sont beaucoup plus fiables que les certificats créés manuellement. S/MIME est très répandu dans le monde Windows et il est également pris en charge par les trois clients de courrier présentés dans ce chapitre (même s’il est en partie moins bien géré que PGP). L’obstacle principal pour les utilisateurs privés réside probablement dans la difficulté à générer sa propre clé S/MIME. Malheureusement, ces deux modes de fonctionnement sont incompatibles entre eux. Un courrier chiffré par PGP ne peut être lu au moyen de S/MIME, et vice versa. Il existe certes des clients de courrier qui gèrent les deux mécanismes de chiffrement, mais dans ce cas vous aurez besoin d’une clé différente pour chaque mécanisme. De surcroît, un courrier ne peut être chiffré que par une seule méthode, pas les deux à la fois. Pour faire simple et court : en l’état actuel, PGP offre tout le nécessaire pour communiquer de façon sûre et sans surcoût. L’avantage de S/MIME est la valeur juridique que confère l’utilisation des certificats X.509 qualifiés.
Gestion des clés
La plupart des clients de courrier peuvent gérer eux-mêmes les clés nécessaires à l’envoi et à la réception de courrier, voire générer au besoin une nouvelle clé. Toutefois, comme les clés peuvent également servir dans d’autres contextes, il est pratique de séparer la gestion des clés du client de courrier. À cet effet, Gnome propose le programme Seahorse, tandis que KDE propose KGpg et Kleopatra (pour S/MIME). La tâche principale en terme de gestion des clés consiste à rassembler les clés publiques de tous vos interlocuteurs au sein d’un "porte-clés". À l’import d’une nouvelle clé, vous devez
Linux Livre Page 103 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
103
la "signer". Cela signifie que vous êtes convaincu que la clé importée provient effectivement de la bonne personne. Si vous travaillez avec des clés PGP, vous trouverez tous les fichiers de gestion dans le répertoire ~/.gnupg.
7.2
Thunderbird
Le client de courrier Thunderbird émane, comme Firefox, du projet Mozilla. Même s’il est intégré à la quasi-totalité des distributions, il n’est que rarement installé. En effet, aussi bien Gnome que KDE possèdent leur propre programme qu’ils établissent comme client de courrier par défaut (voir les deux sections suivantes). Personnellement, je préfère Thunderbird pour diverses raisons : • Thunderbird est un client de courrier épuré. Cela rend son utilisation plus claire. • Le programme est également disponible pour Windows et convient donc aux utilisateurs souhaitant gérer leur archive de courrier dans un format compatible Windows. • Le filtre antispam fonctionne bien et est facile à utiliser. Cette section présente la version 2.0 de Thunderbird. Installation
Sur de nombreuses distributions, Thunderbird est partagé en plusieurs paquets. L’un d’eux contient les fonctionnalités de base, tandis que les autres paquets contiennent les textes des menus et boîtes de dialogue dans différentes langues. N’oubliez donc pas d’installer aussi le paquetage francophone ! Dans Gnome et KDE, vous devrez ensuite établir Thunderbird en tant que client de courrier par défaut (voir les chapitres 4 et 5 sur les environnements de bureau).
Configuration d’un compte Au premier lancement de Thunderbird, l’assistant de création de compte apparaît automatiquement pour vous aider dans la configuration. Vous pouvez également lancer l’assistant, au besoin, par le biais des menus Éditions > Paramètres des comptes puis du bouton Ajouter un compte. Dans l’assistant, commencez par choisir le type Compte courrier électronique et renseignez votre nom ainsi que votre adresse e-mail. Dans la boîte de dialogue suivante, choisissez entre les protocoles POP et IMAP pour la récupération du courrier depuis votre boîte aux lettres. Renseignez également l’adresse du serveur POP ou IMAP correspondant (boîte aux lettres pour le courrier entrant) ainsi que le serveur SMTP (courrier sortant). À la boîte de dialogue suivante, l’assistant s’attend à recevoir les identifiants à employer pour la récupération des e-mails entrants et pour l’envoi des courriers. Bien souvent, ces deux noms d’utilisateur sont identiques ; il est également possible qu’aucun identifiant ne soit demandé pour l’envoi des courriers. À ce stade, vous ne pouvez pas encore fournir de mot de passe : Thunderbird vous le demandera à la première tentative de récupération ou d’envoi d’un e-mail. Enfin, vous devez donner au compte un nom : c’est sous ce nom que le compte apparaîtra dans Thunderbird. Le nom facilite l’orientation lorsque vous possédez plusieurs comptes de courrier. Thunderbird affiche enfin une synthèse de la configuration : normalement, aucune
Linux Livre Page 104 Mardi, 23. septembre 2008 1:05 13
104
LINUX
modification supplémentaire n’est nécessaire et vous pouvez donc conclure le processus de configuration par le biais du bouton Terminer. Au besoin, vous pouvez configurer de nombreuses options supplémentaires par le biais des menus Édition > Paramètres des comptes (voir Figure 7.1). Lors des premiers tests, il est intéressant de profiter de l’option Paramètres serveur > Laisser les messages sur le serveur : de cette manière, Thunderbird n’efface pas les courriers sur le serveur après les avoir récupérés. Si vous souhaitez ultérieurement changer de client de courrier, vous pourrez à nouveau télécharger ces e-mails.
Figure 7.1 Configuration d’un compte dans Thunderbird.
Fonctionnalités de base
Lire des e-mails
Une fois la configuration terminée apparaît la fenêtre de courrier Thunderbird. Lorsque vous cliquez pour la première fois sur le bouton Relever ou que vous utilisez la combinaison de touches Maj+Alt+T pour récupérer vos nouveaux e-mails, vous devrez fournir le mot de passe de votre boîte aux lettres. Thunderbird enregistre votre mot de passe, après un avertissement de sécurité, dans un fichier de configuration. Tout comme pour Firefox, il est fortement conseillé de protéger les mots de passe par le biais d’un mot de passe principal que vous pourrez configurer en passant par les menus Édition > Préférences > Confidentialité > Mots de passe. Les nouveaux e-mails sont déposés dans le dossier Courrier entrant (voir Figure 7.2). D’un double-clic sur l’un des éléments de la liste affichée, vous ouvrez une nouvelle fenêtre pour consulter l’e-mail correspondant. Ceci vous permet de lire plus confortablement les e-mails plus volumineux. Les fichiers et images contenus dans les e-mails HTML ne sont pas chargés, par sécurité : au besoin, utilisez le bouton Télécharger les images.
Linux Livre Page 105 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
105
Figure 7.2 Gestion des e-mails.
Afficher les fils de discussion
Lorsque plusieurs courriers provenant de la même discussion (par exemple le courrier d’origine ainsi que diverses réponses et réactions d’autres personnes) figurent dans un même dossier, il est possible de les afficher suivant une structure arborescente par le biais des menus Affichage > Trier par > Discussions groupées. Le flux de courriers est ainsi affiché de manière plus synthétique (et l’on voit donc plus facilement qui a répondu à quel courrier et à quelle date).
Pièces jointes
Souvent, les e-mails contiennent des pièces jointes, c’est-à-dire des fichiers distincts du courrier à proprement parler. Ils sont indiqués dans la liste des e-mails par un petit trombone. Dans le courrier, vous pouvez ouvrir les pièces jointes par un double-clic ou faire appel au menu contextuel pour enregistrer les fichiers localement, les supprimer de l’e-mail ou encore les détacher. "Détacher" signifie ici que le fichier est d’abord enregistré en local puis effacé du message. C’est donc une solution pratique lorsque vous ne souhaitez conserver que le texte d’un e-mail mais pas les pièces jointes, parfois extrêmement volumineuses. Thunderbird sait, grâce à la configuration MIME, quel programme il doit utiliser pour ouvrir un fichier d’un type donné. MIME est l’acronyme de Multipurpose Internet Mail Extensions. Thunderbird tient compte des paramètres MIME généraux de Linux (voir le Chapitre 13 sur ce point) ainsi que des paramètres qui lui sont propres, enregistrés dans le fichier XML ~/.thunderbird/xxxxxxxx.default/mimeTypes.rdf. Il n’est toutefois pas possible d’ajouter de nouveaux types de données à Thunderbird. Lorsque celui-ci ne reconnaît pas un type de fichier, vous devez enregistrer la pièce jointe en tant que fichier puis ouvrir celuici par le biais du gestionnaire de fichiers de votre environnement de bureau.
Rédiger un e-mail
Dans la fenêtre de rédaction d’un e-mail, vous trouverez un grand nombre de boutons de mise en forme et d’insertion d’objets divers. Les menus Insérer et Format proposent encore davantage de possibilités. Attention, toutefois, à un point : les e-mails construits de cette manière sont envoyés au format HTML. De nombreux utilisateurs refusent tout simplement de tels e-mails ou considèrent qu’ils présentent un risque de sécurité. Thunderbird
Linux Livre Page 106 Mardi, 23. septembre 2008 1:05 13
106
LINUX
demande par conséquent à l’envoi (Ctrl+Entrée) si vous souhaitez envoyer le courrier au format texte, HTML ou dans les deux formats. Si vous envisagez de rédiger un e-mail en texte simple uniquement, choisissez Options > Format > Texte seulement dans la fenêtre Écrire ou appuyez sur la touche Maj lorsque vous cliquez sur le bouton Écrire ou Répondre. Si, comme beaucoup d’utilisateurs avancés, vous souhaitez rédiger vos courriers uniquement au format texte simple, vous pouvez désactiver entièrement les fonctionnalités de rédaction au format HTML : pour cela, ouvrez la boîte de dialogue de configuration Édition > Paramètres des comptes > Rédaction et adressage et décochez l’option Rédiger les messages en HTML. Au premier envoi de courrier, Thunderbird vous demande de fournir le mot de passe pour le serveur SMTP devant gérer les courriers sortants. Si le serveur sortant de votre société ou de votre fournisseur d’accès ne nécessite aucune authentification, ouvrez la fenêtre Édition > Paramètres des comptes > Serveur sortant (SMTP), cliquez sur le bouton Modifier pour ouvrir une boîte de dialogue de configuration et désactivez-y l’option Utiliser un nom d’utilisateur et un mot de passe. Vous répondez à un e-mail soit avec la combinaison de touches Ctrl+R (répondre à l’auteur), soit avec Ctrl+Maj+R (répondre à tous). Pour répondre à des e-mails au format texte, vous devrez parfois faire appel au menu Édition > Reformater pour reformater le texte et le rendre plus facile à lire. Rechercher des e-mails, dossiers virtuels
Dans le champ de recherche figurant à droite de la barre d’outils courrier, vous pouvez saisir un mot-clé qui sera recherché soit dans l’adresse de l’expéditeur, soit dans le sujet, soit dans le contenu du courrier. Thunderbird affiche alors uniquement les e-mails répondant à ce critère. Le menu Édition > Chercher > Rechercher... (ou, plus rapidement, Ctrl+F) offre des possibilités de recherche supplémentaires. En particulier, vous pouvez par ce biais effectuer une recherche simultanée dans plusieurs dossiers. Vous pouvez enregistrer vos paramètres de recherche en tant que "dossiers virtuels" : les dossiers virtuels se présentent de la même façon que les dossiers de courrier habituels, mais ils contiennent des résultats de recherche. Vous pouvez par exemple définir un nouveau dossier virtuel pour les courriers répondant au critère "statut n’est pas lu". Ce dossier présentera alors l’ensemble des e-mails non encore lus, indépendamment du dossier dans lequel ces courriers sont effectivement enregistrés.
Carnet d’adresses
Dans la fenêtre de carnet d’adresses, vous pouvez gérer différentes listes d’adresses. Par défaut, deux listes sont prévues : Adresses personnelles et Adresses collectées. À la création d’un nouveau courrier, Thunderbird enregistre automatiquement l’adresse utilisée dans les Adresses personnelles. Si vous ne voulez pas de ce fonctionnement ou si les adresses en question doivent être enregistrées dans une autre liste, vous trouverez les paramètres correspondants dans la boîte de dialogue Édition > Préférences > Rédaction > Adressage. Vous pouvez également enregistrer manuellement les adresses e-mail par le menu contextuel. Pour gérer les adresses, ouvrez le carnet d’adresses par le biais du menu Outils. Vous pouvez alors y rechercher des adresses, exporter et importer des adresses dans différents formats, etc.
Filtre antispam
Thunderbird intègre un filtre antispam. Vous pouvez l’activer par le biais de la boîte de dialogue Édition > Préférences > Confidentialité > Indésirables (voir Figure 7.3). Du fait que la reconnaissance du spam ne fonctionne pas parfaitement au début, il est conseillé de ne pas activer immédiatement l’option Les déplacer dans le dossier "indésirables". De cette
Linux Livre Page 107 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
107
manière, les e-mails soupçonnés d’être du spam seront conservés dans le dossier "Courrier entrant" mais seront identifiés par une icône "spam".
Figure 7.3 Configurer le filtre antispam.
Pour faire progresser la reconnaissance du spam, vous devez passer quelques jours à "entraîner" votre filtre. Pendant cette période, pour chaque e-mail que Thunderbird n’aura pas correctement identifié comme spam, cliquez sur le bouton Indésirable. Il est encore plus efficace pour cela d’utiliser le clavier : la touche J permet de classer un e-mail en tant que spam, tandis que la combinaison Maj+J permet de lever le marquage "indésirable" sur un courrier acceptable. Le filtrage antispam ne fonctionne que pour les e-mails reçus après activation du filtre. Pour traiter les courriers figurant déjà dans le dossier courant, passez par le menu Outils > Traquer les indésirables dans le dossier. Indépendamment du filtrage antispam, vous pouvez définir des règles de filtrage supplémentaires par le biais du menu Outils > Filtres de messages... De cette manière, vous pouvez automatiquement marquer ou déplacer vers un répertoire donné tous les e-mails entrants répondant à un critère donné. C’est une fonctionnalité particulièrement pratique pour traiter automatiquement les e-mails provenant de listes de diffusion.
Extensions et fonctionnalités additionnelles Modules complémentaires
Comme Firefox, Thunderbird permet l’ajout de fonctionnalités additionnelles sous la forme de modules complémentaires. La boîte de dialogue Outils > Modules complémentaires donne un aperçu de tous les modules complémentaires déjà installés : http://addons.mozilla.org/fr/thunderbird Les extensions de Thunderbird se présentent, comme celles de Firefox, sous la forme de fichiers XPI. Pour les installer, vous devez télécharger le fichier XPI et l’enregistrer dans un répertoire local. Utilisez ensuite le bouton Installer de la boîte de dialogue Outils > Modules complémentaires et sélectionnez le fichier à installer. Une installation directe par un clic de souris dans Firefox n’est pas possible, car Firefox n’est pas en mesure de distinguer les
Linux Livre Page 108 Mardi, 23. septembre 2008 1:05 13
108
LINUX
extensions conçues pour lui de celles prévues pour Thunderbird. Les extensions ne sont effectivement utilisables qu’après avoir relancé Thunderbird. Signer/chiffrer des e-mails
Les fonctionnalités de chiffrement pour S/MIME sont intégrées par défaut dans Thunderbird. Vous trouverez tous les éléments de configuration nécessaires dans la boîte de dialogue Édition > Paramètres des comptes > Sécurité. Le bouton Afficher les certificats vous conduit à une boîte de dialogue de gestion des certificats X.509, jouant le rôle de clés dans le cadre de S/MIME. Pour pouvoir lire ou rédiger dans Thunderbird des e-mails chiffrés ou signés par PGP, vous devez ajouter le module complémentaire Enigmail. Vous trouverez le fichier XPI correspondant sur le site web d’Add-ons mentionné ci-dessus. Ce module nécessite toutefois que gnupg soit préalablement installé sur l’ordinateur. C’est le cas pour la majorité des distributions. Toutes les fonctionnalités de chiffrement sont alors accessibles depuis le menu OpenPGP dans la fenêtre principale ainsi que dans la fenêtre Écrire.
Lire/rédiger des news
Avec Thunderbird, vous pouvez également lire et rédiger des messages des groupes de news Usenet. Pour ce faire, configurez un nouveau Compte forums de discussion par le biais des menus Édition > Paramètres des comptes > Ajouter un compte. Vous devrez alors fournir l’adresse d’un serveur de news auquel vous avez accès. La plupart des fournisseurs d’accès Internet vous mettent à disposition un tel serveur. Vous pourrez ensuite accéder à ce compte dans la fenêtre principale de Thunderbird et vous abonner à des groupes de discussion. Vous pourrez alors lire et rédiger les messages exactement comme des e-mails. Si vous souhaitez uniquement lire les messages et y effectuer des recherches, il est préférable d’utiliser pour cela Google. L’avantage de Google est qu’il vous permet également d’accéder à des messages anciens. Sur les serveurs de news, les messages ne sont conservés que quelques semaines, pour des raisons de place. http://groups.google.com
Icône du tableau de bord pour signaler un nouvel e-mail
Dictionnaires
Thunderbird vous informe de l’arrivée d’un nouveau courrier par un bip sonore et en faisant apparaître en surimpression quelques informations synthétiques sur le courrier en question. Les options correspondant à cette fonctionnalité se trouvent dans la boîte de dialogue Édition > Préférences > Général. Personnellement, toutefois, je préférerais que Thunderbird fasse apparaître une petite icône dans le tableau de bord Gnome ou KDE dès qu’un nouvel e-mail est disponible. Thunderbird n’en est étonnamment pas capable. Il existe toutefois un module complémentaire assurant cette fonctionnalité : http://moztraybiff.mozdev.org/ À la rédaction d’un e-mail, Thunderbird souligne les mots qu’il suppose être erronés. Cette fonctionnalité ainsi que la langue par défaut sont activées par le biais des menus Édition > Préférences > Rédaction > Orthographe. Les langues disponibles sont toutefois limitées à celles pour lesquelles un dictionnaire a été installé. Certaines distributions sont livrées avec les fichiers de dictionnaires nécessaires pour les principales langues ou, a minima, mettent à la disposition des utilisateurs les paquetages correspondants. Si ce n’est pas le cas de votre distribution, vous pouvez également installer manuellement le dictionnaire nécessaire. Pour ce faire, téléchargez le fichier XPI correspondant depuis le site web suivant et installezle exactement comme un module complémentaire : https://addons.mozilla.org/fr/thunderbird/browse/type:3
Linux Livre Page 109 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
109
Importer ou synchroniser des e-mails Windows Import
Synchronisation des e-mails
Si vous aviez jusqu’à présent utilisé un autre client de courrier électronique (sous Windows), vous souhaiterez peut-être importer vos anciens e-mails. La version Linux de Thunderbird n’est toutefois pas d’une grande aide sur ce point : Outils > Importer... ouvre certes un assistant d’import, mais celui-ci ne prend en charge qu’un unique format, celui des anciennes versions de Netscape. La version Windows de Thunderbird est toutefois bien plus utile. Son assistant d’import est livré avec les formats de courrier utilisés par Microsoft Outlook, Outlook Express et Eudora. Une fois les courriers convertis sous Windows, il ne vous reste alors plus qu’à recopier les emails depuis le répertoire Windows vers le bon répertoire Linux. Ces répertoires peuvent toutefois être un peu fastidieux à localiser : • Sous Windows, le répertoire contenant les e-mails Thunderbird correspond au chemin suivant : C:\Documents and Settings\nom_d_utilisateur\Application Data\Thunderbird\Profiles\Default\xxxxxx.xxx\Mail\Local Folders\ Depuis Linux, vous pourrez en règle générale accéder à ce répertoire par le chemin /media/sdan, où sdan correspond au nom de périphérique de la partition Windows. Vous devrez remplacer tous les caractères \ par des barres obliques /. Lorsque votre distribution ne monte pas par défaut les partitions Windows dans votre arborescence de répertoires, vous devrez procéder manuellement (voir à ce sujet le Chapitre 23). xxxxxx.xxx est un nom de répertoire généré par Thunderbird et constitué de caractères aléatoires. • Sous Linux, le répertoire vers lequel copier les fichiers possède le chemin suivant : ~/.thunderbird/xxxxxx.xxx.default/Mail/Local Folders/ Les anciennes versions de Thunderbird utilisent encore ~/.mozilla-thunderbird au lieu de ~/.thunderbird. Avant de copier les fichiers d’e-mail d’un répertoire vers l’autre, n’oubliez pas de fermer Thunderbird ! Si vous travaillez aussi bien sous Windows que sous Linux, vous avez la possibilité de synchroniser le répertoire d’e-mails dans son ensemble. Une condition préalable essentielle au bon fonctionnement de ce système est d’avoir installé la même version de Thunderbird sur les deux systèmes d’exploitation. Ce passage s’adresse aux utilisateurs de Linux ayant déjà une certaine expérience derrière eux et s’applique à Thunderbird 2.0. On ne peut pas encore prédire si et comment une synchronisation des répertoires d’e-mails fonctionnera dans les versions futures de Thunderbird. Sur mon ordinateur de test, la synchronisation des e-mails fonctionne depuis un peu plus de un an et elle est également passée avec succès de la version 1.5 à la version 2.0. Cette méthode n’est toutefois pas exempte de problèmes. Thunderbird est toujours persuadé qu’il doit réindexer les e-mails de chaque dossier ; il oublie fréquemment le dernier ordre de classement défini ; etc. Une certaine prudence est par ailleurs de rigueur. Une sauvegarde régulière du répertoire complet, même sans synchronisation avec Windows, devrait aller de soi. Lorsque vous réalisez votre sauvegarde, n’oubliez pas de fermer Thunderbird !
Linux Livre Page 110 Mardi, 23. septembre 2008 1:05 13
110
LINUX
Dans ce qui suit, je pars du principe que vous avez jusqu’à présent géré vos e-mails avec Thunderbird sous Windows. Vous souhaitez maintenant accéder aux courriers avec Thunderbird sous Linux. Du moment que vous avez accès en écriture, depuis Linux, sur votre partition Windows comprenant les e-mails, vous n’avez pas besoin de modifier quoi que ce soit dans Windows. C’est le cas si vous utilisez un système de fichiers VFAT sous Windows ou si vous avez mis en place le pilote ntfs-3g sous Linux (qui vous permet d’écrire sur un système de fichiers NTFS, voir le Chapitre 25 sur ce sujet). Lancez Thunderbird sous Linux et configurez un nouveau compte pour votre service de courrier. Avant de télécharger le moindre e-mail, ouvrez la boîte de dialogue Édition > Paramètres des comptes > Paramètres du serveur et modifiez le Répertoire local. Renseignez-y le chemin du répertoire dans lequel sont enregistrés les e-mails sous Windows. Procédez exactement de la même manière pour le répertoire du pseudo-compte Dossiers locaux (les "Dossiers locaux" définissent l’endroit où sont enregistrés tous les courriers entrants ainsi que tous les dossiers de courrier que vous avez créés). Et c’est fini ! Si vous n’avez pas accès en écriture, depuis Linux, au dossier d’e-mails de Windows, vous devrez copier le répertoire d’e-mails en question vers un nouveau répertoire hébergé sur une partition VFAT (opération à réaliser sous Windows). Ensuite, ouvrez Thunderbird sous Windows et modifiez les paramètres du serveur de manière que Thunderbird lise et enregistre tous les e-mails depuis ce nouvel emplacement. Synchroniser le carnet d’adresses
Pour synchroniser également le carnet d’adresses, fermez Thunderbird sous Linux et passez dans le répertoire ~/.thunderbird/xxxxxx.xxx.default. Commencez par y faire une copie de sauvegarde du fichier abook.mab et créez ensuite un lien vers le fichier équivalent sous Windows (ce qui suppose là encore que vous ayez accès en écriture au système de fichiers Windows). Vous trouverez davantage d’astuces sur ce point à l’adresse suivante : http://kb.mozillazine.org/Sharing_address_books
Configuration d’un compte
Lorsque vous accédez à plusieurs comptes e-mail depuis Thunderbird, il est particulièrement fastidieux de reconfigurer chaque compte lors d’un passage de Windows à Linux. Le module complémentaire Accountex facilite quelque peu cette tâche. Vous trouverez Accountex sur le site web des extensions Thunderbird que nous avons déjà mentionnées : https://addons.mozilla.org/fr/thunderbird
7.3
Evolution
Le logiciel Evolution, développé par la société Ximian (qui a depuis été intégrée à la société Novell), a été conçu comme une alternative à Microsoft Outlook. Non seulement Evolution peut être utilisé pour la lecture et la rédaction d’e-mails, mais il propose également des fonctionnalités de gestion des adresses et rendez-vous, la synchronisation de ces données avec un PDA compatible Palm ainsi qu’avec un serveur Microsoft Exchange, le chiffrement des emails avec PGP ou S/MIME, etc. Evolution réunit toutes ces fonctionnalités sous une même interface utilisateur : le client de courrier par défaut de l’environnement de bureau Gnome. Il n’est donc pas étonnant que son adoption ait connu un fort développement.
Linux Livre Page 111 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
111
Les utilisateurs avancés de Linux restent néanmoins quelque peu sceptiques vis-à-vis de ce logiciel. Ceci est en particulier dû au fait qu’Evolution a, par le passé, toujours connu des problèmes de stabilité et de rapidité, ce qui a nui à son image.
Configuration d’un compte Au premier lancement d’Evolution apparaît un assistant de configuration d’un compte e-mail. Cet assistant doit être parcouru intégralement avant de pouvoir utiliser Evolution. La configuration commence par la saisie de vos nom et adresse e-mail. À la boîte de dialogue suivante, vous fournissez les paramètres du serveur de courrier hébergeant votre boîte aux lettres : vous indiquez ici le type de serveur (par exemple POP ou IMAP), son adresse ainsi que votre nom d’utilisateur. C’est lors de votre première tentative de connexion au serveur que le mot de passe vous sera demandé. De nombreux hébergeurs de courrier vous permettent de transférer les données par le biais d’une connexion chiffrée par SSL, ce qui en améliore la sécurité. Dans la boîte de dialogue suivante, vous pouvez configurer diverses options, par exemple la vérification automatique de nouveaux courriers à intervalles réguliers. À l’étape suivante, vous configurez le serveur de courrier sortant (SMTP) vers lequel vous envoyez les e-mails. Vous devez non seulement fournir le nom de cette machine mais également configurer les options d’authentification. Dans la plupart des cas, le type d’authentification à choisir est "connexion". Le nom d’utilisateur correspond à l’identifiant de connexion au serveur SMTP. Le mot de passe vous est demandé lorsque vous tentez pour la première fois d’envoyer un e-mail. De nombreux prestataires de courrier exigent une authentification de type "POP avant SMTP". Dans ce cas, aucun mot de passe SMTP n’est nécessaire. Enfin, vous devez fournir un nom au compte que vous venez de configurer (par défaut, c’est votre adresse e-mail qui est utilisée) et renseigner votre fuseau horaire pour qu’Evolution puisse correctement configurer l’heure d’émission des e-mails. Si vous souhaitez ultérieurement modifier la configuration ou mettre en place des paramètres supplémentaires, vous accéderez par le biais des menus Édition > Préférences > Comptes de messagerie à la boîte de dialogue correspondante (voir Figure 7.4). Signature
Lorsque vos courriers doivent systématiquement se conclure par le même texte (par exemple "Cordialement, un_nom"), vous pouvez créer une signature dans la boîte de dialogue Édition > Préférences > Préférences de l’éditeur > Signatures. Dans la fenêtre de rédaction d’un e-mail, vous pourrez alors insérer la signature au moyen d’un bouton. Evolution n’est toutefois pas en mesure d’insérer automatiquement une signature par défaut.
Fonctionnalités de base Lire des e-mails
Lorsque vous cliquez pour la première fois sur le bouton Envoyer/Recevoir ou que vous appuyez sur la touche F9 pour télécharger les nouveaux e-mails, vous devez fournir le mot de passe pour votre boîte aux lettres.
Linux Livre Page 112 Mardi, 23. septembre 2008 1:05 13
112
LINUX
Figure 7.4 Configuration d’un compte dans Evolution.
Les nouveaux e-mails sont rassemblés dans le dossier local intitulé Boîte de réception (voir Figure 7.5). La liste des courriers apparaît dans la partie supérieure de la fenêtre, tandis que le texte du courrier sélectionné est affiché dans la partie inférieure. D’un double-clic sur un élément de la liste, vous pouvez ouvrir un courrier dans une fenêtre distincte, ce qui en facilite la lecture.
Figure 7.5 Gestion des e-mails dans Evolution.
Envoyer des e-mails
Lorsque plusieurs courriers provenant de la même discussion figurent dans un même dossier, il est possible de les afficher suivant une structure arborescente par le biais des menus Affichage > Grouper par fils de discussion. Avec cette vue, vous pouvez immédiatement identifier qui a répondu à quel courrier et à quelle date. Vous pouvez rédiger un nouveau courrier avec la combinaison de touches Ctrl+N et l’envoyer avec Ctrl+Entrée. Au premier envoi, Evolution vous demande le mot de passe
Linux Livre Page 113 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
113
d’accès au serveur SMTP devant gérer l’envoi du courrier. Vous pouvez répondre à des e-mails déjà reçus grâce à la combinaison de touches Ctrl+R (répondre à l’auteur) ou Ctrl+Maj+R (répondre à tous). Ctrl+F vous permet de faire suivre un courrier à un autre destinataire. L’e-mail d’origine est alors ajouté en tant que pièce jointe. Courriers au format HTML
Il existe fondamentalement deux types d’e-mails : les courriers au format texte simple, sans mise en forme, et les messages HTML avec toutes les possibilités de mise en forme que propose le HTML (différentes tailles, couleurs, etc. de polices). Les courriers au format HTML ont toutefois, par le passé, conduit à des problèmes de sécurité avec de nombreux logiciels de courrier (particulièrement avec Microsoft Outlook). De nombreux utilisateurs refusent donc tout simplement de tels e-mails ou considèrent qu’ils présentent un risque de sécurité. Pour des raisons de sécurité, Evolution ne charge aucun des fichiers (donc aucune image) utilisés dans un e-mail au format HTML. Vous pouvez modifier ce comportement par le biais de la boîte de dialogue Édition > Préférences > Préférences du courriel > Courriel HTML. Par défaut, vous ne pouvez rédiger dans Evolution que des e-mails au format texte simple. Pour écrire des courriers au format HTML, choisissez Format > HTML dans la fenêtre de rédaction. Divers boutons et menus de mise en forme et d’insertion vous permettront alors d’appliquer toutes les modifications que vous souhaitez. Si vous souhaitez rédiger systématiquement vos e-mails au format HTML, passez par les menus Édition > Préférences et, dans la boîte de dialogue Préférences de l’éditeur > Général, cochez l’option Formater les messages en HTML.
Rechercher des e-mails
Evolution présente, directement sous la barre d’outils, un champ permettant d’effectuer des recherches rapides parmi les e-mails. Si vous utilisez régulièrement les mêmes critères de recherche, il peut être intéressant de créer un dossier de recherche (ou "dossier virtuel"). Pour ce faire, passez par Édition > Dossiers de recherche ou Recherche > Créer un dossier de recherche à partir d’une recherche...
Filtrage antispam
Evolution utilise automatiquement spamassassin pour l’identification des e-mails indésirables, à condition que ce logiciel soit installé. Pour appliquer le filtrage antispam sur les courriers existant déjà dans un dossier, sélectionnez l’ensemble des e-mails avec Ctrl+A puis exécutez Message > Filtrer le pourriel. Cette opération peut prendre un temps important sur les dossiers comprenant beaucoup de courriers. Les courriers identifiés comme spam sont déplacés dans le dossier Pourriels. Le filtre antispam est initialement assez prudent pour éviter de classer indûment comme pourriel des e-mails qui ne le sont pas. Pour cette raison, il est souvent nécessaire, durant les premières semaines, d’indiquer manuellement pour chaque courrier s’il s’agit d’un spam. Pour ce faire, sélectionnez l’e-mail en question et cliquez sur le bouton Pourriel ou utilisez la combinaison de touches Ctrl+J. Le filtre antispam tente de découvrir dans le courrier ainsi marqué un motif qui pourra l’aider, par la suite, à correctement trier les e-mails. Ainsi, le filtrage antispam s’améliore continuellement. À l’occasion, il arrive malheureusement qu’un courrier soit indûment classé comme spam. Vous devez par conséquent jeter un coup d’œil régulier au dossier Pourriel afin de vérifier s’il s’y trouve de tels e-mails.
Linux Livre Page 114 Mardi, 23. septembre 2008 1:05 13
114
LINUX
Pour éviter que cette identification erronée ne se reproduise, cliquez sur le bouton Non pourriel pour le courrier concerné. D’après mon expérience, le filtrage antispam d’Evolution fonctionne moins bien que celui de Thunderbird. Il ne peut rivaliser avec celui de Thunderbird ni en terme de rapidité de traitement ni en vitesse d’apprentissage. Filtres
Outre le filtrage antispam, Evolution peut, grâce à des règles de filtrage, déplacer automatiquement des e-mails vers certains dossiers ou même effacer des courriers. C’est pratique lorsque vous avez un grand nombre d’e-mails à traiter et que vous souhaitez organiser ceux-ci suivant un motif particulier (par exemple la présence d’un mot donné dans le sujet). C’est typiquement le cas lorsque vous êtes abonné à plusieurs listes de diffusion. La méthode la plus simple pour définir une nouvelle règle de filtrage consiste à sélectionner le courriel puis à exécuter Message > Créer une règle > Filtrer sur la liste de diffusion. Lorsque Evolution ne parvient pas à reconnaître correctement la règle de filtrage, vous pouvez la modifier ou lui ajouter des critères.
Fonctionnalités supplémentaires Gestion des adresses et contacts
Calendrier et gestion des rendez-vous
Liste de tâches Synchronisation avec un PDA
Le carnet d’adresses d’Evolution est, en réalité, un véritable système de gestion des contacts dans lequel vous pouvez enregistrer un grand nombre d’informations en plus du nom et de l’adresse e-mail. Vous pouvez accéder au carnet d’adresses soit par le biais des menus Affichage > Fenêtre > Contacts, soit plus rapidement par la combinaison de touches Ctrl+F2. Fichier > Importer > Importer un seul fichier vous permet d’importer des fichiers de carnet d’adresses au format LDIF (Lightweight Directory Interchange Format). Malheureusement, c’est le seul format pris en charge. Le module Calendriers vous permet de gérer vos rendez-vous. Les rendez-vous peuvent être présentés dans diverses vues : tous les rendez-vous d’une journée, d’une semaine ouvrée, d’une semaine complète ou d’un mois. Vous pouvez personnaliser de nombreux détails de présentation (par exemple les horaires de travail habituels ou les couleurs des polices) par le biais d’Édition > Préférences > Calendriers et tâches. Pour créer un nouveau rendez-vous, passez par les menus Fichier > Nouveau > Rendezvous ou double-cliquez sur l’emplacement correspondant au rendez-vous dans le calendrier. Pour les rendez-vous devant se répéter à intervalles réguliers (chaque semaine, mois, année, etc.), renseignez l’intervalle dans la boîte de dialogue à l’aide du bouton Récurrence, et précisez au besoin une date de fin pour cette répétition. Evolution compte également un module de gestion de tâches (une sorte de to do-list). Vous pouvez afficher les tâches soit dans une vue propre, soit comme partie intégrante du calendrier. Pour tout possesseur de PDA, il est naturellement intéressant de pouvoir synchroniser ses données avec Evolution. Cette possibilité existe de fait pour les PDA compatibles Palm. Avant la première synchronisation, vous devez configurer le périphérique par le biais d’Édition > Options de synchronisation. En coulisse, c’est le programme gnome-pilot qui est chargé de la configuration et du transfert des données. Mon expérience montre toutefois que la synchronisation ne fonctionne pas de manière très fiable, ce qui rend cet outil plus adapté aux expérimentateurs qu’à ceux qui souhaitent l’utiliser quotidiennement.
Linux Livre Page 115 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
7.4
115
Kontact
Kontact est un programme universel de gestion des e-mails, contacts, rendez-vous, tâches, notifications ainsi que pour l’affichage de flux RSS. Kontact propose, comme Evolution, une synchronisation des données avec un PDA. De fait, Kontact n’est qu’une interface utilisateur unifiée pour différents programmes KDE fonctionnant en coulisse. Cette section se focalise sur le composant e-mail derrière lequel se cache le programme KMail. Attention au fait que le menu de Kontact change suivant le composant actif ! Les indications de menu qui suivent ici ne valent que lorsque le composant de courrier est actif. Si vous n’êtes intéressé que par les fonctionnalités d’e-mail, vous pouvez également lancer KMail en tant que programme autonome.
Configuration d’un compte
Des trois logiciels de courrier présentés dans ce chapitre, Kontact (et Kmail) est celui dont l’orientation technique est la plus forte. Ce programme présente d’innombrables fonctionnalités et permet aux utilisateurs avancés de Linux de travailler très efficacement. Son utilisation n’est toutefois pas toujours très intuitive. Par conséquent, ce logiciel n’est pas forcément le plus conseillé pour les débutants sous Linux. Configuration > Configurer KMail vous conduit à une boîte de dialogue de configuration. Par défaut, le système a configuré une "identité par défaut". Le bouton Modifier vous permet ici de configurer vos nom et adresse e-mail effectifs ainsi que, au besoin, d’autres options. La configuration effective du compte a lieu dans le module Comptes. Vous devez y configurer au moins un compte de réception et un compte d’envoi. Pour commencer, en général, vous utiliserez le bouton Ajouter pour configurer la boîte aux lettres entrante de votre serveur POP ou IMAP. Pour le courrier sortant est prévu le programme sendmail, mais il n’est en règle générale configuré que pour l’émission de courrier local. Par conséquent, vous devez configurer une boîte aux lettres SMTP supplémentaire (voir Figure 7.6), que vous pouvez sélectionner comme boîte aux lettres par défaut.
Figure 7.6 Configuration d’un compte dans Kontact.
Dès que vous quittez la boîte de dialogue de configuration, Kontact enregistre les mots de passe dans une base de données centrale par le biais de KDEWallet. Par conséquent, vous devez fournir le mot de passe maître pour KDEWallet (voir Chapitre 5).
Linux Livre Page 116 Mardi, 23. septembre 2008 1:05 13
116 Lire des e-mails
LINUX
Les nouveaux e-mails sont rassemblés dans le dossier Boîte de réception. La liste des courriers apparaît dans la partie supérieure de la fenêtre, tandis que le contenu de l’e-mail sélectionné est affiché dans la partie inférieure. Au besoin, vous pouvez ouvrir un courrier dans une fenêtre séparée en double-cliquant dessus dans la liste. Les e-mails HTML ont, par le passé, conduit à des problèmes de sécurité avec de nombreux clients de courrier. Par conséquent, pour de tels e-mails, KMail ne présente par défaut qu’une version texte ou le code source HTML. Si vous souhaitez consulter l’e-mail avec sa mise en forme HTML complète, vous devez cliquer sur le lien correspondant. Si vous souhaitez afficher systématiquement les e-mails HTML en tant que tels, passez par Dossier > Préférer le HTML au texte brut. Ce paramétrage ne vaut toutefois que pour le dossier en cours. KMail présente à côté de chaque message une barre verticale qui, suivant le type d’e-mail, indique "Message HTML" ou "Message non HTML". Si cette barre vous dérange, vous pouvez la désactiver par le biais de la boîte de dialogue Configuration > Configurer KMail > Apparence > Fenêtre des messages (décochez l’option Afficher la barre d’état pour les messages HTML). La partie inférieure de la zone d’affichage du courrier indique les parties constitutives de l’e-mail. Si ces informations ne vous intéressent pas, choisissez l’option Ne jamais afficher pour l’élément Configuration > Configurer KMail > Apparence > Disposition > Affichage de la structure du message.
Figure 7.7 Gérer les e-mails avec Kontact.
Rédiger un e-mail
Un nouvel e-mail est, par défaut, rédigé en texte brut. Si vous souhaitez appliquer une mise en forme HTML, passez par Options > Formatage (HTML). Une fois le courrier rédigé, vous pouvez l’envoyer avec la combinaison de touches Ctrl+Entrée. Pour répondre à un courrier, vous pouvez utiliser les touches R (répondre à l’auteur) et A (répondre à tous). Le texte complet de l’e-mail est automatiquement inséré en citation dans
Linux Livre Page 117 Mardi, 23. septembre 2008 1:05 13
E-MAIL (THUNDERBIRD, EVOLUTION, KONTACT)
Spam
117
la réponse (chaque ligne est donc précédée du caractère >). Si vous ne souhaitez rappeler dans votre réponse qu’une partie du message d’origine, sélectionnez la partie correspondante dans l’e-mail avant de faire appel à une commande Répondre. KMail exécute automatiquement une vérification orthographique et colore tous les mots non reconnus en rouge. Affichage > Dictionnaire vous permet de choisir le dictionnaire approprié parmi plusieurs (anglais, français, etc.). KMail n’intègre aucun outil d’identification du spam mais peut déléguer cette tâche à d’autres programmes. Un assistant auquel vous pouvez accéder par Outils > Assistant de gestion des messages non sollicités vous aide à configurer un filtre antispam. Vous n’avez qu’à choisir un des programmes de gestion du spam installé sur votre ordinateur et l’assistant gère tout le reste. Les courriers identifiés comme indésirables seront dès lors envoyés directement vers la Corbeille. Comme avec les autres logiciels de courrier, l’efficacité du filtrage augmente lorsque vous corrigez les erreurs d’identification en marquant manuellement un courrier comme indésirable ou non.
Linux Livre Page 118 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 119 Mardi, 23. septembre 2008 1:05 13
OpenOffice
8
OpenOffice est le plus puissant et le plus populaire de tous les paquetages bureautiques libres disponibles sous Linux. Ses principaux avantages sont les suivants : • Une grande compatibilité avec Microsoft Office jusqu’à sa version 2003 ; cela concerne aussi bien l’utilisation de la suite que l’import et l’export de fichiers. • Une prise en charge des systèmes d’exploitation Linux, Windows, Mac OS et Sun Solaris ; cela permet ainsi d’échanger sans difficulté des documents dans des environnements hétérogènes ; il n’existe pas encore de version OpenOffice officielle pour Mac OS, mais les utilisateurs de Mac peuvent toutefois installer le portage gratuit NeoOffice. • Des fonctionnalités très larges, y compris pour des tâches avancées (par exemple la rédaction d’une thèse). • Sa stabilité, sa sûreté et sa maturité. Ce chapitre décrit tout d’abord quelques particularités d’OpenOffice 2n, puis présentera rapidement chacun des composants Writer, Calc, Impress et Base. De façon générale, je pars dans ce chapitre du principe que vous maîtrisez les fonctionnalités de base d’Office. La place manque ici pour expliquer comment passer le texte en gras ou comment fonctionnent les formules dans un tableur. Nous ne pouvons que vous conseiller de vous procurer un livre entièrement dédié à OpenOffice ou à StarOffice, ce que vous pourrez trouver dans n’importe quelle librairie. OpenOffice est disponible pour la quasi-totalité des distributions et peut être installé simplement à l’aide du gestionnaire de paquetages. Si ce n’est pas le cas ou si vous souhaitez installer une version plus récente, vous devrez récupérer les fichiers d’installation depuis le site officiel : http://www.openoffice.org OpenOffice n’est en aucun cas l’unique paquetage bureautique pour Linux. Les principales alternatives seront rapidement présentées dans la dernière section de ce chapitre.
8.1 Java
Introduction
Avant de présenter chacun des composants OpenOffice dans les sections suivantes de ce chapitre, nous donnons ici quelques informations générales sur le paquetage OpenOffice. Quelques fonctionnalités d’OpenOffice requièrent la présence de Java. Pour cette raison, vous devez installer avant OpenOffice une version récente de Java. De nombreuses distributions proposent par défaut des paquetages Java. Si ce n’est pas le cas de la vôtre, vous pouvez télécharger gratuitement la dernière version de l’environnement d’exécution Java de Sun (J2SE JRE) depuis le site web suivant : http://java.sun.com/j2se/downloads.html OpenOffice reconnaît automatiquement l’environnement Java disponible lors de l’installation. Si vous mettez en place Java après avoir installé OpenOffice, vous devrez paramétrer Java manuellement par le biais de la boîte de dialogue Outils > Options > OpenOffice > Java.
Linux Livre Page 120 Mardi, 23. septembre 2008 1:05 13
120 Lancement du programme
LINUX
Si vous travaillez sous KDE ou Gnome, le menu de démarrage correspondant devrait comprendre les icônes OpenOffice dès l’installation terminée. Si ces icônes manquent, vous pouvez naturellement aussi lancer les composants d’OpenOffice par la ligne de commande : ooffice, oowriter, oocalc, ooimpress, oobase
Les noms des commandes varient sur certaines distributions. Quoi qu’il en soit, chacune de ces commandes lance un seul et même programme qui contient l’ensemble des composants de traitement de texte, tableur, présentation, etc. Pour cette raison, le lancement initial peut sembler un peu long. Si vous avez ouvert plusieurs composants OpenOffice simultanément, il n’y a en réalité qu’un seul programme qui s’exécute en coulisse. Vous n’avez donc pas besoin de vous inquiéter : chacune des fenêtres OpenOffice ouvertes ne requiert pas une quantité de RAM abusive. Formats de fichiers OpenOffice
Avec OpenOffice, vous pouvez ouvrir et enregistrer vos documents dans plusieurs formats de fichiers différents. Les trois formats principaux sont les suivants : • Format OpenDocument ou OASIS (*.odt pour les fichiers de texte, *.ods pour les feuilles de calcul, *.odp pour les présentations). Ce format a été introduit avec OpenOffice 2.0. C’est le format par défaut et qui devrait être utilisé autant que possible. Il faut toutefois veiller, lors de l’échange de documents, à ce que le destinataire du fichier dispose au moins d’OpenOffice 1.1.5 ou de StarOffice 9 s’il doit travailler sur ces fichiers. OASIS est l’acronyme d’Organization for the Advancement of Structured Information Standards. • Format OpenOffice 1.n (*.sxw, *.sxc, *.sxi). Ce format était le format par défaut pour OpenOffice 1.0 et 1.1, ainsi que pour StarOffice 7 et 8. • Format Microsoft Office (*.doc, *.xls, *.ppt). Ce format est adapté pour l’échange de fichiers avec des utilisateurs de Microsoft Office. Depuis sa version 2.3, OpenOffice peut également ouvrir des fichiers Office 2007 (format OpenXML, *.docx, *.xlsx, *.pptx) mais non enregistrer dans ce format. Si vous souhaitez ou devez rester compatible avec le monde Microsoft, utilisez simplement pour enregistrer vos documents le format Office passé. La section suivante présentera quelques remarques supplémentaires sur la compatibilité avec MS-Office. Vous devriez autant que possible utiliser le format OpenDocument. C’est le seul format qui permet de garantir l’absence de changements à l’ouverture ou à l’enregistrement. Si vous choisissez d’enregistrer votre document sous un autre format, une demande de confirmation de sécurité apparaît automatiquement.
Intégration à l’environnement de bureau
Par défaut, OpenOffice utilise ses propres boîtes de dialogue pour le chargement et l’enregistrement de fichiers. Pour faire en sorte qu’OpenOffice utilise plutôt les éléments de dialogue standard de votre environnement de bureau et qu’il s’intègre ainsi plus harmonieusement à KDE ou à Gnome, vous pouvez désactiver l’option Utiliser les boîtes de dialogue OpenOffice.org dans la fenêtre de configuration Outils > Options > OpenOffice > Général. Cette option n’est toutefois disponible que si OpenOffice peut effectivement utiliser les boîtes de dialogue de l’environnement de bureau courant.
Dossiers réseau Windows
Les versions récentes d’OpenOffice vous permettent de travailler directement sur des fichiers provenant de répertoires réseau Windows et Samba (vous pouvez donc les ouvrir
Linux Livre Page 121 Mardi, 23. septembre 2008 1:05 13
121
OPENOFFICE
par double-clic dans votre gestionnaire de fichiers et enregistrer ultérieurement les modifications apportées). Ceci ne fonctionne toutefois pas sur les anciennes versions d’OpenOffice. Pour modifier des documents Office hébergés sur un réseau Windows, vous avez deux possibilités : • copier préalablement le fichier vers un répertoire local, utiliser cette copie pour la modifier puis recopier le fichier résultant dans le répertoire réseau à l’aide du gestionnaire de fichiers ; • monter le répertoire réseau Windows dans le système de fichiers Linux à l’aide de mount (voir Chapitre 23) ; ceci nécessite toutefois de posséder les droits root.
OpenOffice face à Microsoft Office OpenOffice peut-il totalement se substituer à MS-Office ou non ? Cette question appelle en fait plusieurs réponses. Pour l’utilisateur de base, OpenOffice propose certainement plus qu’assez de fonctionnalités. Même la migration depuis Microsoft Office, jusqu’à sa version 2003, ne devrait pas poser de problème : les menus sont structurés de manière très semblable. Si, toutefois, vous appartenez au groupe des utilisateurs avancés, vous devrez être conscient de certaines limitations : • MS-Office 2007. OpenOffice présente une compatibilité très élevée avec les anciennes versions de Microsoft Office. Cela ne vaut toutefois pas pour MS-Office 2007. J’ai par ailleurs déjà mentionné que le nouveau format de fichier OpenXML n’est pas encore pris en charge. Novell travaille à des convertisseurs OpenXML qui seront probablement intégrés officiellement à OpenOffice à l’avenir. • Import/Export. Les fonctionnalités d’import et d’export pour les formats Microsoft Office (*.doc, *.xls, *.ppt) sont plutôt bonnes mais ne suffisent pas pour garantir l’absence totale de problème à l’échange de documents. Lorsque deux personnes travaillent alternativement sur un texte ou une feuille de calcul avec MS-Office et OpenOffice, quelques surprises peu agréables sont à prévoir : problèmes de mise en forme, présentation erronée des caractères spéciaux à cause des polices, sauts de pages et de colonnes manquants, gestion erronée des lignes d’en-tête et de pied de page, présentation incorrecte des diagrammes, couleurs erronées, liaisons manquantes vers des fichiers externes (images), etc. OpenOffice n’est pas capable d’ouvrir des fichiers MS-Office protégés par un mot de passe. Vous devrez préalablement ouvrir de tels fichiers dans MS-Office puis les y enregistrer, cette fois sans protection. • Rapidité. Certaines fonctionnalités OpenOffice sont notoirement plus lentes que leurs homologues MS-Office. C’est en particulier le cas de l’ouverture et de l’enregistrement de documents volumineux. De surcroît, MS-Office peut pendant ce temps exécuter en tâche de fond diverses opérations consommatrices de temps, tandis qu’OpenOffice est totalement bloqué.
Linux Livre Page 122 Mardi, 23. septembre 2008 1:05 13
122
LINUX
• Raccourcis clavier. De nombreux raccourcis clavier possèdent une signification différente dans OpenOffice et MS-Office. Il est néanmoins toujours possible de modifier les raccourcis existants et de définir des raccourcis personnalisés. • Access et Base. Le composant de base de données d’OpenOffice Base n’est pas comparable à Access. Vous pouvez certes utiliser Base pour accéder à des bases de données externes ou créer vos propres bases, mais le spectre de fonctionnalités d’Access n’est que très partiellement couvert par Base. • Programmation/VBA. OpenOffice utilise un langage de programmation de macros relativement mal documenté et, par conséquent, employé presque uniquement par les utilisateurs avancés d’OpenOffice. VBA, langage de programmation de macros intégré à Microsoft Office, n’est officiellement pas pris en charge. Toutefois, il existe une extension développée par la société Novell spécialement pour OpenOffice Calc qui permet d’exécuter des macros VBA simples. D’après mon expérience, la compatibilité d’OpenOffice 2.2 avec Microsoft Excel est encore malheureusement très insuffisante. L’exécution de macros VBA occasionne des erreurs, voire des plantages. Cette liste ne devrait toutefois pas vous empêcher de migrer vers OpenOffice, d’autant plus que celui-ci propose d’autres fonctionnalités absentes de MS-Office. À titre personnel, j’utilise depuis plusieurs années déjà OpenOffice pour mes documents personnels. Si je signale ici les problèmes potentiels, c’est avant tout pour éviter les déceptions face à ce produit.
8.2
Traitement de texte (OpenOffice Writer)
Writer est le composant OpenOffice essentiel pour la majorité des utilisateurs. Toutefois, la place nous manque ici pour décrire en profondeur l’ensemble de ses fonctionnalités. Nous devrons donc nous contenter ici de donner les grandes lignes de son fonctionnement, sans nous attarder sur des considérations de base (comment passer le texte en gras ou en italique) que vous maîtrisez déjà. Styles
Comme de nombreux autres logiciels de traitement de texte, OpenOffice gère ce que l’on appelle les styles, qui permettent de mettre en forme de manière cohérente sur l’ensemble d’un document des caractères, paragraphes, etc. Modifier un style impactera l’apparence du document dans son ensemble car tous les éléments mis en forme avec ce style changeront d’allure. L’utilisation des styles présente de très nombreux avantages par rapport à la mise en forme manuelle (présentation unifiée d’un document et cohérence entre documents utilisant les mêmes styles, facilité pour modifier un style sur l’ensemble d’un document). L’utilisation des styles est particulièrement recommandée pour la création d’un document volumineux. OpenOffice propose un outil dénommé Styles et mise en forme pour la gestion des styles (voir Figure 8.1). Il s’agit d’une fenêtre complémentaire que vous pouvez ouvrir ou fermer à l’aide de la touche F11. Vous pouvez également l’amarrer à la fenêtre principale en le faisant glisser avec la souris. Les styles s’appliquent à plusieurs niveaux : paragraphes, caractères, cadres, pages et listes, chacun de ces niveaux correspondant à un onglet distinct dans Styles et mise en forme.
Linux Livre Page 123 Mardi, 23. septembre 2008 1:05 13
OPENOFFICE
123
Figure 8.1 La fenêtre OpenOffice standard avec Styles et mise en forme.
Pour appliquer un style à un élément de texte donné, sélectionnez le texte puis doublecliquez, dans Styles et mise en forme, sur le style choisi. Vous pouvez aussi modifier un style par le biais du menu contextuel, d’un clic droit sur son intitulé dans Styles et mise en forme. Vous pouvez enfin définir vos propres styles en sélectionnant l’élément de texte dont la mise en forme doit être enregistrée, puis en cliquant dans Styles et mise en forme sur le bouton Nouveau style à partir de la sélection. Attention, toutefois, au fait que les modifications apportées aux styles ne peuvent être annulées (contrairement à beaucoup d’autres opérations) par le biais des touches Ctrl+Z. Vous devez donc les enregistrer régulièrement. Tabulations et tableaux
OpenOffice prévoit par défaut des intervalles de 1,25 cm pour les tabulations. Vous pouvez toutefois modifier ce comportement par le biais de l’onglet Tabulations dans la boîte de dialogue Format > Paragraphe. La touche Tab insère une tabulation dans la ligne en cours, ce qui suffit pour les tableaux très simples. Pour les tableaux plus complexes, vous devrez utiliser le menu Insertion > Tableau. Vous pouvez modifier diverses propriétés du tableau par le biais du menu Propriétés du tableau (dans la fenêtre de gestion des tableaux ou dans le menu contextuel). Pour insérer des cellules depuis Calc dans Writer, copiez les cellules concernées dans Calc à l’aide des touches Ctrl+C. Pour les insérer dans Writer en tant que tableau, utilisez le menu Édition > Collage spécial puis Texte non formaté. Les données apparaissent alors sous forme de texte tabulé, que vous pouvez transformer en tableau par le biais de Tableau > Convertir > Texte en tableau (en choisissant, dans la boîte de dialogue de conversion, la tabulation comme caractère séparateur). Si vous cherchez à insérer directement les cellules dans Writer,
Linux Livre Page 124 Mardi, 23. septembre 2008 1:05 13
124
LINUX
vous produirez non pas un tableau classique mais un objet OLE dont les données sont liées au fichier d’origine : ce type de liaison n’est que rarement utilisé. Titres numérotés
Si votre document est structuré en chapitres et sections, les titres doivent être mis en forme à l’aide des styles Titre 1 à Titre 10 (ce qui facilite par ailleurs la génération d’une table des matières). Ces titres ne comprennent toutefois pas de numérotation : pour insérer des numéros, utilisez le menu Outils > Numérotation des chapitres. La boîte de dialogue qui apparaît vous permet de configurer la numérotation pour chacun des niveaux envisagés.
Vérification orthographique
OpenOffice n’intègre pas directement de dictionnaire pour la vérification orthographique. Il existe toutefois de nombreux dictionnaires disponibles sur Internet (voire livrés avec votre distribution) que vous pouvez installer. Le menu Fichier > Assistants > Installer de nouveaux dictionnaires peut également vous aider dans cette tâche. Veillez à configurer correctement la langue du texte pour assurer un bon fonctionnement de la vérification orthographique. La langue standard est configurée par le biais d’Outils > Options > Paramètres linguistiques > Langue. Pour les textes multilingues, Format > Caractères permet de définir la langue avec une granularité plus fine.
Coupure des mots
OpenOffice permet de couper les mots soit manuellement, soit automatiquement. Pour lancer la coupure manuelle, passez par le menu Outils > Langue > Coupure des mots. OpenOffice ajoute alors les tirets soit à l’ensemble du texte situé après le curseur, soit sur une partie du texte préalablement sélectionnée (vous pouvez aussi utiliser les touches Ctrl+"moins" pour insérer une coupure manuelle). Chaque coupure doit être confirmée mais vous pouvez désactiver ce fonctionnement dans Outils > Options > Paramètres linguistiques > Linguistique. La coupure automatique est nettement plus pratique à utiliser. Toutefois, seuls les paragraphes pour lesquels l’option de coupure automatique (Format > Paragraphe > Enchaînements) a été activée seront traités par ce biais.
Insérer des images
Pour insérer une image dans un document, utilisez les menus Insertion > Image > À partir d’un fichier. Dans la boîte de dialogue de sélection du fichier, vous pouvez basculer entre deux modes différents grâce à la discrète option Lien : • Insérer l’image dans le texte. Lorsque Lien n’est pas cochée, le fichier graphique est intégré au fichier OpenOffice à l’enregistrement. Cela signifie que la taille du fichier augmente avec le volume de chaque image et le nombre total de celles-ci. La transmission de tels documents ne pose toutefois aucun problème puisque toutes les images sont intégrées au fichier. • Insérer un lien vers le fichier. Lorsque Lien est cochée, OpenOffice n’enregistre effectivement dans le fichier que le chemin vers l’image. Cette méthode est recommandée pour les documents comprenant beaucoup d’images. Attention, toutefois, au fait qu’elle nécessite de réactualiser tous les liens si l’emplacement du document ou des images change. Les champs sont des formules ou des variables qui peuvent être insérées dans le texte. À l’impression, c’est la valeur correspondante qui apparaît dans le texte. Les champs vous permettent de numéroter automatiquement des figures, d’afficher automatiquement la date d’impression en en-tête, de créer des séries de lettres standard avec quelques éléments personnalisés, etc. Vous pouvez utiliser Insertion > Champ pour quelques-uns des champs les plus couramment utilisés (numéros de page, date, etc.). Pour disposer d’autres champs, passez par le sous-menu Autres (Ctrl+F2). OpenOffice peut afficher le nom ou la valeur des champs :
Champs
Linux Livre Page 125 Mardi, 23. septembre 2008 1:05 13
OPENOFFICE
125
pour basculer d’un mode à l’autre, utilisez les menus Affichage > Noms de champs ou, plus rapidement, la combinaison de touches Ctrl+F9 (si vous ne travaillez pas sous KDE). Table des matières
Lorsque vous souhaitez ajouter une table des matières à votre document, utilisez les styles de titres Titre 1 à Titre 10. De cette manière, vous pouvez construire la table des matières avec un minimum de travail : il vous suffit alors de passer par les menus Insertion > Index > Index puis de sélectionner le type Table des matières. Précisez que la table des matières doit être fondée sur la structure et, au besoin, limitez le nombre de niveaux (trois est un bon choix, quatre, un maximum) pour garder la lisibilité de la table. L’onglet Entrées vous permet de définir plus précisément la mise en forme de chaque ligne. Pour mettre à jour la table des matières après avoir modifié le document, effectuez un clic droit dessus et, dans le menu contextuel, sélectionnez Actualiser l’index.
Index lexical
La première étape de la création d’un index consiste à définir les mots à indexer. Le plus simple est pour cela de sélectionner les mots concernés, puis de passer par les menus Insertion > Index > Entrée. Une boîte de dialogue s’ouvre alors avec, dans le champ Entrée, le texte sélectionné. Cliquez sur Insérer pour confirmer la nouvelle entrée. Pour définir d’autres entrées, gardez cette boîte de dialogue ouverte et marquez les mots à mesure que vous avancez : dès que vous revenez à la boîte de dialogue, le champ Entrée contient le mot que vous venez de sélectionner. Si vous souhaitez modifier l’intitulé exact de l’entrée, saisissez le nouveau texte dans le champ. Les mots pour lesquels une entrée d’index a été définie apparaissent désormais en gris. Le texte de l’entrée apparaît lorsque vous passez la souris sur le surlignement gris. Une fois que toutes les entrées sont définies, la création de l’index effectif est alors très simple : passez par les menus Insertion > Index > Index et choisissez dans la boîte de dialogue le type Index lexical. Et c’est terminé ! Comme pour la table des matières, vous pouvez modifier ou actualiser l’index par le biais du menu contextuel.
Impression
L’impression par Fichier > Imprimer (Ctrl+P) ne pose en général pas de problème. La boîte de dialogue vous permet au besoin de préciser quelles pages imprimer ou quelle imprimante utiliser, et le bouton Options vous donne accès à plus de possibilités. Pour imprimer au format paysage, vous devez passer par le format de page : Format > Page > Page pour activer l’option Orientation paysage. Attention au fait qu’un tel paramètre est prévu dans la boîte de dialogue d’impression, mais qu’il est généralement ignoré !
Export PDF
Depuis la version 1.1, OpenOffice permet d’exporter des fichiers directement au format PDF grâce à Fichier > Exporter au format PDF. Toutes les polices (sauf les polices standard PostScript) sont insérées directement dans le fichier PDF : plus vous utilisez de polices, plus le document devient donc volumineux. Il n’est pas possible de configurer les paramètres de l’export PDF.
Gestion des polices
Depuis sa version 2.0, OpenOffice est en mesure d’utiliser sans configuration particulière l’ensemble des polices disponibles sur votre ordinateur. Pour les polices PostScript, il existe toutefois une limitation : OpenOffice ne peut les utiliser correctement que si les fichiers de métrique *.afm des polices sont également installés dans le même fichier que les fichiers *.pfa ou *.pfb.
Linux Livre Page 126 Mardi, 23. septembre 2008 1:05 13
126
LINUX
Il n’est pas possible de garantir un rendu exactement identique d’un même document sur deux ordinateurs différents. Suivant les polices installées, la mise en page peut être très légèrement modifiée : lorsque la présentation doit absolument être identique quel que soit le lecteur, vous devez transmettre vos documents au format PDF.
8.3 Saisie de formule
Tableur (OpenOffice Calc)
Pour la saisie de formules complexes, vous pouvez vous faire aider d’un assistant par le biais du menu Insertion > Fonction. Pour l’utilisateur plus avancé, Insertion > Liste des fonctions peut se révéler encore plus profitable : ce menu ouvre une fenêtre donnant l’ensemble des formules et fonctions, parmi lesquelles vous pouvez choisir d’un double-clic pour les insérer dans la cellule ou formule en cours. Les formules présentent des emplacements réservés pour indiquer les paramètres. Comme dans tout tableur, vous pouvez renseigner les références à des cellules soit de façon relative (en fournissant les indications de "déplacement" par rapport à la cellule en cours), soit de façon absolue (en donnant les coordonnées de la cellule cible de manière fixe, ce qui maintient leur valeur même par copier-coller). Pour basculer du mode relatif au mode absolu, utilisez la combinaison de touches Maj+F4.
Format de cellule
Comme dans Writer, Calc vous propose l’aide de Styles et mise en forme pour assurer la mise en forme des cellules. Pour appeler ou fermer la fenêtre Styles et mise en forme, utilisez la touche F11. Vous pouvez également préciser le format d’une cellule par le biais du menu Format > Cellule, en particulier pour gérer la présentation des données numériques de différents types.
Fonctions d’analyse de données
OpenOffice propose une longue liste de fonctions permettant d’analyser de grands volumes de données. La condition préalable à remplir pour cela, généralement vérifiée, est que les données doivent figurer dans un tableau d’un seul tenant. Si ce n’est pas le cas (par exemple à cause de lignes ou de colonnes vides), vous pouvez utiliser avec profit le menu Données > Définir la plage. • Données > Trier vous permet de trier les données. Il est intéressant de noter que vous pouvez fournir plusieurs critères de tri (le second critère étant utilisé en cas d’égalité sur le premier critère). • Données > Filtre > AutoFiltre vous permet de réduire les lignes visibles dans le tableau à celles répondant à un critère donné. • Données > Sous-totaux vous permet de partager le tableau en groupes suivant trois critères au maximum et, pour chaque groupe, de calculer les sous-totaux correspondants. Ceci entraîne l’affichage en marge (ligne ou colonne) d’icônes + ou – permettant de déplier ou de replier les groupes ainsi constitués. Pour ne plus afficher les sous-totaux, cliquez sur le bouton Supprimer de la boîte de dialogue Sous-totaux. • Données > Plan est une fonctionnalité comparable aux Sous-totaux. Vous pouvez y regrouper des ensembles de lignes ou de colonnes. Les boutons + et – vous permettent de déplier ou de replier les groupes correspondants. La différence avec les Sous-totaux est toutefois que le plan est généré manuellement et qu’aucun sous-total n’est calculé.
Linux Livre Page 127 Mardi, 23. septembre 2008 1:05 13
127
OPENOFFICE
Format de page
Impression
• Données > Pilote de données est une fonctionnalité avancée. L’idée sous-jacente est d’utiliser au moins deux critères pour classer les données et de calculer des sous-totaux intermédiaires. Calc connaît deux formes de présentation de page : Affichage > Normal correspond à l’affichage habituel dans lequel une seule page est visible. Affichage > Aperçu des sauts de page propose toutefois une vue plus synthétique : l’ensemble du tableau est présenté et les limites de page sont clairement indiquées. De surcroît, le numéro de chaque page apparaît en gris en surimpression. Pour basculer entre les orientations Portrait et Paysage, ainsi que pour configurer de nombreuses autres options, vous devrez passer par le menu Format > Page. Ce paramétrage vaut pour l’ensemble du fichier (donc pour toutes les feuilles de calcul). Si vous souhaitez une mise en page spécifique pour certaines feuilles de calcul, vous devrez faire appel à Styles et mise en forme pour créer des styles de page particuliers correspondant à votre besoin. Par défaut, toutes les feuilles de calcul non vides sont imprimées. Si vous ne souhaitez imprimer que la feuille de calcul active ou les feuilles de calcul sélectionnées, activez l’option Imprimer uniquement les feuilles sélectionnées dans la boîte de dialogue Outils > Options > Calc > Impression. Si vous ne souhaitez pas imprimer la totalité de la feuille de calcul, vous pouvez déterminer par le biais de Format > Zones d’impression la section à imprimer. La zone d’impression définie couramment apparaît alors en couleur dans le mode d’affichage Aperçu des sauts de page. Pour l’impression d’un document sur plusieurs pages, il est souhaitable de répéter sur chaque page les cellules de titres pour les lignes et colonnes. Pour ce faire, configurez en conséquence les champs Ligne à répéter et Colonne à répéter dans la boîte de dialogue Format > Zones d’impression > Éditer.
8.4
Premiers pas
Présentation (OpenOffice Impress)
Impress est le composant du paquetage OpenOffice qui permet de créer des présentations. Parmi les points forts de ce programme, citons par exemple les nombreux formats d’export, qui facilitent grandement l’échange de présentations. Toutefois, les débuts avec Impress peuvent se révéler peu intuitifs. Lorsque vous lancez Impress, un assistant vient à votre aide pour la création de nouvelles présentations. Pour faire ses premiers pas dans Impress, cet assistant est plutôt pratique. Choisissez à la première étape Présentation vierge, sélectionnez à la seconde l’arrière-plan qui vous convient et concluez le processus en cliquant sur le bouton Créer. Si l’assistant, à la longue, vous paraît pesant, vous pouvez désactiver son affichage automatique dans la boîte de dialogue Outils > Options > Impress > Général. Le travail de création d’une nouvelle présentation consiste en fait à structurer les pages (diapositives) de la présentation et à y insérer texte et images. Pour créer une nouvelle diapositive, choisissez Insertion > Diapo ou cliquez sur le bouton correspondant dans la barre d’outils.
Linux Livre Page 128 Mardi, 23. septembre 2008 1:05 13
128
LINUX
Pour choisir la mise en page de la diapo, il vous suffit de cliquer sur l’icône correspondante dans le panneau Mise en page qui se trouve à droite de la fenêtre (voir Figure 8.2). Cette mise en page détermine la structure globale de la page. Le panneau de droite de la fenêtre (panneau des tâches) vous permet non seulement de définir la mise en page de la diapositive en cours, mais également de gérer des transitions et animations ou de définir des pages maîtresses.
Figure 8.2 La fenêtre Impress standard.
Les mises en page prédéfinies sont en fait des variations de structures constituées de quatre éléments de base : titre, sous-titre, texte (ou plan) et objets à insérer (images, tableaux Calc, etc.). Avant de pouvoir saisir un texte dans un cadre, vous devez cliquer sur ce cadre. Pour les listes à puces, il existe une particularité : si vous placez le curseur en début de ligne ou que vous sélectionniez plusieurs lignes, vous pouvez modifier le niveau d’indentation et le type de puce par le biais des touches Tab et Maj+Tab. La taille de la police et la mise en forme du texte sont également modifiées en conséquence. Pour saisir un texte sans puce, cliquez sur le bouton (Dés)activer les puces dans la barre d’outils. Le panneau de gauche de la fenêtre vous permet de naviguer rapidement d’une diapositive à l’autre. Vous pouvez par ailleurs y définir pour chaque page un intitulé plus parlant : pour ce faire, cliquez sur la diapositive concernée du bouton droit de la souris et choisissez Renommer la diapo. Visionner le diaporama
Pour démarrer la présentation, il vous suffit d’appuyer sur la touche F5. Dès que la présentation est lancée, vous pouvez la parcourir à l’aide des touches Entrée, Espace ou des flèches du clavier. Un simple clic de souris vous amène à la page suivante, le bouton droit de la souris, à la page précédente. Echap met fin à la présentation en cours. La combinaison de touches Maj+Ctrl+F5 permet d’afficher la fenêtre de navigation en cours de présentation, ce qui est utile si vous souhaitez passer à une diapositive ultérieure sans devoir parcourir toutes les pages intermédiaires. Normalement, le changement de page nécessite un clic de souris ou une touche du clavier. Pour automatiser le passage à la diapositive suivante, choisissez la vue Trieuse de diapositives. Dans le panneau des tâches, choisissez alors le domaine Transition et activez-y l’option
Linux Livre Page 129 Mardi, 23. septembre 2008 1:05 13
OPENOFFICE
Mise en forme
Pages maîtresses
Arrière-plan
Animations
Impression
Export PDF
129
Automatiquement après : vous pouvez alors définir la durée d’affichage de la diapositive pour chaque page. Si cette durée doit être identique pour toutes les diapositives, cliquez sur le bouton Appliquer à toutes les diapos. La mise en forme des textes et la gestion de l’arrière-plan pour l’ensemble des diapositives suivent des règles différentes de celles de Calc et de Writer. Vous devez en particulier vous familiariser avec l’utilisation des styles prédéfinis. Ceux-ci sont fortement liés aux cadres de texte. Ainsi, un titre se verra toujours appliquer le style Titre et il ne sera pas possible de lui appliquer un autre style. Cela vaut aussi pour les plans et les différents niveaux de puces : pour en changer l’apparence, placez-vous en début de ligne et utilisez la touche Tab. Les pages maîtresses déterminent l’apparence commune à toutes les diapositives d’une présentation : arrière-plan, taille et couleur des polices, etc. Vous pouvez définir ces paramètres pour chaque diapositive mais il est plus efficace de les établir pour l’ensemble de la présentation par le biais des pages maîtresses. Pour sélectionner la page maîtresse à utiliser, il vous suffit de cliquer dessus. Pour modifier la présentation de la page maîtresse, passez en mode d’édition grâce à Affichage > Arrière-plan > Masque des diapositives (autre terme pour désigner les pages maîtresses). Ce masque présente l’ensemble des styles utilisés dans la présentation, et chaque modification apportée ici sera répercutée sur l’ensemble du document. L’arrière-plan est normalement commun à toutes les diapositives d’une présentation. Pour choisir un arrière-plan, le plus simple est de passer par la boîte de dialogue Format > Page > Arrière-plan, et ce pour une diapositive individuelle ou pour l’ensemble de la présentation grâce à la page maîtresse. La boîte de dialogue vous donne le choix entre une couleur simple, un dégradé, des hachures ou une image Bitmap. Impress vous permet de mettre en place des effets d’animation sur deux niveaux : d’une part pour la transition entre deux diapositives, d’autre part pour l’affichage d’objets au sein d’une page. Pour configurer les transitions entre diapositives, utilisez la section Transitions du panneau des tâches ; pour ajouter des animations dans une diapositive, passez par la section Animation personnalisée. L’impression des présentations est plutôt simple : passez par les menus Fichier > Imprimer, choisissez dans les Options ce que vous souhaitez imprimer, et vous voilà paré ! Quelques remarques toutefois sur les options d’impression : • Contenu définit ce qui doit être imprimé. Dessin inclut les diapositives de la présentation. Notes permet d’imprimer les notes associées aux diapositives, Brochure, de présenter plusieurs pages par feuille (par défaut, 4). Enfin, Plan permet d’afficher la vue Plan du diaporama. • Qualité définit la qualité d’impression de diapositives couleur sur une imprimante noir et blanc. L’option Noir et blanc imprime, indépendamment de tout autre paramétrage, le texte en noir sur fond blanc. • Options de la page permet d’optimiser l’échelle des diapositives (Adapter au format de la page) ou l’impression de brochures à plier (Prospectus). Pour lancer l’export PDF, passez par les menus Fichier > Exporter au format PDF ou, plus rapidement, par le bouton PDF qui figure dans la barre d’outils. Impress génère alors un fichier PDF comprenant sur chaque page une diapositive de la présentation.
Linux Livre Page 130 Mardi, 23. septembre 2008 1:05 13
130
LINUX
8.5
Bases de données (OpenOffice Base)
Le composant Base est une nouveauté d’OpenOffice 2. C’est aussi la raison pour laquelle ce composant est loin d’avoir atteint la maturité des autres composants d’OpenOffice. Sur certaines distributions, Base doit même être installé comme paquetage complémentaire distinct pour que les fonctionnalités de base de données soient effectivement disponibles. Quoi qu’il en soit, Java doit être préalablement installé, car de nombreuses fonctionnalités d’accès aux bases de données reposent sur lui.
Figure 8.3 Le composant de gestion de bases de données Base.
Assistant de base de données
Tables
Base vous permet aussi bien de créer une nouvelle base de données dans le format propre à OpenOffice que d’établir une connexion à une base de données existante (en particulier des bases MySQL). Pour ouvrir un nouveau projet de base de données, passez par les menus Fichier > Nouveau > Base de données. La première boîte de dialogue vous propose soit de créer une nouvelle base, soit d’ouvrir un fichier existant, soit d’accéder à une base existante. Les boîtes de dialogue suivantes dépendent du choix effectué ici et vous permettent au besoin de tester la configuration de votre ordinateur (un pilote spécial est par exemple nécessaire pour se connecter à une base de données MySQL : l’assistant peut vous servir à vérifier que ce pilote est bien installé). Ce n’est qu’une fois toutes les étapes de l’assistant parcourues que la fenêtre de Base apparaît. Elle intègre les quatre modules Tables, Requêtes, Formulaires et Rapports dans la fenêtre principale. Si vous avez ouvert un fichier existant ou accédé à une base de données existante, les tables correspondantes apparaissent également sur cette page. Vous devrez en revanche créer vous-même les requêtes et autres objets de bases de données. Vous pouvez afficher le contenu de la table courante en sélectionnant Document dans la liste déroulante qui apparaît en bas à droite de la fenêtre. Le module Tables fournit une liste de toutes les tables et vues disponibles. Diverses possibilités d’édition vous sont offertes, par exemple : • Ouvrir une table. Un double-clic sur le nom de la table en ouvre la vue. Vous pouvez alors parcourir celle-ci, insérer, modifier ou effacer des données. Et également sélectionner
Linux Livre Page 131 Mardi, 23. septembre 2008 1:05 13
OPENOFFICE
Requêtes
Formulaires, rapports et fonctionnalités additionnelles
131
des lignes dans la table à l’aide des touches Ctrl ou Maj pour les copier dans le pressepapiers ou les insérer par glisser-déposer dans d’autres documents OpenOffice. • Créer une nouvelle table. Vous pouvez créer une nouvelle table, au choix, à l’aide d’un éditeur simple (mode ébauche) ou à l’aide d’un assistant. L’assistant vous permet de choisir parmi différentes configurations de tables prédéfinies, ce qui peut vous économiser un temps certain. • Personnaliser une table. Le menu contextuel Modifier vous permet d’accéder à la vue d’une table en mode ébauche. Vous pouvez alors y insérer des colonnes, en modifier ou en supprimer, etc. • Copier des données dans le presse-papiers. L’entrée de menu contextuel Copier copie l’ensemble des données de la table courante dans le presse-papiers. Il est alors possible d’insérer ces données dans d’autres documents OpenOffice. • Créer une nouvelle vue. Ce point conduit à un éditeur de requêtes pour créer une nouvelle requête. Une nouvelle vue sera alors créée à partir de cette requête et stockée dans la base de données. • Supprimer une table ou une vue. Le menu contextuel vous permet aussi d’effacer des objets. Attention au fait que, si vous avez établi une connexion sur une base de données existante et que vous en effaciez une table, celle-ci est irrémédiablement détruite : l’opération s’effectue bien dans la base et non sur une copie locale des données ! Le module Requêtes est l’élément le plus intéressant de Base : il vous permet de créer de nouvelles requêtes à l’aide d’un assistant ou en mode ébauche. L’assistant n’est toutefois adapté que pour construire des requêtes traitant des données qui proviennent d’une unique table. Le mode ébauche est donc en général plus adapté. Dans la fenêtre de création de requête, vous pouvez insérer par double-clic toutes les tables dont les données doivent être utilisées dans la requête. L’étape suivante consiste à transférer par glisser-déposer tous les champs de jointure entre les tables. Les modules Formulaires et Rapports, ainsi que le menu Outils, vous donnent accès à de nombreuses fonctionnalités supplémentaires que nous ne pouvons qu’effleurer ici. Le problème est que ces fonctionnalités sont relativement nouvelles et manquent donc de maturité, ce qui peut conduire à des difficultés même dans des situations très simples. Le module Formulaires vous permet de créer des formulaires de saisie et d’édition. De tels formulaires facilitent la saisie et l’édition des données de la base, plutôt que travailler directement dans les tables. Pour la création de formulaires, Base vous offre le choix entre le mode ébauche et un assistant (recommandé pour les utilisateurs débutants). Le module Rapports vous permet de définir un rapport de base de données à l’aide d’un assistant. Grâce aux rapports, vous présenterez de manière plus agréable une table, une vue ou une requête. Les rapports ne peuvent travailler que sur les données provenant d’un même objet de base de données. Si vous souhaitez générer un rapport sur des données provenant de plusieurs tables, vous devez tout d’abord créer une requête appropriée puis en extraire un rapport. Il n’est pas possible de modifier ultérieurement un rapport : le menu contextuel Modifier ouvre certes le rapport dans Writer, mais vous ne pouvez y apporter que des modifications mineures de mise en page.
Linux Livre Page 132 Mardi, 23. septembre 2008 1:05 13
132
Vue des sources de données
LINUX
Outils > Relations devrait vous conduire à un éditeur dans lequel vous pouvez paramétrer les jointures entre les tables d’une base de données si jamais Base ne les reconnaît pas par lui-même. Ce menu conduit toutefois dans divers cas à une erreur du type "La base de données ne supporte pas les relations !". Outils > Gestion des utilisateurs affiche une boîte de dialogue pour la gestion des utilisateurs dans MySQL, mais dont les informations sont généralement erronées. Mon expérience a montré que cette boîte de dialogue cause plus de mal que de bien : tenez-vous-en donc à l’écart ! Indépendamment du composant Base, il existe dans OpenOffice une vue des sources de données. Vous pouvez faire apparaître ou disparaître cette vue à l’aide de la touche F4 ou du menu Affichage > Sources de données et ainsi insérer des informations depuis des bases de données externes dans Calc, Writer, etc. Cette vue présente toutes les sources de données connues de Base. Pour définir une nouvelle source de données, passez par le menu Fichier > Nouveau > Base de données. Vous pourrez au besoin définir la correspondance entre le nom de la source de données et le fichier Base grâce à la boîte de dialogue Outils > Options > Base > Bases de données. Dans cette vue des sources de données, vous pouvez sélectionner une table ou une requête et travailler par double-clic. Vous insérerez la table complète ou certaines lignes seulement (préalablement sélectionnées avec la souris et les touches Ctrl ou Maj) dans une feuille de calcul ou un document texte.
8.6
Gestion du code VBA
Protection contre les virus
Programmation de macros
OpenOffice est doté depuis longtemps d’un langage de programmation comparable à Basic (autrefois nommé StarBasic). Vous pouvez intégrer du code en langage Basic à n’importe quel fichier OpenOffice. Le dialecte Basic d’OpenOffice n’est toutefois pas compatible avec le célèbre VBA de MS-Office. L’accès aux divers objets d’OpenOffice (documents, paragraphes, feuilles de calcul, cellules, etc.) intervient par le biais de l’API (Application Programming Interface) StarOffice. L’API peut être utilisée aussi bien avec du code Basic qu’avec divers autres langages de programmation (par exemple Java ou C++). Cette section se contente de dresser les grandes lignes de la programmation Basic pour OpenOffice. Vous trouverez plus d’informations sur la programmation de macros en Basic dans le manuel en ligne ainsi que sur les sites web suivants : http://scripting.openoffice.org/ ; http://api.openoffice.org/ ; http://udk.openoffice.org/ ; http://www.pitonyak.org/oo.php/ OpenOffice introduit normalement dans le code VBA, à l’import de documents MS-Office, des commentaires de manière à rendre le code inopérant. À l’export, ces commentaires sont supprimés de manière à permettre à nouveau l’utilisation du code VBA sous MS-Office. Calc constitue toutefois une exception : grâce à une extension développée par Novell, les versions actuelles de Calc peuvent exécuter directement du code VBA (ce qui n’est toutefois pas exempt de problèmes). On ne sait pas encore si d’autres composants OpenOffice deviendront compatibles avec VBA à l’avenir. Les macros offrent des possibilités d’utilisation très intéressantes mais peuvent également servir à programmer des virus ou être employées pour d’autres buts peu louables (les macros ayant accès au système de fichiers dans les limites autorisées par les droits d’accès,
Linux Livre Page 133 Mardi, 23. septembre 2008 1:05 13
133
OPENOFFICE
Enregistrer une macro
Exécuter des macros Raccourcis clavier Modifier une macro
cela représente par exemple un danger potentiel : n’exécutez jamais une macro d’origine inconnue si vous utilisez OpenOffice en tant qu’utilisateur root !). À l’ouverture d’un document contenant du code Basic, OpenOffice demande systématiquement si le code doit être exécuté. Vous pouvez d’ailleurs indiquer si le répertoire d’où provient le fichier est considéré comme sûr, ce qui conduit à ne plus afficher l’avertissement pour tout fichier de ce répertoire. Il est possible de modifier tous ces paramètres (et d’autres) par le biais de la boîte de dialogue Outils > Options > OpenOffice > Sécurité. L’avertissement apparaît également à l’import de fichiers MS-Office, même s’il n’a guère de sens vu que le code VBA dans son ensemble est automatiquement commenté. Le menu Outils > Macros > Enregistrer une macro vous permet de consigner dans une nouvelle macro toutes les opérations conduites à partir de ce moment. L’enregistrement démarre automatiquement et se termine lorsque vous cliquez sur le bouton Terminer l’enregistrement. Vous devez ensuite indiquer dans quel fichier (parmi tous ceux ouverts) la macro doit être enregistrée. Dans le fichier concerné, choisissez la bibliothèque de votre choix (il peut en exister plusieurs mais Standard est toujours présente) puis renseignez le nom choisi pour le module. La structuration en bibliothèques et modules permet de faciliter l’organisation d’un code volumineux. Vous pouvez également enregistrer les macros dans Mes macros plutôt que dans les fichiers : celles-ci sont alors toujours disponibles, indépendamment du fichier OpenOffice actuellement ouvert. En interne, ces macros sont enregistrées sous la forme d’un fichier de texte dans ~/.openoffice/user/basic/Standard. Outils > Macros > Exécuter la macro vous conduit à une boîte de dialogue où vous pouvez sélectionner la macro de votre choix parmi toutes celles disponibles et lancer son exécution. La boîte de dialogue Outils > Personnaliser > Clavier vous permet d’associer à chaque macro un raccourci clavier. Mes macros y sont classées dans User. Si vous souhaitez consulter ou modifier le code d’une macro, choisissez la macro dans Outils > Macros > Gérer les macros et cliquez ensuite sur le bouton Éditer. Vous êtes alors conduit à l’environnement de développement Basic, où vous pouvez choisir la bibliothèque et le fichier souhaités. Vous y créerez également vos propres macros.
8.7 Sun StarOffice
Alternatives à OpenOffice
OpenOffice est un rejeton de StarOffice. Ce dernier est une suite bureautique développée il y a déjà plusieurs années par la société Star Division, en Allemagne. En 1999, Sun a racheté StarOffice et a, par la suite, rendu librement disponible le code source de StarOffice. Depuis, aussi bien des employés de Sun que d’innombrables programmeurs bénévoles travaillent à son développement. Il existe à l’heure actuelle plusieurs versions de la suite bureautique : les deux plus populaires sont la variante Open Source présentée dans ce chapitre, OpenOffice (sous licence LGPL), et son homologue commerciale Sun StarOffice. Ces deux versions sont de très loin les plus compatibles l’une avec l’autre, StarOffice intègre toutefois des composants supplémentaires (entre autres une meilleure correction orthographique, des fontes supplémentaires, des cliparts, etc.). De surcroît, une assistance traditionnelle est disponible avec StarOffice, suivant le
Linux Livre Page 134 Mardi, 23. septembre 2008 1:05 13
134
KOffice
Gnome Office
CrossOver Office et VMware
Scribus
LINUX
souhait de nombreuses sociétés. Avec OpenOffice, lorsque vous rencontrez un problème, Internet est a priori votre seule source d’aide. Ces bonus ne sont naturellement pas gratuits. Il existe toutefois toujours une version d’évaluation gratuite à télécharger sur le site de StarOffice : http://wwws.sun.com/software/star/staroffice KOffice est la suite bureautique de l’environnement KDE. Les composants essentiels (kword, kspread et kpresenter) ont atteint une certaine maturité. Il existe de nombreux autres composants (par exemple pour concevoir des diagrammes ou gérer des bases de données) qui n’en sont encore qu’à leurs balbutiements. De façon générale, la compatibilité avec Microsoft Office est moindre que celle d’OpenOffice. Cela ne concerne pas uniquement l’import et l’export de fichiers, mais également le paradigme global d’utilisation. On remarque, avec la conception KOffice, qu’il s’agit d’un développement entièrement nouveau (ce qui va de pair avec de nombreux avantages). La version actuelle de KOffice prend en charge, outre un format de fichier propre, le format OpenDocument d’OpenOffice / StarOffice. La force de KOffice réside dans son intégration impeccable à l’environnement KDE. La collaboration entre composants est également remarquable et se fait particulièrement sentir à l’intégration de différents types de documents dans un autre. En comparaison avec OpenOffice, les composants KOffice reposent sur des programmes notoirement plus petits, qui se lancent plus rapidement et qui sont moins exigeants vis-à-vis des ressources matérielles. http://www.koffice.org/ Au contraire de ceux d’OpenOffice et de KOffice, les composants de Gnome Office sont des programmes individuels qui n’ont que peu à voir entre eux. Il n’existe ni format de fichier unifié ni un paradigme d’utilisation commun. Le tableur gnumeric est extrêmement avancé, il se distingue par une grande compatibilité avec Microsoft Excel et propose de très nombreuses fonctionnalités auxiliaires pour les mathématiques financières. Le programme de traitement de texte abiword est également très utilisable. http://www.gnome.org/gnome-office/ Malgré les nombreux paquetages bureautiques Linux, il existe des utilisateurs qui ne peuvent ou ne veulent renoncer à la suite Microsoft Office d’origine. La solution qui semble être la plus confortable dans ce cas est proposée par la société CodeWeaver sous la forme du produit commercial CrossOver. Il s’agit non pas d’une suite bureautique à proprement parler mais d’une version spéciale de l’émulateur Windows WINE améliorée au point que la plupart des composants de Microsoft Office 97, 2000, XP et 2003 peuvent être installés et utilisés sans problème. Une autre alternative consiste à configurer une machine virtuelle sous Linux à l’aide de KVM, Xen, VirtualBox ou VMware et d’y installer Windows. Cette solution propose une bien meilleure compatibilité mais elle est plus coûteuse. Vous aurez besoin de licences pour Microsoft Windows, Microsoft Office, sans oublier VMware. Vous trouverez à partir du Chapitre 31 des astuces concrètes pour les logiciels de virtualisation cités ici. Scribus est, à l’heure actuelle, le logiciel de publication le plus abouti de Linux. Si vous souhaitez concevoir une brochure, un dossier, un journal simple, vous devriez jeter un coup d’œil à ce programme. Il est livré avec la majorité des distributions Linux. Vous en trouverez la dernière version ainsi que la documentation à l’adresse suivante : http://www.scribus.net/
Linux Livre Page 135 Mardi, 23. septembre 2008 1:05 13
9
Appareils photo numériques, numérisation, gestion des photos Ce chapitre décrit comment, sous Linux, transférer des images depuis un appareil photo numérique ou un scanner et comment gérer vos photographies. Pour ces trois tâches et, en particulier, pour la gestion des photos, il existe de très nombreux programmes. Après quelques informations introductives sur les appareils photo numériques et la numérisation, je présenterai un peu plus en détail les logiciels suivants : • gThumb, import de photos et gestion d’images pour Gnome ; • digiKam, import de photos et gestion d’images pour KDE ; • F-Spot, gestion d’images basée sur la bibliothèque MONO ; • KPhotoAlbum, gestion d’images pour KDE ; • XSane, interface de numérisation indépendante de l’environnement de bureau. Pour le choix du programme, ne vous limitez pas aux outils par défaut proposés par votre environnement de bureau ! Rien n’interdit, par exemple, d’installer sous Gnome un programme KDE pour numériser des images ou de mettre en place sous KDE le programme F-Spot prévu pour l’univers Gnome.
Programmes supplémentaires
La place manque ici pour évoquer tous les logiciels de gestion et de traitement de photos. Le tableau suivant vous donne un aperçu rapide de quelques programmes disponibles. Nom eog
Site web http://www.gnome.org/projects/eog/
Feh GnomeScan
http://linuxbrit.co.uk/feh/ http://live.gnome.org/GnomeScan
Gqview Gwenview Kooka Kuickshow Picasa
http://gqview.sourceforge.net/ http://gwenview.sourceforge.net/ http://kooka.kde.org http://kuickshow.sourceforge.net/ http://picasa.google.fr/
xv
http://www.trilon.com/xv/
Description afficheur de photos Gnome, peu de fonctionnalités afficheur de photos orienté ligne de commande interface de numérisation pour Gnome, pas encore arrivée à maturité afficheur de photos Gnome afficheur de photos KDE interface de numérisation pour KDE afficheur de photos KDE, plus maintenu gestionnaire d’images de Google, gratuit mais non open-source afficheur de photos antédiluvien, non open-source
Pour gérer vos photos, vous pouvez naturellement aussi faire appel à votre gestionnaire de fichiers (Nautilus, Konqueror). Toutefois, ces programmes proposent à l’heure actuelle moins de fonctionnalités de traitement et d’options de présentation. Si vous souhaitez approfondir le sujet de la gestion des images et aller au-delà de l’optimisation du contraste ou d’un redimensionnement de vos photos, vous devriez jeter un coup
Linux Livre Page 136 Mardi, 23. septembre 2008 1:05 13
136
LINUX
d’œil au prochain chapitre. Nous y présenterons très rapidement Gimp, le programme de traitement d’images le plus avancé sous Linux. Il propose des fonctionnalités très comparables à celles d’Adobe Photoshop ! Si vous cherchez à automatiser la conversion ou certains traitements sur de grands volumes d’images, le Chapitre 15 devrait vous être profitable. La quasi-totalité des programmes présentés ici comptent des fonctionnalités d’impression, dont les limitations sont toutefois rapidement atteintes : en particulier, l’impression sans bord sur du papier photo ou l’impression de plusieurs photos sur une même page posent fréquemment des problèmes. Le logiciel gnome-photo-printer (malheureusement pas encore totalement arrivé à maturité) peut vous aider sur ce point.
9.1
Appareils photo numériques
Cette section traite non pas de l’utilisation des appareils photo numériques, mais du transfert des images depuis l’appareil vers l’ordinateur Linux. La plupart des appareils photo utilisent pour cela un câble USB. Le protocole de transfert des données est toutefois loin d’être standard parmi les fabricants d’appareils photo. Ainsi, on peut rencontrer : • Une connexion USB de type lecteur. C’est le cas le plus simple pour le transfert de données. Linux considère alors l’appareil photo comme un disque dur ou une clé USB. • Le protocole PTP. De nombreux appareils photo prennent également en charge le protocole PTP (Picture Transfer Protocol). Celui-ci propose non seulement des commandes pour le transfert des photos, mais également des fonctionnalités de pilotage (par exemple pour déclencher une photographie depuis l’ordinateur). • Un protocole propriétaire. Il existe enfin certains modèles d’appareils photo utilisant uniquement un protocole propriétaire. Parmi ces appareils, bon nombre de modèles populaires sont pris en charge sous Linux, mais ce n’est pas le cas de tous. Même si votre appareil photo n’est pas géré par Linux, le transfert des images reste possible. Vous aurez pour cela besoin d’un lecteur de cartes externe qui pourra alors être vu par Linux comme un disque dur externe. Cette méthode a par ailleurs l’avantage de ne pas solliciter la batterie de votre appareil photo. Pour le transfert des images, vous aurez le choix entre différents programmes Linux suivant le protocole utilisé. Pour les appareils de la première catégorie, n’importe quel gestionnaire de fichiers peut faire l’affaire : l’appareil doit toutefois préalablement être monté dans le système de fichiers. Dans de nombreuses distributions, une fenêtre du gestionnaire de fichiers apparaît automatiquement au branchement de l’appareil photo ou du lecteur de cartes, ainsi qu’une icône de raccourci sur le bureau. Si ce n’est pas le cas, vous devrez monter manuellement l’appareil photo dans l’arborescence des répertoires en tant que lecteur USB (voir le Chapitre 23). Le navigateur universel de KDE, Konqueror, est également en mesure d’interpréter directement le protocole PTP. Il vous suffit pour cela de donner l’adresse camera:/. gphoto2
Pour communiquer avec les appareils photo PTP ou avec ceux utilisant un protocole propriétaire, la bibliothèque gphoto2 met à disposition toutes les fonctionnalités requises. Vous pouvez utiliser cette bibliothèque directement par le biais de la commande éponyme.
Linux Livre Page 137 Mardi, 23. septembre 2008 1:05 13
APPAREILS PHOTO NUMÉRIQUES, NUMÉRISATION, GESTION DES PHOTOS
Images RAW
Par exemple, la commande gphoto2 --auto-detect tente de reconnaître l’appareil photo branché et affiche les informations correspondantes. gphoto2 --get-all-thumbnails transmet vers le répertoire local des aperçus de taille réduite de toutes les images stockées dans l’appareil photo. Il est intéressant de noter qu’avec de nombreux appareils photo gphoto2 -capture-image permet également de prendre une photographie en ligne de commande, de sorte que l’appareil photo peut être utilisé en tant que webcam ou pour effectuer une surveillance. Vous trouverez davantage d’informations relatives à gphoto2 sur le site web suivant : http://gphoto.sourceforge.net/ En pratique, il n’est toutefois pas courant d’utiliser directement les fonctions de gphoto. gThumb et digiKam constituent des interfaces graphiques confortables pour Gnome et KDE et facilitent grandement l’import des images. Ces deux programmes seront rapidement présentés dans la suite. La plupart des appareils photo numériques enregistrent les images au format JPEG, qui représente un bon compromis entre qualité de l’image et taille du fichier. Certains appareils permettent également d’enregistrer les images dans un format dit RAW. Il s’agit de formats propriétaires garantissant qu’aucune information relative à l’image ne sera perdue. Toutefois, les fichiers RAW sont généralement très volumineux et ne peuvent être ouverts qu’avec des logiciels spéciaux. Assez peu de logiciels Linux d’affichage ou de gestion des photographies parviennent à gérer correctement les fichiers RAW. La commande dcraw issue du paquetage éponyme vous permet de convertir manuellement les fichiers RAW vers d’autres formats. Si vous travaillez avec Gimp, le paquetage complémentaire gimp-dcraw fournit un confort supplémentaire. Gimp peut alors charger directement les fichiers RAW de la majorité des fabricants d’appareils photo. Vous trouverez davantage d’informations sur dcraw à la page suivante : http://www.cybercom.net/~dcoffin/dcraw/
9.2
Configuration de SANE
137
Numérisation
Les scanners existant à l’heure actuelle sont, pour la plupart, connectés par une interface USB ; les anciens modèles utilisaient également les ports parallèle ou SCSI. Fondamentalement, Linux peut prendre en charge ces trois types de connexions, mais c’est le modèle de scanner qui détermine s’il pourra être géré correctement par Linux ou non. Renseignez-vous impérativement au moment de l’achat pour savoir si l’appareil est compatible avec Linux : http://www.sane-project.org/sane-supported-devices.html C’est le paquetage SANE (Scanner Access Now Easy) qui assure l’accès au scanner. Dans de nombreux cas, votre scanner sera reconnu dès le branchement par le programme de numérisation (XSane ou Kooka, par exemple). Si ce n’est pas le cas, vous devrez préalablement configurer SANE. Sur certaines distributions, vous disposez d’outils de configuration pour vous aider dans cette tâche (par exemple, sur SUSE, le module YaST Matériel > Scanner).
Linux Livre Page 138 Mardi, 23. septembre 2008 1:05 13
138
LINUX
Si aucun outil de configuration de ce type n’est disponible, vous devrez modifier manuellement le fichier de configuration situé dans le répertoire /etc/sane.d/*. Ce répertoire contient un fichier pour chaque fabricant de scanners, dans lesquels vous ne devriez normalement trouver que quelques entrées à chaque fois. Les quelques lignes suivantes montrent par exemple le contenu du fichier epson.conf. Elles suffisent pour reconnaître tous les scanners USB et SCSI de la marque Epson pris en charge par le système. # /etc/sane.d/epson.conf usb scsi EPSON scsi "EPSON SC"
Les appareils très récents peuvent poser des problèmes si leur numéro d’identifiant ne figure pas encore dans la base de données USB de la base de matériel pour Linux. Dans de tels cas, vous devrez déterminer le numéro d’identifiant à l’aide de la commande lsusb puis, comme dans l’exemple qui suit, ajouter une ligne dans le fichier de configuration concerné : utilisateur$ lsusb Bus 004 Device 001: ID 0000:0000 Bus 003 Device 001: ID 0000:0000 Bus 002 Device 002: ID 04b8:010b Seiko Epson Corp. Perfection 1240 ... # Complément dans /etc/sane.d/epson.conf usb 0x04b8 0x010b
Du moment que le paquetage sane-utils est installé, les commandes sane-find-scanner et scanimage -L devraient désormais reconnaître le scanner : utilisateur$ sane-find-scanner No SCSI scanners found ... Found USB scanner (vendor=0x04b8 [EPSON], product=0x010b [Perfection1240]) at libusb:002:002 Your USB scanner was (probably) detected. It may or may not be supported by SANE. Try scanimage -L and read the backend’s manpage. user$ scanimage -L device `epson:libusb:002:002’ is a Epson Perfection1240 flatbed scanner
Sane ne prend en considération que les fichiers de fabricants figurant dans /etc/sane.d/dll.conf . Lorsque SANE ne reconnaît pas votre scanner alors qu’il doit en principe le prendre en charge (vérifiez bien ce point), vous devriez jeter un coup d’œil à dll.conf et y vérifier si le nom du fabricant de votre scanner n’est pas commenté. Numériser avec SANE
Normalement, vous ne communiquerez pas directement avec la bibliothèque SANE pour numériser des images, mais vous utiliserez une des interfaces utilisateur disponibles. La plus populaire est Xsane (voir un peu plus loin dans ce chapitre), mais il existe également Kooka pour KDE. Si vous souhaitez automatiser la numérisation par un script, vous trouverez la commande scanimage dans le paquetage sane-utils.
Linux Livre Page 139 Mardi, 23. septembre 2008 1:05 13
APPAREILS PHOTO NUMÉRIQUES, NUMÉRISATION, GESTION DES PHOTOS
9.3
Import de photographies
139
gThumb
Le programme gThumb était, jusqu’à la version 2.20 de Gnome, l’outil par défaut pour le transfert de photos depuis des appareils numériques ainsi que pour la gestion des images. Les forces de ce logiciel résident dans la gestion systématique des images qu’il propose : vous pouvez commenter, classer et insérer dans des catalogues toutes les images. Ces informations complémentaires peuvent par ailleurs faire l’objet de recherches. Lorsque l’environnement de bureau Gnome est correctement configuré et que votre appareil est reconnu, une boîte de dialogue apparaît automatiquement lorsque vous branchez l’appareil photo pour vous demander si vous souhaitez importer les images. Choisir Importer des photos lance alors le programme gThumb. Suivant le type d’appareil apparaît alors soit une boîte de dialogue, soit un aperçu des images disponibles (dont la génération peut prendre un certain temps). Pour transférer les images depuis l’aperçu vers le disque dur local, passez par le menu Fichier > Importer des photos. Dans la boîte de dialogue d’import, sélectionnez les photos à importer à l’aide de la souris ou de la combinaison de touches Ctrl+A (voir Figure 9.1). Par défaut, gThumb enregistre les photos importées dans un nouveau répertoire de votre dossier personnel, dont le nom est constitué à partir de la date et de l’heure courantes. En revanche, si vous renseignez une valeur dans le champ Film, les images seront enregistrées dans le dossier photos/ nom_du_film au lieu de cet emplacement par défaut. Vous pouvez ensuite affecter les photos importées à une ou à plusieurs catégories.
Figure 9.1 Importer des photos avec gThumb.
Linux Livre Page 140 Mardi, 23. septembre 2008 1:05 13
140
LINUX
En option, vous pouvez indiquer si les images doivent être effacées de l’appareil après leur transfert et si les noms de fichiers originaux doivent être conservés. Normalement, gThumb attribue aux fichiers de nouveaux noms de la forme 000001.jpg, 000002.jpg, etc. Lorsque vous devez importer un grand nombre de photos, il est possible que la caméra s’éteigne (par mesure d’économie d’énergie) au cours du transfert. S’ensuivent des messages d’erreur, des fichiers d’images défectueux ou vides. Une solution : effacez les fichiers problématiques de votre ordinateur, rallumez l’appareil photo et importez à nouveau les images dont le transfert a été interrompu. Avec de nombreux appareils photo, vous pouvez contourner le mode d’économie d’énergie en appuyant de temps à autre sur un des boutons de l’appareil durant le transfert. Si la boîte de dialogue n’apparaît pas automatiquement lorsque vous branchez un appareil photo (n’oubliez pas d’allumer l’appareil !), lancez le programme gThumb à la main et passez par le menu Fichier > Importer des photos ; cliquez alors sur l’icône en forme d’appareil photo et sélectionnez vous-même le modèle de votre appareil. Si vous ne trouvez ni votre appareil ni un modèle qui lui soit compatible dans la longue liste proposée, essayez l’option USB PTP Class Camera. Si cela ne donne aucun résultat, c’est que gThumb ne peut pas communiquer avec votre appareil. Dans ce cas, vous devrez lire directement le contenu de la carte mémoire à l’aide d’un lecteur de cartes. Gestion des images
gThumb connaît trois modes d’affichage, parmi lesquels vous pourrez basculer à l’aide des boutons correspondants, du menu Affichage ou des touches Alt+1 à Alt+3 : • L’affichage par dossiers. gThumb vous permet de sélectionner, dans le panneau de gauche, un répertoire du disque dur et affiche dans la partie droite un aperçu de toutes les photos qu’il contient (voir Figure 9.2). • L’affichage par catalogue. gThumb présente dans le panneau de gauche tous les catalogues et bibliothèques définis (dont nous parlerons davantage un peu plus loin) et, dans la partie droite, un aperçu de toutes les photos s’y trouvant. • L’affichage par image. gThumb présente une image en taille maximale. Les boutons Précédent et Suivant ou les touches Page précédente et Page suivante vous permettent de passer d’une photo à l’autre. Vous pouvez appliquer des traitements (correction des couleurs, redimensionnement, etc.) à l’image courante grâce aux commandes du menu Image.
Figure 9.2 Affichage par dossier avec la sous-fenêtre d’informations détaillées.
Linux Livre Page 141 Mardi, 23. septembre 2008 1:05 13
APPAREILS PHOTO NUMÉRIQUES, NUMÉRISATION, GESTION DES PHOTOS
141
L’affichage par dossier et par catalogue est adapté pour sélectionner et copier/déplacer/modifier plusieurs images. Ces vues fournissent également un bon aperçu lorsqu’il y a beaucoup d’images. Affichage > Afficher/Cacher > Aperçu de l’image vous permet d’ouvrir une sousfenêtre supplémentaire présentant au choix (à l’aide des icônes figurant à côté du nom du fichier) un aperçu de plus grande taille pour l’image sélectionnée, les propriétés EXIF du fichier (données de luminosité, contraste, etc.) ou encore un commentaire optionnel (voir Figure 9.2). Orienter correctement les photographies
La première étape dans le traitement d’un grand nombre de photos consiste généralement à corriger, le cas échéant, l’orientation des images. Suivant le niveau de sophistication de votre appareil photo, cela peut aller très vite ou nécessiter un certain travail manuel : • Tourner automatiquement les images. De nombreux appareils photo enregistrent, en même temps que la photo, la position dans laquelle celle-ci a été prise. Si c’est le cas de votre appareil, sélectionnez l’ensemble des images du dossier courant avec les touches Ctrl+A puis exécutez l’opération Outils > Pivoter les images : activez les options Apply to all images (appliquer à toutes les images) et Apply physical transform (appliquer la transformation physique) avant de cliquer sur le bouton Appliquer. • Pivoter manuellement les images. Si l’étape précédente n’a aucun effet, vous devrez intervenir manuellement et avez pour cela le choix entre deux manières de procéder. La méthode la plus simple consiste à sélectionner à nouveau l’ensemble des photos par le biais de Ctrl+A, puis d’exécuter Outils > Pivoter les images. Vous pouvez alors corriger l’orientation de l’image courante et enregistrer la modification à l’aide du bouton Appliquer. L’image suivante apparaît alors dans la boîte de dialogue. Pour les images qui n’ont pas besoin d’être corrigées, cliquez sur Appliquer sans pivoter préalablement l’image. De cette manière, vous parcourez l’ensemble des images et corrigez celles qui le nécessitent. Il est toutefois plus efficace de sélectionner préalablement toutes les images devant subir une rotation identique (par exemple 90˚ à droite). Appelez à nouveau Outils > Pivoter les images et corrigez la première image. Avant de cliquer sur le bouton Appliquer, activez l’option Apply to all images (qui devrait, de fait, s’intituler Appliquer à toutes les images sélectionnées). La rotation des images au format JPEG s’effectue sans la moindre perte de qualité. Normalement, toute modification à une image JPEG implique une légère dégradation, car les images doivent être compressées à chaque enregistrement. Cette règle n’est toutefois pas valable pour les rotations d’un facteur multiple de 90˚, grâce à un algorithme intelligent.
Catégories, commentaires, catalogues et bibliothèques
Il est fondamentalement judicieux d’enregistrer les images correspondant à des thèmes différents dans des répertoires ou sous-répertoires dédiés (par exemple photos/2007/Noël ou photos/2008/Vacances_au_Japon). Ce système de regroupement simple ne suffit toutefois plus pour retrouver rapidement une photo lorsque le nombre total de celles-ci atteint des proportions importantes. gThumb propose par conséquent d’autres solutions pour identifier les images. Cela implique naturellement des efforts supplémentaires de votre part, mais pour lesquels vous serez récompensé dès que vous utiliserez pour la première fois Édition > Search. • Catégories. Chaque image peut être affectée à une ou à plusieurs catégories. Pour ce faire, sélectionnez les images concernées, exécutez Édition > Catégories et choisissez la
Linux Livre Page 142 Mardi, 23. septembre 2008 1:05 13
142
LINUX
ou les catégories concernant les images. gThumb connaît un certain nombre de catégories standard (anniversaire, famille, vacances, etc.) que vous compléterez par vos propres catégories. • Commentaires. Édition > Comment vous permet d’enregistrer un texte court relatif aux images sélectionnées. • Catalogues. Un catalogue fonctionne comme une liste d’images qui, en réalité, peuvent être enregistrées dans des répertoires différents. Pour définir un nouveau catalogue, activez la vue Catalogue et ouvrez ensuite Fichier > Nouveau catalogue. Revenez ensuite à la vue par dossiers, sélectionnez quelques images et exécutez Édition > Ajouter au catalogue. Les catalogues peuvent sembler identiques à des répertoires, mais ils se comportent différemment. Les images ne sont pas copiées lors de l’insertion à un catalogue. Au lieu de cela, le chemin des images sélectionnées est ajouté à la liste d’éléments du catalogue. Les catalogues offrent donc une méthode de regroupement d’images respectueuse de l’espace disque. L’aide en ligne compare un catalogue gThumb à une liste de lecture pour un lecteur audio. • Bibliothèques. Lorsque vous avez défini plusieurs catalogues, vous pouvez les rassembler au sein de bibliothèques. Pour ce faire, exécutez Fichier > Nouvelle bibliothèque en vue par dossiers. Cliquez ensuite du bouton droit de la souris sur un catalogue et sélectionnez Déplacer, pour l’affecter à une bibliothèque. Les informations relatives aux catégories, commentaires, catalogues et bibliothèques sont enregistrées non pas dans les fichiers d’image directement mais dans des fichiers complémentaires. Par conséquent, ces données ne peuvent être utilisées que par gThumb et pas par d’autres programmes. La correspondance entre images et informations complémentaires est perdue lorsque les images sont renommées ou déplacées vers d’autres répertoires ! Traitement d’images
En vue image, gThumb peut également réaliser des opérations simples de traitement des images (redimensionner l’image, optimiser la luminosité, supprimer les yeux rouges, etc.). Toutes les commandes correspondantes se trouvent dans le menu Image.
Fonctionnalités additionnelles
gThumb propose encore diverses fonctionnalités que nous ne pouvons que mentionner ici faute de place : • Le bouton Diaporama lance une présentation automatique de l’ensemble des photos contenues dans le répertoire courant. Le programme passe donc en mode plein écran. Édition > Préférences > Diaporama vous permet de fixer la durée de présentation des images, d’activer un mode aléatoire, etc. La touche Echap met fin au diaporama. • Outils > Utiliser l’image comme papier peint définit l’image en cours comme fond d’écran. • Outils > Convert Format génère des copies des images sélectionnées vers un autre format (JPEG, PNG, TGA ou TIFF). • Outils > Change Date établit la date de création des images sélectionnées à une date particulière ou ramène cette valeur à la date de création originelle.
Linux Livre Page 143 Mardi, 23. septembre 2008 1:05 13
APPAREILS PHOTO NUMÉRIQUES, NUMÉRISATION, GESTION DES PHOTOS
143
• Outils > Create Index Image génère des images d’index pour les photos sélectionnées. Le bouton Style vous permet de paramétrer diverses caractéristiques des images d’index, par exemple le nombre d’images réduites par page (par défaut, trois lignes et quatre colonnes), la taille des images réduites (par défaut 128 × 128 pixels), etc. • Édition > Renommer permet de donner de nouveaux noms aux images sélectionnées (par exemple suivant un format particulier tel que 001.jpg, 002.jpg, etc.). • Fichier > Write To CD grave les images sélectionnées ou la totalité du répertoire courant sur un CD ou un DVD. La commande se contente de transmettre les images au gestionnaire de fichiers.
9.4
Import de photographies
Gestion des images
digiKam
digiKam est un programme KDE aux multiples facettes et qui permet d’importer des photos depuis un appareil numérique, de gérer les images et de réaliser certains traitements de base. Comme gThumb, ce programme offre plusieurs moyens de classer les images. digiKam peut être étendu au moyen d’un système de greffons. Grâce à ceux-ci, il peut travailler directement sur les fichiers RAW, gérer des profils de couleurs, appliquer divers filtres sur les images, etc. Au premier lancement du programme, vous devez définir un répertoire de base pour vos images (par défaut, ~/Pictures. Au besoin, vous pouvez modifier ultérieurement ce répertoire par le biais de Configuration > Configurer digiKam > Albums. Avant de tenter le premier transfert de photos, vous devez procéder à une étape de configuration. Dans la plupart des cas, il suffit de cliquer sur le bouton Détecter automatiquement de la boîte de dialogue Configuration > Configurer digiKam > Appareils photo. L’appareil apparaît alors dans le menu intitulé Appareil photo. Lorsque vous exécutez Appareil photo > Nom_de_l_appareil ou Appareil photo > Nom_de_la_carte_mémoire, digiKam génère un aperçu de toutes les images. Le bouton Transférer vous permet d’importer l’ensemble ou une sélection des images dans le sous-répertoire Nom_d_album du répertoire de base. digiKam ne vous permet de gérer que les images qui se trouvent dans le répertoire de base. Vous devrez donc y copier toutes les images qui auraient été jusqu’à présent stockées ailleurs (Album > Importer). digiKam désigne chaque répertoire du répertoire de base comme un album. Alternativement, vous pouvez aussi rechercher des images en vue par date (voir Figure 9.3). Un clic de souris sur une image sélectionnée permet de l’agrandir, un second clic vous ramène à la vue par album. Les éléments du menu Image vous permettent de modifier ou d’ajouter divers commentaires, caractéristiques et mots-clés supplémentaires pour l’image. Ces données supplémentaires, qui seront très utiles ultérieurement lors des recherches d’images, sont enregistrées non pas directement dans les images mais dans le fichier digikam3.db qui se trouve dans le répertoire de base. Le panneau droit de la fenêtre principale vous permet de filtrer les images par étiquette.
Linux Livre Page 144 Mardi, 23. septembre 2008 1:05 13
144
LINUX
Figure 9.3 Gestion des images avec digiKam.
Pivoter les images
Traitement d’images
Fonctionnalités supplémentaires
Tant que l’appareil enregistre l’orientation des images dans les fichiers EXIF, Image > Corriger l’orientation EXIF devrait vous permettre de corriger l’orientation pour toutes les images du répertoire courant qui en auraient besoin. Si cela ne fonctionne pas, les combinaisons de touches Ctrl+Maj+Flèche gauche ou Ctrl+Maj+Flèche droite permettent de pivoter les images sélectionnées de 90˚ vers la gauche ou vers la droite. En vue par dossiers, vous ne pouvez réaliser que des opérations élémentaires (par exemple pivoter les images). Le menu contextuel Édition vous offre toutefois des possibilités plus avancées. digiKam affiche alors l’image dans une nouvelle fenêtre, où vous pouvez l’encadrer, lui donner un titre, en optimiser les couleurs et la luminosité, y supprimer les yeux rouges, la redimensionner, etc. Les modifications sont normalement enregistrées directement dans le fichier. Si vous ne souhaitez pas en perdre la version originelle, enregistrez la version corrigée par le biais de Menu > Enregistrer sous. La plupart des fonctionnalités supplémentaires sont accessibles depuis le menu Outils. Vous pouvez y convertir ou modifier par lot toutes les images sélectionnées, lancer un afficheur en mode pleine page, exporter des images vers un iPod, etc. Le menu Album > Export présente également des fonctions supplémentaires. Vous y trouverez des commandes pour graver un CD de photos, transférer des images vers ou depuis un serveur Flickr, générer une galerie HTML, etc. De très nombreuses fonctionnalités de digiKam sont conçues sous la forme de greffons KIPI (KDE Image Plugin Interface). Lorsque vous ne trouvez pas certaines fonctionnalités individuelles dans digiKam, vérifiez si les greffons sont installés et activés dans les boîtes de dialogue Configuration > Configurer digiKam > Modules externes KIPI et > Éditeur d’images.
Linux Livre Page 145 Mardi, 23. septembre 2008 1:05 13
APPAREILS PHOTO NUMÉRIQUES, NUMÉRISATION, GESTION DES PHOTOS
9.5
145
F-Spot
Le programme F-Spot (voir Figure 9.4) est le nouveau programme par défaut pour la gestion des images depuis la version 2.22 de Gnome. Mes impressions quant à ce programme étaient plutôt partagées. D’un côté, F-Spot possède une interface bien adaptée et quelques idées intéressantes : par exemple, toute modification sur des images n’est jamais enregistrée directement dans le fichier d’origine mais l’est dans des "versions". Vous pouvez ainsi basculer à tout moment entre la version d’origine et la version modifiée d’une image et n’avez pas à vous inquiéter d’enregistrer par erreur des modifications irréversibles dans l’original. L’organisation des images suivant un axe temporel est également une particularité intéressante, surtout lorsque le nombre d’images augmente.
Figure 9.4 Gestion d’images avec F-Spot.
Mais, d’un autre côté, ce programme se distingue aussi par quelques lourdeurs : F-Spot ne peut gérer que les images qu’il a préalablement "importées". Normalement, les images sont copiées à l’import vers le répertoire ~/Photos, où est créé un sous-répertoire pour chaque date de création de photos. Si vous avez déjà organisé vos images sur votre disque dur, vous pouvez renoncer à toute copie physique lors de l’import : dans ce cas, F-Spot enregistre diverses informations dans sa propre base de données (fichier ~/.gnome2/f-spot/photos.db). On constate que F-Spot n’est pas encore tout à fait arrivé à maturité. Son utilisation peut se révéler irritante : il n’existe par exemple aucune fonction Annuler directe pour le traitement des images, non plus qu’une information claire indiquant s’il existe plusieurs versions d’une même image. Les changements d’affichage font constamment perdre de vue l’image en cours. De surcroît, c’est un programme exigeant en matière de ressources. Tant qu’il s’exécute, la charge CPU est toujours proche de 100 % alors qu’il est parfois difficile de comprendre ce que fait vraiment le programme (certaines critiques rendent la dépendance du programme à la bibliothèque Mono responsable de cette gourmandise).
Linux Livre Page 146 Mardi, 23. septembre 2008 1:05 13
146
Utilisation
LINUX
Pour faire court, certains utilisateurs disposant d’un ordinateur rapide apprécieront cet outil pour ses fonctionnalités innovantes. Les autres, insatisfaits par les concepts peu habituels et l’implémentation encore problématique de cet outil, devront revenir à gThumb ou trouver un autre programme à utiliser. F-Spot se comporte différemment suivant la façon dont il a été lancé. L’une des variantes consiste à ouvrir une image depuis le gestionnaire de fichiers par le menu contextuel Ouvrir avec > F-Spot. Dans ce cas, l’interface utilisateur de F-Spot est très limitée. Vous pouvez afficher et pivoter l’image, mais aucun autre traitement n’est disponible. Fichier > Ouvrir le dossier conduit aux autres images du répertoire courant. Pour pouvoir utiliser F-Spot avec l’ensemble de ses fonctionnalités, vous devez le lancer directement depuis le menu Gnome ou KDE ou par la commande f-spot. Importez ensuite les images que vous souhaitez y gérer. F-Spot affiche alors un aperçu des images. Vous pouvez modifier la taille de l’aperçu par le biais de la règle en bas à droite. Un double-clic sur une image conduit au mode d’édition. Les modifications apportées à une image sont enregistrées dans un nouveau fichier qui se trouve dans le même répertoire que l’original. Au nom d’origine est ajouté un complément indiquant la version. C’est la liste déroulante Version, en bas à gauche, qui indique quelles versions d’une image sont disponibles. Fichier > Version vous permet de basculer d’une version à l’autre. Pour revenir à une version antérieure, sélectionnez la version à annuler et effacez-la par le menu Fichier > Supprimer la version. Pour mieux organiser vos images, vous pouvez leur attribuer par glisser-déposer des étiquettes. F-Spot prévoit par défaut cinq étiquettes (Favoris, Masqué, Lieu, Personnes, Événements). Vous pouvez définir les étiquettes de votre choix, affecter plusieurs étiquettes à une même image, etc. Un double-clic sur une de ces étiquettes restreint l’affichage aux images portant effectivement cette étiquette. Pour afficher à nouveau toutes les photos, vous devez supprimer le filtre Rechercher.
9.6
KPhotoAlbum
KPhotoAlbum (anciennement KimDaBa) est un autre programme de gestion des images et vidéos. Ses points forts sont ses fonctionnalités puissantes de recherche et d’organisation. Pour l’enregistrement des données relatives aux images, KPhotoAlbum utilise une base de données SQLite. KPhotoAlbum est, par divers aspects, l’homologue de F-Spot pour KDE. Toutefois, il n’est pas tout à fait aussi fonctionnel. KPhotoAlbum présuppose que tous les fichiers images et vidéos se trouvent dans un répertoire de base (par défaut ~/Images). Ce répertoire est mis en place au premier lancement s’il n’existe pas encore. Vous devrez y copier manuellement des images existantes (KPhotoAlbum ne prévoit étonnamment pas de fonctionnalité d’import de photos). Chaque fois que le contenu de ce répertoire est modifié, KPhotoAlbum doit resynchroniser sa base de données : pour ce faire, exécutez Maintenance > Rescan for images.
Donner des informations contextuelles
KPhotoAlbum accède aux mêmes modules KIPI que digiKam. Vérifiez donc préalablement que ces plugins sont installés (en général, il s’agit du paquetage kipi-plugins). L’utilisation de KPhotoAlbum n’est intéressante que si vous vous donnez la peine de fournir pour toutes les images (ou, a minima, pour un grand nombre d’entre elles) des informations contextuelles. Qui ou quoi figure sur cette image ? Où a-t-elle été prise ? À quelle catégorie
Linux Livre Page 147 Mardi, 23. septembre 2008 1:05 13
APPAREILS PHOTO NUMÉRIQUES, NUMÉRISATION, GESTION DES PHOTOS
147
appartient-elle ? Pour fournir ces informations, commencez par sélectionner une ou plusieurs images puis, par le menu contextuel, exécutez Set properties for individual images ou Set properties for multiple images at a time. Vous arrivez alors à la boîte de dialogue présentée à la Figure 9.5. Saisissez-y les informations de votre choix. L’utilisation de cette boîte de dialogue est étonnamment efficace et la procédure pour chaque image ne dure que quelques secondes. Le classement d’une base de données d’images complète peut toutefois prendre un certain temps.
Figure 9.5 Classer des images dans KPhotoAlbum.
Rechercher des images
Une fois que les informations contextuelles sont disponibles pour toutes les images, il est possible de rechercher des images dans la fenêtre principale de KPhotoAlbum en quelques clics de souris, toujours suivant le modèle : "me montrer uniquement les images sur lesquelles on peut voir un jardin et qui ont été prises au Japon". La recherche parmi les aperçus est de surcroît facilitée par une échelle de temps.
Figure 9.6 Aperçu des images dans KPhotoAlbum.
Linux Livre Page 148 Mardi, 23. septembre 2008 1:05 13
148
LINUX
9.7
XSane
XSane est un programme aussi confortable que riche en fonctionnalités pour scanner des images. Avant de scanner la première image, basculez du mode Noir et blanc soit vers Niveaux de gris, soit vers Couleurs, puis choisissez la résolution souhaitée. Par défaut, XSane utilise la valeur 72 DPI, ce qui est une résolution très faible. Le bouton Acquisition de l’aperçu de la fenêtre Aperçu vous permet d’exécuter une première numérisation. Grâce au bouton Sélectionne l’aire visible, vous pouvez limiter le domaine scanné à la taille de votre choix. Si vous souhaitez exécuter une balance des blancs, sélectionnez avec la pipette Choisissez un point blanc sur un point blanc et Choisissez un point noir sur un point noir. Les pros de la numérisation pourront entreprendre des corrections de couleurs plus poussées à l’aide de l’histogramme (Fenêtre > Montrer l’histogramme). Le bouton Numériser de la fenêtre principale vous permet de réaliser le scan effectif dans la résolution choisie. XSane présente le résultat du scan dans une nouvelle fenêtre où vous pouvez pivoter l’image, l’adoucir et en modifier l’échelle. Filtres > Déparasiter l’image tente de supprimer les erreurs de numérisation et les parasites que peut présenter l’image. Pour les images volumineuses, ce processus risque de prendre un temps relativement long et n’aboutit que rarement à une amélioration notoire de la qualité de l’image. Enfin, vous pouvez enregistrer votre image à l’aide de Fichier > Enregistrer. Produire des images de haute qualité est un art en soi. L’aide de XSane renvoie vers quelques sites web présentant des astuces à ce sujet. Il est encore plus délicat de réaliser ultérieurement des impressions de qualité des images scannées. La plupart du temps, l’image numérisée doit préalablement être optimisée par le biais d’un logiciel de traitement d’images tel que Gimp. Si vous rencontrez des difficultés avec les motifs de type moiré, essayez le filtre Flou > Flou gaussien ou Amélioration > Antiparasites. Reconnaissance de texte
Si le programme gocr (du paquetage éponyme) est installé, vous pouvez exécuter une reconnaissance de texte sur l’image scannée. Le texte reconnu est enregistré dans un fichier propre (en général out.txt). Mes expériences avec cette fonctionnalité ont toutefois été décevantes.
Linux Livre Page 149 Mardi, 23. septembre 2008 1:05 13
10
Gimp Derrière l'acronyme Gimp (Gnu Image Manipulation Program) se cache un logiciel de traitement qui présente de nombreuses fonctionnalités comparables à celles du logiciel commercial Adobe Photoshop. Il existe toutefois une différence notable entre les deux : Gimp est un logiciel libre sous licence GPL. Gimp vous permet, entre autres : • d'ouvrir et d'enregistrer des fichiers bitmap dans différents formats (parmi lesquels GIF, JPEG, PNG ou TIFF) ; • d'importer des fichiers PostScript (EPS/PS) et Photoshop (PSD) ; • de retravailler des photographies et images numérisées (modifier la luminosité, le contraste, les couleurs, etc.) ; • d'appliquer divers filtres (par exemple pour améliorer l'image, créer des effets d'optique, etc.) ; • de sélectionner une partie d'une image, de la découper, de la traiter séparément et de la coller dans d'autres images (montage photo) ; • d'insérer de nouveaux éléments graphiques dans une image (lignes, motifs de remplissage, texte, etc.) ; • d'automatiser des opérations Gimp ; • de réaliser des traitements par lots sur un grand volume de fichiers ; • d'imprimer et d'enregistrer les images résultantes (en tant que fichiers bitmap, PostScript ou encore dans le format propre de Gimp, XCF, qui enregistre non seulement l'image, mais aussi des informations sur les modifications apportées : masques, calques, etc.). Ce chapitre est une introduction très rapide à Gimp, sur la base de sa version 2.4. Certaines distributions proposent encore la version 2.2, qui ne diffère que très peu de la version 2.4 : ce chapitre devrait donc, à quelques rares exceptions près (certains raccourcis clavier ont été entre-temps modifiés), s'appliquer aussi à Gimp 2.2. Vous devez toutefois veiller, si vous travaillez avec Gimp 2.4, à enregistrer régulièrement vos documents : cette nouvelle version n'est pas encore aussi robuste que la 2.2. Comme il ne nous est pas possible de décrire en détail toutes les fonctionnalités de Gimp, ce chapitre ne vous présente qu'un survol des fonctionnalités essentielles. Pour vous documenter de façon plus approfondie sur le sujet, vous pourrez trouver de nombreux ouvrages sur Gimp ainsi que des sites très complets, par exemple : http://www.gimp.org/ ; http:// www.gimp.org/docs/ ; http://gimp-savvy.com/ ; http://manuel.gimp.org/ Assimiler les fonctionnalités de Gimp n'est toutefois que la première étape. Il est également essentiel de comprendre comment mettre en pratique ces fonctions de manière appropriée. Avant de pouvoir faire imprimer vos travaux en format poster, vous devrez aussi vous préoccuper de calibrer votre écran et votre imprimante : un ouvrage sur les bases du graphisme pourra donc également se révéler un investissement judicieux pour tout utilisateur de Gimp.
Linux Livre Page 150 Mardi, 23. septembre 2008 1:05 13
150 Rêve et réalité
LINUX
Gimp est un logiciel polyvalent et très puissant. Toutefois, il existe un risque non négligeable que vos premières expériences soient décevantes et vous conduisent à l'effacer rapidement de votre disque dur. Il existe deux raisons à cela : d'une part, ce logiciel demande un temps d'appropriation et un apprentissage intensif avant de pouvoir être utilisé de manière efficace ; d'autre part, Gimp est gourmand en ressources matérielles. Pour travailler confortablement, vous aurez besoin de suffisamment de mémoire, d'un processeur rapide et d'un écran large. Gimp est fréquemment décrit comme une alternative gratuite, différente mais aux fonctionnalités équivalentes à Photoshop, ce qui contribue à forger des espoirs ultérieurement déçus. Cette description est un peu trop superficielle : • L'utilisation de Gimp diffère sur certaines parties très notoirement de celle de Photoshop. Les vrais fans de Gimp affirmeront naturellement que leur logiciel favori est plus intuitif et plus efficace. C'est vrai pour certaines fonctionnalités, mais d'autres donnent la nette impression que le logiciel a été conçu par des techniciens, pour des techniciens. De surcroît, il est souvent difficile pour les utilisateurs de Photoshop migrant vers Gimp de localiser les fonctions recherchées dans l'imbrication des menus. • Il est plus difficile de générer des fichiers (PostScript) pour une impression professionnelle avec Gimp qu'avec d'autres logiciels. La génération d'images comprenant des tons directs ou couleurs d'accompagnement (format d'image en couleurs directes) est en théorie possible, mais les fonctions associées offrent peu de confort. Il manque une prise en charge directe des couleurs Pantone, mais ce point devrait être résolu à l'avenir par la mise à disposition de greffons commerciaux.
Alternatives à Gimp
Si Gimp vous paraît trop complexe, les logiciels de gestion d'images présentés au Chapitre 9 vous proposent également quelques fonctions élémentaires de traitement graphique. Si vous n'avez besoin que d'optimiser rapidement le contraste d'une image, ces outils vous suffiront largement. Si vous recherchez un logiciel simple de dessin du type Microsoft Paint, un coup d'œil au programme KDE kolourpaint devrait se révéler intéressant. En termes de complexité et de fonctionnalités, krita se situe à mi-chemin entre Gimp et kolourpaint. Ce programme fait partie de la suite bureautique KDE. Elle conjugue une utilisation relativement simple avec des fonctionnalités avancées (y compris la gestion des calques et de très nombreux filtres). Si vous ne souhaitez pas renoncer aux fonctionnalités de Gimp, mais que vous recherchiez une utilisation proche de Photoshop, prenez le temps de tester le portage GimpShop. Les commandes de conversion d'images vers différents formats seront présentées au Chapitre 15. Gimp et toutes les alternatives que nous venons de présenter sont des logiciels de traitement d'images bitmap (travaillant sur des pixels). Il existe également sous Linux divers programmes de dessin vectoriel : le composant OpenOffice Draw, le logiciel Inkscape ou encore krita.
Linux Livre Page 151 Mardi, 23. septembre 2008 1:05 13
151
GIMP
10.1 Formats de fichiers Gimp prend en charge de nombreux formats graphiques pour l'ouverture et l'enregistrement des fichiers. Cette section donne un aperçu des formats essentiels et tente d'expliquer à quelles utilisations est adapté chaque format. Cette astuce vaut pour tous les formats pris en charge par Gimp : lorsque, à l'enregistrement, vous ajoutez l'extension *.gz ou *.bz2, le fichier est de surcroît compressé. Ceci n'a toutefois de sens que pour les formats de fichiers non comprimés par ailleurs. Les fichiers portant cette extension seront automatiquement décompressés à l'ouverture. bzip2 compresse un peu mieux que gzip, mais il est notoirement plus lent. XCF et PSD
XCF est le format de fichier propre à Gimp. C'est le seul format pour lequel toutes les informations de travail et de construction de l'image (calques, masques, sélection en cours, etc.) sont effectivement enregistrées. Lorsque vous travaillez sur une image, XCF est le seul format réellement adapté pour les copies de travail. Le format PSD est l'homologue du format XCF pour Photoshop.
Formats bitmap
Les formats bitmap ne permettent d'enregistrer qu'un seul calque. Si votre image est constituée de plusieurs calques, ceux-ci doivent être fusionnés à l'enregistrement. Si vous rouvrez ultérieurement ce fichier, seul cet unique calque fusionné sera disponible : vous aurez perdu toute possibilité de modifier l'image. Pour cette raison, un avertissement est affiché avant l'enregistrement effectif du fichier et vous devez confirmer la fusion en cliquant sur le bouton Exporter. Vous devez obligatoirement enregistrer aussi votre travail au format Gimp XCF si vous souhaitez pouvoir le modifier ultérieurement sans contrainte ! • BMP. Ce format sert uniquement pour l'échange de fichiers avec le monde Microsoft Windows. • GIF. Le format GIF est adapté pour l'enregistrement de petites images et animations lorsque l'on cherche à économiser l'espace disque. Les bitmaps sont comprimés de manière efficace et sans perte, mais ils sont limités à 256 couleurs. Ce format gère la transparence. Pour enregistrer des images Gimp en tant que GIF, vous devez préalablement les passer en mode 256 couleurs à l'aide du menu Image > Mode > Couleurs indexées. • JPEG. Ce format se distingue par un algorithme de compression très efficace particulièrement adapté pour les photographies (nettement moins pour les captures d'écran ou le dessin technique). La compression JPEG s'effectue avec perte de qualité, c'est-à-dire que les images JPEG diffèrent des originaux. Ces différences ne sont en général pas visibles à l'œil nu lorsque le facteur de qualité choisi à l'enregistrement est suffisamment élevé. La valeur par défaut (75 %) est généralement raisonnable. Pour les images très détaillées ou avec des contours très marqués, vous devriez passer cette valeur à 90 %. Lorsque vous ouvrez, modifiez puis enregistrez une image JPEG à plusieurs reprises, la qualité diminue à chaque fois. Si les pertes occasionnées par la compression sont, à la première application de l'algorithme,
Linux Livre Page 152 Mardi, 23. septembre 2008 1:05 13
152
LINUX
à peine visibles à l'œil nu, les modifications s'accumulent ensuite de façon peu esthétique. Le format JPEG n'est donc absolument pas adapté pour faire des copies de travail ! Enregistrez uniquement l'image finale au format JPEG et archivez une copie XCF du fichier de travail !
PostScript (PS, EPS)
• PNG. Ce format a été conçu comme un successeur de GIF et il lui est à tout point de vue supérieur : pas de limitation à 256 couleurs, malgré une compression de meilleure qualité et sans perte, etc. De plus, la majorité des navigateurs web utilisés aujourd'hui peut gérer sans problème les images PNG. • TIFF. Ce format est apprécié des graphistes professionnels. Les images sont enregistrées sans perte. Grâce à l'algorithme de compression LZW, la taille des fichiers pour les captures d'écran ou les dessins techniques devient très faible. Toutefois, Microsoft Word rencontre des problèmes pour l'affichage et l'impression de fichiers compressés en tant que TIFF. Il existe de nombreuses variantes du format TIFF, ce qui occasionne des problèmes à l'échange de fichiers TIFF entre programmes différents. Normalement, vous ne devez enregistrer des images au format PostScript que lorsque vous souhaitez utiliser le fichier résultant dans un autre logiciel (par exemple un logiciel de traitement de texte). Vous disposez alors de deux options intéressantes : EPS (Encapsulated PostScript) signifie qu'un commentaire est enregistré au début du fichier PostScript pour fournir les dimensions exactes de l'image. Cette information est obligatoire pour pouvoir insérer correctement l'illustration dans un autre programme. Les fichiers PostScript conçus pour être ultérieurement utilisés dans d'autres logiciels (et non simplement pour l'impression) reçoivent en général l'extension de fichier *.eps (et non simplement *.ps). Aperçu signifie qu'en plus des commandes PostScript un bitmap est enregistré. Cela permet également de générer un aperçu dans les programmes n'ayant pas accès à un interpréteur PostScript. Le bitmap d'aperçu augmente notablement la taille du fichier sans pour autant ajouter d'informations utiles pour l'impression. N'activez donc cette option que si vous souhaitez utiliser les fichiers PostScript sur un ordinateur Windows (qui ne possède aucune capacité d'aperçu des PostScript). Gimp peut également importer les fichiers PostScript et PDF. Il fait appel pour cela à l'interpréteur PostScript Ghostscript (voir aussi le Chapitre 15 à ce sujet). Pour une bonne qualité graphique, les éléments décisifs sont une résolution adaptée (donc suffisamment élevée) et l'option de lissage.
10.2 Premiers pas Vous pouvez lancer Gimp soit depuis le menu Démarrer de votre environnement de bureau, soit par le biais de la commande gimp. Au premier lancement apparaît une boîte de dialogue pour effectuer la configuration de base de l'outil. Il vous suffit, pour chaque écran, de cliquer sur le bouton Suivant : les paramètres par défaut ne requièrent en général aucune modification. Contrairement à Adobe Photoshop, dont l'ensemble des outils est intégré au sein d'une seule grande fenêtre, plusieurs petites fenêtres sont affichées au lancement de Gimp, chacune étant dédiée à un groupe de fonctionnalités. Il existe de surcroît d'autres fenêtres
Linux Livre Page 153 Mardi, 23. septembre 2008 1:05 13
153
GIMP
d'outils apparaissant suivant les besoins (voir aussi le menu Fichier > Dialogues). Ceci conduit fréquemment à avoir cinq ou six fenêtres Gimp ouvertes simultanément, parfois même davantage (voir Figure 10.1). Si vous avez lancé d'autres programmes en plus de Gimp, la fenêtre peut rapidement devenir surchargée et donc inutilisable.
Figure 10.1 À gauche, la fenêtre principale de Gimp ; au centre, deux fenêtres d'outils ; à droite, une fenêtre d'image.
La solution optimale à ce problème consiste à utiliser des bureaux virtuels et à en dédier un à l'utilisation de Gimp (si vous utilisez votre navigateur web, client de courrier, OpenOffice, etc. dans le bureau virtuel numéro 1, passez au bureau virtuel numéro 2 avant de lancer Gimp). Vous pouvez sélectionner le bureau virtuel de votre choix en cliquant sur le numéro correspondant, dans la section du tableau de bord correspondant aux bureaux virtuels. Utilisation des menus
Ouvrir et enregistrer des images
Gimp est équipé de deux menus : • Le menu Gimp se trouve dans la fenêtre principale. Il ne présente que quelques commandes élémentaires valables pour Gimp dans son ensemble (par exemple Fichier > Ouvrir ou Fichier > Fermer). • Chaque fenêtre d'image est par ailleurs équipée du menu idoine. Celui-ci compte d'innombrables commandes, toutes dédiées au traitement de l'image courante. Le menu peut également être appelé n'importe où dans la fenêtre en tant que menu contextuel (bouton droit de la souris). Toutes les commandes illustrées dans ce chapitre, à moins d'être explicitement indiquées comme faisant partie du menu Gimp, sont des commandes tirées de ce menu. Fichier > Ouvrir vous conduit à une boîte de dialogue de sélection de fichier. Cette boîte de dialogue comprend un aperçu de l'image sélectionnée. Si cet aperçu n'est pas affiché automatiquement, vous devrez cliquer sur le bouton Preview. Après ouverture, le fichier est affiché dans une nouvelle fenêtre d'image. À l'enregistrement, vous avez le choix entre les différents formats de fichiers que nous avons présentés à la section précédente. Pour résumer : si vous souhaitez ultérieurement pouvoir retravailler sur une image, vous devriez l'enregistrer au format fichier.xfc.gz : Gimp utilise ainsi son propre format XFC conservant les informations de composition de l'image (par exemple les calques) ; l'extension supplémentaire .gz garantit la compression du fichier.
Linux Livre Page 154 Mardi, 23. septembre 2008 1:05 13
154
LINUX
Il est relativement fréquent de voir apparaître à l'enregistrement un avertissement indiquant que l'image doit être modifiée avant de pouvoir être enregistrée : lorsque le format ne prend pas en charge la transparence, les parties transparentes de l'image sont remplies en blanc ; lorsque le format de fichier ne gère pas les calques (ce qui est le cas sur tous les formats bitmap), ceux-ci doivent être fusionnés. De telles modifications ne concernent toutefois que le fichier enregistré et non les données actuellement utilisées par Gimp : vous pouvez donc sans crainte cliquer sur Exporter, mais n'oubliez pas d'enregistrer ultérieurement votre image au format XCF. Commandes de base
Lorsque la fenêtre d'image est active, vous pouvez agrandir l'image avec la touche + (plus) et la réduire avec la touche – (moins). La touche 1 permet de ramener le facteur d'agrandissement à 1 (c'est-à-dire que chaque pixel de l'image est affiché sur un pixel de l'écran). Affichage > Ajuster la fenêtre à l'image (ou la combinaison de touches Ctrl+E) permet d'adapter la taille de la fenêtre à l'image actuellement affichée. Si vous avez dû réduire le facteur d'agrandissement pour afficher une image à très haute résolution, cette commande réduit la taille de la fenêtre. Si l'image courante est plus grande que la fenêtre avec le facteur d'agrandissement actuellement utilisé, seule une partie de l'image peut être affichée. Vous pouvez alors déplacer la section affichée à l'aide des ascenseurs de la fenêtre. Alternativement, vous pouvez aussi tout simplement déplacer l'image dans la fenêtre à l'aide du bouton central de la souris. Image > Transformer > Rotate permet de pivoter l'image de 90, 180 ou 270˚.
Impression Fichier > Imprimer vous conduit à une boîte de dialogue quelque peu difficile à lire (voir Figure 10.2). Si cette commande n'est pas disponible, vous devrez installer (suivant votre distribution) le paquetage gimp-print ou gutenprint-plugin. Si la boîte de dialogue apparaît en langue anglaise, vous devrez en outre installer le paquetage de localisation correspondant (par exemple, sur Ubuntu, language-pack-fr). La traduction peut toutefois se révéler incomplète.
Figure 10.2 La boîte de dialogue d'impression de Gimp.
Dans de nombreux cas, un avertissement apparaît avant la boîte de dialogue d'impression : c'est le même que celui affiché lors d'un export vers un format bitmap. Confirmez simplement
Linux Livre Page 155 Mardi, 23. septembre 2008 1:05 13
155
GIMP
l'avertissement en cliquant sur le bouton Exporter. L'impression du fichier ne modifie en rien les données de travail du fichier dans Gimp ! Contrairement à la quasi-totalité des autres programmes Linux, la boîte de dialogue d'impression de Gimp ignore la configuration d'impression du système. Dans la configuration de base, Gimp envoie les données PostScript à l'imprimante par défaut. Si vous souhaitez utiliser une autre imprimante, vous devez renseigner ses paramètres directement dans la boîte de dialogue d'impression de Gimp ! La raison de ce comportement particulier est que l'impression d'images pose bien souvent des contraintes différentes de celles associées à l'impression d'un document classique. Il est ainsi possible de mettre en place des paramètres d'impression spécialement optimisés pour Gimp. La règle Échelle vous permet d'adapter la taille de l'image. Lorsque l'image mise à l'échelle possède une taille inférieure au format de papier utilisé, vous pouvez alors en déplacer l'aperçu avec la souris pour le positionner, ou tout simplement cliquer sur un des trois boutons Centrer. L'onglet Sortie vous permet de sélectionner le type de sortie souhaité (Couleur ou Niveaux de gris). Le bouton Réglages fins vous conduit à une boîte de dialogue supplémentaire dans laquelle vous pouvez modifier le contraste, la luminosité, l'algorithme de tramage ainsi que divers autres paramètres. Les modifications ne s'imposent ici qu'à titre exceptionnel. Pour ne pas avoir à saisir les paramètres à chaque nouvelle impression, vous pouvez les enregistrer.
10.3 Règles de survie
Utilisation du clavier
Interrompre une action à la souris Grille et guides
Cette section rassemble quelques astuces et règles de survie pour travailler efficacement avec Gimp. Elle conclura ce court chapitre sur Gimp : elle devrait faciliter vos premiers pas avec cet outil. Vous pouvez appeler et utiliser pratiquement toutes les fonctionnalités de Gimp à l'aide du clavier. Le problème le plus fréquent est toutefois que les commandes clavier concernent non pas la fenêtre d'image mais la dernière boîte de dialogue utilisée (où d'autres raccourcis clavier ont cours). Lorsque vous activez l'option Use dynamic keyboard shortcuts dans la boîte de dialogue Fichier > Préférences > Interface, vous pouvez très simplement modifier les raccourcis clavier des commandes : choisissez la succession de menus à suivre avec la souris puis, pour la commande à modifier, saisissez le raccourci de votre choix. N'oubliez pas d'enregistrer les raccourcis dès maintenant : les nouvelles valeurs sont enregistrées dans le fichier ~/.gimp-n.n/menurc. Lorsque vous souhaitez interrompre une action de souris en cours, gardez le bouton gauche de la souris enfoncé et appuyez sur le bouton droit. Relâchez tout d'abord le bouton gauche, puis le bouton droit. Il est souvent difficile de positionner précisément la souris dans Gimp. Utilisez les guides ! Lorsqu'il s'en approche, le pointeur de la souris se place automatiquement, comme s'il était attiré par un aimant, sur ces lignes. Pour générer un guide, cliquez sur l'un des bords de l'image et faites glisser le pointeur vers l'image : le guide apparaît alors. Pour déplacer un guide existant, commencez par activer le bouton Déplacer de la boîte à outils (l'icône à
Linux Livre Page 156 Mardi, 23. septembre 2008 1:05 13
156
Boîte à outils
Dialogues
Détacher des menus
Couleurs
Annuler et refaire
Paramètres configurés par règles Vues
Système d'aide
LINUX
quatre flèches en forme de croix). Vous pouvez utiliser autant de guides que vous le souhaitez et également les combiner à la grille magnétique (Affichage > Aligner sur la grille). La fenêtre principale de Gimp héberge toujours la boîte à outils. Il s'agit d'une palette d'icônes représentant les outils de Gimp. Tous les outils peuvent également être activés par le biais du clavier. Les raccourcis clavier sont donnés dans le menu Outils de la fenêtre d'image. Pour chaque outil, il existe une boîte de dialogue de paramétrage. Cette boîte de dialogue est normalement affichée comme un élément de la fenêtre principale de Gimp, mais elle peut également en être détachée. Si le dialogue de paramétrage n'apparaît pas, ouvrez-le en double-cliquant sur l'icône de l'outil correspondant. De nombreuses fonctionnalités de base sont affectées par les paramètres des dialogues Pinceau (crayon et pinceau) et Remplissage (motif de remplissage). Ces boîtes de dialogue sont accessibles par la commande Dialogues du menu contextuel. Tous les dialogues (mais pas la fenêtre d'image) peuvent être déplacés et amarrés les uns aux autres par glisser-déposer. Vous pouvez ainsi garder une vue d'ensemble des fenêtres lorsque celles-ci sont nombreuses. Lorsque vous utilisez fréquemment un sous-menu particulier (par exemple Image > Transformer), vous pouvez tout simplement lui attribuer son propre dialogue. Pour cela, ouvrez le menu dans la fenêtre d'image par le biais du menu contextuel. Ce n'est que là (et non dans le menu principal) qu'apparaît en haut du menu une ligne pointillée. Dès que vous cliquez dessus, le menu se voit affecter sa propre fenêtre. Toutes les commandes de peinture et de dessin utilisent les couleurs de premier plan et d'arrière-plan définies dans la boîte à outils. Vous pouvez ouvrir le dialogue permettant de modifier ces couleurs d'un double-clic sur le champ de couleur correspondant. La petite icône en bas à gauche rétablit les couleurs par défaut noir et blanc ; la double flèche intervertit couleur de premier plan et couleur d'arrière-plan. Ctrl+Z vous permet d'annuler les cinq dernières opérations, Ctrl+Y permet de les rétablir. La boîte de dialogue de configuration Édition > Préférences > Environnement vous permet de fixer le nombre d'annulations autorisées (attention au fait que l'espace mémoire requis peut rapidement gonfler !). La boîte de dialogue Édition > Historique d'annulation vous donne un accès facile aux dernières opérations effectuées. La fenêtre présente chacune des étapes réalisées avec un aperçu de l'image résultant de l'opération correspondante. Un clic de souris vous permet de revenir à un état antérieur. De nombreux effets et paramètres sont pilotés par une règle. Ces règles sont toutefois difficiles à utiliser précisément avec la souris. Utilisez plutôt les flèches du clavier ! Il est souvent pratique de disposer, en plus d'un agrandi ou d'une réduction d'une image, d'une seconde vue à l'échelle 1:1. Pour ce faire, il vous suffit d'ouvrir avec Affichage > Nouvelle vue une seconde fenêtre présentant l'image en cours. Vous pouvez alors y configurer l'agrandissement indépendamment de la première fenêtre, afficher la sélection (Ctrl+T) ainsi que les guides (Maj+Ctrl+T). Vous aurez alors une bonne idée du résultat final de votre travail. Avec de nombreuses distributions, le système d'aide de Gimp n'est pas installé par défaut pour des raisons de place. Avant de pouvoir utiliser l'aide, vous devrez donc installer les paquetages gimp-helpbrowser, gimp-help-common et gimp-help-fr. Pour lancer l'aide, utilisez la touche F1 ou le menu Aide.
Linux Livre Page 157 Mardi, 23. septembre 2008 1:05 13
11
Audio et vidéo Ce chapitre explique comment, sous Linux et dans le respect de la légalité, vous pouvez écouter des CD et fichiers audio, lire des DVD et fichiers vidéo et regarder la télévision avec DVB-T. Je suppose ici que le système audio et vidéo de votre distribution fonctionne (voir le Chapitre 22). C’est en général le cas avec la majorité des distributions si vous utilisez du matériel standard. Après une présentation rapide des principaux lecteurs de CD, je m’intéresserai aux codecs audio et vidéo, ainsi qu’au cryptage des DVD. Les codecs constituent le fondement du stockage et de la lecture de fichiers audio et vidéo sous forme compressée. Le cryptage des DVD est le principal obstacle qu’a placé l’industrie des médias sur le chemin des utilisateurs souhaitant lire leurs DVD sous Linux. Une dernière section traitera de la télévision numérique (DVB). Après cette introduction quelque peu théorique, je vous présenterai les principaux lecteurs audio et vidéo pour Linux. De nombreux programmes sont conçus pour être universels et ils remplissent donc plusieurs rôles, bien au-delà du simple "lecteur de MP3". Ils permettent de modifier les informations relatives à des fichiers, flux, lecteurs de données ou cartes TV, extraire ("ripper") des CD audio, etc. • Amarok, lecteur audio de KDE ; • Banshee, lecteur audio de Gnome (repose sur la bibliothèque Mono) ; • KAudioCreator, logiciel d’extraction de CD de KDE ; • MPlayer, lecteur audio et vidéo ; • Noatun, lecteur audio de KDE ; • RealPlayer/Helix Player, lecteur audio et vidéo ; • Rhythmbox, lecteur audio de Gnome ; • Sound Juicer, logiciel d’extraction de CD pour Gnome ; • Totem, lecteur par défaut de l’environnement Gnome ; • XMMS, lecteur audio simple ; • Xine, lecteur audio et vidéo. Lorsque vous configurez Gnome ou KDE comme environnement de bureau, vous pouvez déterminer vous-même quel est le programme de lecture par défaut pour un format donné (voir les Chapitres 4 et 5 à ce sujet). Un conseil supplémentaire : si vous recherchez avant tout un lecteur simple pour écouter des fichiers locaux, tenez-vous le plus loin possible des programmes surchargés de fonctionnalités. Personnellement, mon lecteur favori est XMMS lorsque je souhaite écouter l’ensemble des fichiers MP3 ou OGG d’un même répertoire. Cela ne nécessite qu’une courte commande à saisir dans la console et je n’ai pas besoin de me compliquer la vie avec des listes de lecture ni avec l’importation de fichiers audio ou une demi-douzaine de boîtes de dialogue de configuration à remplir...
Linux Livre Page 158 Mardi, 23. septembre 2008 1:05 13
158 Multimédia pour utilisateurs avancés
LINUX
On pourrait écrire bien davantage encore sur le sujet du multimédia sous Linux : parmi les sujets importants à évoquer, on trouverait la synchronisation avec un iPod, la capture audio, la réception de télévision analogique, la programmation d’enregistrements vidéo, le son multicanaux, le montage audio ou vidéo, Midi, l’utilisation d’un ordinateur sous Linux comme serveur audio et vidéo, etc. Comme je ne suis toutefois pas un expert en matière de multimédia et que je ne suis pas convaincu que Linux soit la meilleure plate-forme pour cet usage, je préfère vous renvoyer aux sites web thématiques suivants : http://audacity.sourceforge.net/ logiciel de montage son http://sound.condorow.net/ logiciels audio et MIDI pour Linux http://lwn.net/Articles/182954/ présentation d’Audio-Stream-Grabber http://www.linuxtv.org/ regarder la télévision avec DVB http://www.exploits.org/v4l/ collection de liens Video for Linux http://www.pierrox.net/dvr/ magnétoscope numérique http://www.mythtv.org/ Linux comme ordinateur pour regarder la télévision http://freevo.sourceforge.net/ Linux comme station multimédia personnelle http://64studio.com/ distribution multimédia 64 bits
11.1 Bases Glossaire Encodeur
Un encodeur transforme un fichier audio ou vidéo non compressé en un format compressé (par exemple MP3, OGG ou MPEG-4). La tâche de l’encodeur est de parvenir à un compromis entre taille du fichier compressé et qualité du résultat, ce qui demande beaucoup de calculs et peut donc être très lent.
Décodeur
Le décodeur est responsable de l’opération inverse, à savoir la décompression du fichier vers un format non compressé (voir Chapitre 15) ou vers un format que la carte audio ou vidéo peut rendre. Chaque lecteur audio ou vidéo doit donc faire appel à un décodeur spécialisé pour le format de fichier à lire.
Codec
Le fonctionnement par encodeur/décodeur est généralement décrit par le terme de codec. Dans le langage courant, toutefois, ce mot désigne plus simplement la bibliothèque ou le module/greffon de codage/décodage d’un format audio ou vidéo particulier. Il existe un vaste éventail de codecs, dont le décodeur est généralement disponible gratuitement pour Windows et Mac OS. La situation est un peu plus compliquée sous Linux. Vous pourrez trouver, pour beaucoup de codecs populaires, une version open-source du décodeur et même parfois de l’encodeur, mais le statut juridique de ces programmes ou bibliothèques est problématique lorsque les codecs sont protégés par des licences et des brevets. Pour les ordinateurs de type i386, il est également possible d’utiliser sous Linux les codecs prévus pour Windows (un wrapper permet de rendre utilisables sous Linux les fonctions prévues pour Windows). La situation juridique n’est ici guère plus claire, dans la mesure où ces codecs gratuitement disponibles pour Windows ne prévoient pas de termes de redistribution, encore moins d’utilisation sous Linux.
Linux Livre Page 159 Mardi, 23. septembre 2008 1:05 13
AUDIO ET VIDÉO
159
Cette situation juridique complexe (qui, de surcroît, dépend du pays) conduit à ce que la plupart des distributions ne soient livrées qu’avec relativement peu de codecs. Vous pourrez toutefois trouver en téléchargement sur Internet, pour la plupart des distributions, les implémentations open-source des principaux codecs, ainsi qu’une collection des codecs Windows essentiels (w32codecs ou win32codecs). Une autre solution possible à ce dilemme juridique consiste à se procurer des codecs sous licence officielle comme en propose la société Fluendo (naturellement contre rémunération). Ces paquetages ne sont toutefois disponibles que pour le système audio GStreamer et sont donc incompatibles avec la majorité des programmes présentés dans ce chapitre. Cryptage, CSS
L’industrie multimédia a voulu éviter dans le domaine vidéo un désastre comparable à celui causé par la diffusion massive de fichiers MP3 sur les systèmes d’échange. Par conséquent, une majorité des DVD vidéo sont cryptés par l’algorithme CSS (Content Scrambling System). La protection résultante s’est toutefois montrée très limitée. Le cryptage est très simple et a été rapidement contourné. Bien plus d’énergie a en revanche été dépensée pour criminaliser toutes les techniques open-source de décryptage. Pour cette raison, l’utilisation de la bibliothèque de décryptage est illégale dans de nombreux pays. En mai 2007, une cour de justice finlandaise a jugé en première instance que CSS était "inefficace" et a par conséquent autorisé le contournement de CSS. Nous en sommes hélas encore loin : en France, le décryptage de DVD reste interdit et je ne peux donc ici fournir d’informations ou de liens relatifs à la bibliothèque permettant de le faire. Mettons toutefois les choses au point : il ne s’agit pas ici de copie illégale ! Je n’ai tout simplement pas le droit d’expliquer comment vous pouvez lire sous Linux vos DVD achetés légalement, ce qui est par ailleurs une évidence sous Windows. CSS ne représentait toutefois que la première étape : les DVD HD et Bluray présentent un mécanisme de protection plus fort et partiellement implémenté au niveau du matériel (par exemple sur la carte graphique). Même si ces mesures de protection ont été ou seront contournées, c’est devenu de plus en plus difficile. De façon générale, l’industrie des médias fait à l’heure actuelle tout ce qui est en son pouvoir pour compliquer la lecture de supports vidéo sur un ordinateur. La seule consolation pour les amateurs de Linux est que les utilisateurs de Windows ont également de plus en plus de peine à lire un DVD HD ou Bluray. La lecture de vidéos sous Linux pose donc des problèmes moins techniques que juridiques. Une majorité des habitués de Linux parviendront néanmoins à configurer leur système de façon satisfaisante à l’aide de Google. Mais, pour le débutant, il est plus pratique de brancher un lecteur de DVD bon marché sur la télévision ou sur un écran d’ordinateur dédié.
DRM (MTP)
DRM est l’acronyme de Digital Rights Management, traduit en français par MTP ou mesures techniques de protection. Elles permettent de lier à un matériel donné la lecture d’un fichier audio ou vidéo. Le fichier peut être copié, mais non lu, sur un autre ordinateur. Les MTP sont pour le moment principalement mises en œuvre sur les fichiers audio (par exemple sur les fichiers téléchargés depuis la boutique iTunes d’Apple) mais elles devraient jouer un rôle croissant à l’avenir dans le cadre des téléchargements vidéo, des livres électroniques, etc. Les utilisateurs de Linux sont quasiment complètement exclus de l’utilisation légale des
Linux Livre Page 160 Mardi, 23. septembre 2008 1:05 13
160
Streaming
LINUX
fichiers protégés par MTP, et aucune amélioration ne se profile à l’horizon. Essayez, autant que possible, de n’acheter que des fichiers de musique et de vidéo libres de MTP ! Pour écouter la radio en direct depuis Internet, de nombreuses stations de radio proposent un flux continu. Ainsi, la restitution peut démarrer dès le début de la transmission. Le téléchargement n’est pas prévu dans ce cadre, souvent pour des raisons de licences. De nombreux lecteurs audio permettent toutefois d’enregistrer dans un fichier le flux audio en cours de lecture.
Formats audio et vidéo
WAV
MP3
ID3-Tags
Il existe de très nombreux formats audio et vidéo. Cette section vise non pas une description complète et détaillée de chacun de ces formats, mais plutôt à fournir certaines informations spécifiques à Linux sur des formats fréquemment utilisés. L’article Wikipedia suivant donne une bonne synthèse des codecs audio et vidéo populaires : http://fr.wikipedia.org/wiki/Codec Tous les formats décrits dans ce qui suit sont pris en charge d’une manière ou d’une autre sous Linux. Il existe toutefois des problèmes juridiques empêchant leur intégration officielle dans une distribution. La section relative au format MP3 vous donnera quelques détails sur ce sujet, transposables à d’autres formats. WAV est un format audio très simple défini par Microsoft et sans compression. Il n’y a aucune perte de qualité dans les fichiers résultants mais ceux-ci sont malheureusement énormes. Aucun problème de licence ou de brevet ne vient empêcher la lecture ou la génération de fichiers WAV sous Linux. MP3 est une abréviation de MPEG-1, audio layer 3, où MPEG est l’acronyme de Moving Pictures Experts Group. C’est le format de fichier de très loin le plus connu pour la compression des fichiers audio. Il existe différents décodeurs MP3 pour Linux, sous la forme de commandes individuelles ou de programmes (mpg123), aussi bien que de bibliothèques. Le choix est plus restreint en matière d’encodage ; en pratique, seul lame est véritablement utilisé. Bien que l’algorithme de compression MP3 ait été majoritairement développé par l’Institut Fraunhofer, plusieurs sociétés (Alcatel, Sisvel, Thomson, entre autres) détiennent des brevets relatifs au MP3. Cela signifie que les encodeurs MP3 sont soumis à une licence, même si vous les distribuez gratuitement. Pour cette raison, on ne trouve pas de distribution Linux proposant directement un encodeur MP3. Même sur Internet, les encodeurs MP3 ne sont généralement mis à disposition que depuis des pays où les brevets MP3 n’ont pas cours. La situation des décodeurs MP3 (lecteurs MP3) est légèrement meilleure : même si cette technique est également soumise à brevet, l’Institut Fraunhofer et la société Thomson ont pour le moment donné leur accord pour que les lecteurs open-source puissent être utilisés sans licence (http://mp3licensing.com). Les fichiers MP3 contiennent également (en fin de fichier) des informations sur le titre, l’interprète, etc. Ces informations sont appelées ID3-Tags. D’autres formats audio permettent également d’enregistrer les informations correspondantes. Les balises ID3-Tags sont des informations complémentaires enregistrées au sein du fichier MP3. Vous pouvez entre autres y renseigner le titre, l’interprète, le nom de l’album, le compositeur, une image de la couverture du CD, etc. Deux standards ont cours pour
Linux Livre Page 161 Mardi, 23. septembre 2008 1:05 13
AUDIO ET VIDÉO
M3U
161
l’enregistrement des informations ID3 : ID3v1 et ID3v2, comprenant de nombreux champs textes supplémentaires et des possibilités d’extension. Tous les lecteurs audio analysent les balises ID3 et la majorité des lecteurs est compatible avec les deux standards. Les informations ID3 sont généralement créées et enregistrées au moment de l’extraction des pistes audio et de la conversion au format MP3. Il existe par ailleurs de nombreux outils pour modifier ultérieurement ces informations, voire pour passer d’un standard à l’autre (ce que permettent, par exemple, l’outil Gnome easytag ou le lecteur Amarok). M3U est non pas un format audio ou vidéo mais un format populaire pour les listes de lecture. Le format des fichiers *.m3u est très simple : chaque ligne contient le chemin ou l’adresse Internet d’un fichier audio. Initialement prévu uniquement pour les fichiers MP3, ce format a depuis été utilisé pour d’autres types de fichiers audio. La plupart des lecteurs permettent d’importer des répertoires entiers de fichiers audio et de les insérer à des listes M3U. Il peut également être intéressant de générer soi-même les fichiers M3U. La commande suivante génère un fichier M3U contenant l’ensemble des fichiers MP3 d’un répertoire : utilisateur$ find repertoire_audio -name ’*.mp3’ > tous.m3u
Ogg Vorbis
WMA
AAC
ATSC A/52 et AC-3 Real Audio
MPEG-1, -2 et -4
Ogg Vorbis est l’alternative open-source au format MP3. Ogg Vorbis comprend, outre un nouveau type de données audio (extension de fichiers .ogg), un logiciel d’encodage et de décodage. Il a été développé en réaction aux problèmes de brevets et de licences associés au format MP3. Vous trouverez plus d’informations à son sujet sur le site suivant : http://www.vorbis.com/ Windows Media Audio est un autre codec audio développé par Microsoft, avec prise en charge des MTP. Ce codec est standardisé sous l’appellation VC-1 et il en existe une implémentation open-source (par exemple pour MPlayer ou dans le paquetage ffmpeg/ !!libavcodec0d). Advanced Audio Coding est un autre développement issu de l’algorithme MP3, défini dans le standard MPEG-2 et prenant en charge les MTP. AAC est très répandu et utilisé, entre autres, sur la quasi-totalité des fichiers audio d’iTunes. Il existe des encodeurs et décodeurs AAC pour Linux (faac/faad et libfaac/libfaad) qui ne permettent toutefois de lire et de modifier que des fichiers sans MTP. ATSC A/52 ou, en abrégé, AC-3 est un format audio multicanaux développé par Dolby Digital, utilisé par exemple dans la plupart des DVD. liba52 en constitue un décodeur open-source. La société RealNetworks a développé un grand nombre de formats audio et vidéo commerciaux concurrents des formats Windows Media. Si vous ne devriez, en pratique, rencontrer que rarement des fichiers Real Video, les formats Real Audio sont relativement populaires, particulièrement pour la diffusion radio. Vous pouvez lire les fichiers et flux Real Audio avec, au choix, le lecteur RealPlayer gratuit (voir un peu plus loin) ou avec les lecteurs opensource Totem, MPlayer et xine. MPEG-1, -2 et -4 définissent plusieurs formats de compression de données audio et vidéo. Certaines parties importantes de MPEG-4 sont implémentées de façon similaire dans différents codecs, tous compatibles MPEG-4 (par exemple XviD, DivX ou Apple QuickTime).
Linux Livre Page 162 Mardi, 23. septembre 2008 1:05 13
162
LINUX
WMV
Microsoft a également développé ses propres codecs Vidéo sous le nom Windows Media Video. Les versions 1 à 3 de WMV présentent des caractéristiques comparables à MPEG-4 mais prennent en charge les MTP.
Theora
Theora est l’homologue d’Ogg Vorbis pour la vidéo. Le codec Theora présente également des caractéristiques comparables à MPEG-4, mais il est basé uniquement sur du code opensource et est donc librement disponible, à l’adresse suivante : http://www.theora.org/ Pour générer vous-même des vidéos Theora (par exemple pour documenter des procédures informatiques) vous pouvez utiliser le logiciel Gnome Istanbul : http://live.gnome.org/Istanbul
Lire des CD audio La lecture directe de CD audio est un cas particulier, dans la mesure où le lecteur n’a que des tâches relativement triviales à accomplir : analyser le contenu d’un CD audio et en lire les pistes. C’est en fait le lecteur matériel qui accomplit l’essentiel du travail. Prérequis
Pour que cela fonctionne, la carte son doit être correctement configurée (voir Chapitre 20). Le volume global et celui du canal CD doivent être non nuls. Enfin, si vous utilisez autre chose qu’un ordinateur aux enceintes intégrées, vous devez naturellement brancher votre installation sur la sortie audio de votre ordinateur.
Fonctionnement interne
Les données audio sont transmises à la carte son de deux manières possibles : soit directement (s’il existe un câble audio reliant le lecteur à la carte son), soit (sans ce câble ou avec un lecteur externe) par transmission des données analogiques au système audio. Contrairement aux CD de données, les CD audio ne sont pas montés dans le système de fichiers. L’accès à un fichier s’effectue normalement par le biais du périphérique. De nombreux lecteurs partent du principe que /dev/cdrom pointe vers le bon périphérique (par exemple /dev/scd0 ou /dev/hdc). Si votre ordinateur contient plusieurs lecteurs, vous devez configurer le lecteur dans le programme même ou modifier le lien symbolique.
Lecteurs
La plupart des lecteurs présentés dans la suite peuvent également gérer des CD. Les lecteurs dédiés aux CD sont devenus l’exception (on trouve néanmoins encore gnome-cd ainsi que divers lecteurs en mode texte tels que cdcd, tcd et workbone).
CDDB et freedb
Certains lecteurs de CD présentent la particularité de contacter un serveur CDDB (CD Database) lorsque l’ordinateur est connecté à Internet. En général, il s’agit de http:// www.freedb.org. Ce serveur héberge une énorme base de données contenant pour chaque CD enregistré le titre, l’interprète, etc. Si votre CD est enregistré auprès de cette base, le lecteur ne se contente pas de présenter le numéro de la piste lue mais, par exemple, "Led Zeppelin: Dazed and Confused". La reconnaissance du CD est fondée sur un identifiant calculé à partir de la longueur des pistes du CD. Pour que CDDB fonctionne, vous devez l’activer dans la boîte de dialogue de configuration du lecteur de CD (si ce n’est pas le cas par défaut) et y renseigner l’adresse du serveur à utiliser pour les requêtes : Adresse : freedb.freedb.org, IP-Port : 8880 (cddbp). freedb.freedb.org transmet automatiquement les requêtes vers l’un des nombreux miroirs existants. Vous pouvez également choisir un serveur situé dans votre région (pour réduire les temps d’accès) parmi la liste disponible sur www.freedb.org.
Linux Livre Page 163 Mardi, 23. septembre 2008 1:05 13
AUDIO ET VIDÉO
Extracteur
163
Si le port 8880 est bloqué par un pare-feu, vous pouvez également vous connecter au serveur par un port HTTP : Adresse : freedb.freedb.org, IP-Port : 80, CGI-Script : ~cddb/cddb.cgi Les programmes d’extraction lisent les pistes d’un CD audio sous forme numérique, ce qui est plus complexe qu’il n’y paraît au premier abord. Même si les pistes du CD sont également sous forme numérique, celle-ci diffère du format utilisé pour un CD de données. Toute erreur de lecture est quasiment impossible à corriger car le lecteur matériel ne peut localiser l’emplacement exact où reprendre. La vitesse d’extraction ainsi que la qualité des fichiers résultants (au format WAV) dépendent fortement de la qualité du lecteur de CD/DVD utilisé. Pour faciliter l’extraction de CD audio et la conversion des fichiers WAV vers d’autres formats plus appropriés (MP3, OGG), on utilisera en général une interface graphique. La section suivante vous en présentera quelques-uns parmi les plus populaires. Vous pouvez également utiliser, sous KDE, le programme universel Konqueror (voir Chapitre 5). Si vous souhaitez automatiser le processus par le biais d’un script, les outils en ligne de commande cdda2wav/icedax et cdparanoia deviendront vos compagnons (voir Chapitre 15).
Lecture de DVD vidéo Pour pouvoir lire des DVD vidéo sous Linux, quelques conditions préalables doivent être remplies : • Vous aurez besoin d’un lecteur logiciel de DVD (Amarok, MPlayer, Totem ou xine). • Les codecs nécessaires doivent être installés, en particulier pour AC-3 (son) et MPEG-2 (image). • Pour la plupart des DVD commerciaux cryptés par CSS, vous aurez besoin d’une bibliothèque supplémentaire (à installer) pour contourner cette protection. • La vitesse de transmission depuis le lecteur vers l’ordinateur doit être suffisante (c’est le cas de tous les lecteurs SATA et SCSI modernes, mais les ordinateurs plus anciens peuvent nécessiter d’activer le mode DMA). • Enfin, le pilote de votre carte graphique doit prendre en charge l’extension XVideo (XV, voir Chapitre 22) ; il est possible de s’en passer mais cela nécessite un processeur très rapide.
Situation juridique, paquets complémentaires La situation juridique et l’application des brevets variant d’un pays à l’autre, la distribution de codecs et de logiciels de décryptage n’est pas possible en standard. Il existe toutefois pour de nombreuses distributions des sources de paquetages non officielles hébergeant ces paquetages. Vous pouvez configurer ces sources dans votre système et télécharger vousmême les paquetages correspondants. Les sites de ces sources comprennent généralement un avertissement indiquant que l’utilisation de ces logiciels est illégale dans certains pays. Vous trouverez des informations supplémentaires sur les sites suivants : http://fedoraproject.org/wiki/Multimedia ; http://en.opensuse.org/Restricted_Formats ; https://help.ubuntu.com/community/RestrictedFormats
Linux Livre Page 164 Mardi, 23. septembre 2008 1:05 13
164
LINUX
11.2 Lecteurs audio et vidéo Cette section présente les principaux lecteurs audio et vidéo pour Linux, y compris les extracteurs de CD KAudioCreator et SoundJuicer. Un avertissement, toutefois : de nombreux programmes présentés ici nécessitent des bibliothèques de codecs pour fonctionner. Pour les programmes Gnome (généralement fondés sur le système audio GStreamer), les paquetages nécessaires sont relativement simples à trouver : leur nom commence par gstreamer. Pour les autres, la recherche pourra nécessiter plus de travail. Si le lecteur de votre choix ne parvient pas à lire tel ou tel format, c’est bien souvent qu’il manque le paquetage correspondant.
Lecteurs en ligne de commande Aucun des outils en ligne de commande suivants ne propose d’interface graphique. Ils permettent de piloter le lecteur de CD et de lire les fichiers audio (fournis en paramètres) et transmettent ensuite les informations à un périphérique audio. Malgré le peu de confort qu’elles offrent, ces commandes sont importantes car de nombreux programmes y accèdent plutôt que mettre en œuvre leurs propres outils de décodage audio. • mpg123 est la commande classique de lecture de fichiers MP3. mpg123 -w sortie.wav entree.mp3 vous permet également de convertir des fichiers MP3 en fichiers WAV. • madplayer est une alternative à mpg123, basé sur la bibliothèque libmad. Il peut convertir des fichiers MP3 vers de nombreux autres formats. mad et libmad sont distribués sous licence GPL, ce qui n’est pas le cas de mpg123. • mpg321 est une autre alternative à mpg123 reposant, comme madplay, sur libmad. • ogg123 permet de lire des fichiers OGG. Cette commande fait partie du paquetage d’outils vorbis-tools et utilise les bibliothèques libogg et libvorbis. vorbiscomment vous permet de lire et de modifier les commentaires (Meta-tags) des fichiers OGG. • cdcd, tcd et workbone sont des lecteurs de CD en mode texte.
Amarok (lecteur audio) Amarok est le programme KDE de lecture et de gestion de fichiers audio le plus populaire et le plus abouti. Au premier lancement, il vous demande de préciser où se trouvent vos fichiers audio et génère une bibliothèque de tous les titres disponibles. L’onglet Collection vous permet de parcourir les albums et les titres et de les ajouter à la liste de lecture d’un clic de souris. Outre ces fonctionnalités de base, vous pouvez également opter pour une lecture aléatoire, générer des listes, transférer des fichiers depuis/vers un lecteur de MP3, etc. Sur la plupart des distributions, Amarok utilise la bibliothèque xine pour le rendu des fichiers audio mais, suivant la compilation, il peut également faire appel à Helix (Real Player) ou NMM (http://www.networkmultimedia.org).
Linux Livre Page 165 Mardi, 23. septembre 2008 1:05 13
AUDIO ET VIDÉO
165
Figure 11.1 Amarok.
Banshee (lecteur audio) Banshee est un lecteur audio pour l’environnement Gnome. Ce projet relativement récent est fondé sur la bibliothèque Mono. Tout comme pour Rhythmbox, vous devez préalablement importer les fichiers audio à gérer (ils ne sont toutefois pas copiés mais leurs propriétés sont enregistrées dans une base de données : ~/.gnome2/banshee/banshee.db). Vous pouvez ensuite sélectionner les titres suivant divers critères, les organiser en listes, etc. Helix Banshee
Helix Banshee est une variante de Banshee utilisant les codecs des lecteurs Helix et RealPlayer. Si vous souhaitez tirer parti des fonctionnalités d’organisation de Banshee et des nombreux formats audio que permet le lecteur RealPlayer, Helix Banshee est un bon choix.
KAudioCreator (extracteur de CD) Le programme KDE KAudioCreator lit les pistes d’un CD et les enregistre sous la forme de fichiers MP3, Ogg-Vorbis ou tout autre format de votre choix. Pour la génération des fichiers, ce programme fait appel à des programmes externes (oggenc pour les fichiers OGG, lame pour les fichiers MP3, etc.), ce qui nécessite bien sûr d’avoir installé les paquetages correspondants. Un assistant vous aide à configurer les chemins des nouveaux fichiers (dont les informations de titre, d’interprète, etc. sont lues à partir de la base de données CDDB).
MPlayer (lecteur audio, vidéo et télévision) MPlayer est un lecteur audio et vidéo universel, dont les points forts se situent essentiellement au niveau de la vidéo. Il est livré avec une impressionnante palette de formats audio et vidéo. En revanche, un inconvénient est qu’il ne peut pas afficher de menu de navigation de DVD (le choix des langues, des sous-titres, etc. doit donc s’effectuer par menu contextuel). Une fois le lecteur installé, deux variantes de ce programme sont à votre disposition :
Linux Livre Page 166 Mardi, 23. septembre 2008 1:05 13
166
LINUX
mplayer adresse lance la version minimaliste, sans interface graphique, tandis que gmplayer adresse ouvre la version avec interface graphique simple (voir Figure 11.2). Dans certaines distributions, gmplayer possède son propre paquet intitulé mplayer-gui. Si votre carte graphique n’est pas compatible XVideo, vous devez fournir au lancement l’option -vo x11 (ce qui demande toutefois beaucoup plus de calculs).
Figure 11.2 MPlayer (lecteur audio, vidéo et TV).
Le programme propose divers raccourcis clavier définis dans le fichier /etc/mplayer/ input.conf et documentés dans man mplayer (qui fournit également l’ensemble des options que vous pouvez choisir au lancement). Les plus importants sont P (pour pause) et Q (pour quitter). Les flèches vous permettent d’avancer ou de reculer dans le film. Il existe un greffon mplayer pour Mozilla (paquetage mozilla-mplayer) qui vous permet par exemple d’écouter directement dans Firefox ou Konqueror des fichiers audio. Ce greffon se configure par le fichier /etc/mplayerplug-in.conf ou ~/.mplayer/mplayerplug-in.conf.
Noatun (lecteur audio et vidéo) Le programme KDE Noatun est un lecteur audio et vidéo relativement simple. Sa popularité a décru depuis qu’Amarok est devenu le lecteur par défaut dans KDE.
RealPlayer et Helix Player (lecteur audio et vidéo) La société RealNetworks a développé une série de formats audio et vidéo commerciaux concurrents de Windows Media. Pour lire les fichiers Real, vous pouvez utiliser le lecteur RealPlayer ou son greffon Mozilla. Ce programme est gratuit mais non libre. SUSE compte parmi les rares distributions à le distribuer par défaut, peut-être parce que RealPlayer constitue une solution légale et gratuite pour lire des MP3. Depuis sa version 10, RealPlayer est basé sur un programme open-source, Helix Player, issu du projet Helix (initié par RealNetworks). Ces deux outils diffèrent non seulement par leur
Linux Livre Page 167 Mardi, 23. septembre 2008 1:05 13
AUDIO ET VIDÉO
Installation
167
licence de distribution, mais également par les codecs fournis : Helix Player ne gérant que les formats libres, RealPlayer se révèle donc plus intéressant. Pour la plupart des distributions, il n’existe pas de paquetage RealPlayer. Vous devez donc installer le programme manuellement, ce qui n’est toutefois pas difficile. Vous pouvez télécharger le paquetage RPM ou le fichier *.bin de la version 11 sur le site suivant : http://www.real.com/linux Pour installer le paquetage RPM, procédez comme à l’accoutumée avec rpm -i. Dans les autres cas, téléchargez le fichier *.bin et exécutez les commandes suivantes, en répondant à toutes les questions par la touche Entrée : root# chmod u+x RealPlayer10GOLD.bin root# ./RealPlayer10GOLD.bin
Version 64 bits
Problème avec Totem
Problème de compatibilité avec le système audio
RealPlayer n’est à l’heure actuelle disponible qu’en version 32 bits. Sur une distribution 64 bits, vous devrez faire appel à une version 64 bits de test non officielle, qui cause régulièrement des problèmes. Vous trouverez cette version 64 bits à l’adresse suivante : http://forms.helixcommunity.org/helix/builds/?category=realplay-current Il est toutefois plus simple, dans ce cas, de renoncer à RealPlayer et d’utiliser plutôt un lecteur open-source compatible Real (MPlayer et le greffon Mozilla correspondant sont une bonne alternative). Lorsque le plugin Firefox du lecteur Totem est installé, celui-ci cherche systématiquement (et sans succès) à lire tout fichier Real, même si RealPlayer est installé : pour résoudre ce problème, désinstallez le paquetage totem-mozplugin ou totem-mozilla. Sur certaines distributions, RealPlayer est malheureusement incompatible avec le système audio. Il ne peut jouer de musique que si aucun autre programme ne mobilise le système audio (l’inverse est également vérifié).
Rhythmbox (lecteur audio) Rhythmbox est un programme Gnome de gestion et de lecture de fichiers audio (généralement aux formats MP3 ou Ogg-Vorbis). Les points forts de ce programme résident dans ses fonctionnalités de gestion, très pratiques pour des bibliothèques importantes. Au premier lancement apparaît un assistant dans lequel vous renseignez l’emplacement de votre répertoire audio. Rhythmbox parcourt ce répertoire et génère une base de données musicale interne, ce qui peut prendre un certain temps suivant la taille de la collection. Vous pouvez au besoin ajouter d’autres fichiers à la bibliothèque par le biais de Musique > Importer un dossier (à utiliser également si vous avez inséré de nouveaux fichiers dans un dossier déjà importé). Pour supprimer des titres dont vous avez effacé les fichiers, passez par le menu Édition > Supprimer (Rhythmbox n’est pas capable de remarquer ce genre de modification ; si vous changez en profondeur le contenu de votre dossier audio, il est préférable de sélectionner l’ensemble des titres dans Rhythmbox, de les supprimer et d’importer à nouveau le dossier. Attention, toutefois, à ne pas utiliser Édition > Déplacer dans la corbeille, qui envoie sans autre forme de procès vos fichiers MP3 vers la corbeille !).
Linux Livre Page 168 Mardi, 23. septembre 2008 1:05 13
168
LINUX
Rhythmbox est simple à utiliser : vous pouvez choisir un genre, un interprète et/ou un album, puis lancer la lecture en cliquant sur le bouton Lire (voir Figure 11.3). Rhythmbox lit alors l’ensemble des titres apparaissant dans la liste.
Figure 11.3 Rhythmbox.
Sound Juicer (lecteur et extracteur de CD) Le logiciel Gnome Sound Juicer permet de lire des CD audio et d’en extraire les pistes pour les compresser dans un format de votre choix (MP3, Ogg, etc.). Pour la génération des fichiers audio, Sound Juicer fait appel à des programmes externes par le biais du système GStreamer (par exemple oggenc pour l’encodage des fichiers OGG, lame pour les MP3, etc.). Par défaut, Sound Juicer génère des fichiers OGG dont le nom suit le modèle : ~/Musique/Groupe/Nom-CD/nn - Titre-piste.ogg
Vous pouvez configurer la hiérarchie de répertoires et le format audio à l’aide du menu Édition > Préférences. Si le format de votre choix n’est pas disponible, vous devez configurer un nouveau profil. La commande figurant dans le champ Pipeline GStreamer est la plus importante. L’exemple suivant permet de générer des fichiers MP3 avec lame et peut vous servir de modèle : audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=0 vbr-quality=6 ! id3v2mux
Totem (lecteur audio et vidéo) Totem est un lecteur audio et vidéo universel et c’est le lecteur par défaut pour les versions actuelles de Gnome. Certaines distributions l’utilisent même pour la lecture de CD, même s’il n’est pas optimal dans ce cadre. Il en existe également un greffon Mozilla permettant de lire des vidéos directement dans le navigateur. Deux variantes existent, l’une fondée sur le système audio Gnome GStreamer, l’autre sur xine, et qui ne peuvent être installées simultanément. Totem a pour principaux avantages sa bonne intégration à l’environnement de bureau Gnome et l’interface correspondante. Mon expérience n’a toutefois pas été concluante sur la
Linux Livre Page 169 Mardi, 23. septembre 2008 1:05 13
AUDIO ET VIDÉO
169
lecture des DVD : Totem a rencontré des problèmes avec l’affichage des menus du DVD, le choix des langues, la navigation, etc.
xine (lecteur audio, vidéo et TV) xine est probablement le lecteur vidéo le plus puissant et le plus répandu sous Linux. Il peut également être utilisé pour lire des fichiers audio et pour regarder la télévision. Ses points forts sont la prise en charge de très nombreux formats audio et vidéo, ainsi que sa bonne gestion des menus de DVD. On ne peut toutefois faire de compliments poussés sur son interface, qui vieillit et nuit au confort d’utilisation. Toutefois, il permet après un temps d’adaptation une utilisation très efficace (particulièrement par le clavier). L’interface de xine étant totalement découplée de la bibliothèque sous-jacente, cela permet à d’autres logiciels (par exemple Amarok, Totem ou Kaffeine) de faire appel à cette même bibliothèque. Lancement
Pour lancer le lecteur, il vous suffit d’exécuter la commande xine. Si celle-ci n’est pas disponible, vous n’avez probablement installé que la bibliothèque mais pas l’interface utilisateur : installez donc à cet effet le paquetage xine-ui. Les fonctionnalités de base de xine apparaissent dans une fenêtre de contrôle. Si celle-ci n’est pas visible, ouvrez-la d’un clic droit de la souris sur la fenêtre de sortie vidéo et, dans le menu contextuel, choisissez Affiche les contrôles (ou, plus simplement, utilisez la touche de clavier G). Pour lancer la lecture d’un DVD, vous disposez d’un bouton éponyme dans cette interface ou vous pouvez taper directement la commande xine dvd://.
Configuration
Il est peu probable que xine soit d’emblée capable de lire des DVD. En règle générale, toutes les bibliothèques complémentaires dont vous avez besoin (codecs, décryptage DVD, etc.) sont absentes du paquetage de base et vous devrez les installer manuellement. La boîte de dialogue accessible depuis Réglages > Configuration (ou Alt+S) est complexe et offre davantage de possibilités que vous ne l’imaginez (en particulier si vous passez du niveau d’expérience débutant au mode avancé ou expert, dans l’onglet gui). Pour qu’une modification soit prise en compte, vous devrez quitter xine et le relancer. En cas de problèmes de configuration ou de vitesse, la commande xine-check peut vous être utile : elle vérifie si les conditions sont remplies pour une utilisation optimale de xine. Dans le cas contraire, la commande vous renvoie quelques indications pour résoudre ces problèmes (qui ne sont toutefois pas toujours fiables, comme mon expérience me l’a montré). Le site suivant vous donnera toutes les informations souhaitées et astuces de configuration dont vous pouvez avoir besoin pour xine : http://xinehq.de/
xmms xmms est un lecteur quelque peu ancien. Même s’il n’est plus maintenu, il est encore très répandu. Il est possible de modifier son apparence à l’aide d’habillages ou "skins" (en particulier les habillages compatibles Winamp). xmms fait également montre d’une grande
Linux Livre Page 170 Mardi, 23. septembre 2008 1:05 13
170
LINUX
souplesse au niveau de ses fonctionnalités, qui peuvent être étendues à l’aide de greffons. Si xmms ne parvient pas à gérer un format audio particulier, vérifiez dans votre gestionnaire de paquetages si le greffon xmms correspondant est bien installé. Les éléments d’interface sont très petits, ce qui demande de bons yeux et une grande précision à la souris. Il est toutefois plus simple de doubler la taille de la fenêtre à l’aide des touches Ctrl+D. La configuration s’effectue par menu contextuel (bouton droit de la souris). Si xmms n’arrive pas à présenter correctement les titres au format Unicode, activez l’option Utiliser les jeux de polices dans Options > Préférences > Polices. xmms est compatible avec de nombreux systèmes audio de Linux. S’il affiche un message d’erreur indiquant que la sortie audio n’est pas disponible, choisissez un autre greffon de sortie dans Option > Préférences (Ctrl+P).
11.3 Regarder la télévision avec DVB-T
Firmware
Analyse des fréquences
DVB, qui est l’acronyme de Digital Video Broadcasting, décrit une méthode relativemement récente de diffusion numérique de programmes télévisés. Il en existe trois variantes : DVBT pour la diffusion terrestre habituelle (TNT ou télévision numérique terrestre), DVB-S pour la diffusion par satellite et enfin DVB-C pour la diffusion par le câble. Cette section se focalise sur DVB-T mais, d’un point de vue technique, ces trois variantes sont similaires et le mode de diffusion du signal ne change rien à la prise en charge au niveau de Linux. La diffusion DVB supplante de plus en plus largement l’émission analogique en Europe. Pour pouvoir regarder la télévision sur votre ordinateur, vous aurez besoin d’une carte DVB-T ou d’un petit appareil USB. Le matériel est bon marché et la prise en charge de Linux, étonnamment bonne. Toutefois, tous les matériels DVB ne fonctionnent pas nécessairement correctement sous Linux : renseignez-vous donc avant l’achat ! Le site suivant est une source d’informations utile sur ce sujet : http://www.linuxtv.org/wiki/index.php/ Main_Page ; http://www.linuxtv.org/wiki/index.php/DVB_USB Le matériel DVB comprend un microprocesseur dont le code (firmware) doit être dans la plupart des cas transmis à l’initialisation. Vous pourrez trouver le fichier nécessaire sur le site suivant : http://www.linuxtv.org/downloads/firmware/ Vous devrez copier le fichier requis par votre périphérique dans le répertoire /lib/firmware/version_noyau/. Lorsque le système hotplug de Linux reconnaît votre appareil, le module noyau correspondant est alors chargé. Ce module lit le fichier du firmware et le transmet au périphérique DVB. La commande dmesg vous permet de constater si cela fonctionne. Avant de pouvoir regarder la télévision, vous devez effectuer une analyse des fréquences pour générer une liste de l’ensemble des canaux disponibles. Pour cela, vous aurez besoin du programme scan ou dvbscan (qui, suivant les distributions, se trouve dans le paquetage dvb, dvb-util ou dvb-apps) ainsi que d’un fichier décrivant les transpondeurs DVB à proximité. Pour de nombreux transpondeurs, vous trouverez un tel fichier dans le répertoire : /usr/share/doc/dvb-utils/examples/scan/dvb-t/
Si vous ne trouvez pas de fichier correspondant à votre localisation, vous devrez générer vous-même le fichier en question, ce qui nécessitera une recherche pour identifier la
Linux Livre Page 171 Mardi, 23. septembre 2008 1:05 13
AUDIO ET VIDÉO
171
fréquence du transpondeur le plus proche. La page suivante est une bonne source d’informations (même si elles ne sont pas toujours actualisées) : http://www.the-media-channel.com/dvb-t/ Générez alors un fichier fondé sur le modèle suivant (en règle générale, vous n’aurez besoin de modifier que la fréquence, ici 858 MHz) : utilisateur$ cat at-Schoeckl # DVB-T Graz/Schoeckl # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy T 858000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE
Exécutez alors la commande scan fichier_transpondeur et renvoyez la sortie correspondante vers le fichier local channels.conf. utilisateur$ scan at-Schoeckl > channels.conf scanning at-Schoeckl using ’/dev/dvb/adapter0/frontend0’ and ’/dev/dvb/adapter0/demux0’ initial transponder 858000000 0 2 9 1 1 2 0 >>> tune to: 858000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16: TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 0x0000 0x2775: pmt_pid 0x01f5 ORF -- ORF1 (running) 0x0000 0x2780: pmt_pid 0x01f6 ORF -- ORF2 St (running) 0x0000 0x2788: pmt_pid 0x01f8 ATV+ -- ATV+ (running) 0x0000 0x2794: pmt_pid 0x01f7 ORF -- ORF2 B (running) Network Name ’ORS DVB-T StB’ >>> tune to: ... WARNING: >>> tuning failed!!! dumping lists (4 services) Done. user$ cat channels.conf ORF1:858000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16: TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:5010:5011:10101 ORF2 St:858000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16: TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:5020:5021:10112 ATV+:858000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16: TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:5040:5041:10120 ORF2 B:858000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16: TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:5020:5021:10132 Lancer le lecteur DVB
Ceci étant fait, vous n’avez plus qu’à copier channels.conf vers le répertoire de configuration de votre lecteur DVB (par exemple MPlayer ou xine) : utilisateur$ cp channels.conf .mplayer/ utilisateur$ cp channels.conf .xine/
Lancez enfin le programme de votre choix. Vous pouvez sélectionner directement la chaîne souhaitée par le biais de dvb://, par exemple dvb://ORF1 (voir Figure 11.4). Attention à bien respecter les majuscules et minuscules ! utilisateur$ gmplayer dvb:// utilisateur$ cp xine dvb://
Linux Livre Page 172 Mardi, 23. septembre 2008 1:05 13
172
LINUX
Figure 11.4 Regarder la télévision avec xine et DVB-T.
Linux Livre Page 173 Mardi, 23. septembre 2008 1:05 13
PARTIE 3 – OUTILS UNIX ET LINUX
12
La console Jusqu’ici, nous vous avons présenté Linux comme un système bureautique. Ses programmes diffèrent certes de ceux que vous utilisez sous Windows ou Mac OS X, mais ils remplissent les mêmes tâches et l’on s’y habitue rapidement. Mais Linux ne s’arrête pas là. Il existe encore tout un pan qui peut sembler effrayant à première vue : les utilisateurs avancés lancent des commandes dans une console texte et récupèrent les résultats sous forme de texte. La souris ne joue qu’un rôle accessoire et les interfaces utilisateur sont obsolètes. Quiconque ayant appris à utiliser une console peut accomplir efficacement de nombreuses tâches. Vous pouvez connecter des commandes les unes aux autres, lancer des tâches en arrière-fond ou automatiquement, créer des scripts, etc. Toutes ces possibilités sont à portée de main, que ce soit en local ou sur le réseau. Les utilisateurs qui exploitent principalement les applications bureautiques auront plus rarement l’occasion d’utiliser des programmes en console que les programmeurs ou les administrateurs système. Mais, dans tous les cas, la console fait partie des outils de base que chaque utilisateur doit connaître. Vous en comprendrez la raison lorsque que votre système graphique ne démarrera pas à cause d’un problème de configuration ou lorsque vous voudrez administrer vos serveurs distants.
12.1 Consoles texte et fenêtres de console Consoles texte
Microsoft Windows ne peut être utilisé qu’en mode graphique, tandis que Linux peut l’être également dans des consoles texte. Par défaut, six consoles sont disponibles. On passe de l’une à l’autre avec Alt+F1 pour la première, Alt+F2 pour la deuxième, etc. Lorsque l’ordinateur fonctionne en mode graphique, Ctrl+Alt+F1 permet d’accéder à la première console et Alt+F7 de revenir au mode graphique. Avant d’accéder à une console texte, vous devez vous connecter. Lorsque vous voulez quitter cette console ou si vous désirez changer d’utilisateur, vous devez vous déconnecter. Le plus simple est alors d’utiliser la combinaison de touches Ctrl+D. Vous pouvez lancer une commande dans une console. Pendant que celle-ci tourne, vous pouvez faire autre chose dans une deuxième console. Vous pouvez aussi vous connecter en tant que root dans une console pour effectuer des tâches administratives, tout en modifiant un fichier dans une autre console connectée avec votre identifiant sans privilège. Les consoles fonctionnent indépendamment les unes des autres.
Linux Livre Page 174 Mardi, 23. septembre 2008 1:05 13
174
LINUX
Raccourcis clavier des consoles texte a+1 à 6 passe aux consoles texte 1 à 6 c+a+1 à 6 passe du mode graphique aux consoles texte 1 à 6 a+7 revient au mode graphique a+5 revient au mode graphique (Knoppix) a+^ passe dans les consoles précédentes et suivantes s+F et fait défiler vers le haut et vers le bas c+a+D éteint ou réamorce Linux ^
F
Fenêtres de commande
Les combinaisons de touches Maj+PageSuiv et Maj+PgPréc permettent de faire défiler page par page une console texte. Vous pouvez aussi voir les résultats des programmes lancés même lorsqu’ils ne s’affichent plus à l’écran. Il n’est pas nécessaire de passer du mode graphique à une console texte pour lancer des commandes. Vous pouvez lancer une fenêtre de commande (voir Figure 12.1), aussi appelée fenêtre de shell ou fenêtre de terminal. Il existe différentes fenêtres de console, selon la distribution et le système de bureau : gnometerminal (Gnome), konsole (KDE) ou xterm. La commande de démarrage dans le menu varie également selon la distribution.
Figure 12.1 Une fenêtre de console.
Raccourcis clavier importants
Dans un terminal, vous pouvez travailler comme sur une console texte. La seule différence est qu’il est plus confortable de faire défiler le texte. Dans une console texte ou un terminal, divers raccourcis clavier permettent de travailler plus confortablement. Le tableau suivant résume les plus importants. Ils ne sont valables que si vous utilisez l’interpréteur de commandes Bash, ce qui est le cas dans la plupart des distributions. Raccourcis clavier de l’interpréteur de commandes Bash c+A place le curseur au début de la ligne c+C interrompt le programme c+E place le curseur à la fin de la ligne c+K supprime la ligne à partir du curseur c+Y copie le texte supprimé c+Z met en pause le programme (reprise avec fg ou bg) t permet la complétion des commandes et des noms de fichiers W et Z permet de naviguer dans les commandes précédemment lancées
Linux Livre Page 175 Mardi, 23. septembre 2008 1:05 13
175
LA CONSOLE
Souris
Lancer des commandes
Le complètementautomatique avec Tab est particulièrement utile et permet d’économiser de la saisie. Il suffit de taper les premières lettres d’une commande ou d’un fichier, puis d’appuyer sur Tab. Lorsque le nom du fichier correspondant est reconnu, il est complété jusqu’à ce que plusieurs possibilités s’offrent à vous. En appuyant une deuxième fois sur Tab, on affiche la liste de tous les fichiers correspondant au début déjà saisi. La souris ne joue qu’un rôle accessoire dans une console texte ou une fenêtre de terminal. Elle ne peut pas être utilisée pour modifier la position du curseur. Sa seule utilité est de copier du texte avec le bouton droit et de le coller avec le bouton du milieu à la position courante du curseur. Pour que la souris fonctionne dans une console texte, le programme gpm doit être démarré. Pour lancer une commande, saisissez son nom dans la console ou la fenêtre de terminal, éventuellement avec un ou plusieurs paramètres, puis tapez sur Entrée. Par exemple, la commande ls affiche une liste des fichiers et répertoires du répertoire courant : utilisateur$ -rw------- 1 -rw------- 1 drwxrwxr-x 3 drwxr-xr-x 2 -rw-r--r-- 1
ls -l michael michael michael michael michael
users 17708403 2008-04-29 13:56 20060519_DN.pdf users 506614 2008-05-01 17:13 subv.tgz users 4096 2007-05-28 13:35 Projets users 4096 2008-03-22 10:04 tmp users 10042 2007-10-30 16:15 zebre.png
Cet exemple illustre la manière dont les commandes et leurs résultats sont représentés. utilisateur$ indique que la commande est lancée par un utilisateur normal. Si la ligne commence par root#, c’est qu’elle doit être lancée par un administrateur système. utilisateur$ et root# représentent l’invite du système et s’affichent automatiquement. Il ne faut pas saisir ces caractères (seuls les caractères en gras doivent être saisis). Votre ordinateur affichera probablement une autre chaîne que utilisateur$ ou root#. Cette dernière peut par exemple contenir le nom du répertoire courant ou celui de l’ordinateur. Il arrive que la place manque pour afficher une commande sur une seule ligne. Dans ce cas, la commande est découpée en plusieurs lignes séparées par des caractères \. On écrira par exemple : root# mkinitrd --with=reiserfs /boot/initrd-2.6.16-1.2111_FC5.img \ 2.6.16-1.2111_FC5
Lancer des commandes en tâche de fond
Travailler en tant que root
Vous pouvez saisir cette commande sur plusieurs lignes et les séparer, comme ici, par des caractères \. Vous pouvez aussi joindre les lignes ; dans ce cas, le caractère \ ne doit pas être saisi. On peut aussi lancer des commandes en tâche de fond. Cela signifie que vous n’avez pas à attendre que le programme se termine pour lancer de nouvelles commandes. Pour cela, saisissez à la fin de la ligne le caractère &. C’est particulièrement utile si vous désirez ouvrir un programme graphique à partir d’un terminal (par exemple, firefox &). Sous Linux, il n’est pas courant de travailler en tant que root (c’est-à-dire avec des droits d’administrateur système). Lorsque vous êtes connecté en tant qu’utilisateur non privilégié, plusieurs méthodes vous permettent de lancer des commandes en tant que root. Dans de nombreuses distributions, il suffit de taper dans une fenêtre de terminal la commande su -l (il
Linux Livre Page 176 Mardi, 23. septembre 2008 1:05 13
176
LINUX
faut bien sûr connaître le mot de passe root). Vous pouvez alors lancer des commandes texte en tant que root. Exit ou Ctrl+D permettent de revenir à l’utilisateur d’origine (sous Ubuntu, on utilise à la place de su la commande sudo).
12.2 Afficher et modifier des fichiers texte less
KDE et Gnome peuvent lire des fichiers texte directement dans le gestionnaire de fichiers (Konqueror ou Nautilus). Avec le bouton droit, vous pouvez aussi les ouvrir dans un éditeur confortable. Si vous travaillez dans une console texte ou un terminal, l’utilitaire less permet de les afficher. Cette commande peut aussi être associée à d’autres commandes pour lire tranquillement des résultats plus longs : utilisateur$ less fichier utilisateur$ ls -l | less
La première commande affiche le fichier fichier page par page et la seconde, le contenu du répertoire page par page. Raccourcis clavier de less W /Z Pos1, j G s+G / motif e ? motif e N s+N Q H
fait défiler le texte vers le haut ou vers le bas affiche le début ou la fin du texte affiche le début ou la fin du texte recherche vers l’avant recherche vers l’arrière répète la recherche vers l’avant répète la rechercher vers l’arrière quitte less affiche l’aide contenant d’autres raccourcis clavier
Lorsque vous affichez un fichier qui contient des données binaires avec less, il arrive que la console en soit déréglée et que les caractères qui s’affichent ne correspondent plus aux caractères réels. Pour corriger cela, lancez la commande reset.
Éditeurs de texte
Emacs, Jove, Jed et Jmacs Vi, Vim et Elvis
Sous KDE et Gnome, il existe des éditeurs de texte confortables avec un comportement intuitif, comme kate ou gedit. Dans une console texte, ces programmes ne sont pas utilisables : vous avez besoin d’un éditeur qui fonctionne entièrement en mode texte. Cette section présente les éditeurs les plus populaires dans cette catégorie. L’éditeur installé par défaut dépend de votre distribution. Ces éditeurs sont des dérivés d’Emacs (voir Chapitre 18). Ces éditeurs sont des dérivés de Vi (voir Chapitre 17).
Linux Livre Page 177 Mardi, 23. septembre 2008 1:05 13
177
LA CONSOLE
Joe
joe est un éditeur très simple. Les raccourcis clavier sont comparables à ceux du programme Wordstar. Raccourcis clavier de Joe c+K H c+K E c+K D c+Y c+s+c+C
nano et pico
affiche ou masque la fenêtre d’aide charge un fichier enregistre le fichier (éventuellement sous un nouveau nom) supprime une ligne annule la suppression quitte joe (demande s’il faut enregistrer)
man joe permet d’afficher une description de toutes les commandes de joe. Ce programme peut aussi être démarré sous le nom jmacs ou jpico. Les raccourcis clavier sont alors compatibles, respectivement avec Emacs et Pico. Ces éditeurs, bien que plus modestes en termes de fonctionnalités, sont simples à utiliser. Les deux lignes en bas de l’écran affichent les commandes à disposition de l’utilisateur (voir Figure 12.2).
Figure 12.2 L’éditeur nano dans une fenêtre de console.
Raccourcis clavier de nano et pico c+A c+D c+E c+H c+^ c+K c+U c+R c+O c+X
passe en début de ligne supprime des caractères passe en fin de ligne supprime le caractère précédent place une marque supprime la ligne courante ou le texte marqué colle le texte supprimé insère un fichier texte enregistre le fichier quitte l’éditeur
La plupart des distributions actuelles fournissent nano. pico n’est plus distribué aussi largement qu’auparavant, car sa licence n’est pas entièrement libre. nano, qui lui n’a pas de problème de licence, est compatible avec pico.
Linux Livre Page 178 Mardi, 23. septembre 2008 1:05 13
178 Définir l’éditeur par défaut
LINUX
Certains programmes lancent un éditeur par défaut. Il s’agit le plus souvent de l’éditeur Vi. Si vous désirez en changer, vous devez définir les variables d’environnement EDITOR et VISUAL dans /etc/profile ou dans ~/.profile. # À insérer dans /etc/profile ou dans ~/.profile export EDITOR=/usr/bin/jmacs export VISUAL=$EDITOR
12.3 Aide du système Les commandes telles que ls, cp ou top, qui fonctionnent dans une fenêtre texte, ne réagissent pas à F1 et n’ont pas de menu d’aide. Voici comment obtenir quelques informations : • commande --help affiche pour de nombreuses commandes une liste de toutes les options, assorties d’une courte explication. • man commande affiche la page de manuel de la commande. On peut généralement naviguer dans le texte grâce aux touches de direction. Q permet de quitter. • help commande ne fonctionne que pour les commandes de l’interpréteur, comme cd ou alias. • info commande est une alternative à man, notamment pour les textes d’aide très longs. L’utilisation de man ou de info dépend du choix du programmeur de l’application. man est cependant plus populaire. man affiche la documentation de plusieurs commandes élémentaires, comme ls ou cp. On appelle man avec la syntaxe man commande pour afficher l’aide de la commande commande. On peut éventuellement fournir un contexte (man contexte commande) pour restreindre la recherche. Par exemple, man 3 printf affiche la syntaxe de la fonction C printf. Cette restriction n’est utile que lorsque plusieurs pages de manuel avec le même nom coexistent dans plusieurs contextes différents. man affiche sans autre précision la première page qu’il trouve. De nombreux livres sur Unix et Linux indiquent la commande avec le numéro de leur contexte − par exemple find(1). Ainsi, vous savez immédiatement comment appeler man. Les pages de manuel sont généralement classées dans des contextes de 1 à 9, ainsi que n : 1. Commandes utilisateur 6. Jeux 2. Appels système 7. Divers 3. Fonctions du langage C 8. Commandes d’administration système 4. Formats de fichiers, fichiers de périphériques 9. Fonctions du noyau 5. Fichiers de configuration 10. Nouvelles commandes En interne, la représentation des fichiers d’aide passe par less. Les touches de navigation expliquées à la section 12.2 sont donc valables pour naviguer dans les pages de manuel. Sous KDE et Gnome, vous pouvez aussi afficher les pages de manuel à l’aide d’un navigateur d’aide ou d’un navigateur web. Les exemples suivants montrent comment afficher la page de manuel de ls et la liste de toutes les pages disponibles : utilisateur$ gnome-help man:ls utilisateur$ khelpcenter man:ls utilisateur$ khelpcenter ’man:(index)’
Linux Livre Page 179 Mardi, 23. septembre 2008 1:05 13
179
LA CONSOLE
Le programme Konqueror peut également, sous KDE, afficher des pages de manuel appelées grâce à #commande. Pages info
Les pages de manuel ont l’inconvénient d’être difficiles à structurer. Le format info offre une alternative intéressante, notamment pour les textes d’aide très longs. On appelle info avec la commande info commande. Si on le lance sans paramètres, les différents thèmes d’aide s’affichent. Sa structure plus claire présente cependant un inconvénient : la navigation dans les pages info est peu pratique, car il n’existe aucun mécanisme de recherche. Raccourcis clavier d’info z R BE t e N P U L H ? c+0 Q
fait défiler le texte vers le bas fait défiler le texte vers le haut passe au début ou à la fin de l’unité de page info déplace le curseur jusqu’au renvoi suivant suit le renvoi vers une autre unité info passe à l’unité info suivante dans la même hiérarchie passe à l’unité info précédente dans la même hiérarchie remonte d’un niveau dans la hiérarchie retourne au texte affiché précédemment affiche l’aide cherche une commande ferme la fenêtre courante quitte l’éditeur
Vous pouvez aussi utiliser l’éditeur emacs ou xemacs pour lire les pages info. Les différentes sections sont alors accessibles par un clic. Une autre alternative est le programme pinfo. Sous KDE et Gnome, vous pouvez lire les pages info grâce au système d’aide intégré. Les exemples suivants montrent comment afficher respectivement la page info d’Emacs et le sommaire de toutes les pages info : utilisateur$ utilisateur$ utilisateur$ utilisateur$
gnome-help info:emacs gnome-help toc:info khelpcenter ’info:/emacs’ khelpcenter ’info:/dir’
Linux Livre Page 180 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 181 Mardi, 23. septembre 2008 1:05 13
13
Gestion des fichiers Ce chapitre décrit comment interagir avec des fichiers. Il couvre les thèmes suivants : • fichiers, répertoires et liens ; • copie, déplacement et suppression des fichiers et des répertoires ; • compression et archive des fichiers ; • recherche de fichiers ; • gravure des CD et des DVD ; • droits d’accès aux fichiers ; • structure des répertoires Linux ; • fichiers de périphériques.
13.1 Interaction avec des fichiers et des répertoires Présentons rapidement les faits importants à propos des noms de fichiers : • Sous Linux, les noms de fichiers sont limités à 255 caractères. • La casse est importante : Linux distingue les minuscules des majuscules. • Les caractères internationaux (comme les lettres accentuées) sont autorisés, mais peuvent poser problème lorsqu’un jeu de caractères différent est utilisé (par exemple sur un réseau). Depuis quelque temps, presque toutes les distributions utilisent l’UTF-8 comme jeu de caractères par défaut. • Les noms de fichiers peuvent contenir plusieurs points. Par exemple, README.bootutils.gz est un nom tout à fait commun. Il s’agit d’un fichier README compressé sur le thème des utilitaires d’amorçage. • Les fichiers qui commencent par un point se comportent comme des fichiers cachés. Ces derniers ne s’affichent pas par défaut avec ls ou les divers gestionnaires de fichiers. • Les noms de fichiers qui ne sont pas interprétables tels quels par les commandes (comme ceux avec des espaces) doivent être encadrés par des guillemets (par exemple, "a b"). La taille des fichiers est virtuellement illimitée. Les anciennes distributions posaient une limite à 2 Go. La limite se calcule actuellement plutôt en téraoctets. Selon la manière dont le noyau Linux est compilé et le système de fichiers utilisé, on peut avoir des fichiers encore plus volumineux.
Répertoires Arborescence de répertoires
Sous Linux, l’arborescence commence par le caractère /. Les lettres de lecteur comme C: n’ont plus de sens et ne sont d’ailleurs plus possibles. Dans cet ouvrage, nous considérons que tous les répertoires suivants se situent en-dessous dans l’arborescence ; le répertoire racine se trouve donc tout en haut. Certains ouvrages adoptent la convention inverse, ce qui
Linux Livre Page 182 Mardi, 23. septembre 2008 1:05 13
182
Répertoire personnel
Répertoires . et ..
LINUX
correspond mieux à la structure d’arbre (la racine en bas, les ramifications vers le haut), mais c’est une terminologie peu courante. Comme nous l’avons vu au Chapitre 3, une fois connecté, vous accédez directement à votre répertoire personnel ou répertoire home. Les fichiers et répertoires qui s’y trouvent vous appartiennent. Les autres utilisateurs (à l’exception de root) ne peuvent ni les modifier, ni les supprimer. Le répertoire personnel se trouve généralement dans l’arborescence à l’emplacement /home/ identifiant_utilisateur (à l’exception de root, pour lequel le répertoire personnel est /root). Il serait certes pénible d’avoir à saisir ce chemin systématiquement ; c’est pourquoi le répertoire personnel est accessible grâce au raccourci ~ (caractère tilde). Vous pouvez également utiliser le raccourci ~identifiant pour accéder aux comptes des autres utilisateurs. Dans chaque répertoire, il existe deux sous-répertoires particuliers qui servent à gérer la hiérarchie des répertoires. Le répertoire nommé . est un lien vers le répertoire courant et le répertoire .. est un lien vers le répertoire parent. Les deux commandes suivantes montrent comment utiliser ces répertoires. La première copie le fichier /etc/fstab dans le répertoire courant. Si celui-ci est /home/nom, le chemin du nouveau fichier est /home/nom/fstab. utilisateur$ cp /etc/fstab .
Dans le second exemple, nous commençons par nous déplacer dans le répertoire ~/linux avec la commande cd. La commande cp crée une copie de sauvegarde du fichier partie3.odt dans le répertoire parent sous le nom partie3.odt.bak. utilisateur$ cd ~/linux utilisateur$ cp partie3.odt ../partie3.odt.bak
Si le répertoire personnel s’appelle /home/nom, nous avons copié le fichier /home/nom/linux/ partie3.odt dans le fichier /home/nom/partie3.odt.bak. Caractères spéciaux pour les répertoires ~ répertoire personnel . répertoire courant .. répertoire parent du répertoire courant
Commandes élémentaires de gestion des fichiers et des répertoires Même si KDE et Gnome fournissent des gestionnaires de fichiers, les utilisateurs avancés de Linux ont tendance à utiliser des commandes en mode texte. Le tableau suivant résume les commandes les plus importantes. Gestion des fichiers et des répertoires cd cp less
modifie le répertoire courant copie des fichiers affiche un fichier texte page par page
Linux Livre Page 183 Mardi, 23. septembre 2008 1:05 13
183
GESTION DES FICHIERS
ls mkdir mv rm rmdir Liste des fichiers (ls)
affiche tous les fichiers d’un répertoire crée un nouveau répertoire déplace des fichiers ou modifie leur nom supprime des fichiers supprime des répertoires
ls affiche une liste de tous les fichiers du répertoire courant. Si vous souhaitez aussi afficher les fichiers cachés, utilisez l’option -a. Si vous désirez afficher d’autres informations, telles que la taille du fichier ou le propriétaire, utilisez l’option -l. Par défaut, le résultat de ls est trié alphabétiquement. Pour trier la liste par date de dernière modification, par taille ou par extension, utilisez respectivement les options -t, -S et -X. La commande suivante affiche tous les fichiers *.png dans le répertoire figures, triés par taille (dans l’ordre décroissant). utilisateur$ -rw-r--r-- 1 -rw-r--r-- 1 -rw-r--r-- 1 -rw-r--r-- 1 -rw-r--r-- 1 -rw-r--r-- 1 -rw-r--r-- 1 -rw-r--r-- 1 ...
$ ls -l michael michael michael michael michael michael michael michael
-S figures/*.png users 58865 2008-03-08 users 53417 2008-07-19 users 42516 2008-06-27 users 30792 2008-03-28 users 18984 2008-04-04 users 16834 2008-03-29 users 15341 2008-03-24 users 14177 2008-04-04
12:53 17:08 12:44 14:09 16:39 11:15 11:25 16:33
./these-gantt.png ./schedule.png ./dct-vect.png ./interpol-luma.png ./filter-samples.png ./transform.png ./4ss.png ./filter-block.png
Une ligne typique du résultat de ls -l ressemble à ceci : -rw-r--r-- 1 michael users 15341 2008-03-24 11:25 ./4ss.png
Il s’agit du fichier 4ss.png, modifié la dernière fois le 24 mars 2008 à 11h25. Il a une taille de 15 341 octets et appartient à un utilisateur dont l’identifiant est michael dans le groupe users. Les dix caractères en débit de ligne indiquent le type de fichier et les droits d’accès. Le fichier peut être de cinq types différents : - indique un fichier normal, d un répertoire (directory), b ou c un fichier de périphérique (de type bloc ou caractère), l un lien symbolique. Les trois caractères suivants (rwx) précisent si le propriétaire peut lire, modifier et exécuter le fichier. Les caractères suivants fournissent des informations similaires pour les membres du groupe et tous les autres utilisateurs du système. Le chiffre situé après ce groupe de dix caractères indique le nombre de liens durs vers le fichier. Nous parlerons plus tard des liens durs et des droits d’accès. La plupart des distributions configurent ls pour qu’il affiche les fichiers et répertoires dans différentes couleurs selon leur type. Si ce n’est pas votre cas, vous pouvez activer ce comportement avec l’option --color. ls n’affiche normalement que les fichiers présents dans le répertoire courant. Si vous désirez afficher ceux des sous-répertoires, utilisez l’option -R. Cette option, signifiant "récursif", s’applique à de nombreuses commandes sous Linux. La commande suivante fait la liste de tous les fichiers de tous les sous-répertoires (y compris les répertoires et fichiers cachés).
Linux Livre Page 184 Mardi, 23. septembre 2008 1:05 13
184
LINUX
Cette liste est généralement très longue. C’est pour cette raison que l’on transfère le résultat de la commande vers less grâce à | less : utilisateur$ ls -alR | less Copier des fichiers
La commande cp nom1 nom2 copie le fichier nom1 sous le nom nom2. Pour copier plusieurs fichiers, appelez la commande cp nom1 nom2 ... répertoire_cible. Les commandes suivantes passent dans le répertoire linux, créent un répertoire bak et y copient tous les fichiers *.odt. utilisateur$ cd linux utilisateur$ mkdir bak utilisateur$ cp *.odt bak/
Pour copier tout un répertoire, ainsi que son contenu, utilisez cp -a. Dans l’exemple suivant, cd sans argument permet d’aller dans le répertoire personnel. La deuxième commande crée une copie complète du répertoire linux sous le nom linux-bak. utilisateur$ cd utilisateur$ cp -a linux linux-bak Supprimer des fichiers et des dossiers
rm fichier supprime le fichier indiqué irrévocablement. Par défaut, rm ne peut être utilisé que pour les fichiers, et non pour les répertoires. Pour ces derniers, la commande rmdir répertoire est prévue, mais elle ne fonctionne que lorsque le répertoire est vide. En pratique, on utilise donc le plus souvent les options -rf de rm. Cette commande supprime tous les sous-répertoires et fichiers de manière récursive et sans demander de confirmation. Par conséquent, rm -rf est une commande très dangereuse ! La commande suivante supprime la copie de sauvegarde créée au paragraphe précédent : utilisateur$ rm -rf linux-bak/
Déterminer l’espace nécessaire aux fichiers et répertoires ls -l indique la taille d’un fichier. Il est néanmoins souvent utile de connaître la place prise par tous les fichiers d’un répertoire, l’espace restant sur le disque dur, etc. Les commandes df et du ont été prévues à cet effet. Déterminer la capacité d’un disque dur
df affiche pour toute partition et tout support de données monté dans le système de fichiers, sa taille totale et l’espace libre restant. Dans l’exemple suivant, df affiche des résultats pour quatre partitions et supports de données. Dans le répertoire système (première ligne), il reste 620 Mo. La deuxième ligne indique la place qu’il reste dans le système de fichiers temporaire. Ce dernier n’a pas de signification dans un usage courant ; il permet des échanges de données rapides entre deux programmes. La troisième ligne est une partition Windows et la quatrième, un répertoire réseau. utilisateur$ df Sys. de fich. /dev/hdc2 tmpfs /dev/sda2 mars:/data
1K-blocs 6940516 777764 4715772 97881408
Occupé 5962076 0 2040692 77136160
Disponible 620192 777764 2675080 15773120
Capacité 91% 0% 44% 84%
Monté sur / /dev/shm /vfat /data
Linux Livre Page 185 Mardi, 23. septembre 2008 1:05 13
185
GESTION DES FICHIERS
df permet également de savoir sur quelle partition se trouve physiquement un répertoire. Dans l’exemple suivant, le répertoire /home/michael se trouve sur la partition /dev/sda6, montée à l’emplacement /home dans l’arborescence : utilisateur$ df /home/michael Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur /dev/sda6 9621848 4429352 4703720 49% /home Déterminer la taille d’un répertoire
du permet de connaître la taille du répertoire courant et de tous les sous-répertoires. Il renvoie le résultat en kilo-octets. La commande suivante montre que le répertoire Photos/ mariage occupe 3,2 Go et affiche la répartition de cet espace : utilisateur$ cd Photos/mariage utilisateur$ du 68704 ./Pierre 210864 ./Janine 51120 ./Julien 25056 ./MarieAure 1168700 ./Alice 287372 ./Loic 289168 ./Didier 44556 ./Bruno 47640 ./Lysiane 110928 ./Michael 140896 ./Florent 15688 ./David 109392 ./Annette 207208 ./Philippe 575192 ./Nicolas 3354012 .
Le programme baobab, fourni dans les versions récentes de Gnome, est un outil confortable pour afficher la taille des fichiers et des répertoires de manière graphique. Dans KDE, cette vue est intégrée à Konqueror.
Caractères joker On souhaite souvent exécuter des commandes sur un ensemble de fichiers − par exemple, tous les fichiers se terminant par .odt. Pour cela, on utilise des caractères joker dans les paramètres des commandes Linux. Caractères joker pour les noms de fichiers ? * [abc] [a-f] [!abc] [^abc]
exactement un caractère arbitraire un nombre arbitraire (y compris 0) de caractères arbitraires exactement un des caractères entre crochets (a, b ou c) exactement un caractère dans l’intervalle indiqué un caractère différent des caractères entre crochets idem
Linux Livre Page 186 Mardi, 23. septembre 2008 1:05 13
186 * et ?
LINUX
? représente un caractère arbitraire, et * un nombre arbitraire (y compris 0) de caractères arbitraires. * représente n’importe quel caractère, y compris les points, à condition que le fichier ne commence pas par un point. Si vous désirez traiter tous les fichiers, il faut utiliser le raccourci * et non pas, comme sous DOS, *.*. Vous pouvez sans problème utiliser plusieurs caractères joker. Ainsi, *graph* renverra tous les fichiers dont le nom contient graph : par exemple, graphique.png, interfacegraphique et LISEZMOI.graph.
[] et [!]
Lorsque les caractères ? et * sont trop généraux, vous pouvez appliquer des restrictions supplémentaires grâce aux crochets. [abc] est joker pour l’une des trois lettres a, b ou c. Lorsque deux éléments sont séparés par un tiret, il s’agit de l’intervalle entre ces deux éléments. Par exemple, [a-f]* renverra tous les fichiers dont le nom commence par une lettre entre a et f. *[_.-]* représente un fichier dont le nom contient un tiret de soulignement, un point ou un tiret. On peut aussi exclure des caractères : [!a-z]* désigne tous les fichiers dont le nom ne commence pas par une minuscule, et *.[hc] tous ceux qui se terminent par .c ou .h. Les caractères joker peuvent également être utilisés pour les répertoires. */*.odt représente tous les fichiers *.odt dans un sous-répertoire du répertoire courant (à un seul niveau ; cela ne renvoie pas les fichiers dans un sous-sous-répertoire). /usr/*bin/* représente tous les fichiers qui se trouvent dans les répertoires /usr/bin et /usr/sbin. L’extension des caractères joker n’est pas gérée par les commandes appelées, mais par l’interpréteur qui appelle la commande. bash connaît un certain nombre de caractères joker, en plus de ceux que nous venons de décrire.
Problèmes liés à l’utilisation des caractères joker L’utilisation des caractères joker semble à première vue plus simple que ce qu’elle est réellement. Si vous rencontrez des problèmes avec ces caractères, vous pouvez mener quelques expériences grâce à la commande echo chaîne. Elle affiche tous les fichiers concernés par une combinaison de caractères joker sans les modifier. Un problème classique est que * ne représente pas seulement les fichiers, mais aussi les répertoires. Par conséquent, ls * affiche tous les fichiers du répertoire courant, mais aussi le contenu de tous les sous-répertoires. Pour éviter cela, on utilise ici l’option -d ; ce n’est cependant pas le cas des autres commandes. Traiter les répertoires avec */.
Lorsque vous souhaitez traiter tous les répertoires (sans toucher aux fichiers), vous pouvez utiliser la combinaison de caractères joker */.. Elle représente tous les "fichiers" qui ont un lien vers eux-mêmes dans leur sous-répertoire, ce qui est uniquement le cas des répertoires. utilisateur$ echo */.
Extension gérée par l’interpréteur de commandes
Le fait que l’extension des caractères joker soit gérée par l’interpréteur de commandes, et non directement par la commande, ne présente pas que des avantages. Par exemple, ls -R *.odt ne renvoie pas tous les fichiers *.odt des sous-répertoires du répertoire courant. La raison est simple : l’interpréteur de commandes étend le motif *.odt dans le répertoire courant et passe à ls la liste des fichiers trouvés. Par conséquent, si vous n’avez pas de répertoire se terminant par .odt, ls a terminé et l’option -R ne peut rien y faire.
Linux Livre Page 187 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
187
Pour ce type de recherche, il faut utiliser la commande find, dont nous parlerons plus tard : utilisateur$ find . -name ’*.odt’ Renommer des fichiers
Renommer des fichiers avec sed
Il n’est pas possible de renommer tous les fichiers *.x en *.y avec la commande mv *.x *.y. La raison est la même que dans le paragraphe précédent. Le motif *.x est remplacé par la liste de tous les fichiers correspondants et il n’existe pas de fichier correspondant à *.y. La commande mv a donc pour paramètres une liste de fichiers se terminant par *.x et l’expression *.y − et elle ne sait pas comment traiter ces arguments. mv ne sait de toute façon traiter plusieurs arguments à la fois que quand le dernier argument est un répertoire. Les utilisateurs avancés d’Unix ont évidemment trouvé une parade à ces problèmes : ils utilisent l’éditeur de flux sed. Comme il est complexe à utiliser, les exemples ci-dessous s’apparentent plutôt à de la programmation de l’interpréteur de commandes. Dans ce premier exemple, ls fournit la liste des fichiers qui doivent être renommés et la passe à sed. Celui-ci construit une liste de commandes cp grâce à la commande s (recherche d’expressions régulières et remplacement), puis transmet ces commandes à un nouvel interpréteur de commandes qui les lance. Tous les fichiers *.xxx sont alors copiés dans des fichiers *.yyy. utilisateur$ ls *.xxx | sed ’s/\(.*\)\.xxx$/cp & \1.yyy/’ | sh
Une autre possibilité est de formuler cela sous la forme d’une boucle − nous supposons que l’interpréteur de commandes utilisé est Bash. Cette commande copie tous les fichiers *.txt dans des fichiers *.txt~ (le caractère ~ en fin de fichier est souvent utilisé pour les fichiers de sauvegarde). utilisateur$ for i in *.txt; do cp $i $i~; done
Fichiers cachés Sous Linux, les fichiers commençant par un point sont considérés comme des fichiers cachés. * ne renvoie donc pas vraiment tous les fichiers d’un répertoire : ceux qui débutent par un point sont ignorés. .* permet certes de récupérer les fichiers cachés, mais aussi les répertoires . et .. (répertoire courant et répertoire parent). Selon la commande utilisée, cette syntaxe peut être fatale. On peut utiliser le motif .[!.]*. Celui-ci représente tous les noms de fichiers dont le premier caractère est un point, dont le deuxième caractère existe et n’est pas un point, et qui ont un nombre arbitraire de caractères arbitraires. utilisateur$ echo .[!.]*
Mais la solution la plus universelle est d’utiliser find : utilisateur$ find . -name ’.*’
Linux Livre Page 188 Mardi, 23. septembre 2008 1:05 13
188
LINUX
13.2 Liens Les liens permettent d’accéder à un même fichier depuis différents endroits du système de fichiers, sans que ce fichier ne soit physiquement enregistré plusieurs fois. Ils permettent d’éviter la redondance. Ils sont particulièrement courants dans les répertoires /bin et /lib − vous pouvez par exemple le voir en explorant /usr/bin ou /usr/lib avec ls -l. Pour comprendre le concept de lien, le plus simple est de partir d’un exemple. Supposons qu’un répertoire test contienne le fichier abc. La commande ln abc xyz semble créer un nouveau fichier xyz. En réalité, abc et xyz sont deux liens vers le même fichier. Pour le vérifier, utilisez la commande ls -l. La deuxième colonne indique le nombre de liens associés à un fichier donné (dans notre cas, deux). Si vous utilisez également l’option -i, vous pouvez voir que les deux fichiers correspondent au même inode (ce terme sera expliqué plus tard), ce qui prouve qu’il s’agit bien du même fichier sur le système de fichiers. utilisateur$ ls -li 13713417 -rw-r--r-utilisateur$ ln abc utilisateur$ ls -li 13713417 -rw-r--r-13713417 -rw-r--r--
1 michael users 205 2008-06-26 15:34 abc xyz 2 michael users 205 2008-06-26 15:34 abc 2 michael users 205 2008-06-26 15:34 xyz
Lorsque vous modifiez l’un des deux fichiers, l’autre est automatiquement modifié (puisqu’il ne s’agit en fait que d’un seul et même fichier). Si vous supprimez l’un des deux, vous ne faites que réduire le nombre de liens. Des résultats étranges peuvent se produire lorsque vous modifiez avec un éditeur de texte un fichier avec un lien dur : le lien pointe, après le premier enregistrement, sur le fichier de sauvegarde et, après le second enregistrement, dans le vide. La raison est la suivante : certains éditeurs créent un fichier de sauvegarde lors de l’enregistrement. Ce dernier est un renommage du fichier original, par exemple abc en abc~. Le fichier modifié est alors un fichier nouvellement créé, avec un nouvel inode et sans lien. Pour éviter cela, utilisez des liens symboliques. Liens symboliques
Il existe deux types de liens. L’exemple ci-dessus a mis en place des liens durs, créés par défaut par la commande ln. Si vous utilisez l’option -s, vous créez un lien symbolique. Ces liens ont l’avantage de pouvoir être utilisés sur un disque physique différent de celui du fichier et de pouvoir également être appliqués à des répertoires (ces deux possibilités ne sont pas offertes par des liens durs). ls affiche le fichier d’origine des liens symboliques. En revanche, il n’existe pas de compteur pour le nombre de liens associés au fichier d’origine. La différence interne entre un lien symbolique et un lien dur est que le premier enregistre le chemin du fichier lié, tandis que le second enregistre l’inode du fichier. utilisateur$ ln -s abc efg utilisateur$ ls -li 13713417 -rw-r--r-- 2 michael users 205 2008-06-26 15:34 abc 13713415 lrwxrwxrwx 1 michael users 3 2008-06-26 16:01 efg -> abc 13713417 -rw-r--r-- 2 michael users 205 2008-06-26 15:34 xyz
Linux Livre Page 189 Mardi, 23. septembre 2008 1:05 13
189
GESTION DES FICHIERS
Pour créer un lien symbolique, vous devez vous trouver dans le répertoire qui contiendra le lien. Sinon, il arrive que le lien ne pointe pas vers l’endroit souhaité.
Les liens symboliques se comportent également différemment des liens durs. Supprimer le fichier d’origine (en l’occurrence abc) ne modifie pas le lien vers ce fichier (efg), mais celuici pointe alors vers un emplacement vide. Inversement, si le lien symbolique est supprimé, cela n’a aucune influence sur le fichier d’origine. On peut aussi créer un lien symbolique vers un répertoire. Cela peut cependant causer quelques confusions, car toute l’arborescence pointée par le lien symbolique semble recopiée. En fait, le lien vers le répertoire n’est qu’un chemin d’accès supplémentaire aux mêmes fichiers et sous-répertoires. Essayez, autant que possible, de ne pas utiliser de chemins absolus, mais relatifs, lorsque vous créez un lien symbolique. Ainsi, vous éviterez des problèmes si le répertoire est monté par NFS ou si vous déplacez des répertoires. Les liens symboliques et les liens durs ont chacun leurs avantages. Les premiers sont plus simples à gérer, tandis que les seconds demandent moins de place disque et sont plus rapides.
13.3 Chercher des fichiers Il existe plusieurs possibilités pour chercher des fichiers sous Linux. Les plus importantes sont résumées dans le tableau ci-après. La commande à utiliser dépend du type de fichier recherché et des informations connues (nom du fichier, contenu, etc.). Recherche de fichiers beagle-query grep find locate whereis which
cherche des fichiers selon leur contenu cherche du texte dans un fichier texte cherche des fichiers selon leur nom, leur date, leur taille, etc. cherche des fichiers selon leur nom cherche des fichiers dans des répertoires prédéfinis cherche des programmes dans les répertoires de la variable d’environnement PATH
which et whereis which cherche la commande passée en argument. Il renvoie le nom complet de la commande lorsque son nom est indiqué sans information de chemin. Il parcourt les répertoires de la variable d’environnement PATH et est donc extrêmement rapide. Cette variable contient une liste de répertoires dans lesquels on peut trouver des
Linux Livre Page 190 Mardi, 23. septembre 2008 1:05 13
190
LINUX
programmes. Notez qu’elle contient généralement plus de répertoires pour root que pour un utilisateur normal. utilisateur$ which emacs /usr/bin/emacs
whereis parcourt tous les répertoires usuels pour les fichiers exécutables, les fichiers de configuration, les pages de manuel et le code source, afin de trouver le nom de fichier indiqué. Il couvre plus de répertoires que which et ne se limite pas aux programmes. Cependant, il n’indique que les fichiers qui se trouvent dans les répertoires prédéfinis pour whereis (voir à ce sujet man whereis). utilisateur$ whereis fstab fstab: fstab: /etc/fstab /etc/fstab.pre-uuid /usr/include/fstab.h /usr/share/ ➥man/man5/fstab.5.gz
locate locate motif affiche les fichiers dont le nom complet (chemin + nom de fichier) correspond au motif passé en argument. La recherche est très rapide car locate, plutôt que de parcourir le système de fichiers, accède à une base de données qui contient tous les noms de fichiers du système. Certaines distributions n’affichent que les fichiers auxquels l’utilisateur a effectivement accès. Lancez locate en tant que root lorsque vous cherchez des fichiers système. Exemple
La commande suivante cherche le fichier de configuration de X, xorg.conf : utilisateur$ locate xorg.conf /etc/X11/xorg.conf /etc/X11/xorg.conf.backup /etc/X11/xorg.conf~ /usr/share/man/man5/xorg.conf.5.gz
On peut utiliser des caractères joker. Ainsi, locate ’*dvips’ ne renverra que les fichiers dont le nom se termine par dvips. updatedb
La qualité des résultats de la recherche dépend largement de la qualité de la base de données de locate. La plupart des distributions lancent la commande updatedb pour mettre à jour cette base au moins une fois par jour. Il est aussi possible de la lancer manuellement de temps à autre. Cela nécessite cependant des droits root.
find et grep find est une commande à la fois extrêmement puissante et complexe pour chercher des fichiers. Elle prend en argument différents critères de recherche (motif pour le nom du fichier, date de création ou de dernier accès, etc.). man find fournit une référence complète de toutes les options de find. Les exemples suivants vous permettront de faire vos premiers pas avec find. Notez qu’il est plutôt long à s’exécuter, car il parcourt des pans entiers du système de fichiers, répertoire après répertoire. find
La commande find, sans paramètre supplémentaire, affiche une liste de tous les fichiers dans le répertoire courant et ses sous-répertoires.
Linux Livre Page 191 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
191
La commande suivante cherche tous les fichiers qui commencent par .e dans le répertoire courant et ses sous-répertoires : utilisateur$ find -name ’.e*’ ./.emacs.d ./.emacs~ ... ./linux-2.6.19.2/linux/scripts/mod/.elfconfig.h.cmd ... ./.emacs ./.eclipse
Cet exemple cherche dans le répertoire /usr/share/texmf tous les fichiers *.tex présents dans un répertoire qui se termine par latex : utilisateur$ find /usr/share/texmf -path ’*latex/*.tex’ /usr/share/texmf/ptex/platex/base/plnews03.tex /usr/share/texmf/ptex/platex/base/kinsoku.tex /usr/share/texmf/ptex/platex/base/plnews08.tex /usr/share/texmf/ptex/platex/base/pldoc.tex ...
L’exemple suivant affiche tous les répertoires contenus dans /etc/. Les fichiers réguliers ne sont pas montrés. La liste est triée alphabétiquement avec sort. root# find /etc -type d | sort /etc /etc/acpi /etc/acpi/events /etc/alternatives /etc/apache2 /etc/apache2/conf.d ...
La commande suivante affiche tous les fichiers des sous-répertoires de /home qui appartiennent aux utilisateurs du groupe users et qui ont été modifiés au cours des cinq derniers jours. -ctime +5 affiche les fichiers modifiés il y a plus de cinq jours, et -ctime 5 ceux modifiés il y a exactement cinq jours. root# find /home -group users -ctime -5 ...
Cette commande supprime tous les fichiers de sauvegarde dans le répertoire courant et ses sous-répertoires. Une liste est construite avec les résultats de find, puis elle est passée à rm : utilisateur$ rm $(find . -name ’*~’)
Si find renvoie beaucoup de fichiers, il se peut que la commande ci-dessus affiche une erreur : la ligne de commande étendue est trop longue par rapport à la taille maximale autorisée. Dans ce cas, vous devez utiliser l’option -exec de find, ou la commande xargs. Reportezvous aux pages de manuel man find et man xargs pour plus d’informations à ce sujet.
Linux Livre Page 192 Mardi, 23. septembre 2008 1:05 13
192 grep
LINUX
La commande grep parcourt un fichier texte à la recherche d’un motif de recherche. Selon les options, elle affiche les lignes du fichier correspondant ou le nombre de lignes concernées. Le motif de recherche est une expression rationnelle. La commande suivante cherche la chaîne de caractères "emacs" dans tous les fichiers *.tex du répertoire. Une liste de toutes les lignes correspondantes (préfixées par le nom du fichier) s’affiche à l’écran. utilisateur$ grep emacs *.tex
Cet exemple compte le nombre de fois que la fonction arctan est utilisée dans les fichiers *.c du répertoire : utilisateur$ grep -c arctan\(.*\) *.c
grep -v renvoie comme résultat toutes les lignes qui ne contiennent pas le motif de recherche. Dans l’exemple suivant, grep supprime toutes les lignes qui commencent par le caractère # dans le fichier configfile. La commande cat supprime toutes les lignes vides. Le résultat est enregistré dans le fichier nocomments. utilisateur$ grep -v ’^#’ configfile | cat -s > nocomments Combiner find et grep
Combiner find et grep permet de mener des recherches particulièrement efficaces. Cet exemple affiche tous les fichiers *.tex qui contiennent la chaîne de caractères "emacs" : utilisateur$ find -name ’*.tex’ -type f -exec grep -q emacs {} \; -print
La commande suivante affiche tous les fichiers du répertoire courant, dont la taille est inférieure à 10 Ko et dont le contenu correspond à l’expression rationnelle case.*in. La liste des fichiers trouvés est enregistrée dans le fichier resultat. utilisateur$ find -name ’*’ -maxdepth 1 -size -10k \ > -exec grep -q case.*in {} \; -print > resultat
Beagle Beagle est un outil de recherche relativement récent, qui fournit certains avantages en plus de ceux des outils traités ci-dessus : • La recherche est rapide ; elle s’appuie comme locate sur un fichier d’index. • L’index de recherche est actualisé à chaque modification de fichiers ; il est donc toujours à jour. • La recherche inclut le contenu des fichiers. Alors que la combinaison find/grep se limite aux fichiers texte, Beagle permet de gérer davantage de formats : documents OpenOffice.org, pages Web (y compris le cache de Konqueror), courriers électroniques (KMail et Evolution), fichiers PDF, etc. Beagle présente néanmoins certains inconvénients. Il est développé en C# et nécessite donc d’installer Mono. Son fichier d’index est très volumineux. Il existe des formats que Beagle ne prend pas encore en compte, comme les courriers électroniques de Thunderbird ou les fichiers LaTeX. Les systèmes de données NFS posent également problème : ils peuvent être parcourus, mais cela prend du temps et on ne peut pas actualiser automatiquement l’index.
Linux Livre Page 193 Mardi, 23. septembre 2008 1:05 13
193
GESTION DES FICHIERS
Beagle possède une interface graphique pour Gnome, nommée gnome-beagle-search et qui s’ouvre avec F12, et une interface graphique pour KDE, nommée kerry. Beagle peut aussi être intégré directement à Nautilus et Firefox. Il existe une extension KIO de Konqueror, qui permet de lancer des recherches sous la forme beagle:expression de recherche. Expressions de recherche de Beagle mot1 mot2 mot1 OR mot2 mot1 -mot2 "mot1 mot2" ext:pdf .pdf
recherche les documents contenant les deux termes de recherche recherche les documents contenant au moins un terme de recherche ; OR doit être saisi en majuscules recherche les documents contenant mot1, mais pas mot2 recherche les documents contenant la phrase "mot1 mot2" restreint la recherche aux documents PDF raccourci pour ext:pdf
On peut aussi lancer une recherche Beagle via la ligne de commande : utilisateur$ beagle-query ubuntu mono
Tracker Si Beagle ne vous satisfait pas, Tracker est une alternative de plus en plus populaire. Ce programme est relativement récent et donc moins mûr que Beagle, mais il a d’ores et déjà la réputation d’être plus efficace. Après l’installation, vous devez vous déconnecter, puis vous reconnecter. Une fois que vous avez laissé à Tracker le temps d’indexer votre système de fichiers, vous pouvez lancer une recherche avec tracker-search-tool. Si vous travaillez sous Gnome, vous pouvez aussi l’utiliser directement dans Nautilus avec le bouton Rechercher. Tracker enregistre les données d’index dans le répertoire ~/.cache/tracker. Par défaut, seuls les fichiers du répertoire personnel sont indexés. Si cela ne vous convient pas, vous pouvez modifier la configuration avec tracker-preferences. Lorsque j’ai testé ce programme, il ne prenait pas encore en charge les données de Thunderbird. Il ignorait également mes fichiers LaTeX et PostScript.
Google Desktop Google a également lancé une version bêta de son outil de recherche local déjà bien établi sous Windows. Son succès sous Linux reste cependant à confirmer. D’une part, il ne s’agit pas d’un logiciel libre. D’autre part, la version Windows de Google Desktop a déjà entraîné de nombreuses questions quant à la confidentialité des données et il est probable que cet élément préoccupe également les utilisateurs de la version Linux.
Linux Livre Page 194 Mardi, 23. septembre 2008 1:05 13
194 Installation
Utilisation
LINUX
Google fournit des paquetages RPM et DEB en téléchargement, ainsi qu’un dépôt de paquetages qui permet d’actualiser automatiquement les paquetages avec APT, YUM et autres (deuxième lien). http://desktop.google.com/linux/ ; http://www.google.com/linuxrepositories/ Google Desktop est activé lors de la connexion à Gnome ou KDE. Il lance en tâche de fond l’indexation des données (programme gdl_inderxer). Par défaut, seul le répertoire personnel, ainsi que les répertoires man et info sont parcourus. L’indexation de départ fonctionne avec une priorité très basse et interfère peu avec le fonctionnement de l’ordinateur, mais elle peut durer plusieurs heures. L’index est enregistré dans ~/.google/desktop. La recherche et la modification des paramètres sont gérées par une interface web pour laquelle Google Desktop lance un petit serveur web sur le port 33555.
13.4 Archiver et sécuriser des données Compresser et archiver des données (gzip, tar, zip) Pour compresser des données, on utilise généralement sous Windows WinZip ou un programme compatible. Il existe aussi plusieurs interfaces sous Linux, comme file-roller (sous Gnome) et ark (sous KDE). Cette section présente quelques alternatives en ligne de commande, résumées dans le tableau ci-dessous. Compresser et archiver des données gzip gunzip bzip2 bunzip2 tar zip unzip zipinfo gzip et gunzip
compresse un fichier décompresse un fichier compresse un fichier (compression plus importante, mais plus lente) décompresse un fichier crée et extrait des archives de fichiers crée une archive Zip compatible avec Windows extrait une archive Zip affiche des informations sur les archives Zip
gzip compresse le fichier fourni en paramètre et le nomme nom.gz. gunzip effectue l’opération inverse. Les deux commandes utilisent l’algorithme LZ77-Lempel-Ziv, qui est surtout efficace pour les fichiers texte (et nettement moins pour les fichiers audio ou vidéo). La compression est sans perte − après la décompression, le fichier d’origine est restauré. Les commandes suivantes illustrent son utilisation : utilisateur$ ls -l licence.txt ... 17718 2003-02-09 18:25 licence.txt utilisateur$ gzip licence.txt utilisateur$ ls -l licence.txt.gz ... 6502 2003-02-09 18:25 licence.txt.gz utilisateur$ gunzip licence.txt.gz
bzip2 et bunzip2
bzip2 et bunzip2 sont une alternative à gzip et gunzip. Ces commandes présentent l’avantage de mieux compresser les fichiers, mais l’inconvénient de s’exécuter plus lentement.
Linux Livre Page 195 Mardi, 23. septembre 2008 1:05 13
195
GESTION DES FICHIERS
Le fichier compressé reçoit l’extension .bz2. utilisateur$ bzip2 licence.txt utilisateur$ ls -l licence.txt.bz2 ... 5764 2003-02-09 18:25 licence.txt.bz2 utilisateur$ bunzip2 licence.txt.bz2 tar
tar est la commande de référence pour rassembler plusieurs fichiers dans une archive, qui peut ensuite être compressée à l’aide de gzip ou bzip2. La commande suivante regroupe les fichiers du répertoire livre dans l’archive compressée livre.tgz. En ce qui concerne les options, c indique à tar qu’il doit créer une archive. z signifie "zip" : le fichier doit être compressé avec gzip. f signifie "file" (fichier) : cette option donne le nom du fichier à créer, généralement avec l’extension .tar.gz ou .tgz. utilisateur$ tar -czf livre.tgz livre/
tar -tzf affiche le contenu d’une archive. Les fichiers qu’elle contient sont dans un ordre aléatoire. La plupart des distributions permettent également de voir ce contenu avec less. utilisateur$ tar -tzf livre.tgz/ livre/ livre/chap4.txt livre/chap2.txt livre/annexeA.txt ...
tar -xzf décompresse l’archive et en extrait tous les fichiers : utilisateur$ tar -xzf livre.tgz
Si l’archive est compressée avec bzip2 et non avec gzip, utilisez l’option j à la place de z. zip
tar est le format de prédilection des archives sous Linux. Mais si vous désirez communiquer avec des utilisateurs de Windows, le format Zip est probablement plus judicieux. La commande suivante compresse tous les fichiers HTML du répertoire dans le fichier monarchive.zip : utilisateur$ zip monarchive.zip *.html
Si vous souhaitez archiver un répertoire complet, utilisez l’option -r : utilisateur$ zip -r monarchive.zip siteweb/
Vous pouvez afficher le contenu d’un fichier Zip avec zipinfo : utilisateur$ zipinfo monarchive.zip -rw-r--r-- 2.3 unx 24488 tx defN -rw-r--r-- 2.3 unx 1492 tx defN -rw-r--r-- 2.3 unx 4258 tx defN -rw-r--r-- 2.3 unx 30335 tx defN ...
Pour décompresser l’archive, utilisez unzip : utilisateur$ unzip monarchive.zip
27-Jun-08 27-Jun-08 27-Jun-08 27-Jun-08
18:38 18:38 18:38 18:38
rep/implem.tex rep/parallel.tex rep/benchs.tex rep/chap-sse2.tex
Linux Livre Page 196 Mardi, 23. septembre 2008 1:05 13
196
LINUX
Sauvegardes (rsync) Les disques durs ne vivent pas éternellement, les ordinateurs portables peuvent être volés et un rm -rf malencontreux peut provoquer des dégâts importants. Il est donc impossible de se passer de sauvegardes régulières de vos données. Il existe un nombre virtuellement illimité de stratégies de sauvegarde. Je me limite donc à présenter la commande rsync, qui permet de synchroniser des arborescences de répertoires, par exemple pour enregistrer des données sur un disque externe. rsync
Au départ, rsync a été conçu pour synchroniser des répertoires sur un réseau. Nous nous intéressons ici à la copie entre deux disques locaux. La commande suivante copie tous les fichiers *.odt d’un répertoire vers un second répertoire. Contrairement à cp, les fichiers déjà présents (par exemple, depuis la sauvegarde précédente) et non modifiés ne sont pas recopiés. Pour une petite sauvegarde, cela ne change pas grand-chose, mais lorsqu’il s’agit d’arborescences de plusieurs gigaoctets, la différence se fait rapidement sentir. utilisateur$ rsync rep1/*.odt rep2/
Pour synchroniser un répertoire complet, ainsi que ses sous-répertoires, utilisez l’option -a qui est un raccourci pour une longue suite d’options (-rlptgoD). Elle traite récursivement tous les sous-répertoires et tente de préserver au mieux les informations relatives aux fichiers (propriétaire, groupe, date de la dernière modification, etc.). Si rep2 n’existe pas encore, le répertoire est créé. utilisateur$ rsync -a rep1/ rep2/
Par défaut, rsync copie tous les nouveaux fichiers et ceux modifiés, mais ne supprime rien. Si vous souhaitez que les fichiers supprimés dans rep1 le soient aussi dans rep2, passez l’option --delete. Attention, cette option est dangereuse : si vous effacez accidentellement un répertoire, il le sera également sur le disque de sauvegarde à la prochaine sauvegarde. Cependant, sur la durée, il est difficile d’éviter d’utiliser l’option --delete si on ne veut pas conserver de fichiers inutiles pendant des années. Si vous désirez avoir un retour sur les fichiers modifiés et sur la vitesse de transfert des données, utilisez l’option -v. Automatiser les sauvegardes
Plutôt que de saisir à chaque fois la commande rsync, il vaut mieux l’encapsuler dans un petit script shell. On évite ainsi les fautes de frappe. Voici un exemple d’utilisation de ce script : #!/bin/sh mount /backup # monte le répertoire NFS de sauvegarde rsync -av --delete /rep1/* /backup/machineX/rep1/ rsync -av --delete /rep2/* /backup/machineX/rep2/
Il suffit ensuite de le lancer par une tâche cron. Voici ma stratégie personnelle de sauvegarde. Tous mes ordinateurs sont de temps en temps connectés à un serveur central. Je synchronise une fois par semaine mes répertoires de données personnels avec le répertoire correspondant sur le serveur grâce à rsync. Pour les fichiers importants sur lesquels je travaille, la sauvegarde
Linux Livre Page 197 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
197
est lancée tous les jours. Les fichiers à sauvegarder se trouvent donc sur deux disques durs indépendants l’un de l’autre. Une fois par mois, je synchronise toute la partition de données du serveur avec un disque dur USB. De plus, je crée des CD ou des DVD de sauvegarde par projet (par exemple, les fichiers d’un livre ou les photos numériques de l’année). Ces dix dernières années, j’ai déploré la perte de quelques disques durs suite à des défauts matériels, mais jamais de perte de données conséquente. Autres solutions de sauvegarde
Il existe bien sûr d’autres solutions pour effectuer des sauvegardes : • Les commandes pour graver des CD et des DVD seront présentées à la section 13.5. • La commande rdiff-backup est une alternative intéressante à rsync : http://www.nongnu.org/rdiff-backup/. • Il existe aussi diverses interfaces graphiques de sauvegarde, même si aucun standard de fait ne s’impose actuellement. Voici deux exemples : sbackup (http://sbackup.sourceforge.net) et unison (http://www.cis.upenn.edu/~bcpierce/unison). • En plus de ces programmes libres, il existe des solutions propriétaires comme Arkeia, un système client/serveur pensé pour des réseaux complets.
13.5 Graver des CD et des DVD Nous avons déjà parlé des interfaces graphiques de gravure de CD et de DVD aux Chapitres 4 et 5. Cette section présente les commandes appelées en coulisses par ces programmes. Cela peut être utile, par exemple, pour automatiser la création d’un CD de sauvegarde via un script. Noms des périphériques
Avant de pouvoir utiliser les commandes décrites, vous devez connaître le nom de périphérique de votre lecteur. Si ce dernier se trouve sur le bus IDE et que vous utilisez une distribution plutôt ancienne, le nom du périphérique sera probablement /dev/hda, /dev/hdb, ou construit sur ce modèle. Sur les distributions plus récentes et pour les périphériques SATA, SCSI, USB et Firewire, ce sera sans doute /dev/scd0, /dev/scd1, /dev/sr0 ou /dev/sr1. Certaines commandes demandent le nom du périphérique sous la forme d’un triplet de nombres (par exemple dev=3,0,0), qui se compose du numéro de bus SCSI (souvent 0), de l’identifiant SCSI du périphérique et de l’unité logique (LUN, Logical Unit Number, le plus souvent 0). Vous pouvez obtenir la combinaison correspondant à votre lecteur avec readcd -scanbus. Que vous graviez des CD ou des DVD, assurez-vous que votre distribution Linux ne monte pas le lecteur dans l’arborescence de répertoires et n’y accède pas. Selon la distribution, différents mécanismes de montage automatique des CD et des DVD interfèrent avec la gravure. D’après mon expérience, l’utilisation de lecteurs externes (USB, Firewire) entraîne des problèmes plus fréquents que celle d’un lecteur interne. Cela est vrai pour Linux, mais aussi pour Windows. Si vous souhaitez absolument utiliser un lecteur externe, réduisez la vitesse de gravure.
Linux Livre Page 198 Mardi, 23. septembre 2008 1:05 13
198
LINUX
Créer et tester des images ISO Avant de créer un CD ou un DVD de données, vous avez besoin d’une image ISO. Ce fichier contient les données à graver. On utilise généralement mkisofs ou genisoimage, qui a une syntaxe compatible. Pour copier un support existant, on peut aussi utiliser dd. mkisofs
Les commandes mkisofs et genisoimage écrivent tous les fichiers d’un ou de plusieurs répertoires dans un fichier ISO. Le format ISO-9660 prévu pour les CD utilise un jeu de caractères très limité, qui autorise peu de caractères non ASCII. Pour contourner cela, il existe plusieurs extensions du standard ISO prises en charge par mkisofs et genisoimage : • L’extension Rockridge, prévalente sous les systèmes Unix et Linux, permet d’enregistrer des noms de fichiers plus longs sous la forme de chaînes de caractères arbitraires terminées par le caractère 0. De plus, elle permet d’enregistrer des droits d’accès (UID, GID, bits d’accès). Cependant, un CD Rockridge ne contient pas d’information sur le jeu de caractères dans lequel l’ISO a été créée. Cela peut s’avérer problématique si le support de données est ensuite utilisé dans un ordinateur ayant un autre jeu de caractères. Il est néanmoins possible d’indiquer le jeu de caractères souhaité grâce à l’option -output-charset. • L’extension Joliet, prévalente sous les systèmes Windows, permet d’enregistrer des noms de fichiers plus longs, représentés sous la forme d’une chaîne de caractères Unicode (UTF-16). Il y a quelques années, mkisofs/genisoimage supposait que le système de fichiers local était en Latin-1 et convertissait les noms de fichiers dans ce jeu de caractères. L’option -input-charset permet de spécifier un autre jeu de caractères, mais elle ne prend pas en charge les jeux de caractères Unicode.
Exemples
Ce problème est géré dans les versions actuelles par le correctif non officiel iconv. Ce dernier est absolument nécessaire si vous utilisez un jeu de caractères Unicode sous Linux et que vous désirez graver un CD compatible avec Windows, sans quoi les caractères spéciaux ne seront pas bien représentés. La commande suivante écrit tous les fichiers du répertoire /master dans le fichier /tmp/master.iso. Le répertoire master n’est pas un répertoire de l’image ISO. Celle-ci utilise l’extension Rockridge (-r) et Joliet (-J), et a pour nom Linux (option -V). Cette chaîne de caractères est le nom du CD une fois gravé. utilisateur$ mkisofs -o /tmp/master.iso -r -J -B Linux /master
Le deuxième exemple est comparable au premier, mais il permet de créer un CD amorçable : utilisateur$ mkisofs -o /tmp/master.iso -r -J -/master \ -b images/boot.img-c boot.catalog
Ce troisième exemple montre comment faire pour que le répertoire master soit lui-même un répertoire de l’ISO (option -graft-point) : utilisateur$ mkisofs -o /tmp/master.iso -r -graft-points /master=/master
Linux Livre Page 199 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
199
Si vous n’utilisez pas l’option -r, assurez-vous que tous les fichiers du répertoire à graver appartiennent à root et qu’ils sont lisibles par tous : utilisateur$ chown -R root.root /master utilisateur$ chmod -R a+r /master dd
Pour copier sans modification un CD ou un DVD de données (cela ne fonctionne pas pour un CD audio), une seule commande dd suffit pour obtenir le fichier ISO correspondant. /dev/cdrom représente le nom de périphérique de votre lecteur CD ou DVD, ce qui dépend de votre distribution. utilisateur$ dd if=/dev/cdrom of=/usr/local/iso.ing bs=2048
Tester une image ISO
Le périphérique de bouclage (loopback device) du noyau Linux permet de considérer un fichier comme un système de fichiers et de le monter dans l’arborescence avec mount. Cette fonctionnalité est gérée par le module de noyau loop qui est fourni par toutes les distributions courantes. La commande suivante monte le fichier master.iso dans le système de fichiers en mode lecture seule : root# mkdir /iso-test root# mount -t iso9660 -o loop,ro /tmp/master.iso /isotest/
Graver des CD cdrecord et wodim
cdrecord a longtemps été le programme de référence pour graver des CD. Développé par Jörg Schilling, il faisait partie, jusqu’en 2006, de presque toutes les distributions. À l’été 2006, Jörg Schilling a utilisé, pour certaines parties du paquetage, la licence CDDL, que de nombreux développeurs de Linux considèrent comme incompatible avec la GPL. La dernière version de cdrecord, entièrement sous GPL, a donc été utilisée comme base d’une nouvelle application, wodim, qui fait partie du projet cdrkit. Actuellement, de nombreuses distributions fournissent wodim ; /usr/bin/cdrecord est souvent un lien vers wodim. Avant de graver un CD, vous avez besoin d’une image ISO, créée normalement avec mkisofs ou genisoimage. Les deux commandes suivantes simulent d’abord la gravure (avec l’option -dummy), puis l’effectuent : root# cdrecord -dummy -v speed=16 dev=/dev/scd0 iso.img root# cdrecord -v speed=16 dev=/dev/scd0 iso.img
Cet exemple permet de graver un CD audio. Les données sont sous la forme de fichiers wav, qui sont traités dans l’ordre alphabétique. Si vous désirez utiliser un ordre différent, vous devez indiquer explicitement la liste des fichiers. root# cdrecord -v speed=16 dev=0,5,0 -pad -dao -audio *.wav cdrdao
La commande cdrdao est une alternative à cdrecord/wodim. Elle est moins polyvalente, mais fournit plus d’options pour lire et écrire des CD audio. Pour écrire un CD audio, cdrdao a besoin d’un fichier TOC. Ce dernier est une sorte de table des matières du CD indiquant quelles données sont enregistrées dans quel format.
Linux Livre Page 200 Mardi, 23. septembre 2008 1:05 13
200
LINUX
En pratique, cdrdao est généralement utilisé pour copier des CD audio. La première commande crée les fichiers data.bin et data.toc (contenu du CD et table des matières) et la seconde écrit ces données sur un CD. Les périphériques doivent être indiqués par le biais d’un triplet de chiffres, grâce à readcd -scanbus. root# cd tmp/ root# cdrdao read-cd --device 0,0,0 data.toc root# cdrdao write --device 0,0,0 --buffers 64 data.toc
Si votre machine a deux lecteurs et qu’elle est suffisamment rapide, vous pouvez aussi copier le CD en une seule commande : root# cdrdao copy --source-device 0,0,0 --device 0,1,0 --buffers 64 Vérifier des CD de données
La commande suivante compare le contenu du CD-ROM et celui du répertoire master, à la fois fichier par fichier et octet par octet. Les différences sont résumées dans le fichier diff.log du répertoire personnel. /media/cdrom représente le répertoire dans lequel est monté le CD. root# diff -qrd /master /media/cdrom >& ~/diff.log
Graver des DVD
dvd+rw-tools
growisofs
Les outils les plus populaires pour graver des DVD sont ceux de dvd+rw-tools. Si ces derniers ne fonctionnent pas, vous pouvez essayer d’utiliser cdrecord ou wodim. Cette commande permet de graver des DVD-R et des DVD+R ; la syntaxe ne diffère pas de celle utilisée pour la gravure de CD. cdrecord/wodim présente cependant moins d’options pour graver les DVD+RW et DVD-RW. Toutes les commandes présentées dans cette section font partie du paquetage dvd+rw-tools. Initialement, celui-ci ne prenait en charge que les DVD+R et DVD+RW. Depuis, on peut aussi graver des disques DVD-R, DVD-RW et Blue-Ray. dvd+rw-tools est fourni par l’immense majorité des distributions actuelles. La commande centrale du paquetage dvd+rw-tools est growisofs. Elle grave les disques DVD+R, DVD+RW, DVD-R, DVD-RW et Blue-Ray. Les DVD+R et DVD-R peuvent contenir des données exactement comme les CD multisessions. Pour écrire la première session, on utilise growisofs -Z et pour les suivantes, growisofs -M. On ne peut pas supprimer un fichier enregistré sur l’un de ces supports, ni formater ces disques. Les DVD+RW et DVD-RW doivent être formatés avec dvd+rw-format avant la première utilisation. Vous pouvez ensuite, comme sur un DVD-R ou DVD+R, écrire les données en plusieurs sessions. Pour écraser les données précédentes, il suffit de relancer un cycle de sessions grâce à growisofs -Z. Il n’est pas nécessaire, à l’inverse des CD-RW, de reformater le disque. La commande suivante enregistre le contenu du répertoire donnees sur un DVD. Les options -r et -J indiquent les extensions Rockridge et Joliet, qui permettent d’utiliser des noms de fichiers plus longs sur le DVD. Selon la distribution, vous pouvez avoir à changer le nom du périphérique /dev/srn en /dev/scdn. utilisateur$ growisofs -r -J -Z /dev/sr0 donnees/
Pour créer une deuxième session, utilisez l’option -M à la place de -Z : utilisateur$ growisofs -r -J -M /dev/sr0 autresdonnees/
Linux Livre Page 201 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
201
Attention : il faut éjecter et remettre le DVD dans& le lecteur avant de créer une nouvelle session. La lecture des DVD multisessions peut poser problème sur certains lecteurs. Pour les DVD-RW, il faut utiliser le mode restricted overwrite (voir dvd+rw-format). Certains lecteurs DVD ne gèrent pas les DVD+RW (qu’ils soient mono- ou multisessions). Les commandes suivantes permettent parfois de contourner ce problème : utilisateur$ dvd+rw-format -lead-out /dev/sr0 utilisateur$ dvd+rw-booktype -dvd-rom -media /dev/sr0
Si vous désirez écrire une image ISO déjà existante, utilisez la syntaxe -Z périphérique=fichieriso : utilisateur$ growisofs -Z /dev/sr0=donnees.iso dvd+rwformat
Les DVD+RW et DVD-RW doivent être formatés avant la première utilisation, ce que permet dvd+rw-format : utilisateur$ dvd+rw-format /dev/sr0
Ce qui se passe en détail dépend du type de support. Pour les DVD+RW, seul le début du disque est formaté. Par conséquent, si le formatage s’arrête à 11,5 % (ou avant 100 %), il ne s’agit pas d’une erreur. Le formatage en deçà de cette zone est automatiquement effectué par le lecteur lorsqu’il faut écrire sur cette zone du DVD. Les DVD-RW sont par défaut formatés en mode restricted overwrite. Ce dernier permet de réécrire sur une zone déjà écrite du disque. Il n’est donc pas nécessaire de reformater un DVD-RW à chaque écriture. Vous pouvez aussi formater un DVD-RW en mode incremental sequential avec l’option -blank. Les DVD-RW sortant d’usine sont généralement déjà formatés ainsi. Ce mode est particulièrement adapté aux DVD vidéo et améliore la compatibilité avec de nombreux lecteurs. Cependant, growisofs ne sait pas réécrire de données dans ce mode. Il faut donc reformater le disque à chaque utilisation, ce qui prend beaucoup de temps. En résumé, pour faciliter le travail à growisofs, il faut formater les DVD-RW avec dvd+rwformat sans l’option -blank. Le formatage ne supprime pas les données physiquement. Si, pour des raisons de respect de la vie privée, vous désirez les effacer, lancez growisofs -Z device=/dev/zero . Le support sera alors réécrit avec des 0. dvd+rwmediainfo
Vous possédez un DVD, mais vous ne savez pas de quel type il s’agit, si le disque est déjà écrit, dans quel mode et avec combien de sessions. Dans ce cas, vous pouvez lancer la commande dvd+rw-mediainfo : utilisateur$ dvd+rw-mediainfo /dev/sr0 INQUIRY: [_NEC ][DVD_RW ND-1300A ][1.07] GET [CURRENT] CONFIGURATION: Mounted Media: 1Ah, DVD+RW GET PERFORMANCE: Speed Descriptor#0: 00/221280
[email protected] [email protected]
Linux Livre Page 202 Mardi, 23. septembre 2008 1:05 13
202
LINUX
READ DVD STRUCTURE[#0h]: Media Book Type: 92h, DVD+RW book [revision 2] Media ID: RICOHJPN/W01 Legacy lead-out at: 221280*2KB=453181440 ...
13.6 Droits d’accès, utilisateurs et groupes propriétaires Linux est conçu comme un système multi-utilisateur : certains mécanismes définissent qui peut accéder à quels fichiers, qui peut les modifier, etc. Depuis le noyau 2.6, il dispose également d’une gestion avancée des droits grâce aux ACL (Access Control Lists, listes de contrôle d’accès). Les ACL seront traités plus en détail à la section 13.8. Données d’accès par fichier
Chaque fichier ou répertoire est enregistré avec les informations suivantes : • le propriétaire du fichier ; • le groupe associé au fichier ; • les bits d’accès (rwxrwxrwx pour lecture/écriture/exécution par le propriétaire, les membres du groupe et le reste du monde) ; • quelques bits supplémentaires pour certaines fonctions spéciales. Le propriétaire du fichier est en général la personne qui a créé le groupe. Le groupe associé au fichier est alors normalement le groupe principal du propriétaire. Les informations d’accès r, w et x définissent qui peut lire, modifier et exécuter le fichier. Elles sont séparées en trois groupes pour le propriétaire, les membres du groupe et les autres utilisateurs du système. Cela permet de donner plus de droits au propriétaire du fichier qu’à d’autres utilisateurs. Ces informations s’appellent bits d’accès, car elles sont enregistrées en interne grâce à un codage en bits. Ce n’est pas la notation rwxrwxrwx qui est utilisée en interne, mais 9 bits d’accès, ainsi que 3 bits spéciaux, souvent représentés également sous forme octale. On peut connaître les bits d’accès, le propriétaire et le groupe d’un fichier grâce à la commande ls -l. Pour un fichier texte standard, ls renvoie le résultat suivant : michael$ ls -l lisezmoi.txt -rw-r--r-- 1 michael users 7484 2008-02-19 12:45 lisezmoi.txt
En voici une brève explication. Le premier caractère indique le type de fichier : - pour un fichier régulier, d pour un répertoire, l pour un lien symbolique, etc. Ce fichier peut être lu et modifié par son propriétaire, michael. Comme il s’agit d’un fichier texte, le premier bit x est désactivé : le fichier ne peut pas être exécuté. Tous les autres utilisateurs, qu’ils soient membres du groupe users ou non, peuvent le lire (mais pas le modifier). Si Michael souhaite que seuls les membres du groupe users puissent lire le fichier, il doit désactiver le dernier bit r : michael$ chmod o-r lisezmoi.txt michael$ ls -l lisezmoi.txt -rw-r----- 1 michael users 7484 2008-02-19 12:45 lisezmoi.txt
Linux Livre Page 203 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
203
Supposons à présent que l’accès au fichier soit restreint à deux utilisateurs, michael et kate. Il faut pour cela créer un nouveau groupe auquel seuls Michael et Kate appartiennent, par exemple doc. L’appartenance du fichier au groupe doit ensuite être modifiée grâce à chgrp : michael$ chgrp doc lisezmoi.txt michael$ ls -l lisezmoi.txt -rw-r----- 1 michael doc 7484 2008-02-19 12:45 lisezmoi.txt Droits d’accès sur des répertoires
Droits d’accès sur des périphériques
Les 9 bits d’accès sont également valides pour les répertoires, mais leur signification est différente. Le bit r permet aux utilisateurs de voir le contenu d’un répertoire avec ls. Le bit x leur permet d’aller dans ce répertoire. Lorsque x et w sont actifs, de nouveaux fichiers peuvent être créés dans le répertoire. Sous Linux, on accède à divers composants matériels (lecteur de disquette, imprimante, modem, interface série, lecteur de bandes, etc.) via les périphériques. Pour définir, de manière ciblée, quel utilisateur a le droit d’accéder à quels périphériques, ceux-ci sont répartis en divers groupes d’utilisateurs. Par exemple, les périphériques /dev/ ttyS* pour les ports série appartiennent souvent au groupe uucp ou dialout : utilisateur$ ls -l /dev/sda crw-rw---- 1 root dialout 4, 65 2008-06-17 22:14 /dev/ttyS1
Si l’administrateur désire que l’utilisateur hubert puisse accéder directement à un modem via l’interface série, il peut ajouter hubert au groupe dialout avec la commande usermod -G. Dans certaines distributions, lorsqu’un utilisateur se connecte, les droits d’accès des périphériques les plus courants sont configurés de sorte que l’utilisateur actuel ait un accès illimité aux périphériques correspondants. Par conséquent, les droits d’accès sont souvent modifiés. Fedora utilise pour cela PAM ; SUSE met en œuvre le démon resmgrd.
Bits spéciaux
Bit setuid
Le sens des trois fois 3 bits rwxrwxrwx est simple à comprendre. En plus de ces bits, certaines informations supplémentaires peuvent être enregistrées. La connaissance de ces bits spéciaux n’est généralement nécessaire qu’aux administrateurs système. Le bit setuid, ou bit suid, fait en sorte qu’un programme soit toujours lancé comme s’il était démarré par son propriétaire. Ce dernier est souvent root ; ainsi, le programme peut être lancé comme s’il l’était par root. Ce bit est utilisé pour donner aux utilisateurs sans privilège des droits qui ne s’appliquent qu’à l’exécution d’un programme donné. Cela peut néanmoins facilement représenter un risque de sécurité, en particulier lorsque le programme exécuté démarre d’autres programmes. C’est pourquoi il vaut mieux éviter autant que possible l’utilisation des bits setuid. La commande mount peut constituer l’une des rares exceptions à cette règle : utilisateur$ ls -l /bin/mount -rwsr-xr-x 1 root root 81368 2008-04-29 13:57 /bin/mount
ls -l affiche, à la place du bit x, la lettre s. La valeur octale du bit setuid est 4000.
Linux Livre Page 204 Mardi, 23. septembre 2008 1:05 13
204 Bit setgid
Sticky bit
LINUX
Le bit setgid a un comportement comparable au bit setuid, à ceci près qu’il s’applique aux groupes et non au propriétaire de l’exécutable. ls -l affiche pour le programme correspondant la lettre s à la place de la lettre x dans les bits d’accès du groupe. La valeur octale du bit est 2000. Pour les répertoires, le bit setgid fait en sorte que les fichiers créés dans le répertoire appartiennent au groupe du répertoire (et non, comme souvent, au groupe de l’utilisateur qui crée le fichier). Le sticky bit s’applique aux répertoires. Il fait en sorte que chaque utilisateur pouvant modifier les fichiers du répertoire ne puisse supprimer que ses propres fichiers (et non ceux des autres utilisateurs). Ce bit est par exemple activé sur le répertoire /tmp. Tous les utilisateurs peuvent créer des fichiers temporaires. Il faut, en revanche, éviter que les utilisateurs puissent renommer ou supprimer des fichiers qui ne leur appartiennent pas. ls -l affiche pour le répertoire correspondant la lettre t à la place de la lettre x dans les bits d’accès de l’utilisateur. La valeur octale du bit est 1000. Attention : la signification du sticky bit est spécifique à Linux ; d’autres variantes d’Unix peuvent lui associer un sens différent. utilisateur$ ls -ld /tmp/ drwxrwxrwt 20 root root 8192 2008-06-30 11:59 /tmp/
Bits spéciaux dans ls
Lorsque vous lancez la commande ls -l, il arrive que les bits spéciaux s’affichent sous la forme S ou T. Il ne s’agit pas de bits spéciaux supplémentaires, mais d’une indication : les bits setuid, setgid ou sticky ont été mal utilisés. S signifie que le bit setuid ou setgid est positionné, mais que le bit x ne l’est pas (setuid et setgid n’ont alors pas de sens). T signifie que le sticky bit est positionné, mais que le répertoire n’a pas le bit d’accès x pour le groupe "autres".
Changer les droits d’accès d’un fichier ou d’un répertoire chmod
La commande chmod permet de changer les droits d’accès d’un fichier ou d’un répertoire. Sa syntaxe est de la forme chmod ensemble+droits fichier ou chmod ensemble-droits fichier. ensemble représente les utilisateurs concernés : u pour l’utilisateur propriétaire du fichier, g pour le groupe propriétaire du fichier, o pour les autres utilisateurs du système et a pour tous les utilisateurs sans distinction. droits représente les droits concernés : r pour la lecture (read), w pour l’écriture (write) et x pour l’exécution (execute). Ainsi, pour permettre à tous les utilisateurs de lire un fichier, on utilisera : utilisateur$ chmod a+r fichier
Pour restreindre la modification d’un fichier à son propriétaire, la syntaxe utilisée sera : utilisateur$ chmod og-w fichier
Valeurs octales
chmod permet également d’activer les bits setuid (u+s), setgid (g+s) et sticky (+t). L’option -R offre la possibilité d’effectuer un chmod récursif (en parcourant des répertoires). À la place des lettres, on peut aussi indiquer trois ou quatre octets sous forme de chiffres. À chaque bit u, g et o est associé un chiffre. Chaque chiffre est l’addition de valeurs : 4, 2 et 1 pour r, w et x. Ainsi, 660 correspond à rw-rw---- et 777 à rwxrwxrwx. Les bits setuid, setgid et sticky ont respectivement pour valeurs 4000, 2000 et 1000 − par exemple, chmod 1777 correspond à tous les accès sur un répertoire pour tout le monde, mais avec le sticky bit.
Linux Livre Page 205 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
205
13.7 Propriétaire, groupe et bits d’accès de nouveaux fichiers
Exemple
Cette section concerne les facteurs qui définissent les informations d’accès des nouveaux fichiers. Pour tester cela facilement, utilisez la commande touch. Elle crée un nouveau fichier vide si le fichier en paramètre n’existe pas. L’utilisateur michael crée le nouveau fichier monFichier1. Il n’est pas surprenant que ce fichier appartienne à l’utilisateur michael. users est utilisé automatiquement pour le groupe (users est le groupe principal de michael). michael$ touch monFichier1 michael$ ls -l monFichier1 -rw-r--r-- 1 michael michael 0 2008-06-30 14:47 monFichier1
michael appartient à de nombreux autres groupes (ce que l’on peut voir avec la commande groups). Pour créer un fichier sans qu’il appartienne au groupe primaire, il faut changer de groupe actif grâce à la commande newgrp : michael$ groups users adm dialout cdrom floppy audio dip video plugdev lpadmin scanner michael$ newgroup audio michael$ touch monFichier2 michael$ ls -l monFichier2 -rw-r--r-- 1 michael audio 0 2008-06-30 14:49 monFichier2 Bits d’accès
La gestion des bits d’accès est un peu plus compliquée. Par défaut, les nouveaux fichiers reçoivent les bits d’accès rw-rw-rw (soit, en octal, 666) et sont lisibles et modifiables par tout le monde. Les nouveaux fichiers exécutables (créés par un compilateur) reçoivent les bits rwxrwxrwx (soit, en octal, 777) et sont donc de plus exécutables par tout le monde. Ces paramètres de base sont cependant généralement trop libéraux pour la plupart des utilisateurs. C’est pourquoi tous les interpréteurs de commandes proposent un umask. Il s’agit d’une valeur numérique qui indique les bits qui doivent être retirés des bits d’accès par défaut. Le plus souvent, le masque 022 (----w--w-) est utilisé. Les nouveaux fichiers reçoivent donc les bits d’accès 666-022 = 644 (rw-r--r--), et les nouveaux programmes le masque 777-022 = 755 (rwxr-wr-x). Vous pouvez connaître la valeur courante du masque grâce à la commande umask (qui permet également de modifier le masque) : michael$ umask 0022
Le paramétrage par défaut du masque se trouve dans le fichier de configuration des interpréteurs de commandes. Pour Bash, il s’agit généralement du fichier /etc/profile ou /etc/ bashrc. Les valeurs qui y sont définies peuvent être redéfinies dans le fichier ~/.bashrc de chaque utilisateur.
Linux Livre Page 206 Mardi, 23. septembre 2008 1:05 13
206
LINUX
13.8 Listes de contrôle d’accès et attributs étendus ACL (listes de contrôle d’accès)
Le concept d’utilisateurs et de groupes sous Unix est testé et approuvé depuis des dizaines d’années. Il est très simple, mais dans certains cas, ce système n’est pas suffisant. C’est pourquoi un nouveau système de gestion de droits, plus fin, a été développé, basé sur les ACL (Access Control Lists, listes de contrôle d’accès). Les ACL permettent, pour tout fichier et répertoire, de définir qui peut y accéder en lecture et en écriture et qui ne le peut pas, ce que les droits d’accès Unix standard ne permettent pas. Elles étendent les droits d’accès et peuvent offrir de nouveaux droits ou défaire certains droits existants. Les ACL sont fournies de manière standard par Linux depuis le noyau 2.6. Elles existaient auparavant sous la forme de correctifs. Pour certains systèmes de fichiers, comme jfs et xfs, les ACL sont toujours actives. Pour les systèmes de fichiers ext2, ext3 et reiserfs, il faut monter la partition avec l’option acl pour les activer. Ce n’est pas le cas pour la plupart des distributions actuelles. Ce n’est pas parce que les ACL fournissent davantage de possibilités qu’il faut se débarrasser de la gestion de droits conventionnelle ! Pour les administrateurs avancés de réseaux étendus, elles améliorent la sécurité ou, au minimum, facilitent la gestion. Mais pour la plupart des utilisateurs de Linux, la gestion habituelle des droits suffit amplement. Une utilisation incorrecte des ACL peut entraîner des failles de sécurité. C’est pourquoi elles sont rarement proposées par défaut dans les distributions. De plus, de nombreuses commandes et programmes ne les gèrent pas correctement. Un fichier copié peut alors soudain perdre les informations ACL de l’original. Par ailleurs, la plupart des gestionnaires de fichiers ne savent ni lire, ni modifier les ACL (Konqueror est une exception). Samba est de loin le programme le plus important profitant réellement des ACL. Grâce aux ACL, les droits d’accès Windows peuvent être reproduits sous Linux.
Attributs étendus
Les attributs étendus (EA, Extended Attributes) sont étroitement liés aux ACL. Ils permettent d’enregistrer, pour chaque fichier, des paires attribut/valeur. Vous pouvez, par exemple, associer à un fichier texte l’attribut charset et la valeur utf8 pour enregistrer le jeu de caractères utilisé par ce fichier. Cela ne présente un avantage que lorsqu’il existe des programmes capables d’exploiter ces informations. Les attributs étendus doivent être activés lors du montage des systèmes de fichiers ext2/3 avec l’option user_xattr. Les attributs étendus sont, par exemple, utilisés par le programme de recherche Beagle. Vous trouverez plus de détails sur les ACL et les attributs étendus dans les pages de manuel acl, getfacl, setfacl, attr(5), getfattr et setattr. Les adresses suivantes peuvent également être des sources d’informations intéressantes : http://www.unixgarden.com/index.php/administration-systeme/initiation-aux-listes-decontrole-d’acces-acl-et-aux-attributs-etendus-ea-sous-linux ; http://www.suse.de/~agruen/ (en anglais) ; http://acl.bestbits.at/ (en anglais).
Prérequis
Dans l’exemple suivant, on suppose que le paquetage attr et les commandes attr, getfattr et setfattr sont installés et que vous travaillez dans un système où les ACL et les
Linux Livre Page 207 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
207
EA sont activés. Dans le cas d’un système de fichiers ext3, le résultat de mount doit ressembler à ceci : utilisateur$ mount ... /dev/hdc5 on /test type ext3 (rw,acl,user_xattr) ...
Si ce n’est pas le cas, les exemples suivants rencontreront une erreur du type "Opération non supportée". Il faut alors modifier les options de mount dans /etc/fstab et remonter le système de fichiers. Le Chapitre 23 sur l’administration des systèmes de fichiers traite de cette problématique.
Listes de contrôle d’accès getfacl
Sur un système de fichiers avec des ACL, les droits d’accès standard sont également valides. Ils sont souvent décrits comme des ACL minimales. getfacl affiche ces droits sous la forme d’ACL : michael$ touch fichier1 michael$ getfacl fichier1 # file: fichier1 # owner: michael # group: users user::rwgroup::r-other::r-michael$ ls -l fichier1 -rw-r--r-- 1 michael users 0 2008-06-30 17:03 fichier1
setfacl
setfacl permet uniquement de définir des droits d’accès supplémentaires. Les commandes suivantes donnent à l’utilisateur isa et au groupe doc des droits en lecture et en modification sur le fichier, et suppriment tout accès à l’utilisateur pierre : michael$ setfacl -m isa:rw fichier1 michael$ setfacl -m g:doc:rw fichier1 michael$ setfacl -m pierre:- fichier1
La liste de droits affichée par getfacl est maintenant plus longue. ls affiche les droits d’accès du masque ACL dans la partie du groupe. Les lettres des bits d’accès sont suivies du caractère + qui indique qu’il existe des règles ACL. michael$ getfacl fichier1 # file: fichier1 # owner: michael # group: users user::rwuser:isa:rw-
Linux Livre Page 208 Mardi, 23. septembre 2008 1:05 13
208
LINUX
user:pierre:--group::r-group:doc:rwmask::rwother::r-michael$ ls -l fichier1 -rw-rw-r--+ 1 michael users 0 2008-06-30 17:03 fichier1
Masques ACL
ACL standard
Les ACL sont typiquement utilisées lorsque vous désirez donner des droits à un utilisateur sur vos fichiers, sans pour autant les rendre accessibles à d’autres (par exemple un groupe). Normalement, vous devez pour cela demander à un administrateur de créer un nouveau groupe pour vous-même et l’autre utilisateur. Les ACL permettent de se passer de cette étape. Les masques ACL limitent les droits qui peuvent être donnés par des règles ACL. Par exemple, si vous définissez le masque ACL à r, aucune règle ACL ne peut définir de droits en écriture ou en exécution à un utilisateur. Le masque ACL a donc priorité sur les règles ACL. Il n’a cependant aucune incidence sur les droits d’accès traditionnels de l’utilisateur et du groupe sur le fichier. Chaque modification d’une règle ACL entraîne la mise à jour du masque de manière que toutes les règles ACL existantes soient comprises dans le masque. Celui-ci s’affiche dans getfacl et ls -l. Vous pouvez définir explicitement un masque grâce à la syntaxe setfacl -m m:rwx, afin de limiter les droits des ACL. Mais attention, ce masque n’est valable que jusqu’à la prochaine définition d’ACL, qui renouvelle le masque. Pour les répertoires, vous pouvez définir un deuxième jeu de règles : l’ACL standard. Celleci ne s’applique pas aux accès du répertoire ; elle définit le motif d’ACL pour les nouveaux fichiers.
Attributs étendus setfattr et getfattr
Les exemples suivants montrent comment enregistrer des attributs avec setfattr et les lire avec getfattr. Le nombre d’attributs par fichier dans un système de fichiers ext2 est limité. michael$ touch fichier2 michael$ setfattr -n user.language -v fr fichier2 michael$ setfattr --name=user.charset --value=utf8 fichier2 michael$ getfattr -d fichier2 # file: fichier2 user.charset="utf8" user.language="fr"
getfattr n’affiche normalement que les attributs dont le nom commence par user. Si vous désirez voir d’autres attributs, vous devez indiquer leur nom avec l’option -n ou un motif avec l’option -m. utilisateur$ getfattr -n security.selinux -d fichier2 # file: fichier2 security.selinux="user_u:object_r:user_home_t:s0^000"
Linux Livre Page 209 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
209
13.9 Structure des répertoires sous Linux Un système Unix classique se compose de milliers de fichiers. Certaines règles concernant l’emplacement des fichiers se sont établies au fil du temps. Cette section donne un premier aperçu de la structure des répertoires sous Linux. Le système de données commence par le répertoire racine. En général, il ne contient pas de fichiers, mais les répertoires suivants : • /bin contient les commandes élémentaires de Linux que tous les utilisateurs peuvent lancer. Vous trouverez d’autres programmes dans /usr/bin. • /boot contient les fichiers nécessaires à l’amorçage du système (généralement via GRUB ou LILO). La plupart des distributions y placent également le noyau. • /dev contient tous les fichiers de périphériques. Ces derniers permettent d’accéder à presque tous les composants matériels (par exemple, l’interface série ou une partition du disque dur). • /etc contient les fichiers de configuration du système. Ils gèrent le démarrage du système, la disposition du clavier, les configurations de base pour divers composants et programmes (par exemple la configuration réseau). /etc contient quelques sous-répertoires pour regrouper certains fichiers de configuration, par exemple /etc/X11 pour les fichiers relatifs à X. • /home contient le répertoire personnel de chaque utilisateur du système. Il s’agit d’un répertoire particulier dans lequel l’utilisateur se trouve automatiquement après s’être connecté. Ce dernier a un accès illimité aux fichiers qui s’y trouvent. • /lib[64] contient les bibliothèques partagées ou des liens symboliques vers ces bibliothèques. Ces fichiers sont utilisés pour exécuter des programmes. /lib/modules contient les modules du noyau qui peuvent être activés ou désactivés pendant l’exécution du système. Vous trouverez des bibliothèques supplémentaires dans /usr/lib[64]. Le répertoire /lib/firmware contient le microcode (firmware) de certains composants matériels (par exemple, une carte Wi-Fi). • /lost+found est normalement vide. S’il contient des fichiers, il s’agit de fragments de fichiers qui n’ont pas pu être remis en ordre lors de la tentative de réparation du système de fichiers (fsck). • /mnt et /media contiennent des sous-répertoires, comme cdrom ou floppy, dans lesquels on peut monter des systèmes de fichiers externes. • /opt est prévu pour les paquetages additionnels. Certaines distributions (par exemple SUSE) utilisent les répertoires /opt/gnome ou /opt/kde pour enregistrer les paquetages et bibliothèques spécifiques à Gnome ou KDE. • /proc contient les sous-répertoires qui correspondent à tous les processus courants. Il ne s’agit pas de vrais fichiers. • /root contient les données de l’utilisateur root. Elles ne se trouvent usuellement pas dans /home. /home est souvent une partition séparée et, en cas de problème sur cette partition, root peut ainsi travailler dans son répertoire, même lorsque /home n’est pas montée.
Linux Livre Page 210 Mardi, 23. septembre 2008 1:05 13
210
LINUX
• /sbin contient les commandes d’administration système. En général, les programmes ne pouvant être lancés que par root y sont enregistrés. • /share contient parfois des fichiers indépendants de l’architecture. /usr/share est un endroit plus usuel pour cela. • /srv contient, dans certaines distributions, les données pour les processus serveurs : par exemple /srv/www pour les documents servis par Apache, /srv/ftp pour les fichiers FTP, etc. • /sys contient le système de fichiers sysfs du noyau 2.6. Tout comme /proc, il contient des données sur l’état de l’ordinateur. • /tmp contient des fichiers temporaires. Ces derniers peuvent aussi se trouver dans le répertoire /var/tmp. • /usr contient toutes les applications, le système X, le code source de Linux, etc. Idéalement, on ne devrait y trouver que des fichiers statiques (non modifiables). Ainsi, on pourrait monter le répertoire /usr dans sa propre partition en lecture seule. Cela aurait l’avantage d’une plus grande sécurité, mais l’inconvénient d’une maintenance très pénible ; c’est en pratique rarement le cas. • /var contient les fichiers variables. Les sous-répertoires importants sont adm (fichiers d’administration dépendant de la distribution), lock (fichiers de verrous pour l’accès aux périphériques), log (fichiers de journalisation), mail (fichiers du courrier électronique, pouvant également se trouver dans spool/mail) et spool (fichiers tampon, comme les fichiers à imprimer, les messages, etc.). Le principe de la structure des répertoires se situant directement sous la racine est relativement simple à comprendre. Les problèmes apparaissent avec la division de /usr et de /var en d’innombrables sous-répertoires. En principe, de nombreux répertoires sont nommés comme au niveau de la racine, par exemple bin pour les programmes exécutables. Mais il existe plusieurs groupes de programmes exécutables : les commandes texte, les programmes X, etc. Par conséquent, il existe plusieurs possibilités pour ranger ces programmes. Pour des raisons historiques, plusieurs chemins sont généralement maintenus par le biais de liens. Ainsi, /usr/bin/X11 correspond aux mêmes programmes que /usr/X11R6/bin. Le répertoire /usr /usr/bin /usr/games /usr/include /usr/lib[64] /usr/local /usr/sbin /usr/share /usr/src /usr/tmp
programmes exécutables jeux et parfois un lien vers /usr/share/games fichiers "include" de C bibliothèques, parmi lesquelles de nombreux sous-répertoires pour le compilateur C, divers langages de programmation et de gros paquetages comme emacs ou LaTeX applications et données qui ne font pas partie de la distribution programmes exécutables par root fichiers indépendants de l’architecture et documentation code source de Linux, voire d’autres programmes lien vers /var/tmp (fichiers temporaires)
Linux Livre Page 211 Mardi, 23. septembre 2008 1:05 13
GESTION DES FICHIERS
211
13.10 Fichiers de périphériques
Numéros de périphériques majeur et mineur
Le système de fichiers de Linux ne contient pas seulement des fichiers et des répertoires, mais aussi des périphériques. Il s’agit de fichiers spéciaux, dans lesquels on ne peut pas enregistrer de données mais qui, pour la plupart, fournissent un lien vers le noyau. Les périphériques permettent d’accéder à de nombreux composants matériels de l’ordinateur : disque dur, lecteur de disquette, ports série et parallèle, mémoire, etc. Ils sont définis par trois informations : les numéros de périphériques majeur et mineur (Major Device Number et Minor Device Number) et le type d’accès (par bloc ou par caractère). Le numéro majeur indique le pilote du noyau Linux qui gère le périphérique. Il existe de nombreux pilotes, listés dans /usr/src/linux/Documentation/devices.txt. Le numéro mineur permet de distinguer plusieurs périphériques distincts qui partagent le même pilote, par exemple deux partitions d’un même disque. Le type d’accès indique si le périphérique a un tampon (ce qui est le cas pour tous les périphériques en mode bloc, tels que les disques durs), ou pas (par exemple, l’interface série ou parallèle). Si vous explorez le contenu du répertoire /dev avec ls -l, vous verrez, à la place de la taille du fichier, les numéros de périphériques (majeur et mineur). Le premier caractère des droits d’accès est b ou c, pour les périphériques bloc ou caractère. utilisateur$ ls -l /dev/sda? brw-rw---- 1 root disk 8, 1 2008-06-17 22:15 /dev/sda1 brw-rw---- 1 root disk 8, 3 2008-06-17 22:14 /dev/sda3 ...
Fonctionnement interne
Système udev
En interne, le répertoire /dev ne contient que des inodes, qui sont les plus petites unités gérées par un système de fichiers, mais pas de réels fichiers. On peut créer de nouveaux fichiers de périphériques avec la commande mknod. Cela est cependant rarement nécessaire, car la gestion du matériel de Linux s’en occupe en théorie automatiquement. Pour des raisons de sécurité, seul root et les membres d’un groupe donné peuvent accéder à certains périphériques. Pour que d’autres utilisateurs puissent y accéder, vous pouvez les ajouter au groupe auquel appartient le périphérique. Certains fichiers de périphériques ont une fonction particulière. /dev/null est un "trou noir" : les données qui sont envoyées disparaissent pour toujours − il est, par exemple, utilisé pour les sorties de commandes qui ne doivent pas s’afficher. /dev/zero est une source sans fin d’octets 0, par exemple utilisé pour remplir un fichier d’une taille donnée de zéros. Autrefois, les distributions créaient un grand nombre de fichiers de périphériques − Red Hat 9 en créait, par exemple, presque 8000. Mais chaque ordinateur n’en utilisait au mieux que quelques centaines. Pour corriger cela, le système de fichiers devfs du noyau 2.4 devait créer les fichiers de périphériques dynamiquement à la demande. Il n’a cependant jamais eu le succès escompté et a été depuis supprimé du noyau. Le système udev a pris la suite de devfs dans le noyau 2.6. Les fichiers de périphériques sont également créés dynamiquement dès que le noyau reconnaît des composants matériels. On peut voir que le système udev est actif lorsque le processus udevd existe. Ce dernier est
Linux Livre Page 212 Mardi, 23. septembre 2008 1:05 13
212
LINUX
démarré au début du processus de démarrage InitV. Sa configuration se trouve dans le répertoire /etc/udev. Vous trouverez une description complète des périphériques définis sous Linux, ainsi que des numéros associés dans le fichier /usr/src/linux/Documentation/devices.txt (le code source du noyau doit être installé).
Linux Livre Page 213 Mardi, 23. septembre 2008 1:05 13
14
Gestion des processus Ce chapitre décrit comment Linux gère les processus. Vous y apprendrez notamment : • comment démarrer et arrêter des processus (éventuellement en urgence) ; • comment démarrer un programme en tant qu’utilisateur normal comme si vous étiez root ; • ce que sont les démons ; • comment démarrer automatiquement des programmes à une heure donnée.
14.1 Démarrer, gérer et arrêter des processus Programmes, commandes, processus et tâches
Dans ce chapitre, nous parlerons de processus, mais vous pouvez remplacer ce mot par "programme", "commande" ou "tâche" − sous Linux, il n’y a pas de différence entre un programme et une commande. En général, les programmes texte comme ls sont décrits comme des commandes. Rigoureusement, un programme ou une commande est un fichier exécutable. Il se différencie des autres fichiers par le fait que son bit x est activé (voir section 13.6). Dans l’exemple suivant, serveur.txt est un fichier de données, et sauvegarde un programme (et même un script shell). Il s’agit dans les deux cas de fichiers texte, mais seul sauvegarde est exécutable, car ses bits d’accès x sont positionnés : utilisateur$ ls -l s* -rw-r--r-1 michael users 180383 2008-06-26 10:20 serveur.txt -rwxr-xr-x 1 michael users 222 2008-06-27 10:58 sauvegarde
Fichiers *.exe
Ce n’est que lors du démarrage d’un fichier de programme qu’un processus (ou une tâche) est créé par le noyau Linux. Le titre de cette section devrait donc être "Démarrer des programmes et des commandes, gérer et arrêter des processus". Une question surgit de temps à autre : où sont les fichiers *.exe sous Linux ? La réponse est : il n’y en a pas. Les programmes exécutables sont identifiés par l’existence de leur bit d’accès x. L’extension *.exe comme sous Windows serait donc redondante. Cette réponse n’est plus tout à fait vraie, car il existe maintenant quelques fichiers *.exe isolés sur de nombreux systèmes Linux. Il s’agit de programmes développés dans le langage C# et exécutés par les bibliothèques Mono, qui sont une implémentation libre du framework .NET de Microsoft.
Démarrer des programmes Démarrer des programmes sous X
Pour démarrer des programmes sous X, on utilise généralement le menu ou des icônes. KDE et Gnome permettent également de saisir le nom du programme dans une boîte de dialogue avec le raccourci Alt+F2.
Linux Livre Page 214 Mardi, 23. septembre 2008 1:05 13
214 Console texte, fenêtre de shell
LINUX
Vous pouvez aussi démarrer un programme dans une fenêtre d’interpréteur de commandes (par exemple xterm ou konsole) ou une console texte. Saisissez le nom du programme et appuyez sur Entrée. Les utilisateurs avancés de Linux utilisent souvent cette méthode, car taper quelques lettres est souvent plus rapide que de chercher le programme dans le menu. Il suffit normalement de taper le nom du programme. L’interpréteur de commandes effectue alors une recherche dans tous les répertoires listés dans la variable d’environnement PATH. Voici un exemple de cette variable : utilisateur$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
Lorsque vous désirez lancer un programme qui ne se trouve pas dans l’un de ces répertoires, vous devez indiquer le chemin complet du fichier. C’est également valable pour les programmes du répertoire courant, pour lesquels il faut préfixer le chemin d’un point (par exemple ./monprogramme).
Processus en avant-plan et en arrière-fond Lorsque vous démarrez des programmes via le menu sous X, ils se lancent en tâche de fond sans se gêner les uns les autres. Vous pouvez aussi en démarrer de nouveaux sans attendre la fin d’un programme lancé précédemment. Le comportement est différent lorsque vous lancez un programme dans une fenêtre de terminal ou une console texte. Ce dernier est démarré en tant que processus d’avant-plan. Avant de pouvoir saisir la commande suivante, vous devez attendre la fin de ce programme. Mais vous pouvez aussi lancer des programmes en tâche de fond en ajoutant à la fin de la commande le caractère & : utilisateur$ xemacs &
Si vous avez oublié le &, vous pouvez passer le programme en tâche de fond rétrospectivement. Pour cela, interrompez le programme avec Ctrl+Z et réactivez-le avec bg : user$ xemacs Ctrl+Z [1]+ Stopped utilisateur$ bg [1]+ xemacs &
xemacs
Si vous tapez fg à la place de bg, le processus est rétabli en tâche d’avant-plan. Certaines commandes perturbent l’exécution en tâche de fond par divers messages. Vous pouvez cependant les éliminer facilement en les redirigeant vers /dev/null. Par exemple, cette commande formate une disquette sur le lecteur A: en tâche de fond : root# fdformat /dev/fd0 > /dev/null &
Liste de tous les processus courants (ps, top) ps
La commande ps permet d’afficher une liste des processus courants. Sans option, elle n’affiche que ceux qui vous appartiennent et qui ont été lancés dans le terminal dans lequel vous exécutez cette commande. Il existe de nombreuses options que vous pouvez voir dans man ps.
Linux Livre Page 215 Mardi, 23. septembre 2008 1:05 13
215
GESTION DES PROCESSUS
L’exemple suivant affiche la liste de tous les processus, très réduite pour des questions de place : utilisateur$ ps ax PID TTY STAT 1 ? Ss 2 ? S< 3 ? S< 4 ? S< ... 31097 pts/7 S+ 31389 ? S< 32405 ? S 32406 pts/4 Ss top
TIME 0:07 0:00 0:14 8:14
COMMAND /sbin/init [kthreadd] [migration/0] [ksoftirqd/0]
0:20 0:00 0:01 0:00
gqview [kjournald] xterm -font -*-fixed-medium-r-*-*-18-*-*-*-*-*-*-* bash
top est une commande plus pratique que ps : elle trie les processus en fonction de leur occupation processeur et affiche ceux qui sont actifs en premier. Ce programme donne aussi un aperçu de l’occupation de la mémoire. La liste des processus est actualisée régulièrement jusqu’à ce que vous quittiez le programme avec Q. Les lignes suivantes montrent un système en cours de fonctionnement : top - 12:36:49 up 13 days, 14:22, 8 users, load average: 0.20, 0.33, 0.35 Tasks: 145 total, 1 running, 143 sleeping, 0 stopped, 1 zombie Cpu(s): 5.7%us, 1.3%sy, 0.0%ni, 93.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1554740k total, 1483176k used, 71564k free, 62632k buffers Swap: 1542200k total, 132644k used, 1409556k free, 449100k cached PID USER
PR
NI
%MEM
TIME+
COMMAND
20
0
582m 343m 33m R
6
22.6
301:30.52
firefox
20
0
453m 189m 7724 S
4
12.5
335:45.29
Xorg
22467 michael
20
0
222m
94m 15m S
1
6.2
0:04.91
java_vm
27192 michael
20
0 83916
44m 12m S
0
2.9
2:21.23
kpdf
1 root
20
0
2844
528 480 S
0
0.0
0:07.20
init
2 root
15
-5
0
0
0.0
0:00.00
kthreadd
20026 michael 5164 root
VIRT
RES SHR S %CPU
0
0
S
...
Alternatives graphiques à top
La valeur dans la colonne PID indique le numéro du processus. Ce numéro permet d’arrêter un processus qui échappe à votre contrôle ou qui tourne en arrière-plan. Les processus peuvent avoir plusieurs états. Les plus courants sont R (running, en cours de fonctionnement) et S (sleeping, où le programme n’a rien à faire et attend une entrée). Les programmes peuvent aussi être temporairement interrompus ; ils ont alors l’état T (stopped). top permet également de saisir des commandes interactives. Vous pouvez y stopper des processus (K, kill) ou en changer la priorité (R, renice). Il existe des alternatives graphiques à la commande texte top, par exemple ksysguard sous KDE ou gnome-system-monitor sous Gnome.
Linux Livre Page 216 Mardi, 23. septembre 2008 1:05 13
216 Établir le numéro d’un processus
LINUX
Lorsque vous désirez connaître le numéro d’un processus, utilisez pidof. Lorsqu’il existe plusieurs processus avec le même nom, pidof affiche une liste de numéros : utilisateur$ pidof xterm 32405 27972 26086 25931 17330 15169
Pour savoir quel programme accède à un répertoire ou à un fichier donné, lancez la commande fuser. Un répertoire est aussi considéré comme utilisé lorsqu’un programme y est lancé. La commande suivante montre que bash utilise le répertoire /media/dvd : root#
fuser -v /media/dvd USER PID ACCESS COMMAND /media/dvd michael 2183 ..c.. bash root Kernel mount /media/dvd
Fichiers PID
L’accès au fichier ne s’affiche que lorsque le programme accède réellement au fichier. Cela peut ne pas être le cas pour un éditeur de texte qui charge tout le fichier, puis le ferme. Il rouvre brièvement le fichier le temps de l’enregistrer. Certaines tâches de fond enregistrent dans le répertoire /var/run un fichier PID (par exemple /var/run/httpd.pid). La première ligne de ce fichier est le numéro du processus ; les lignes suivantes peuvent contenir des informations d’état, comme les interfaces réseau utilisées. Ces fichiers permettent de terminer un processus ciblé via un script InitV, y compris lorsque plusieurs processus du même nom coexistent.
Hiérarchie des processus Chaque processus enregistre également le numéro PID de son processus parent. Cette information permet de représenter un arbre de processus, au début duquel se trouve toujours le processus init. Celui-ci est le premier programme lancé directement après le chargement du noyau. Pour afficher la hiérarchie des processus, le plus simple est d’utiliser la commande pstree. L’option -h permet d’afficher les processus parents des processus courants en gras. La Figure 14.1 illustre pstree dans un interpréteur bash dans une fenêtre Konsole.
Figure 14.1 Hiérarchie des processus avec pstree.
Linux Livre Page 217 Mardi, 23. septembre 2008 1:05 13
GESTION DES PROCESSUS
217
Forcer la fin d’un processus (kill, xkill )
kill
Un processus se termine normalement avec la fin d’un programme. Mais il arrive que le programme rencontre des erreurs, qu’il ne puisse plus être arrêté et qu’il prenne de plus en plus de mémoire et de capacité processeur. Dans ce cas, la terminaison du processus doit être forcée. Les commandes en mode texte peuvent souvent être arrêtées avec Ctrl+C. Le programme est alors terminé immédiatement. La commande kill envoie des signaux à un processus en cours, indiqué par son numéro PID (que vous obtenez avec top ou ps). Pour terminer un programme de manière "polie", le signal 15 est envoyé (signal par défaut de kill). Si cela ne fonctionne pas, on utilise le signal 9 (ici pour le processus 2725) : utilisateur$ kill -9 2725
top killall
kill ne peut être utilisée que pour les processus appartenant à l’utilisateur qui les lance. Seul root peut arrêter n’importe quel processus. top permet également d’arrêter un processus : tapez K, le numéro du processus et le signal souhaité. killall est plus confortable, car il prend comme argument le nom du programme et non le numéro du processus. En revanche, il termine tous les programmes ayant le même nom : root# killall -9 firefox
xkill
Processus persistants
Blocage de la souris ou du clavier
Limiter la taille des processus
Sous X, vous pouvez également lancer xkill dans une fenêtre de terminal et cliquer sur la fenêtre du programme à terminer. xkill envoie le signal 9. Sous KDE, vous pouvez lancer cette commande grâce à Ctrl+Alt+Échap. En cas d’erreur, utilisez Échap pour l’interrompre. Il arrive que xkill ferme une fenêtre, mais que le processus ou des parties de ce processus continuent à fonctionner. Assurez-vous avec top ou ps que le programme est bien terminé. Si ce n’est pas le cas, terminez manuellement les processus restants. Il est extrêmement désagréable qu’un programme X entraîne lors d’un plantage le blocage de la souris ou du clavier. L’ordinateur ne réagit alors presque plus. Dans ce cas, la combinaison de touches Ctrl+Alt+F1 peut aider. Si elle réussit, vous passez dans la première console texte. Vous pouvez alors vous connecter et terminer le programme fautif. Si le clavier est complètement bloqué, il reste la solution de se connecter via le réseau en SSH et de terminer le processus de cette manière. Mais cela n’est possible que si vous travaillez dans un réseau local et si l’ordinateur dispose de sshd. Si X reste bloqué, vous pouvez essayer de terminer X lui-même, puis de lancer la commande shutdown. Toutes ces méthodes valent mieux que d’appuyer sur Reset, ce qui peut mener à des pertes de données. Les programmes lancés via un interpréteur de commandes (ou les commandes lancées à partir d’une fenêtre de terminal) peuvent être limités par ulimit, en ce qui concerne leur utilisation mémoire, la taille des fichiers créés, etc. Cette commande est généralement configurée dans /etc/profile. Vous trouverez des informations complémentaires sur ulimit dans man bash.
Linux Livre Page 218 Mardi, 23. septembre 2008 1:05 13
218
LINUX
Partage du temps de calcul (nice, renice) La plupart du temps, la capacité de calcul sous Linux est largement suffisante pour faire fonctionner tous les processus sans délai. Si Linux est déjà occupé avec l’un des processus gourmands en calcul (par exemple, une compilation), il essaie de diviser le temps de calcul restant équitablement entre les autres processus. Dans certains cas, il peut être sensé d’attribuer plus ou moins de temps de calcul à un processus. C’est ce que permet la commande nice, qui donne une priorité réduite ou augmentée à un programme. Elle lui attribue une priorité allant de 20 (très faible) à -20 (très élevée). Par défaut, les programmes sont lancés avec une priorité 0. L’exemple suivant montre comment lancer un script de sauvegarde avec une priorité plus faible, afin qu’il ne dérange pas les autres processus (la sauvegarde peut sans problème durer deux ou trois secondes supplémentaires) : utilisateur$ nice -n 10 sauvegarde
renice permet de modifier la priorité d’un programme déjà lancé. Elle prend pour paramètre un identifiant de processus, obtenu avec top ou ps. Vous trouverez plus de détails à propos de renice dans man renice. top permet également, grâce à la commande R, de modifier interactivement la priorité d’un processus. Seul root peut lancer des processus avec une priorité supérieure à 0 (donc négative).
Redirections et tubes Presque tous les programmes texte (commandes) attendent des entrées sur l’entrée standard (par défaut, le clavier) et renvoient des sorties sur la sortie standard (le texte s’affiche dans la console ou la fenêtre de terminal). On peut rediriger l’entrée et la sortie, ce qui offre de nombreuses possibilités. Par exemple, cette commande enregistre la liste de tous les fichiers du répertoire xy dans le fichier z : utilisateur$ ls xy > z
Les tubes, ou pipes, permettent d’utiliser la sortie d’une commande comme entrée de la commande suivante. Dans cet exemple, grep filtre la liste de tous les paquetages installés sur la chaîne "mysql", indépendamment de la casse, puis sort trie cette liste. En d’autres termes, la sortie de la commande rpm est transmise grâce au caractère | à la deuxième commande grep, qui transmet elle-même sa sortie avec un deuxième caractère | à sort. utilisateur$ rpm -qa | grep -i mysql | sort mysql-5.0.18-2.1 mysql-connector-odbc-3.51.12-1.2.1 MySQL-python-1.2.0-3.2.2 mysql-server-5.0.18-2.1 perl-DBD-MySQL-3.0002-2.2.2 php-mysql-5.1.2-5
Linux Livre Page 219 Mardi, 23. septembre 2008 1:05 13
GESTION DES PROCESSUS
219
14.2 Lancer des processus sous une autre identité (su) Les utilisateurs sans privilège ont deux restrictions importantes à l’exécution des programmes. Ils ne peuvent lancer que les processus dont ils ont l’autorisation d’exécution (propriété, groupe et bits d’accès x). Cela ne pose pas de problème pour les programmes habituels. Mais certaines commandes, comme celles du répertoire /usr/sbin, ne peuvent être lancées que par root. De plus, les processus appartiennent à l’utilisateur qui les a lancés. Ils peuvent ainsi accéder aux mêmes fichiers que l’utilisateur. Formulé autrement, cela signifie qu’un fichier que l’utilisateur ne peut pas modifier ne peut pas non plus être modifié par un programme lancé par cet utilisateur. Les fichiers créés par le processus appartiennent également à l’utilisateur qui a lancé le processus. C’est pourquoi un utilisateur normal ne peut pas effectuer beaucoup de tâches administratives. La solution la plus simple consiste à se connecter en tant que root. Nous avons déjà vu qu’il n’est pas conseillé de le faire : le risque de dégâts involontaires est bien plus grand. Certaines distributions, comme Ubuntu, interdisent complètement la connexion en root. Cette section décrit comment exécuter les tâches administratives quotidiennes grâce à su et ssh. La section 14.3 traitera de l’alternative fournie par sudo. De nombreuses distributions sont configurées de manière que vous n’ayez pas à penser à su ou sudo. Lorsque vous démarrez un outil d’administration, une boîte de dialogue de mot de passe s’affiche automatiquement. Les bits suid et guid offrent une première possibilité d’indiquer aux programmes que quiconque peut les lancer comme s’il était root. La différence principale avec sudo est que ces bits d’accès s’appliquent à tous les utilisateurs, tandis que les utilisateurs de sudo doivent être déclarés explicitement dans le fichier /etc/ sudoers. su
Bien souvent, le besoin se limite à lancer rapidement une commande en tant que root. Quitter X se révèle alors inconfortable. Le plus simple pour changer d’utilisateur dans une fenêtre de terminal est d’utiliser la commande su nom. Si vous ne lancez pas cette commande en tant que root, le mot de passe du compte utilisateur correspondant vous est demandé. Vous pouvez alors, dans la fenêtre de terminal, lancer des commandes sous le nom fourni jusqu’à ce que vous repassiez en mode normal avec exit ou Ctrl+D. Les lignes suivantes montrent comment un utilisateur peut se connecter brièvement en tant que root, monter une partition dans l’arborescence et se déconnecter : utilisateur$ su -l root Mot de passe : xxx root# mount -t ext2 /test /dev/hdc7 root# Ctrl+D utilisateur$ ls /test
Pour que su soit un remplacement complet d’une connexion en tant que root, vous devez utiliser l’option -l. Ainsi, tous les fichiers de démarrage du compte (en particulier, la définition correcte de PATH) sont relus.
Linux Livre Page 220 Mardi, 23. septembre 2008 1:05 13
220
LINUX
Sous KDE, le plus simple pour démarrer des programmes X avec des droits administrateur est kdesu. Ce programme affiche une fenêtre de dialogue pour saisir le mot de passe root.
kdesu
utilisateur$ kdesu kate /etc/fstab
gksu consolehelper
kdesu ne fonctionne que lorsque le démon kdesud est lancé. Il l’est généralement lors du démarrage de KDE. Les options de kdesu sont disponibles avec kdesu -help-all. Dans certaines distributions, kdesu est directement intégré au menu KDE. Dans ce cas, si vous démarrez un programme qui demande des droits d’administration, la fenêtre de connexion de kdesu apparaît automatiquement. La contrepartie de kdesu sous Gnome s’appelle gksu. Il fonctionne sans processus d’arrièreplan. man gksu offre un résumé des options disponibles. Dans certaines distributions, consolehelper peut être utilisé à la place de gksu. Ce programme est également une boîte de dialogue de mot de passe, mais il est mis en œuvre de manière complètement différente. L’idée de base est que les outils d’administration sont installés dans un répertoire qui n’est accessible qu’à root. Pour les utilisateurs normaux, le nom de l’exécutable est un lien vers consolehelper. La commande suivante montre une configuration de ce type pour system-config-network (configuration du réseau pour Red Hat) : utilisateur$ ls -l /usr/sbin/system-config-network \ /usr/bin/system-config-network -rwxr-xr-x ... root root /usr/sbin/system-config-network lrwxrwxrwx ... root root /usr/bin/system-config-network -> consolehelper
ssh
Lorsque root lance la commande system-config-network, /usr/sbin/system-confignetwork est automatiquement lancé. En revanche, si un utilisateur sans privilège lance la même commande, consolehelper est démarré. Lorsque l’utilisateur indique le bon mot de passe root, consolehelper lance le programme system-config-network. Dans la plupart des distributions, su ne fonctionne que pour les commandes texte et ce, pour plusieurs raisons. Tout d’abord, pour lancer un programme X, la variable d’environnement DISPLAY doit contenir le nom de l’ordinateur sur lequel le programme s’affiche (export DISPLAY=localhost:0). X peut aussi interdire aux utilisateurs étrangers à la session de démarrer des programmes (la commande xhost peut régler ce problème). Enfin, il arrive que le port réseau de communication vers le serveur X soit inaccessible. Si kdesu, gksu ou consolehelper ne sont pas installés, ssh est la solution la plus simple à ce problème, grâce à la syntaxe suivante : utilisateur$ ssh -X -l utilisateur localhost
14.3 Lancer des processus sous une autre identité (sudo) sudo a une approche complètement différente de su. Ce programme permet, après configuration, à des utilisateurs donnés d’exécuter certains programmes avec les droits root. La sécurité est assurée par la saisie du mot de passe de l’utilisateur (et non celui de root). sudo lance alors ces programmes comme s’ils étaient démarrés par un autre utilisateur (par défaut root). Ainsi, des utilisateurs peuvent prendre en charge des tâches administratives ou lancer des commandes critiques pour le système sans avoir à connaître le mot de passe
Linux Livre Page 221 Mardi, 23. septembre 2008 1:05 13
GESTION DES PROCESSUS
221
root. sudo enregistre dans le journal /var/log/messages tous les programmes lancés, ainsi que les tentatives qui ont échoué. sudo garde le mot de passe pendant 15 minutes. Si vous lancez une nouvelle commande pendant cet intervalle, votre mot de passe ne vous sera pas redemandé − cette durée peut être paramétrée dans /etc/sudoers avec le mot clé timestamp_timeout. Configuration
La configuration de sudo est définie dans le fichier /etc/sudoers. Il se divise en trois colonnes qui décrivent quels utilisateurs de quels ordinateurs ont le droit de démarrer quels programmes. La ligne suivante signifie que l’utilisateur catherine sur l’ordinateur uranus peut lancer la commande /sbin/fdisk. Le mot clé ALL indique que catherine peut la lancer sous n’importe quel compte valide : root, news, lp, etc. # dans /etc/sudoers catherine uranus=(ALL) /sbin/fdisk
Lorsque la première colonne de sudoers commence par le caractère %, la ligne s’applique à tous les membres du groupe indiqué. man sudoers décrit la syntaxe de ce fichier. On peut donner à un utilisateur les droits sudo sans qu’il ait à saisir son mot de passe. La ligne ressemble alors à ceci : michael ALL=(ALL) NOPASSWD: ALL
Cette solution représente un risque de sécurité, mais quiconque doit effectuer régulièrement des tâches administratives en appréciera le confort. Attention, l’option NOPASSWD n’est valable que lorsque aucune autre ligne de sudoers ne demande un mot de passe pour le même utilisateur. Cette astuce fonctionne également pour les groupes. Applications
Catherine peut maintenant lancer fdisk de la manière suivante. Elle doit saisir, comme mot de passe, celui associé au compte catherine et indiquer le chemin complet de fdisk, si ce dernier n’est pas dans l’un des répertoires de la variable d’environnement PATH de catherine. fdisk se lance alors avec le compte root. Pour choisir un autre compte pour l’exécution, on peut utiliser sudo -u compte. catherine$ sudo /sbin/fdisk /dev/sda [sudo] password for catherine: xxxxxxx
Lancer plusieurs commandes avec sudo
Lorsqu’il faut lancer plusieurs tâches administratives, il devient fastidieux de préfixer chaque commande avec sudo. Il est plus élégant de passer en mode root avec sudo -s -H. Toutes les commandes sont alors lancées en tant que root. On sort de ce mode grâce à Ctrl+D.
gksudo
Lorsque vous démarrez des programmes d’administration sous X, certaines distributions lancent gksudo. Ce dernier permet de saisir le mot de passe dans une boîte de dialogue et lance le programme souhaité. Le fichier de configuration /etc/sudoers propose de nombreuses possibilités syntaxiques. Pour en savoir plus, lisez la page de manuel de sudo et sudoers, ou consultez la page web de sudo : http:// www.courtesan.com/sudo/.
Linux Livre Page 222 Mardi, 23. septembre 2008 1:05 13
222
LINUX
sudo sous Ubuntu Ubuntu et certaines autres distributions ne créent pas de mot de passe root. Il est donc impossible de se connecter en tant que root. su et ssh -l root ne fonctionnent pas non plus. La seule possibilité de lancer des commandes d’administration est donc d’utiliser sudo. Le fichier /etc/sudoers ne contient que trois lignes : #Configuration par défaut de /etc/sudoers sous Ubuntu Defaults !lecture,tty_tickets,!fqdn root ALL=(ALL) ALL %admin ALL=(ALL) ALL
La première ligne se sépare en trois éléments. !lecture indique à sudo de ne pas afficher d’avertissement à l’utilisateur lorsqu’il lance la commande sudo. tty_tickets fait en sorte que le mot de passe ne soit retenu que pour les commandes lancées dans une console donnée. !fqdn permet d’indiquer des noms réseau non pleinement qualifiés − ce qui est nécessaire pour que sudo puisse fonctionner sans serveur de noms. La deuxième ligne donne à root un accès illimité à tous les programmes. Elle est plutôt inutile sous Ubuntu, puisque la connexion en root n’est pas possible. La troisième est la plus importante : elle permet aux membres du groupe admin d’appeler tous les programmes. Par défaut, seul le premier utilisateur (créé lors de l’installation) est membre du groupe admin. Lorsque vous créez un nouvel utilisateur, celui-ci doit être explicitement ajouté à ce groupe.
sudo sous SUSE Sous SUSE, le rôle de sudo est plus réduit que sous Ubuntu. Si vous désirez le mettre en place, vous devez prendre garde à certaines particularités de la configuration par défaut : # configuration par défaut de /etc/sudoers dans SUSE # $HOME contient le répertoire personnel de l’utilisateur Defaults always_set_home # empêche l’exécution de programmes X Defaults env_reset # sudo demande le mot de passe du compte cible Defaults targetpw # avec le bon mot de passe, tout le monde peut tout faire ALL ALL=(ALL) ALL root ALL=(ALL) ALL
Les deux premières lignes ont trait aux variables d’environnement une fois l’accès sudo autorisé. La deuxième ligne a en particulier pour effet de supprimer la variable DISPLAY, ce qui interdit l’exécution de programmes X. Defaults targetpw signifie que le mot de passe pour le compte cible doit être saisi avant que la commande ne puisse être lancée (en général, mot de passe root). La ligne ALL ALL=(ALL) ALL permet à tous les utilisateurs de lancer n’importe quelle commande une fois le bon mot de passe saisi.
Linux Livre Page 223 Mardi, 23. septembre 2008 1:05 13
223
GESTION DES PROCESSUS
14.4 Processus du système (démons) Nous définissons les démons comme des processus en tâche de fond pour la gestion du système. Ils sont généralement lancés lors du démarrage grâce à InitV. Si vous êtes familier avec la terminologie Windows 2000/XP, ils correspondent aux services de Windows. La liste suivante décrit rapidement la tâche des démons les plus importants. Processus importants du système atd avahi-demon cron cupsd dbus-daemon dhclient dhcpd dhcpcd gdm gpm hald* hcid hidd hpiod httpd kdm klogd innd ipppd ipsec leafnode lisa lockd lpd mdnsd mysqld named nmbd nscd ntpd postfix pppd
démarrage d’autres programmes à des heures prédéfinies (semblable à cron) configuration réseau automatique (ZeroConf, Rendezvous, Bonjour) démarrage d’autres programmes à des heures prédéfinies tampon de l’imprimante communication DBUS client DHCP mise à disposition d’ adresses IP aux autres ordinateurs lecture des adresses IP gestionnaire de connexion de Gnome gestion de la souris pour la console texte gestion du matériel gestion du BlueTooth gestion du BlueTooth imprimantes et scanners HP serveur web (par exemple Apache) gestionnaire de connexion de KDE journalisation des messages du noyau serveur de news démarrage du RNIS VPN avec IPsec serveur de news pour un petit réseau serveur d’informations du réseau local pour KDE verrous NFS tampon d’imprimante configuration réseau automatique (ZeroConf, Rendezvous, Bonjour) serveur de base de données MySQL serveur de noms serveur de noms pour Windows cache pour les utilisateurs, les groupes et les noms d’ordinateurs mise à jour de l’heure avec NTP serveur de courrier électronique pour l’envoi de courriers client VPN, accès à Internet
Linux Livre Page 224 Mardi, 23. septembre 2008 1:05 13
224
LINUX
pptpd portmap resmgrd rhnsd rpc.* sendmail sshd smartd smbd sdpd squid syslogd syslogd-ng udevd vsftpd xdm xfs xinetd
serveur PPTP pour VPN partie du serveur NFS donne aux utilisateurs normaux accès aux ressources du système (SUSE) service de mise à jour (anciens systèmes Red Hat) services réseau RPC serveur de courrier électronique pour l’envoi de courriers serveur SSH (shell sécurisé) surveillance SMART des disques durs serveur de fichiers pour Windows (Samba) gestion du BlueTooth proxy et cache web journalisation des messages du système journalisation des messages du système gestion des périphériques serveur FTP gestionnaire d’affichage de X serveur de polices de X démarrage d’autres démons réseau
Threads du noyau En plus des services réseau habituels comme httpd (Apache), il existe de nombreux processus qui ne sont pas vraiment des programmes, mais des morceaux de processus (threads) du noyau. Lorsque vous tapez ps axu, vous pouvez les reconnaître par leur nom qui se trouve entre crochets. Certains sont suivis d’un numéro qui désigne le processeur concerné. Ainsi, kblockd/0 gère le tampon des périphériques bloc pour le premier processeur, kblockd/1 pour le deuxième, etc. La plupart des threads du noyau gèrent les tâches de bas niveau du système d’exploitation (gestion de la mémoire, des processus, occupation du processeur, etc.). Ils sont principalement lancés lors de l’initialisation au début du démarrage du système. Les applications normales ne nécessitent pas de configuration spéciale à ce niveau. Threads importants du noyau aio events kacpid kblockd khelperd khubd kjournald
gestion de ses entrées/sorties asynchrones (par exemple pour les processus réseau) gestion des événements et les interruptions logicielles fonctions ACPI gestion du tampon des périphériques bloc chargement et suppression des modules du noyau pour les programmes des utilisateurs gestion de l’insertion et de l’éjection des périphériques USB journalisation du système de fichiers ext3
Linux Livre Page 225 Mardi, 23. septembre 2008 1:05 13
225
GESTION DES PROCESSUS
knfsd kthread nfsd kscand kseriod ksoftirqd kswapd lockd migration pccardd pdflush reiserfs rpciod scsi_eh watchdog
serveur NFS gestion les threads serveur NFS gestion de la mémoire communication avec les périphériques série gestion des interruptions matérielles pagination verrous NFS localisation processeur des processus gestion les cartes PCMCIA enregistrement physique les modifications de fichiers journalisation du système de fichiers reiserfs NFS gestion des erreurs et dépassements de délais du SCSI surveillance du système
Démarrer et arrêter des démons La plupart des distributions démarrent les démons listés précédemment grâce au système InitV. Nous le détaillerons au Chapitre 24, où vous apprendrez aussi comment intégrer de nouveaux scripts à ce système. Certaines distributions utilisent, à la place de InitV, un autre système, par exemple Upstart pour Ubuntu. Jusqu’à Ubuntu 8.04, Upstart gère peu de processus et démarre ensuite un mode de compatibilité avec InitV. Les informations fournies ici sont donc au moins valables jusqu’à cette version. Dans cette section, nous expliquerons comment démarrer et arrêter un démon manuellement, ainsi que de manière automatique lors du démarrage du système. Ces informations sont particulièrement utiles pour mettre en place et configurer des services réseau. Attention, la commande et le nom du service peuvent varier d’une distribution à l’autre. Par exemple, le script de démarrage du serveur Apache s’appelle apache2 sous Debian, Ubuntu et SUSE, et httpd sous Fedora et Red Hat. Démarrage manuel
Pour démarrer manuellement un démon ou un service réseau, lancez la commande suivante. Notez que le service réseau est parfois démarré immédiatement après l’installation du paquetage (comme sous Debian ou Ubuntu), tandis qu’il peut nécessiter un démarrage manuel sous d’autres distributions. Sous Debian, Fedora, Red Hat, SUSE et Ubuntu : root# /etc/init.d/nom start
Sous Debian et Ubuntu : root# invoke.rc nom start
Linux Livre Page 226 Mardi, 23. septembre 2008 1:05 13
226
LINUX
Sous Fedora et Red Hat : root# service nom start
Sous SUSE : root# rcnom start
Sous Ubuntu à partir de 6.10, pour les processus Upstart : root# start nom Arrêt manuel
Les commandes pour arrêter un démon sont très similaires. Sous Debian, Fedora, Red Hat, SUSE et Ubuntu : root# /etc/init.d/nom stop
Sous Debian et Ubuntu : root# invoke.rc nom stop
Sous Fedora et Red Hat : root# service nom stop
Sous SUSE : root# rcnom stop
Sous Ubuntu à partir de 6.10, pour les processus Upstart : root# stop nom Rechargement /redémarrage
De nombreux services savent relire leurs fichiers de configuration pendant qu’ils sont en service. Pour qu’ils puissent prendre en compte des modifications dans leur configuration, il faut lancer la commande reload. Ceux qui ne la prennent pas en charge doivent être redémarrés avec restart. Sous Debian, Fedora, Red Hat, SUSE et Ubuntu : root# /etc/init.d/nom reload/restart
Sous Debian et Ubuntu : root# invoke.rc nom reload/restart
Sous Fedora et Red Hat : root# service nom reload/restart
Sous SUSE : root# rcnom reload/restart Démarrage automatique
Lorsqu’un service réseau est mis en place correctement, il est d’usage de le démarrer automatiquement lors de l’amorçage de l’ordinateur et de l’arrêter lors de l’extinction de la machine. Sous certaines distributions (Debian, Ubuntu), les services sont configurés ainsi dès qu’ils sont installés à partir du paquet. Sous d’autres, ce n’est pas le cas, pour des raisons de sécurité − le démarrage automatique doit donc être activé manuellement. Sous Debian, update-rc.d crée les liens de démarrage et d’arrêt InitV avec le numéro d’exécution par défaut 20. Si vous désirez utiliser d’autres nombres, indiquez-les avec n1 et n2 (voir Chapitre 24).
Linux Livre Page 227 Mardi, 23. septembre 2008 1:05 13
GESTION DES PROCESSUS
227
Sous Red Hat et Fedora, la commande chkconfig suffit dans de nombreux cas. La seconde commande n’est nécessaire que lorsque le script InitV ne contient pas d’information sur le niveau d’exécution du service (presque toujours 3 et 5, voir Chapitre 24). Sous Debian et Ubuntu : root# update-rc.d nom defaults [n1 n2]
Sous Fedora et Red Hat : root# chkconfig --add nom root# chkconfig --level 35 nom
Sous SUSE : root# insserv nom Supprimer le démarrage automatique
Les commandes suivantes suppriment le démarrage automatique ultérieur des services. Lorsque le système fonctionne, il n’est pas arrêté ; il faut pour cela lancer la commande stop correspondante. Sous Debian et Ubuntu : root# update-rc.d -f nom remove
Sous Fedora et Red Hat : root# chkconfig --del nom
Sous SUSE : root# insserv -r nom
14.6 Démarrer automatiquement des processus (crontab) Lorsque votre ordinateur se met soudainement à parcourir le disque dur et à vous envoyer des courriers électroniques, il s’agit presque toujours du démarrage d’un processus via le démon cron. InitV lance ce programme automatiquement lors du démarrage de l’ordinateur. Il est actif une fois par minute ; il analyse tous les fichiers crontab et démarre les programmes qui s’y trouvent. Ce démon est principalement utilisé pour les tâches de maintenance : rotation des fichiers de journalisation, suppression des fichiers temporaires, actualisation des répertoires, etc. La configuration globale de cron se trouve dans le fichier /etc/crontab. Les utilisateurs peuvent également définir leurs propres tâches dans les fichiers spécifiques aux utilisateurs /var/spool/cron/tabs/utilisateur. Les fichiers /var/spool/cron/allow et /var/spool/cron/deny définissent des permissions sur ces fichiers utilisateur. Lorsque allow existe, l’utilisateur ne peut exécuter que les commandes qui s’y trouvent. Lorsque deny existe, il ne peut pas les exécuter. Si ces deux fichiers sont absents, la compilation de cron définit si les utilisateurs en dehors de root peuvent utiliser ce démon.
Linux Livre Page 228 Mardi, 23. septembre 2008 1:05 13
228 crontab
LINUX
Le fichier /etc/crontab contient des enregistrements sous forme de lignes pour les programmes à lancer. La syntaxe ressemble à ceci : min heure jour mois joursemaine utilisateur commande
Colonnes de crontab min heure jour mois joursemaine utilisateur commande
indique à quelle minute (0-59) le programme doit être lancé indique l’heure (0-23) indique le jour dans le mois (0-31) indique le mois (0-12) indique le jour de la semaine (0-7, 0 et 7 signifient dimanche) indique pour quel utilisateur est lancée la commande (root le plus souvent) indique la commande à lancer
Une étoile dans l’un des cinq premiers champs indique que ce champ doit être ignoré. Ainsi, 15 * * * * signifie qu’il faut lancer la commande 15 minutes après l’heure pleine, toutes les heures, tous les jours, tous les mois, indépendamment du jour de la semaine. 29 0 * * 6 indique qu’il faut la lancer tous les samedis à 0:29. Ces champs comprennent également une syntaxe du type */n. Celle-ci signifie que la commande doit être lancée toutes les n minutes/heures, etc. Ainsi, */15 * * * * indique qu’elle est lancée tous les quarts d’heure (à x:00, x:15, x:30 et x:45). La documentation n’est pas claire sur la signification de 0 pour le jour du mois et le mois (voir man 5 crontab). Les fichiers /var/spool/cron/tabs/utilisateur ont le même format que crontab. La seule différence est qu’il n’y a pas de colonne utilisateur.
Modifier la configuration Pour changer la configuration globale de cron, vous pouvez modifier directement le fichier /etc/crontab et les fichiers de /etc/cron* avec un éditeur de texte. Pour ajouter une ligne spécifique à un utilisateur, vous devez utiliser la commande crontab -e. L’éditeur par défaut de la variable d’environnement EDITOR est alors lancé. cron.hourly, .daily, .weekly, .monthly
Dans la plupart des distributions, /etc/crontab ne contient que peu d’entrées qui lancent tous les fichiers de script de /etc/cron.hourly/* toutes les heures, ceux de /etc/ cron.daily/* tous les jours, etc. Sous Red Hat, /etc/crontab ressemble à ceci : # /etc/crontab sur Red Hat SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
Linux Livre Page 229 Mardi, 23. septembre 2008 1:05 13
GESTION DES PROCESSUS
229
La configuration de cron s’en trouve considérablement simplifiée. Dans la plupart des cas, il suffit alors de copier le script à lancer dans l’un des quatre répertoires /etc/cron.xxx pour que les commandes qui s’y trouvent soient lancées. Modifier directement /etc/crontab n’est alors nécessaire que lorsque vous voulez changer les heures prédéfinies (attention, le fichier /etc/crontab peut être écrasé lors d’une mise à jour de la distribution). Pendant mon travail sur cet ouvrage, j’ai synchronisé le répertoire de ce livre et mon répertoire de sauvegarde (sur un autre disque dur) une fois par jour. Cela tient en un script de trois lignes : #!/bin/sh #/etc/cron.d/daily/backup-linux-book rsync -r ~michael/linux/* /backup/linux
Lorsque vous désirez éviter qu’une tâche cron ne se lance à un moment critique (par exemple, lorsque vous gravez un DVD), il suffit de désactiver cron avec /etc/init.d cron stop .
Linux Livre Page 230 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 231 Mardi, 23. septembre 2008 1:05 13
15
Convertisseurs graphiques, audio et texte Linux propose de nombreuses commandes pour passer des images, des textes et d’autres fichiers d’un format à un autre : du GIF au JPEG, du Latin-1 à l’Unicode, du PostScript au PDF, du HTML au texte simple, du MP3 au WAV, etc. Ce chapitre offre un premier aperçu de ces commandes, assorties de quelques exemples d’application. La plupart des distributions fournissent peu de convertisseurs. Si vous ne trouvez pas l’une des commandes présentées dans ce chapitre, vous devez installer le paquetage correspondant. Nous ne parlerons pas ici des programmes interactifs, tels que Gimp. Vous pouvez bien sûr charger un fichier TIFF dans Gimp et l’enregistrer au format JPEG. Nous nous limiterons aux commandes texte avec lesquelles la conversion peut être automatisée très simplement.
15.1 Convertisseurs graphiques Il existe principalement deux paquetages de convertisseurs graphiques : Image Magick et Netpbm. Ils peuvent gérer d’innombrables formats graphiques et proposent des commandes et des options pour les transformations basiques d’images (modifier la taille ou le découpage d’une image, améliorer le contraste, réduire le nombre de couleurs, etc.). Vous trouverez ici une courte présentation de ces deux paquetages, ainsi que d’autres commandes et bibliothèques de conversion d’images. Image Magick
Le paquetage Image Magick contient plusieurs commandes isolées, dont la plus importante est convert. Celle-ci copie une image et en modifie le format. Les formats source et cible sont simplement indiqués par les noms de fichiers. Par exemple, la commande suivante copie le fichier image.jpg au format PNG : utilisateur$ convert image.jpg image.png
Divers paramètres de l’image (taille, nombre de couleurs, taux de compression, etc.) peuvent être modifiés par le biais d’une centaine d’options : utilisateur$ convert -resize 100x100 image.jpg image.png utilisateur$ convert -type Grayscale image.jpg image.eps utilisateur$ convert -quality 80 image.bmp image.jpg
mogrify fonctionne comme convert, mais transforme directement le fichier plutôt que d’en créer un nouveau : utilisateur$ mogrify -resize 50% test.jpg
Les autres commandes d’Image Magick comprennent compare pour comparer deux images et conjure pour lancer des commandes de transformation d’images du Magick Scripting Language (MSL, langage de script Magick). identify affiche une description d’un fichier
Linux Livre Page 232 Mardi, 23. septembre 2008 1:05 13
232
LINUX
image (format, taille, etc.). import crée une copie d’écran et l’enregistre dans un fichier. montage forme une seule image avec plusieurs. utilisateur$ identify -verbose bateau.png Image: bateau.png Format: PNG (Portable Network Graphics) Class: DirectClass Geometry: 416x244+0+0 Type: TrueColorMatte Endianess: Undefined Colorspace: RGB Depth: 8-bit ...
Les programmeurs peuvent aussi utiliser Image Magick en tant que bibliothèque. La documentation complète de toutes les commandes se trouve sur le site web http://www.imagemagick.org/. L’approche de Netpbm (anciennement Portable Bitmap Utilities) est différente de celle d’Image Magick. En effet, chaque fichier doit d’abord être transformé au format interne PNM ou PBM. L’exemple suivant montre comment transformer un fichier TIFF en fichier PNG, où l’espace de couleurs de l’image est normalisé (pnmnorm) :
Netpbm
utilisateur$ tifftopnm image.tif | pnmnorm | pnmtops -noturn -rle \ -scale 0.5 > image.eps
Bibliothèque libtiff
Bibliothèque libwmf
Convertisseur SVG EXIF Fichiers RAW
Netpbm contient environ 200 commandes ; vous en trouverez une description à l’adresse http://netpbm.sourceforge.net/doc/. Le paquetage libtiff contient la bibliothèque éponyme, ainsi que diverses commandes pour modifier et convertir des fichiers TIFF. Les principales commandes de conversion sont bmp2tiff, gif2tiff, tiff2pdf et tiff2ps. Pour manipuler les fichiers TIFF, les commandes tiffcp, tiffinfo ou encore tiffsplit peuvent s’avérer utiles. Le paquetage libwmf contient la bibliothèque du même nom, ainsi que certaines commandes pour traiter les fichiers WMF et EMF (Windows Metafile et Enhanced Metafile). Les principales commandes de conversion sont wmf2eps, wmf2svg, ainsi que wmf2gd (conversion vers les formats JPEG et PNG). Le paquetage librsvg2 ou librsvg2-bin contient les commandes rsvg et rsvg-convert, qui servent à transformer les fichiers SVG (Scalable Vector Graphics) dans un format bitmap. Il existe plusieurs bibliothèques et commandes pour modifier les données EXIF des fichiers JPEG, par exemple exif, exiftran, exiv2 ou encore jhead. Certains appareils photo numériques permettent d’enregistrer des images sans perte de qualité au format RAW spécifié par le fabricant. Pour transformer ces fichiers en images conventionnelles, on peut utiliser la commande dcraw du paquetage du même nom.
15.2 Conversion audio et vidéo Le tableau suivant présente les principales commandes pour lire des données audio à partir d’un CD et transformer les fichiers audio et vidéo d’un format à un autre. Si le nom du paquetage ne dérive pas directement de celui de la commande, il est indiqué entre parenthèses − ce nom peut cependant varier selon les distributions.
Linux Livre Page 233 Mardi, 23. septembre 2008 1:05 13
CONVERTISSEURS GRAPHIQUES, AUDIO ET TEXTE
Format
Commande (paquet)
CD -> WAV MP3 -> WAV WAV -> MP3 OGG -> WAV WAV -> OGG MP3 -> OGG AAC -> WAV WAV -> AAC WAV <-> FLAC Audio <-> Audio Audio <-> Audio Audio/Vidéo <-> Audio/Vidéo
cdda2wav/icedax, cdparanoia mpg123, mpg321, madplay lame oggdec (vorbis-tools) oggenc (vorbis-tools) mp32ogg faad faac flac sox sfconvert (audiofile) ffmpeg (convertisseur universel)
233
Cette section présente quelques exemples de commandes. Vous trouverez plus d’informations et des références d’options grâce à man commande. Extraction de CD audio
Ces outils servent à extraire un CD de manière efficace et sans perte de qualité vers le disque dur. Les commandes les plus populaires sont cdparanoia et cdda2wav, ainsi que le projet dérivé icedax. cdparanoia a la réputation d’avoir de bons résultats lorsque le CD est rayé ou présente des problèmes similaires. Les deux commandes fournissent d’innombrables paramètres. Voici deux exemples. La commande suivante lit la piste 3 d’un CD qui se trouve dans le premier lecteur CD SCSI. Le fichier résultant est nommé audio.wav. root# cdda2wav -D /dev/scd0 -t 3
Le second exemple lit la piste 4 du CD dans le même lecteur. Le résultat est le fichier cdda.wav dans le répertoire local : root# cdparanoia -d /dev/scd0 "4" Codage MP3
En raison des problèmes de brevets évoqués au Chapitre 11, il existe encore peu de distributions Linux dotées d’un codeur MP3. Divers codeurs sont cependant disponibles sur Internet en tant que paquetages supplémentaires. Le programme le plus connu est lame : http://lame.sourceforge.net/index.php. Son utilisation est très simple : lame entree.wav sortie.mp3 crée à partir du fichier en entrée un fichier MP3. L’opération, en particulier la qualité du fichier MP3, est paramétrée grâce à de nombreuses options.
MP3 -> OGG
Les commandes listées précédemment peuvent être combinées, par exemple pour transformer un fichier MP3 au format Ogg-Vorbis. Attention, ce type de transformation induit toujours une perte de qualité et doit être évité autant que possible. utilisateur$ mpeg321 -s in.mp3 -w - |oggenc - -o out.ogg
Linux Livre Page 234 Mardi, 23. septembre 2008 1:05 13
234
FLAC
Bibliothèque AudioFile
Conversion vidéo (ffmpeg)
LINUX
Malheureusement, les tags Info (ID3) sont également perdus dans cette opération. Pour éviter cela, on peut aussi utiliser un script de conversion MP3-Ogg (comme mp32ogg). FLAC signifie Free Lossless Audio Codec, codec audio libre sans perte. Les fichiers FLAC sont plus volumineux que les fichiers MP3 ou Ogg, mais plus petits que les WAV. L’avantage principal de FLAC par rapport à MP3 ou Ogg est qu’il code les fichiers audio sans perte. Pour coder et décoder ces fichiers, on utilise la commande flac. Le paquetage audiofile implémente les fonctions importantes de la bibliothèque AudioFile du fabricant SGI. La commande la plus intéressante est sfconvert, qui permet de convertir des fichiers audio entre les formats aiff, aifc, next et wave. sfinfo essaie de déterminer dans quel format se trouve un fichier audio. La commande ffmpeg du paquetage du même nom convertit les fichiers audio et vidéo d’un format à un autre. La liste des formats pris en charge est longue et on peut l’obtenir avec ffmpeg -formats. utilisateur$ ffmpeg -i in.avi out.mpg
La commande permet aussi de préparer des données audio et vidéo pour les graver sur un DVD. Un exemple est fourni dans man ffmpeg.
15.3 Conversion de texte
recode
Cette section présente les commandes recode, iconv, dos2unix et unix2dos. Elles servent à modifier le jeu de caractères et les caractères de fin de ligne de fichiers texte. Ces transformations sont nécessaires lorsque vous transférez des fichiers entre des systèmes qui utilisent des jeux de caractères ou des conventions de format de texte différents. recode permet de convertir un fichier texte d’un jeu de caractères à un autre. La commande suivante convertit le fichier DOS fichierdos en un fichier Linux avec le jeu de caractères Latin-1 : utilisateur$ recode ibmppc..latin1 < fichierdos > fichierlinux
Comme le montre l’exemple suivant, recode peut aussi modifier les caractères de fin de ligne. Cette commande convertit tous les caractères de fin de ligne du fichier fichierwin (CR puis LF, soit Carriage Return puis Line Feed) en caractères conventionnels sous Linux (LF) : utilisateur$ recode latin1/cr-lf..latin1 < fichierwin > fichierlinux
recode peut aussi lire un fichier codé en Latin-1 et l’enregistrer en UTF-8 : utilisateur$ recode latin1..u8 < fichierlatin1 > fichierutf8 iconv
La commande iconv est une alternative populaire à recode. Elle ne peut cependant pas modifier les caractères de fin de ligne. L’exemple suivant crée un fichier UTF-8 à partir d’un fichier Latin-1 : utilisateur$ iconv -f latin1 -t utf-8 fichierlatin1 > fichierutf8
dos2unix et unix2dos
Les commandes dos2unix et unix2dos changent les caractères de fin de ligne du format DOS/Windows (CR puis LF) et du format Unix/Linux (LF uniquement). Cette commande ne fonctionne que pour les fichiers dont le jeu de caractères est sur un octet (par exemple, ASCII ou Latin-1), mais pas pour les fichiers Unicode. utilisateur$ dos2unix fichier.txt
Linux Livre Page 235 Mardi, 23. septembre 2008 1:05 13
CONVERTISSEURS GRAPHIQUES, AUDIO ET TEXTE
235
15.4 Conversion de noms de fichiers convmv
Jusqu’à il y a quelques années, il était courant de représenter les noms de fichiers dans le jeu de caractères Latin-1. Depuis, UTF-8 s’est imposé comme standard. Pour transformer un nom de fichier d’un jeu de caractères à un autre, on peut utiliser la commande convmv. Elle est cependant rarement fournie par défaut. Certaines distributions permettent de l’installer sans problème à partir du paquetage du même nom. Si votre distribution ne fournit pas un tel paquet, vous devez télécharger le script Perl à l’adresse http://j3e.de/linux/convmv/. Pour modifier récursivement tous les noms de fichiers d’un répertoire depuis le jeu de caractères Latin-1 vers UTF-8 (avec une confirmation pour chaque modification), appelez convmv de cette manière : utilisateur$ convmv -r -i --notest -f iso-8859-1 -t utf8 répertoire
convmv modifie le nom, mais pas le contenu des fichiers. L’option --notest est obligatoire pour que la conversion ait effectivement lieu. Cette commande essaie de reconnaître elle-même les fichiers qui ont déjà un nom en UTF-8 et ne propose dans ce cas pas de renommage. Si vous désirez désactiver cette fonctionnalité, utilisez l’option --nosmart.
15.5 Conversion de documents Il est parfois nécessaire de convertir des documents (PostScript, PDF, HTML, texte, etc.) d’un format à un autre. La liste suivante donne quelques pointeurs vers des logiciels utiles. Vous trouverez des informations sur leur utilisation dans les pages de manuel des outils correspondants. • a2ps permet, entre autres, de transformer un document texte en document PostScript. C’est particulièrement utile lorsque l’imprimante demande un format PostScript en entrée. a2ps peut également reconnaître du code et il gère alors la distinction des mots clés, des commentaires, etc. • enscript convertit des fichiers texte aux formats PostScript, HTML et RTF. • mpage convertit des fichiers texte au format PostScript, par défaut quatre pages par feuille et au format Letter. • html2text convertit les documents HTML en fichiers texte. • html2ps est un script Perl qui convertit les fichiers HTML au format PostScript. • ps2pdf convertit les fichiers PostScript au format PDF. • eps2pdf convertit des images EPS au format PDF. • pdf2ps convertit les fichiers PDF au format PostScript. • pdftops a le même but que pdf2ps, mais fournit plus d’options. • gs (GhostScript) convertit les documents PostScript et PDF en divers formats bitmap et formats d’imprimantes. GhostScript est une brique importante du système d’impression de Linux.
Linux Livre Page 236 Mardi, 23. septembre 2008 1:05 13
236
LINUX
• Le paquetage psutils fournit diverses commandes pour gérer les fichiers PostScript. On notera en particulier psbook, qui permet de réordonner les pages d’un texte afin qu’il puisse être imprimé en livre, ou encore psnup, qui regroupe plusieurs pages réduites sur une seule feuille. • pdftk (PDF-Toolkit) fournit des fonctions comparables à psutils pour les fichiers PDF. • pdftotext extrait le texte d’un fichier PDF et l’enregistre dans un fichier texte. Le format et les images sont alors perdus.
Linux Livre Page 237 Mardi, 23. septembre 2008 1:05 13
16
Outils réseau Ce chapitre présente les différentes commandes pour utiliser et gérer les fonctions et services élémentaires d’un réseau. Vous apprendrez comment vous connecter à un autre ordinateur du réseau avec ssh, comment transférer des données avec wget ou rsync, etc. Il existe, pour certaines de ces commandes, une interface utilisateur graphique. Cependant, comme dans les chapitres précédents, nous donnons ici la priorité aux commandes texte. Certaines commandes ne peuvent être utilisées qu’en root ou en sudo. D’autres peuvent être lancées par un utilisateur conventionnel, mais ne sont généralement pas à sa disposition − la variable d’environnement PATH ne contient pas le chemin des commandes en question. Il peut donc être nécessaire de saisir le chemin complet, généralement /sbin ou /usr/sbin. Par exemple, pour lancer la commande ifconfig sous Fedora en tant qu’utilisateur non root, il faut la saisir sous la forme /sbin/ifconfig.
16.1 Connaître l’état du réseau
Identifier les interfaces réseau
Cette section donne un aperçu des commandes qui permettent de connaître l’état d’un réseau. Vous trouverez plus d’informations sur ces commandes au Chapitre 26, qui traite de la configuration manuelle de l’accès au réseau et présente un petit glossaire de termes, tels que passerelle, serveur de noms, mascarade, etc. La commande ifconfig affiche une liste de toutes les interfaces réseau connues. Les plus classiques sont ethn (Ethernet), pppn (accès à Internet via un modem) ou encore ipppn (RNIS). L’interface lo joue un rôle particulier : elle permet aux programmes locaux de communiquer avec un protocole réseau. Cela fonctionne même lorsque l’ordinateur n’est connecté à aucun réseau. Pour un ordinateur doté d’une carte Ethernet, ifconfig affiche par exemple ceci : root# ifconfig eth0 Link encap:Ethernet HWaddr 00:50:fc:a0:96:4d inet adr:192.168.1.5 Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::250:fcff:fea0:964d/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:15923066 erreurs:0 :0 overruns:0 frame:0 TX packets:16212689 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:2095295710 (1.9 GB) Octets transmis:4097249288 (3.8 GB) Interruption:18 Adresse de base:0xb400 lo
Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 Packets reçus:303173 erreurs:0 :0 overruns:0 frame:0 TX packets:303173 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 Octets reçus:65773827 (62.7 MB) Octets transmis:65773827 (62.7 MB)
Linux Livre Page 238 Mardi, 23. septembre 2008 1:05 13
238
Tester l’accessibilité de localhost
LINUX
Si l’interface eth0 ne s’affiche pas, la carte réseau n’est pas activée. Les outils de configuration de votre distribution permettent de remédier à cette situation. Vous pouvez aussi l’activer manuellement, par exemple avec ifconfig eth0 192.168.0.2. Si une erreur du type "eth1: ERREUR en récupérant les signaux de l’interface: Aucun périphérique de ce type" s’affiche, le module du noyau permettant de gérer la carte réseau est probablement manquant. ping envoie un petit paquet réseau une fois par seconde à une adresse fournie en paramètre. Lorsqu’un ordinateur s’y trouve, il envoie une réponse (qui peut cependant être masquée par un pare-feu). ping fonctionne tant qu’il n’est pas interrompu par Ctrl+C. Il permet donc de tester si une connexion peut être établie entre l’ordinateur local et un autre ordinateur. Il vaut mieux commencer par tester ping localhost pour voir si l’interface de bouclage lo et les fonctions réseau élémentaires de l’ordinateur fonctionnent. Cela devrait être le cas, même si vous n’avez pas de carte réseau (localhost désigne toujours l’ordinateur local). utilisateur$ ping localhost PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.041 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.030 ms ...
Tester l’accessibilité du réseau local
Lorsque vous indiquez, à la place de localhost, l’adresse IP d’un autre ordinateur du réseau local, vous testez si ce réseau fonctionne. -c 2 fait en sorte que seuls deux paquets soient envoyés et évite que ping continue indéfiniment. utilisateur$ ping -c 2 192.168.1.4 PING 192.168.1.4 (192.168.1.4) 56(84) bytes of data. 64 bytes from 192.168.1.4: icmp_seq=1 ttl=64 time=0.049 ms 64 bytes from 192.168.1.4: icmp_seq=2 ttl=64 time=0.031 ms --- 192.168.1.5 ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.031/0.040/0.049/0.009 ms
Lorsqu’il existe un serveur de noms sur le réseau local qui associe l’adresse IP 192.168.1.4 à un nom (ou lorsque le fichier /etc/hosts gère cette tâche), vous pouvez utiliser le nom de l’ordinateur à la place de son adresse IP : utilisateur$ ping -c 2 mars PING mars.sol (192.168.1.4) 56(84) bytes of data. 64 bytes from mars.sol(192.168.1.4): icmp_seq=1 ttl=64 time=0.133 ms 64 bytes from mars.sol (192.168.1.4): icmp_seq=2 ttl=64 time=0.127 ms --- mars.sol ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.127/0.130/0.133/0.003 ms Tester l’accès à Internet
Vous pouvez ensuite vérifier si votre accès à Internet fonctionne. La commande suivante teste en même temps deux aspects de la configuration du réseau : la disponibilité du serveur de noms et le fonctionnement de la passerelle. utilisateur$ ping -c 2 www.yahoo.fr PING www.euro.yahoo-eu1.akadns.net (87.248.120.129) 56(84) bytes of data. 64 bytes from www.vip.ch1.yahoo.com (87.248.120.129): icmp_seq=1 ttl=51 time=35.7 ms
Linux Livre Page 239 Mardi, 23. septembre 2008 1:05 13
239
OUTILS RÉSEAU
64 bytes from www.vip.ch1.yahoo.com (87.248.120.129): icmp_seq=2 ttl=51 time=34.8 ms --- www.euro.yahoo-eu1.akadns.net ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1003ms rtt min/avg/max/mdev = 34.889/35.336/35.784/0.485 ms
Si cela ne fonctionne pas, plusieurs éléments peuvent être en cause : • Le serveur de Yahoo! peut être hors service ou ne pas répondre au ping pour des raisons de sécurité. Essayez d’atteindre une autre adresse Internet connue. • Lorsque le serveur de noms ne fonctionne pas, vous obtenez le message d’erreur ping: unknown host yahoo.fr. Vérifiez que /etc/resolv.conf contient l’adresse du serveur de noms. • Lorsque la passerelle ne fonctionne pas, vous obtenez le message d’erreur connect: Network is unreachable. Lancez alors la commande route -n. La dernière ligne doit ressembler à celle de l’exemple suivant, où la colonne Passerelle contient l’adresse IP de votre passerelle : root# route -n Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0
Suivre le chemin des paquets IP
Use 0 0 0
Iface eth0 eth0 eth0
• Si un seul ordinateur sert de passerelle à un réseau local complet, il est possible que vous ayez oublié d’activer la mascarade. Dans ce cas, l’accès à Internet ne fonctionne pas pour le réseau local. La configuration d’une passerelle Internet est détaillée au Chapitre 26. traceroute permet de connaître le chemin parcouru par un paquet réseau émis par votre ordinateur vers un autre ordinateur et le temps qu’il met à parcourir chaque étape du chemin. Par défaut, la commande effectue trois tentatives et affiche les trois durées correspondantes. La commande ne fonctionne pas si l’une des étapes a un pare-feu qui bloque le port UDP 33434 utilisé par traceroute. Dans ce cas, traceroute n’affiche pour cette étape et les étapes suivantes que trois étoiles. Les lignes suivantes montrent le chemin entre mon ordinateur et google.fr : utilisateur$ traceroute google.fr traceroute to google.fr (216.239.59.104), 30 hops max, 40 byte packets 1 gateway (192.168.1.1) 0.438 ms 0.626 ms 0.819 ms 2 166-59-186-195.bluewin.ch (195.186.59.166) 25.807 ms 25.964 ms 26.145 ms ... 10 72.14.198.57 (72.14.198.57) 29.364 ms 30.086 ms 31.558 ms ... 16 216.239.59.104 (216.239.59.104) 61.008 ms 61.301 ms 62.771 ms
La première ligne est ma passerelle/routeur ADSL. La deuxième est la passerelle de mon fournisseur d’accès à Internet. Les lignes 3 à 9 sont les différentes étapes dans le réseau de mon fournisseur d’accès à Internet. La ligne 10 passe sur le réseau de Google et les lignes 11 à 16 sont les différentes étapes dans le réseau de Google.
Linux Livre Page 240 Mardi, 23. septembre 2008 1:05 13
240
LINUX
16.2 Travailler sur un autre ordinateur Les programmes telnet, rlogin et ssh permettent de travailler sur un autre ordinateur. Cela fonctionne aussi bien pour les programmes en mode texte que pour les programmes X. Ces derniers exigent tout de même que les diverses bibliothèques correspondent sur les deux ordinateurs. Cette section se limite à la description de ssh. Les anciens programmes telnet et rlogin ne devraient plus être utilisés. Ils transmettent les informations de connexion, y compris le mot de passe de l’utilisateur, en clair. Le prérequis pour utiliser ssh est qu’un serveur SSH, c’est-à-dire le programme sshd, fonctionne sur le second ordinateur. Pour certaines distributions Linux, c’est le cas par défaut. Pour d’autres, il faut installer le programme − il s’agit souvent du paquetage openssh-server. Si vos ordinateurs sont équipés de parefeu, ceux-ci ne doivent pas bloquer le port 22. Session shell typique
Si vous êtes sur l’ordinateur uranus et que vous désirez lancer une session shell sur mars, il suffit de lancer la commande suivante : utilisateur@uranus$ ssh mars utilisateur@mars’s password: xxx
Lorsque vous vous connectez pour la première fois à un autre ordinateur, un avertissement de ce type apparaît : The authenticity of host ’mars (192.168.1.10)’ can’t be established. RSA1 key fingerprint is 1e:0e:15:ad:6f:64:88:60:ec:21:f1:4b:b7:68:f4:32. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ’mars,192.168.1.10’ (RSA1) to the list of known hosts.
Cela signifie que ssh n’est pas sûr de pouvoir faire confiance à l’ordinateur mars doté de l’adresse IP 192.168.1.10. Il se pourrait en effet qu’un ordinateur étranger se fasse passer pour mars. Si vous répondez à la question par yes, ssh enregistre le nom, l’adresse et l’empreinte RSA (code pour identifier de manière unique l’ordinateur) dans ~/.ssh/known_hosts. Si vous souhaitez vous connecter à mars sous un autre identifiant que celui sous lequel vous travaillez sur uranus (par exemple, en tant que root), ajoutez l’option -l : utilisateur@uranus$ ssh -l root mars root@mars’s password: xxx Lancer des commandes
Plutôt que d’utiliser ssh de manière interactive, vous pouvez n’exécuter qu’une commande sur l’ordinateur distant. Il suffit de passer la commande et ses paramètres comme paramètres de la commande ssh. ssh est terminé après cette commande. utilisateur@uranus$ ssh mars commande options utilisateur@mars’s password: xxx
Cette possibilité a priori triviale ouvre de larges horizons. Vous pouvez, par exemple, lancer sur un ordinateur distant la commande tar, transférer l’archive créée à la sortie standard (en utilisant un tiret - après l’option -f) et rediriger la sortie standard vers l’entrée d’une seconde commande tar, cette fois-ci locale, avec un tube |. Vous pouvez ainsi déplacer une arborescence complète via SSH.
Linux Livre Page 241 Mardi, 23. septembre 2008 1:05 13
OUTILS RÉSEAU
241
La commande suivante montre comment je copie le répertoire htdocs de mon serveur web kofler.cc vers le répertoire local ~/bak : utilisateur$ ssh kofler.cc tar -cf - htdocs |tar -xC ~/bak/ -f
[email protected]’s password: xxxxx SSH et X
On peut aussi lancer un programme X dans une session SSH. Il est alors lancé sur l’ordinateur distant, mais s’affiche sur l’ordinateur local et comprend toutes les saisies du clavier et de la souris. Comme le protocole X fonctionne à travers le réseau, une bonne connexion réseau est nécessaire pour pouvoir travailler confortablement. Pour lancer des programmes X avec ssh, il faut passer l’option -X. Le serveur doit avoir la ligne ForwardX11 yes dans le fichier de configuration /etc/sshd_config pour que le transfert fonctionne. ssh s’occupe alors lui-même de la gestion de la variable DISPLAY. Les commandes suivantes lancent l’éditeur xemacs sur l’ordinateur mars. La fenêtre de l’éditeur s’affiche cependant sur l’ordinateur uranus, où elle peut être utilisée. Cela fonctionne même lorsque le serveur X de mars ne fonctionne pas (par exemple, en niveau d’exécution 3). Toutes les bibliothèques X doivent néanmoins être installées. utilisateur@uranus$ ssh -X mars utilisateur@mars’s password: xxx utilisateur@mars$ xemacs &
Copier des fichiers de manière sûre avec scp
La commande scp permet de copier des fichiers via SSH sur un réseau. La syntaxe ressemble à celle-ci : utilisateur$ scp [[utilisateur1@]hote1:]fichier1 \ [[utilisateur2@]hote2:][fichier2]
fichier1 est copié de l’ordinateur hote1 vers l’ordinateur hote2 et enregistré sous le nom fichier2. Voici quelques remarques quant aux nombreux éléments optionnels de la commande : • hote1 et hote2 peuvent être omis lorsqu’ils désignent l’ordinateur local (localhost). • Il n’est pas nécessaire d’indiquer utilisateur1 lorsqu’il s’agit de l’utilisateur actif. • Il n’est pas nécessaire d’indiquer utilisateur2 lorsqu’il s’agit de l’utilisateur courant d’hote1 ou de utilisateur1. • fichier1 peut être un répertoire. Il faut alors passer l’option -r pour que tout le répertoire et ses sous-répertoires soient pris en compte. • Il n’est pas nécessaire d’indiquer fichier2 lorsque le nom du fichier ne doit pas être modifié. Le fichier est alors copié dans le répertoire personnel de utilisateur2. On peut aussi indiquer un répertoire à la place de fichier2. ~ représente le répertoire personnel de utilisateur2. Par exemple, si l’utilisateur michael travaille sur l’ordinateur uranus et veut transférer le fichier abc.txt dans le répertoire ~/efg de mars, la commande scp à saisir est celle-ci : michael@uranus$ scp abc.txt mars:~/efg/ michael@mars’s password: xxx
Linux Livre Page 242 Mardi, 23. septembre 2008 1:05 13
242
LINUX
SFTP
SFTP (Secure FTP) est une variante plus sûre du protocole FTP basée sur SSH. Nous traiterons de SFTP à la section 16.3.
Système de fichiers SHFS
Le site web http://shfs.sourceforge.net fournit du code pour un module du noyau qui met en place un système de fichiers basé sur SSH. L’utilisation de shfs est plus confortable que d’innombrables commandes scp et bien plus sûre que NFS − même s’il est plus lent. Le module shfs est à l’heure actuelle rarement fourni par les distributions. Vous devez donc le compiler vous-même. Après make et make install, la commande suivante devrait fonctionner : root# mount -t shfs utilisateur@mars /test
Cette commande monte le répertoire racine de l’ordinateur mars (et non le répertoire personnel de utilisateur !) dans le répertoire local /test. mount appelle la commande shfsmount, qui s’occupe de passer les bonnes options. Tunnels SSH
Les utilisateurs avancés peuvent également créer des tunnels avec SSH. Ils permettent de transférer tous les paquets IP envoyés à un port donné. Ils fournissent donc un chemin sécurisé pour les paquets entre deux ordinateurs, même lorsqu’un pare-feu se trouve entre les deux machines. Si le tunnel est créé depuis l’ordinateur client, il faut utiliser l’option -L port_local:hôte_distant:port_distant. Par exemple, la commande suivante fait correspondre le port 3306 de mars au port 3307 de l’ordinateur local. La commande démarre également une session SSH, ce que l’on peut éviter avec l’option -N lorsque seul le tunnel (sans connexion au shell) est désiré. Si vous souhaitez vous connecter à mars avec un autre utilisateur, utilisez comme précédemment l’option -l. utilisateur@uranus$ ssh -L 3307:mars:3306 mars utilisateur@mars’s password: xxxx
Le tunnel reste ouvert jusqu’à ce que la session SSH soit terminée avec Ctrl+D. Si vous avez lancé ssh avec l’option -N, le programme doit être arrêté avec Ctrl+C. 3306 est le port habituel de MySQL. Vous pouvez désormais accéder au serveur MySQL qui fonctionne sur mars via le port 3307 d’uranus. Il faut pour cela indiquer le port 3307 et le nom d’hôte 127.0.0.1 pour effectivement utiliser ce tunnel : utilisateur@uranus$ mysql -u identifiantmysql -P 3307 -h 127.0.0.1 -p Enter password: xxxxx
Pour que cela fonctionne, il faut bien sûr que MySQL accepte les connexions réseau, ainsi que la combinaison identifiant de connexion/hôte.
Utiliser SSH sans mot de passe Tous les exemples de cette section supposent que vous vous connectiez sur la machine cible de manière tout à fait normale après avoir exécuté ssh, scp, etc. Ce n’est cependant pas toujours nécessaire. Vous pouvez créer une paire de clés SSH sur l’ordinateur local grâce à ssh-keygen -t rsa : une clé privée (~/.ssh/id_rsa) et une clé publique (~/.ssh/id_rsa).
Linux Livre Page 243 Mardi, 23. septembre 2008 1:05 13
OUTILS RÉSEAU
243
Lorsque vous lancez ssh-keygen, vous devez saisir un mot de passe. Il s’agit en fait d’une phrase de passe, c’est-à-dire du texte libre pouvant se composer de plusieurs mots. La clé privée est chiffrée avec cette phrase de passe. Copiez la clé publique avec scp sur l’ordinateur cible et ajoutez-la au fichier ~/.ssh/ authorized_keys − si ce fichier n’existe pas encore, créez-le. Renouvelez cette étape sur tous les ordinateurs auxquels vous vous connectez en SSH. Lorsque vous ouvrez une connexion vers l’ordinateur cible, ssh accède aux informations des clés. Le mot de passe à saisir n’est alors plus celui du compte, mais celui de la clé. Vous n’avez alors rien gagné en termes de confort. Il serait tentant de ne pas saisir de mot de passe lorsque ssh-keygen crée les clés. Cela permet en effet une connexion sans mot de passe à l’ordinateur distant, mais n’importe qui peut lire et utiliser votre clé privée. La sécurité de tous les ordinateurs sur lesquels vous avez transféré votre clé publique dépend alors de votre clé privée. Si celle-ci est subtilisée, un attaquant aura accès à vos comptes sur toutes ces machines ! ssh-agent est une solution plus sûre et confortable. Ce programme gère toutes les clés privées d’un utilisateur (il n’en existe généralement qu’une seule). On le lance avec : utilisateur$ eval $(ssh-agent)
Les variables d’environnement de la console courante sont alors modifiées. ssh-agent fonctionne en processus d’arrière-plan. ssh-add permet d’ajouter une clé privée : utilisateur$ ssh-add ~/ssh/id_rsa Enter passphrase for /home/utilisateur/.ssh/id_rsa: xxxxx
ssh utilise alors la clé gérée par ssh-agent. Vous n’aurez plus à saisir le mot de passe pour la clé, ni à taper la phrase de passe à chaque connexion : il vous suffira de la saisir une seule fois. L’avantage de ssh-agent est qu’il est limité à une seule console grâce à la portée des variables d’environnement. L’utilisation de SSH sans mot de passe est donc soit peu sûre (clé privée sans mot de passe), soit lourde (ssh-agent). Par conséquent, la configuration n’est rentable que si vous utilisez ssh fréquemment.
16.3 Transférer des fichiers FTP Remarques préliminaires
FTP, qui signifie File Transfer Protocol (protocole de transfert de fichiers), est une méthode ancienne de transfert de fichiers sur un réseau. Il doit sa grande popularité au mode de transfert anonyme : de gros serveurs sur Internet donnent accès à tous les utilisateurs à des archives FTP. Cet accès n’est pas protégé par un mot de passe. Pour utiliser un FTP anonyme, vous pouvez utiliser comme nom d’utilisateur anonymous et comme mot de passe généralement votre adresse de courrier électronique.
Linux Livre Page 244 Mardi, 23. septembre 2008 1:05 13
244
LINUX
L’inconvénient de FTP est que le nom d’utilisateur et le mot de passe sont transférés en clair. SFTP (Secure FTP) est une alternative plus sûre basée sur SSH. HTTP, le protocole de transfert des pages web, est également souvent utilisé comme alternative à FTP. Dans cette section, nous parlerons de l’utilisation de FTP du point de vue du client. Commande FTP
L’ancêtre de tous les clients FTP est la commande texte ftp. Comme elle transfère par défaut les fichiers depuis et vers le répertoire courant, il faut, avant de la lancer, passer dans le répertoire de travail souhaité avec cd. La session FTP est ensuite initialisée avec ftp utilisateur@serveurftp ou, plus simplement, ftp serveurftp. Si vous désirez utiliser le mode anonyme, indiquez anonymous comme nom d’utilisateur. Une fois la connexion établie et le mot de passe saisi, vous pouvez naviguer dans les répertoires du serveur FTP grâce aux commandes cd, pwd et ls. Pour télécharger un fichier depuis le serveur vers votre ordinateur, lancez get fichier. Son nom n’est pas modifié. Vous pouvez aussi transférer un fichier depuis votre répertoire courant vers un répertoire du serveur FTP avec la commande put. Cela ne fonctionne que si vous avez des droits en écriture sur le répertoire distant. Sur un FTP anonyme, ces droits sont généralement limités à un seul répertoire, par exemple /pub/incoming. On ferme une session FTP avec la commande quit ou bye. Avant de télécharger un fichier, vous devez passer en mode binaire. En mode texte, FTP interprète tous les fichiers en tant que texte et tente de les convertir au format de l’ordinateur destinataire. Les fichiers binaires ne nécessitent pas une telle conversion. La plupart des serveurs FTP sont cependant configurés en mode binaire par défaut.
Les lignes suivantes montrent le téléchargement du noyau Linux depuis un serveur FTP : utilisateur$ cd ~/src utilisateur$ ftp ftp.kernel.org Connected to zeus-pub.kernel.org. 220 Welcome to ftp.kernel.org. Name (ftp.kernel.org:michael): anonymous 331 Please specify the password. Password:
[email protected] Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub/linux/kernel/v2.6 250 Directory successfully changed. ftp> get linux-2.6.25.tar.bz2 local: linux-2.6.25.tar.bz2 remote: linux-2.6.25.tar.bz2 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for linux-2.6.25.tar.bz2 (48601689 bytes). 226 File send OK. 48601689 bytes received in 26.85 secs (1767.6 kB/s) ftp> quit 221 Goodbye.
Linux Livre Page 245 Mardi, 23. septembre 2008 1:05 13
245
OUTILS RÉSEAU
Autres programmes FTP
Commandes FTP ?
affiche une liste des commandes FTP
!
permet d’exécuter des commandes shell
ascii
passe en mode texte
binary
passe en mode binaire
bye
termine la session FTP
cd rep
passe dans le répertoire indiqué
close
ferme la connexion au serveur FTP
get fichier
télécharge un fichier depuis le serveur vers l’ordinateur local
help commande
affiche un court message d’aide sur la commande indiquée
lcd rep
passe dans le répertoire indiqué sur l’ordinateur local
ls
affiche le contenu du répertoire courant sur le serveur
lls
affiche le contenu du répertoire courant sur l’ordinateur local
mget motif
télécharge tous les fichiers de l’archive FTP dont le nom correspond au motif
open
ouvre la connexion à un ordinateur distant
prompt
active/désactive la confirmation du téléchargement de chaque fichier avec mget
put fichier
transfère un fichier depuis le répertoire local vers le serveur FTP
quit
quitte FTP
reget fichier
relance le téléchargement d’un fichier déjà partiellement téléchargé
user
permet une nouvelle connexion
La commande ftp n’est pas très confortable à utiliser, mais il existe de nombreuses alternatives : • Navigateurs web et gestionnaires de fichiers. Ces derniers peuvent être utilisés pour des téléchargements FTP. Certains programmes permettent même de transférer des fichiers vers un serveur (par exemple, Nautilus et Konqueror). • Clients FTP graphiques. Des programmes comme kbear (KDE) ou gftp (Gnome) sont prévus pour les tâches FTP typiques. Ils fournissent des fonctions spéciales, comme des signets, la gestion des mots de passe, le téléchargement en parallèle de plusieurs fichiers, la synchronisation de dossiers, etc. • ncftp. Cette alternative est également un client en mode texte, mais il est plus confortable à utiliser. • sftp. Ce programme est aussi minimaliste que ftp, mais nettement plus sûr. Cependant, l’ordinateur distant doit faire fonctionner un serveur SSH et non FTP. • wget, rsync, mirror et sitecopy. Ces commandes permettent de télécharger des arborescences FTP entières.
Linux Livre Page 246 Mardi, 23. septembre 2008 1:05 13
246
LINUX
Si vous souhaitez utiliser FTP en étant identifié, de nombreux clients FTP comprennent la syntaxe : ftp://utilisateur:motdepasse@serveur Certains clients ne fonctionnent pas bien lorsqu’un pare-feu se trouve entre votre ordinateur et le serveur FTP, ou lorsque vous êtes dans un réseau local connecté à Internet via une mascarade. Dans ce cas, passer le client en mode passif résout souvent le problème. Il n’existe cependant pas de commande standard ; vous devez lire la documentation de votre client. La plupart des clients reconnaissent une telle situation et activent automatiquement le mode passif.
SFTP (Secure FTP) La commande sftp fait partie du paquetage openssh. Elle utilise en interne un protocole entièrement différent de ftp et ne peut être utilisée que lorsqu’un serveur SSH est lancé sur le serveur distant. SFTP ne permet pas de se connecter en mode anonyme. Son fonctionnement est comparable à celui de ftp. sftp -p fichier permet d’automatiser les téléchargements par SFTP. Alternatives à SFTP
Pour beaucoup, sftp est trop spartiate. Cependant, les alternatives plus confortables sont plus rares que dans le cas de ftp. Il faut parfois se montrer persuasif avant que la connexion ne s’établisse réellement. • gftp. Il permet de se connecter à un site via SSH. Il suffit pour cela de choisir l’option correspondante dans le menu déroulant du protocole. • kbear. Il permet également de se connecter en SFTP. • konqueror. Pour ouvrir une connexion SFTP avec Konqueror, tapez l’adresse sftp://utilisateur@serveur. Une fois le mot de passe saisi, il se comporte comme dans un répertoire local. Konqueror comprend aussi directement le protocole SSH, ce qui peut fonctionner sans faire appel à sftp. Pour cela, tapez l’adresse fish://utilisateur@serveur.
wget L’interactivité de la commande ftp rend l’automatisation des téléchargements peu pratique (par exemple, dans un script). Elle est de toute façon peu flexible. On ne peut pas, par exemple, reprendre un téléchargement là où il a été interrompu. La commande wget a été conçue pour le téléchargement de gros fichiers et répertoires. Elle comprend les protocoles FTP, HTTP et HTTPS. man wget fournit une référence de la syntaxe des principales options. Exemples
Sous sa forme la plus basique, wget télécharge simplement le fichier donné en argument : utilisateur$ wget ftp://serveur.fr/nom.abc
Lorsque le téléchargement est, pour une raison ou une autre, interrompu, il peut être repris avec l’option -c : utilisateur$ wget -c ftp://serveur.fr/nom.abc
Il arrive qu’un téléchargement prenne plusieurs heures. Il est alors tentant de lancer le téléchargement pendant la nuit. La commande suivante s’assure que le fichier se trouve effectivement sur l’ordinateur le lendemain matin. L’option -t 1000 essaie de relancer le téléchargement jusqu’à 1 000 fois en cas de déconnexion. --retry-connrefused tente de
Linux Livre Page 247 Mardi, 23. septembre 2008 1:05 13
OUTILS RÉSEAU
247
relancer la connexion même après une erreur connection refused. Cette option est pratique lorsque le serveur de téléchargement est peu fiable et qu’il n’est indisponible que pour de courtes durées. utilisateur$ wget -t 1000 --retry-connrefused http://serveur/nom.iso
La commande suivante télécharge tous les fichiers importants afin de pouvoir lire la page web hors ligne. Voici ce que signifient les options : • -p charge les fichiers CSS et les images. • -k modifie en arrière-plan les liens des fichiers pour qu’ils pointent vers des fichiers locaux. • -E ajoute à tous les fichiers de script téléchargés (ASP, PHP, etc.) l’extension .html. • -H suit également les liens vers les sites web externes. utilisateur$ wget -p -k -E -H http://siteweb.fr/page.html
Lorsqu’on désire lire un site web complet en ligne, l’option -r (téléchargement récursif), éventuellement limitée à quelques niveaux avec l’option -l, est très pratique : utilisateur$ wget -r -l 4 -p -E -k http://siteweb.fr
rsync Nous avons déjà présenté la commande rsync au Chapitre 13. Elle permet de copier et de synchroniser des arborescences complètes de répertoires. Elle présente un certain nombre d’avantages par rapport à la commande cp : • rsync gère particulièrement bien la synchronisation de répertoires distants, y compris lorsque la liaison est lente. Elle ne transfère que les données modifiées. • Elle peut, pour sécuriser les transferts, travailler avec SSH.
Utilisation dans un réseau
• Elle fournit d’innombrables options qui vont au-delà des possibilités offertes par cp. On peut, par exemple, supprimer tous les fichiers du répertoire cible qui n’existent plus dans le répertoire source. Pour que rsync puisse synchroniser deux ordinateurs en réseau, elle doit être installée sur les deux ordinateurs. Les deux instances de rsync peuvent communiquer de deux manières différentes : • Elles peuvent utiliser un shell, le plus souvent SSH. Cela présente l’avantage de chiffrer le transfert des données. Pour que cela fonctionne, il faut que SSH soit installé sur les deux ordinateurs. De plus, il faut que l’ordinateur distant fasse fonctionner un serveur SSH pour permettre les connexions en SSH. • rsync peut aussi fonctionner en tant que démon sur l’ordinateur distant. Le serveur rsync est configuré dans le fichier /etc/rsyncd.conf (voir la page de manuel correspondante) et lancé par un script InitV (généralement /etc/init.d/rsyncd). Nous ne traiterons pas ici de ce scénario client/serveur.
Linux Livre Page 248 Mardi, 23. septembre 2008 1:05 13
248 Exemples
LINUX
Tous les exemples supposent que rsync communique par SSH. Pour cela, vous devez passer l’option -e ssh à la commande rsync. Avant de commencer, assurez-vous que vous pouvez vous connecter en SSH à l’ordinateur distant. Pour les connexions réseau lentes, vous pouvez utiliser l’option -z. Celle-ci compresse les échanges de données de rsync. Cela induit cependant une charge processeur plus importante sur les deux ordinateurs et ne garantit donc pas une synchronisation plus rapide. Les répertoires source et cible doivent être indiqués avec la syntaxe hote:répertoire ou utilisateur@hote:repertoire, si l’utilisateur courant n’est pas celui qu’il faut utiliser. La commande suivante synchronise le répertoire rep1 du répertoire personnel de utilisateur sur l’ordinateur saturne.sol, et le répertoire rep2 sur mars.sol. La saisie du mot de passe est gérée par SSH (mot de passe de utilisateur sur mars.sol).
[email protected]$ rsync -e ssh -az rep1/ mars.sol:rep2/
[email protected]’s password: xxxxx
rsync peut aussi télécharger des fichiers depuis un ordinateur distant sur l’ordinateur local. Cette commande synchronise les répertoires dans l’autre sens :
[email protected]$ rsync -e ssh -az mars.sol:rep2/ rep3/
[email protected]’s password: xxxxx
Lorsque rsync est appelée par un script de sauvegarde, la saisie interactive du mot de passe peut s’avérer gênante. Nous avons vu à la section 16.2 comment se connecter en SSH sans mot de passe ; il suffit d’adapter ces solutions au compte servant à la sauvegarde.
BitTorrent BitTorrent est un protocole pour télécharger efficacement des fichiers volumineux désirés par de nombreux utilisateurs. L’idée de base est simple : les données ne sont pas téléchargées depuis un serveur central, mais depuis tous les ordinateurs du réseau qui disposent d’au moins une partie du fichier. Cela signifie aussi que, lorsque vous téléchargez un fichier via BitTorrent, vous le mettez à disposition de tous les autres utilisateurs de BitTorrent, au moins pendant le temps de votre téléchargement (et, idéalement, une fois ce dernier terminé). Dans le cadre de Linux, BitTorrent est généralement utilisé pour distribuer des images de DVD de distributions. Lorsqu’une nouvelle version sort, des milliers d’utilisateurs cherchent à télécharger ce même fichier. Cela surcharge bien souvent les serveurs FTP ou HTTP. BitTorrent permet d’augmenter sensiblement la vitesse de téléchargement dans ce type de cas. Fichiers .torrent
Les téléchargements BitTorrent sont propagés par le biais de fichiers .torrent. Il s’agit de fichiers binaires relativement petits, contenant entre autres des sommes de contrôle pour d’innombrables morceaux de fichiers. Cela permet de ne pas devoir télécharger les données du fichier de manière séquentielle, mais en fonction des morceaux disponibles sur le réseau et en parallèle.
Clients BitTorrent
Les clients BitTorrent sont des programmes qui gèrent les téléchargements et mettent à disposition les fichiers téléchargés sur le réseau BitTorrent. Les clients populaires comprennent BitTorrent, KTorrent (KDE) ou Transmission (Gnome, à partir de la version 2.22). KTorrent montre les parties du fichier déjà téléchargées (voir Figure 16.1). Pour lancer des téléchargements dans une console, qu’il s’agisse d’une interface interactive ou d’un programme
Linux Livre Page 249 Mardi, 23. septembre 2008 1:05 13
OUTILS RÉSEAU
249
utilisable dans un script, il vaut mieux utiliser bittorrent-curses ou bittorent-console, fournis avec le paquetage bittorrent.
Figure 16.1 Téléchargements avec KTorrent.
Linux Livre Page 250 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 251 Mardi, 23. septembre 2008 1:05 13
17
Version 7
Vim en mode graphique
Liens
Vim Ce chapitre présente l’éditeur Vi, et plus particulièrement son implémentation libre Vim (Vi Improved, Vi amélioré). Faisons tout de même une remarque préliminaire qui s’applique également au chapitre suivant sur Emacs et XEmacs : ils ont en commun d’être relativement difficiles à maîtriser. Seuls les utilisateurs qui éditent beaucoup de texte, code ou documents HTML y trouveront leur intérêt − pour eux, un éditeur de texte est un outil courant et indispensable. Les éditeurs Vim, Emacs et XEmacs fournissent des possibilités presque infinies. Autrement dit, ce chapitre s’adresse aux utilisateurs pour lesquels un contrôle total sur la configuration et la programmation de l’éditeur est plus important qu’une jolie interface utilisateur. Quiconque modifie occasionnellement un fichier de configuration et se contente d’OpenOffice.org, de Firefox et d’autres programmes bureautiques trouvera sans doute Kate (KDE), Gedit (Gnome) ou un autre petit éditeur pour la console largement suffisants. Reste la sempiternelle question : Vi ou Emacs/XEmacs ? Les deux programmes font partie des fondations de l’histoire d’Unix/Linux. Ils proposent d’innombrables fonctions spéciales, comme la coloration syntaxique pour de nombreux langages de programmation et types de documents, ou la recherche avec des expressions rationnelles. Cette question entraîne souvent d’interminables discussions entre les partisans des deux camps et ne peut pas être tranchée de façon objective. À titre personnel, les éditeurs Emacs/XEmacs me paraissent plus intuitifs et plus simples à utiliser. Sous Vi, le passage du mode standard au mode d’édition peut mener à une confusion certaine, surtout au début. Mais Vi et les éditeurs de la même famille sont un standard de fait sous Unix/Linux. Il demande moins de ressources et est souvent présent sur les systèmes de secours minimaux (sur lesquels il n’y a plus de place pour Emacs). Mieux vaut de toute façon connaître les fonctions de base des deux éditeurs. L’éditeur Vi original est un programme commercial et n’est pas disponible sous Linux. Vim est un programme libre, compatible avec Vi et qui fournit de nombreuses améliorations et extensions. On le lance généralement grâce à vi ou vim. Ce chapitre se base sur la version 7 de Vim. Les distributions Linux plus anciennes fournissent encore une version 6.n. Comme la plupart des nouveautés de la version 7 sont des fonctions avancées, la grande majorité des informations de ce chapitre est également valable pour les versions plus anciennes de Vim. La seule exception importante est la fenêtre à onglets, qui n’est disponible que pour la version 7. On lance généralement Vim dans une console texte ou une fenêtre de terminal. Si vous désirez un menu et des barres de défilement décentes, vous pouvez essayer gvim (voir Figure 17.1). Cette variante graphique doit généralement être installée en plus ; le paquetage s’appelle vim-X11. Ce chapitre n’est qu’une rapide présentation de Vim. Le tutoriel vimtutor est très utile pour les débutants. Cette commande lance vim avec un texte d’aide en français, qui contient une introduction et de nombreux exemples.
Linux Livre Page 252 Mardi, 23. septembre 2008 1:05 13
252
LINUX
Figure 17.1 La variante graphique de l’éditeur Vim.
Les liens suivants pointent vers diverses ressources intéressantes : http://www.vim.org/, site web de Vim ; http://www.eng.hawaii.edu/Tutor/vi.html, tutoriel ; http://vimdoc.sourceforge.net/vimfaq.html, FAQ ; http://tnerual.eriogerg.free.fr/vim.html, résumé des principaux raccourcis ; http://www.truth.sk/vim/vimbook-OPL.pdf, livre de 500 pages sur Vim en PDF. Le principal développeur de Vim, Bram Moolenaar, le décrit comme du "charityware" : Vim est gratuit sous une licence GPL. Les utilisateurs réguliers sont cependant priés d’envoyer des remerciements sous forme de dons destinés à une association d’aide aux enfants en Ouganda. Vous trouverez plus d’informations à ce sujet dans Vim avec la commande Esc :help uganda Entrée.
17.1 Rapide introduction Mode normal
Mode insertion
On lance Vim le plus souvent avec la commande vim nomdufichier dans une console ou une fenêtre de terminal. Le fichier à modifier s’affiche alors directement dans la console. Avant de pouvoir écrire du texte, vous devez vous familiariser avec une particularité. Vim a deux modes de travail (mode normal et mode insertion). Le mode normal ne permet pas de saisir du texte ; il sert à lancer des commandes. Dans ce mode, si vous tapez L, vous déplacez le curseur d’une ligne vers le bas. D+W supprime un mot, P le colle à la position courante du curseur, etc. Pour saisir du texte, vous devez passer au mode insertion avec I (insert, insertion) ou A (append, ajout). Vim affiche alors à gauche de la dernière ligne le texte -- INSERTION --. En mode insertion, vous pouvez saisir du texte, déplacer le curseur et supprimer des caractères un par un grâce à Suppr et Retour Arrière. La différence entre I et A est que I commence à la position courante du curseur, tandis que A commence au caractère suivant. Avant de pouvoir saisir une nouvelle commande, vous devez repasser en mode normal avec Échap. Ce mode n’a pas de signe distinctif. La partie gauche de la dernière ligne est vide. Lorsqu’on passe du mode insertion au mode normal, le curseur se déplace d’un caractère vers la gauche. Ce comportement est décrit dans la FAQ de Vim et ne peut pas être modifié. Pour lancer une seule commande sans quitter le mode insertion, ni modifier la position du curseur, vous pouvez la lancer avec Ctrl+O.
Linux Livre Page 253 Mardi, 23. septembre 2008 1:05 13
253
VIM
Supprimer du texte
Enregistrer et quitter
Dans le mode insertion, vous pouvez supprimer des caractères isolés avec Suppr et Retour Arrière. Pour supprimer des mots, des lignes ou des paragraphes, vous devez passer en mode normal avec Échap. Dans ce mode, D+W supprime un mot et D+D une ligne complète. Si vous préfixez ces commandes d’un nombre, la commande de suppression est répétée le nombre de fois indiqué. Par exemple, 5+D+D supprime 5 lignes. . répète la dernière commande exécutée. P (paste, coller) colle le texte supprimé à l’emplacement du curseur. Maj+P l’insère avant la position courante du curseur. U (undo, annuler) annule la dernière modification. Ctrl+R rétablit la modification annulée. Vim 6 ne pouvait annuler que la dernière modification et un nouvel appui sur U la rétablissait. Pour enregistrer le fichier modifié, passez en mode normal avec Échap et tapez la commande :w Entrée. :q Entrée ferme l’éditeur si tous les fichiers ouverts sont enregistrés. :q! Entrée permet de le fermer même si les dernières modifications n’ont pas été enregistrées. :wq Entrée combine l’enregistrement et la fin du programme. Commandes élémentaires Changement de mode
I A q
active le mode insertion active le mode insertion ; la saisie commence au caractère suivant active le mode normal ou interrompt la commande courante
Commandes en mode normal
DW DD nDD P s+P . U s+U c+R :w :q : q!
supprime un mot supprime la ligne courante supprime n lignes colle le texte supprimé à la position du curseur colle le texte supprimé avant la position du curseur répète la dernière commande annule la dernière commande (à partir de Vim 7, 1 000 annulations possibles) annule toutes les modifications de la ligne courante rétablit les annulations (à partir de Vim 7) enregistre le fichier quitte Vim quitte Vim même lorsqu’il existe des modifications non enregistrées
Commandes en mode insertion
c+O commande
exécute la commande sans quitter le mode insertion
Aide Vim dispose d’une aide en ligne plutôt complète (mais uniquement en anglais). Pour afficher la page de démarrage de l’aide, tapez F1 dans n’importe quel mode. Vous pouvez aussi saisir :help en mode normal ou :help thème. Pour savoir quels thèmes contiennent le mot clé abc, saisissez :help abc Ctrl+D.
Linux Livre Page 254 Mardi, 23. septembre 2008 1:05 13
254 Fenêtre d’aide
Navigation dans l’aide
LINUX
La fenêtre d’aide s’affiche dans sa propre zone dans Vim. On appelle cette partie une fenêtre − il ne s’agit cependant pas d’une fenêtre indépendante au sens du système graphique de Linux. Vous pouvez la fermer avec :q. Vous pouvez aussi la laisser ouverte et continuer à travailler sur votre texte. Vous pouvez changer de fenêtre active avec Ctrl+W+W. Dans l’aide, les liens et les autres thèmes sont mis en évidence (par exemple, dans une autre couleur ou entourés de caractères |). Pour passer à un thème, placez le curseur sur le mot clé et tapez Ctrl+]. Si la souris est activée, il suffit de double-cliquer sur le thème pour le consulter. Ctrl+T permet de revenir à la page précédente.
17.2 Déplacement du curseur En principe, les touches de direction fonctionnent en mode normal comme en mode insertion. Il existe néanmoins diverses combinaisons de touches pour déplacer la position du curseur. Les plus importantes sont résumées dans le tableau ci-dessous. Les experts de Vim se déplacent souvent plus efficacement avec ces touches qu’avec les touches du curseur. Déplacement du curseur En mode normal et en mode insertion
Touches de direction
comportement habituel
Uniquement en mode normal
H/L J/K s+H / s+L s+M B/W E GE (/) {/} ^/$ s+G GG n s+G n| %
déplace le curseur vers la gauche/la droite déplace le curseur vers le bas/le haut déplace le curseur au début/à la fin de la page courante déplace le curseur au milieu de la page courante déplace le curseur d’un mot vers la gauche/la droite déplace le curseur à la fin du mot déplace le curseur à la fin du mot précédent déplace le curseur au début de la phrase actuelle/suivante déplace le curseur au début du paragraphe courant/suivant déplace le curseur au début/à la fin de la ligne déplace le curseur à la fin du fichier déplace le curseur au début du fichier déplace le curseur à la ligne n déplace le curseur à la colonne n déplace le curseur jusqu’à la parenthèse correspondante ()[]{}
Une particularité de Vim est que la touche de déplacement vers la gauche au début d’une ligne ne déplace pas le curseur à la fin de la ligne précédente. De même, la touche de déplacement vers la droite en fin de ligne ne passe pas à la ligne suivante. Pour activer ce comportement, lancez en mode normal la commande :set whichwrap=b,s,<,>,[,]. Vous pouvez aussi copier cette commande dans ~/.vimrc.
Linux Livre Page 255 Mardi, 23. septembre 2008 1:05 13
255
VIM
Enregistrer la position du curseur
Où suis-je ?
M lettre enregistre la position courante du curseur et ’ lettre permet de le déplacer à la position enregistrée. Vim enregistre automatiquement la position du curseur lorsque celui-ci est de nouveau déplacé. ’ ’ permet de retourner à cette position. ’ ’ une seconde fois permet de revenir à la dernière position. ’ [ et ’ ] déplacent le curseur respectivement au début et à la fin de la dernière section modifiée. En mode insertion, Vim affiche à droite de la ligne d’état la ligne et la colonne courantes, ainsi qu’un pourcentage qui indique dans quelle section du texte vous vous trouvez − par exemple, 92 % signifie que vous êtes dans les dix derniers pour cent). Si vous êtes perdu, Ctrl+G affiche dans la ligne d’état le nom du fichier, l’état (par exemple "Modifié"), le nombre total de lignes et la position relative du curseur dans le texte.
17.3 Modifier du texte Insérer un caractère plusieurs fois Faute de frappe Supprimer du texte
Pour insérer un caractère plusieurs fois, saisissez en mode normal le nombre, la commande A, le caractère et Échap. Ainsi, pour ajouter 50 fois le caractère =, tapez 50 A = Échap. Une fois exécutée, la commande vous ramène en mode normal. Vim permet également de corriger des fautes de frappe typiques. ~ change la casse du caractère courant et X+P échange les deux caractères qui suivent le curseur. Le tableau suivant donne un aperçu des principales commandes pour supprimer du texte. Lorsque vous indiquez un nombre devant la commande de suppression, celle-ci est répétée le nombre de fois correspondant. Supprimer du texte Uniquement en mode insertion
DN
comportement habituel
En mode normal
X s+X DD D commande de curseur D$ DB DW
supprime le caractère sous le curseur ou le texte marqué supprime le caractère précédant le curseur supprime la ligne courante supprime le texte correspondant à la commande de déplacement du curseur supprime jusqu’à la fin de la ligne supprime le mot précédent supprime le mot suivant
Le texte est en fait transféré dans un registre de copie. Le dernier texte supprimé peut être recopié sous le curseur avec Maj+P et après la position du curseur avec P. Les commandes C (change, changer) sont une manière un peu particulière de supprimer du texte et de le remplacer par du nouveau texte. C+W supprime le mot courant et active le mode insertion. Il suffit alors de saisir le même mot et de terminer la saisie avec Échap. C fonctionne de la même manière pour les autres touches du curseur.
Linux Livre Page 256 Mardi, 23. septembre 2008 1:05 13
256 Copier du texte
LINUX
Vous pouvez aussi copier du texte dans le registre de copie sans le supprimer. Le tableau suivant résume les commandes correspondantes (qui sont toutes spécifiques au mode normal). Copier du texte dans le registre de copie Y YY Y commande de curseur
Marquer du texte
copie le texte marqué copie la ligne courante dans le registre copie le texte indiqué par la commande de curseur. Par exemple, Y } copie le texte jusqu’à la fin du paragraphe
Certaines commandes supposent qu’une zone du texte soit marquée. Il existe trois modes de marquage que vous pouvez activer (au point de départ du marquage) et désactiver avec V, Maj+V et Ctrl+V. Lorsque l’un de ces modes est actif, la ligne d’état de Vim contient le texte -- VISUEL --. Vous pouvez ensuite déplacer le curseur à la fin de la zone ou étendre le marquage grâce à des commandes spéciales qui ne s’appliquent qu’à l’intérieur d’un mode de marquage. La zone marquée est mise en évidence par un mode vidéo inverse ou des couleurs. Marquer du texte V (dés)active le mode de marquage par caractère s+V (dés)active le mode de marquage par ligne c+V (dés)active le mode de marquage par bloc AW étend le marquage d’un mot AS étend le marquage d’une phrase AP étend le marquage d’un paragraphe AB étend le marquage d’un niveau de parenthèses A s+B étend le marquage d’un niveau d’accolades GV rétablit le marquage du dernier texte marqué O échange la position du curseur entre le début et la fin du marquage
Tant que le mode de marquage est actif, plusieurs commandes sont à votre disposition pour modifier le texte en question. Le tableau suivant en présente quelques exemples. Modifier du texte marqué X Y ~ J
supprime le texte marqué copie le texte marqué dans le registre de copie modifie la casse joint les lignes du texte marqué en une seule ligne
GQ
découpe les lignes (pour du texte continu)
>
ajoute une tabulation en tête des lignes
<
supprime une tabulation en tête des lignes
=
indente le texte comme le mode d’indentation courant l’indique
!sort
trie les lignes avec la commande externe sort
Linux Livre Page 257 Mardi, 23. septembre 2008 1:05 13
257
VIM
Indenter des lignes
Lorsqu’on édite du code, il est important de l’indenter correctement. Les commandes élémentaires sont > > et < <. Elles déplacent la ligne actuelle d’une tabulation, dans un sens ou dans l’autre. Lorsque plusieurs lignes sont marquées, vous pouvez aussi modifier un bloc complet. Il suffit alors de taper une seule fois < ou >. :set shiftwidth=n modifie la taille des tabulations (normalement huit caractères). Vim peut aussi indenter automatiquement les lignes pendant la saisie. Il faut pour cela activer un mode d’indentation, par exemple avec :set cindent. Les fonctions de base sont les suivantes : • autoindent indente la ligne suivante comme la ligne précédente. • smartindent fonctionne comme autoindent, mais gère également les accolades. Pour que Vim reconnaisse correctement les accolades fermantes, elles doivent être saisies au début d’une nouvelle ligne. La taille de l’indentation après les accolades (normalement huit caractères) peut être modifiée avec l’option shiftwidth. Le texte précédemment marqué peut être réindenté avec =.
Texte continu
• cident fonctionne comme smartindent, mais reconnaît également diverses structures de code C et C++. Le mécanisme d’indentation peut alors être modifié via différentes options (voir :help C-indenting). Vim est préconfiguré de manière que la composition du code et la modification de fichiers de configuration fonctionnent bien. C’est pour cela qu’il ne coupe pas automatiquement les lignes − vous devez passer à la ligne avec Entrée. Vous pouvez cependant aussi l’utiliser pour composer des textes, par exemple des courriers électroniques. Le tableau suivant résume quelques commandes et options pour l’édition de texte continu. Édition de texte continu s+J
supprime le retour à la ligne entre la ligne actuelle et la ligne suivante
n s+J
supprime les retours à la ligne entre les lignes sur n lignes
GQAP
remet en forme le paragraphe courant et place le curseur au début du paragraphe suivant
GWAP
remet en forme le paragraphe courant et laisse le curseur à sa position courante
:set textwidth=n coupe automatiquement les lignes à n caractères (par défaut 0, désactivé)
Complètement automatique
Les commandes G prennent automatiquement en compte le mode autoindent et la valeur de textwidth. Si textwidth est à 0, la longueur maximale des lignes est de 79 caractères. Les options d’édition de texte continu sont modifiables via formatoptions (voir l’aide correspondante). La saisie de mots longs, de fonctions et de noms de variables est fatigante et peut mener à des erreurs. Vim permet de saisir les premières lettres et d’appuyer sur Ctrl+P. Lorsqu’un seul mot est possible, il est inséré automatiquement. Sinon, vous pouvez choisir le mot désiré dans une liste qui apparaît à la position du curseur. L’affichage de cette liste est spécifique à Vim 7. Vim prend en compte pour le complètement tous les mots de tous les fichiers chargés ; les mots du fichier courant et à proximité du curseur sont listés en premier.
Linux Livre Page 258 Mardi, 23. septembre 2008 1:05 13
258
LINUX
17.4 Chercher et remplacer Chercher du texte
En mode normal, / texte Entrée déplace le curseur à la première occurrence du texte recherché. N répète la recherche et Maj+N la répète vers le haut. Pour lancer une recherche vers le haut, commencez la recherche avec ? expression. Le tableau suivant résume les principaux caractères spéciaux qui permettent d’effectuer des recherches selon des motifs. Caractères spéciaux pour la recherche . ^ $ \< \> [a-e] [^a-e] \s \t \( \) \= * \+
Casse
Recherche incrémentale
Chercher et remplacer
caractère arbitraire début de ligne/fin de ligne début de mot/fin de mot caractère entre a et e caractère qui n’est pas entre a et e espace tabulation regroupement d’un motif de recherche dans un atome expression de recherche présente 0 ou 1 fois expression de recherche présente un nombre arbitraire de fois (y compris 0) expression de recherche présente au moins une fois
Par défaut, Vim prend en compte la casse lors d’une recherche. Si ce n’est pas le comportement que vous désirez, préfixez le motif de recherche avec /c (ne fonctionne que pour cette recherche) ou lancez :set ignorecase (s’applique à toutes les recherches futures). :set incsearch active la recherche incrémentale. Vim déplace le curseur pendant la saisie de / terme au premier emplacement correspondant. Entrée termine la recherche et Échap l’interrompt. Après la recherche, toutes les occurrences restent marquées dans le texte jusqu’à la recherche suivante, ou jusqu’à l’exécution de :nohlsearch. Pour remplacer toutes les occurrences du texte abc par efg sans confirmation, lancez la commande :%s/abc/efg/g en mode normal. ’ ’ permet de revenir au début de la recherche. Le tableau suivant résume quelques variantes de la commande chercher/remplacer. Lorsque Vim demande une confirmation, vous pouvez répondre Y ou N pour chaque occurrence, afin d’indiquer si le texte doit effectivement être remplacé ou non. Q interrompt l’opération et A remplace toutes les occurrences suivantes. Dans l’expression de remplacement, vous pouvez faire référence au nième atome du motif de recherche avec \n. L’aide en ligne :help substitute présente des astuces supplémentaires et de nombreux exemples. Chercher et remplacer : %s/abc/efg/g remplace toutes les occurrences de abc par efg sans confirmation : %s/abc/efg/gc remplace toutes les occurrences de abc par efg avec confirmation : %s/abc/efg/gi remplace sans prendre en compte la casse
Linux Livre Page 259 Mardi, 23. septembre 2008 1:05 13
259
VIM
17.5 Éditer plusieurs fichiers en même temps
Tampon et fenêtre
Onglets
En mode normal, :e fichier charge un nouveau fichier. Ce dernier remplace le fichier édité, qu’il faut donc enregistrer, sans quoi Vim interrompt l’opération. Vous pouvez forcer le chargement du fichier avec :e! fichier, mais vous perdez alors toutes les modifications du fichier courant. Vous pouvez aussi éditer plusieurs fichiers en même temps. Il faut cependant d’abord expliquer le concept peu intuitif de gestion et d’affichage des textes dans Vim. Tous les textes ouverts dans l’éditeur se trouvent en interne dans un tampon, qu’il s’agisse de fichiers ou de textes d’aide. Lorsqu’il n’y a qu’un tampon, celui-ci s’affiche dans l’espace de travail de Vim. Pour afficher plusieurs tampons en même temps, l’espace de travail est divisé en plusieurs fenêtres, ce qui est également le cas lorsqu’on affiche un texte d’aide. Une fenêtre n’est dans ce cas pas une fenêtre au sens du système graphique de Linux, mais juste une partie de l’espace de travail. Les tampons des fichiers modifiés sont toujours visibles dans une fenêtre. Ceux des fichiers qui n’ont pas été modifiés depuis leur dernier enregistrement peuvent en revanche être masqués. Ces tampons restent en mémoire, mais ne sont plus actifs. Attention, lorsque vous fermez une fenêtre avec un fichier non enregistré, toutes les modifications sont perdues. Le tampon reste disponible, mais il ne contient que le fichier tel qu’il a été enregistré pour la dernière fois. Vim peut également afficher un même fichier dans plusieurs fenêtres, par exemple pour travailler sur différentes parties d’un texte très long. Vim 7 facilite l’édition de multiples fichiers grâce aux onglets. Il s’agit de fenêtres se recouvrant les unes les autres, indiquées dans la première ligne de Vim, comme dans Firefox ou d’autres navigateurs web. Les onglets sont particulièrement confortables lorsque la souris est activée ; vous pouvez alors simplement choisir ou fermer un onglet donné (avec le bouton X en haut à droite). Vous trouverez plus d’informations sur les onglets avec :help tabpage. La Figure 17.2 montre un exemple d’onglets dans Vim.
Figure 17.2 Trois fichiers dans une fenêtre à trois onglets.
Charger un nouveau fichier
Vous pouvez charger un nouveau fichier grâce à :new fichier si vous travaillez avec des fenêtres, ou :tabnew fichier si vous travaillez avec des onglets.
Linux Livre Page 260 Mardi, 23. septembre 2008 1:05 13
260
LINUX
Vous pouvez indiquer dès le démarrage du programme plusieurs fichiers, par exemple avec vim fichier1 fichier2 fichier3. Par défaut, le premier s’affiche et les autres sont chargés dans un tampon non visible. Si vous désirez ouvrir chaque fichier dans une fenêtre ou un onglet, vous devez passer respectivement l’option -o ou -p. Le tableau suivant résume les principales commandes pour charger et enregistrer des fichiers, passer entre des fenêtres ou des onglets, etc. Fichiers, tampons, fenêtres, onglets : e fichier charge un nouveau fichier dans le tampon courant :w enregistre le fichier courant : wall enregistre tous les fichiers ouverts : wq enregistre et ferme le tampon :q ferme le tampon et quitte Vim lorsque aucun tampon n’est ouvert ; q! : qall : split : new : new fichier
ferme le tampon même lorsqu’il y a des modifications non enregistrées ferme tous les tampons et quitte Vim partage la fenêtre et affiche le même texte dans les deux fenêtres crée un tampon vide et l’affiche dans une fenêtre charge un fichier dans un nouveau tampon
: only : all : buffers : buffer n : buffer fichier
maximise la fenêtre courante et ferme les autres tampons affiche tous les tampons dans une fenêtre plus petite affiche la liste de tous les tampons affiche le tampon n et ferme le tampon courant affiche le tampon contenant le fichier indiqué dans la fenêtre courante
: tabnew : tabnew fichier : tabnext : tabprevious c+W / Z : tabclose : tabonly
crée un nouveau tampon et l’affiche dans un onglet charge un fichier et l’affiche dans un onglet passe à l’onglet suivant passe à l’onglet précédent passe à l’onglet précédent/suivant ferme l’onglet courant ferme tous les autres onglets
17.6 Trucs et astuces Saisir efficacement les commandes :
Afficher les numéros de ligne
Pour taper les commandes qui commencent par :, il existe quelques aides à la saisie. Les touches du curseur permettent de naviguer dans les dernières commandes saisies. Vim enregistre les commandes dans ~/.viminfo et les enregistre même à la fin du programme. Vous pouvez aussi compléter des mots clés avec Tab et abréger de nombreuses commandes (par exemple, :tabn à la place de :tabnext). :set number affiche à côté de chaque ligne le numéro de ligne. :set nonumber désactive ce mode.
Linux Livre Page 261 Mardi, 23. septembre 2008 1:05 13
261
VIM
Créer des sauvegardes
Par défaut, Vim ne crée pas de sauvegarde à l’enregistrement (pas de copie du fichier original). Si vous souhaitez activer ce comportement, lancez en mode normal :set backup. La sauvegarde est nommée anciennom~. Pour activer les sauvegardes à un niveau général, ajoutez set backup dans ~/.vimrc.
Activer la souris
Lorsque vous utilisez Vim dans une console texte ou une fenêtre de terminal, la gestion de la souris est limitée à son fonctionnement sous X : vous pouvez copier du texte et le coller à la position courante du curseur, mais vous ne pouvez pas par exemple repositionner le curseur. Pour que la souris soit plus utile sous Vim, vous pouvez utiliser la version graphique, gvim, ou lancer en mode standard la commande :set mouse=a. Cela permet de modifier la position courante du curseur avec un clic de souris, de choisir la fenêtre Vim active, d’utiliser la molette de la souris, etc. Ce mode a cependant un inconvénient : le bouton du milieu ne colle que le dernier texte supprimé dans Vim. On ne peut plus copier de texte entre Vim et les autres programmes avec ce bouton. On peut cependant appuyer en même temps sur Maj, ce qui permet de rétablir le comportement habituel. Attention cependant : il faut que le mode Insertion soit actif, sans quoi les caractères copiés par la souris sont interprétés comme des commandes, ce qui peut éventuellement mal tourner.
Insérer des espaces à la place des tabulations
Pour que Vim insère des espaces à la place des tabulations, lancez la commande :set expandtab ou copiez cette directive dans ~/.vimrc. Pour transformer toutes les tabulations par le nombre correspondant d’espaces dans un fichier modifié précédemment, lancez :retab. Pour effectuer l’opération inverse, utilisez les commandes :set unexpandtab, puis :retab!.
Définir des macros
Vous savez déjà que . répète la dernière commande. Pour répéter plusieurs fois une suite de commandes, vous pouvez définir une macro. Passez pour cela dans le mode Macro avec Q et un caractère, qui indique le nom de la macro (plus exactement, le nom du registre dans lequel se trouve la macro). Vous pourrez alors lancer la macro avec @ nom_de_la_macro − les macros ne sont pas enregistrées lorsque vous quittez Vim. Par exemple, la suite de touches suivante définit la macro a qui ajoute le caractère " au début et à la fin d’un mot : Q A B I " Échap E A " Échap Q
Lorsque le curseur se trouve dans un mot, vous pouvez maintenant taper @ A pour l’entourer de guillemets. @ @ répète la dernière commande sans que vous deviez vous souvenir de son nom de macro ou de registre. Lancer des commandes Linux
Pour lancer une commande sans quitter Vim, lancez dans le mode normal :!nom de la commande, par exemple :!ls pour obtenir une liste des fichiers du répertoire courant. Vim affiche le résultat de la commande et Entrée permet de retourner à l’éditeur. Pour lancer plusieurs commandes, vous pouvez lancer avec :sh un nouvel interpréteur de commandes. Lorsque vous tapez Ctrl+D, vous revenez à l’éditeur.
Linux Livre Page 262 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 263 Mardi, 23. septembre 2008 1:05 13
Emacs et XEmacs
18
Il serait réducteur de décrire Emacs comme un simple éditeur. Il permet certes d’éditer du texte, mais c’est aussi un environnement de développement complet pour les programmeurs, doté d’un client de courrier électronique, d’un lecteur Usenet, etc. Pour certains utilisateurs, Emacs est comparable à un système d’exploitation dans lequel toutes les fonctions du travail quotidien sont rassemblées. Une fois que vous serez habitué à Emacs, vous ne pourrez plus utiliser d’autres éditeurs. J’ai d’ailleurs écrit cet ouvrage entièrement avec Emacs... Mais il possède aussi ses parts d’ombre. L’utilisation d’Emacs peut sembler à première vue effrayante. Elle regorge de séquences Ctrl+ et Alt+ pour appeler un nombre incalculable de commandes. Une blague courante, mais pas forcément injustifiée, est qu’Emacs signifie en réalité Escape Meta Alt Control Shift (Échap Méta Alt Contrôle Majuscule). L’interface utilisateur (menus, barres de boutons) paraît obsolète ; la localisation en français est globalement inexistante ; modifier la configuration (par exemple, l’utilisation d’une autre police) s’avère laborieux… En résumé, Emacs est un éditeur pour les professionnels qui sont prêts à investir du temps de formation et qui ne s’arrêtent pas à l’aspect extérieur.
18.1 Rapide introduction GNU Emacs et XEmacs
Il existe deux versions d’Emacs : GNU Emacs et XEmacs. Elles peuvent être utilisées aussi bien dans une console texte que sous X et sont sous licence GPL. Il existe de toute façon de nombreuses similarités entre les deux versions. Elles ont été développées en parallèle depuis plusieurs années. Ce chapitre est basé sur Emacs 22.0 (voir Figure 18.1) et XEmacs 21.4 (voir Figure 18.2). Nous ne soulignerons que les différences significatives entre les deux versions.
Figure 18.1 GNU Emacs.
Travailler avec GNU Emacs ou XEmacs est essentiellement une affaire de goût. Le programme est lancé avec les commandes emacs ou xemacs. Les deux programmes sont très stables et contiennent de nombreuses extensions et une documentation très riche. XEmacs utilise plus de place sur le disque dur et nettement plus de mémoire. À titre personnel, je
Linux Livre Page 264 Mardi, 23. septembre 2008 1:05 13
264
LINUX
préfère GNU Emacs, car XEmacs m’a déjà posé plusieurs problèmes mystérieux alors que j’éditais des fichiers Unicode.
Figure 18.2 Xemacs.
Liens
En plus de ces deux versions d’Emacs, il existe quelques variantes plus petites : jed, jmacs, jove et zile sont globalement des miniversions très utilisables. Leur principal avantage est qu’elles sont nettement moins gourmandes en ressources, ce qui en fait des applications idéales pour les systèmes d’urgence ou des ordinateurs plus anciens avec des processeurs lents et peu de mémoire. Vous trouverez plus d’informations sur GNU Emacs et XEmacs sur Internet : http://www.gnu.org/software/emacs/emacs.html site web officiel de GNU Emacs http://www.xemacs.org site web officiel de XEmacs http://refcards.com/refcard/gnu-emacs-gildeas raccourcis clavier de GNU Emacs http://refcards.com/refcard/xemacs-wingb raccourcis clavier de XEmacs http://www.emacswiki.org/ wiki multilingue sur Emacs
Charger et enregistrer des fichiers, quitter le programme On lance Emacs en tapant emacs ou xemacs. Si vous indiquez un ou plusieurs noms de fichiers, ces derniers sont chargés automatiquement. On peut utiliser des motifs de noms de fichiers : emacs Makefile *.[ch] ouvre le fichier Makefile et tous les fichiers *.c et *.h du répertoire. Pour charger un fichier alors que le programme est lancé, utilisez Ctrl+X Ctrl+F+nom_du_fichier+Entrée. Ctrl+X Ctrl+S permet d’enregistrer un fichier modifié. Ctrl+X Ctrl+C termine le programme. Si Emacs découvre un fichier non enregistré, il vous demande si vous désirez l’enregistrer avant de quitter. Si vous saisissez n, une question de sécurité apparaît pour vérifier que vous souhaitez réellement quitter Emacs sans enregistrer le fichier. Si c’est le cas, répondez par yes. Pour l’enregistrer sous un nouveau nom, tapez Ctrl+X Ctrl+W+nom du fichier. Si vous utilisez Emacs dans une console texte, Ctrl+Z permet de repasser temporairement à la console. fg reprend le travail.
Linux Livre Page 265 Mardi, 23. septembre 2008 1:05 13
265
EMACS ET XEMACS
Charger et enregistrer des fichiers, quitter Emacs c+X c+F fichier e c+X I c+X c+S c+X S c+X S ! c+X c+W fichier e c+X c+C Copies de sauvegarde
charge un fichier insère un fichier dans le texte courant enregistre un fichier enregistre tous les fichiers avec confirmation enregistre tous les fichiers sans confirmation enregistre le fichier sous un nouveau nom quitte l’éditeur
Emacs crée lors de l’enregistrement une copie de sauvegarde, nommée nom~, qui contient le texte original. De plus, il enregistre à intervalles réguliers le contenu du texte dans le fichier #nom#. Vous pouvez reprendre ce fichier lorsque votre travail est interrompu par un orage ou lorsque vous n’avez pas pu fermer proprement Emacs pour une raison ou une autre. Les fichiers # sont enregistrés dans le jeu de caractères interne d’Emacs et non dans celui de votre fichier. Vous devez donc, pour récupérer le fichier, utiliser la commande Alt+X+recover-session. Vous pouvez aussi charger le fichier et modifier son jeu de caractères avec Ctrl+X+Entrée+F+jeu de caractères.
Commandes élémentaires Vous pouvez déplacer le curseur avec les touches de direction et PgPréc/PgSuiv. Si cela ne fonctionne pas − par exemple, si Emacs est démarré dans un terminal mal configuré −, utilisez les commandes suivantes : Raccourcis clavier lorsque le curseur ne fonctionne pas c+F c+B c+P c+N c+V a+V
déplace le curseur d’un caractère vers la droite déplace le curseur d’un caractère vers la gauche déplace le curseur d’un caractère vers le haut déplace le curseur d’un caractère vers le bas déplace le curseur d’une page vers le haut déplace le curseur d’une page vers le bas
Vous pouvez saisir du texte à n’importe quel endroit. Suppr et Retour Arrière permettent de supprimer un caractère. Vous pouvez aussi utiliser Ctrl+D pour supprimer un caractère à la position du curseur. Ctrl+X+U et Ctrl+_ permettent d’annuler les dernières modifications. Cette fonction d’annulation fonctionne pour des commandes d’une complexité arbitraire et est pratiquement illimitée.
Linux Livre Page 266 Mardi, 23. septembre 2008 1:05 13
266
LINUX
Lorsque vous faites une erreur dans la saisie d’une commande, vous pouvez annuler la commande avec Ctrl+G. C’est particulièrement pratique lorsque vous appuyez par erreur sur Échap.
Système d’aide Emacs fournit de nombreuses commandes pour appeler le système d’aide. La plus importante pour commencer est F1+T (tutoriel). Ctrl+X+B+Entrée permet de revenir au texte original. Lorsque plusieurs sections de texte (fenêtres) restent ouvertes après avoir lancé l’aide, vous pouvez déplacer le curseur dans la fenêtre suivante avec Ctrl+X+O. Ctrl+X+0 (zéro) ferme la fenêtre courante, Ctrl+X+1 ferme toutes les fenêtres à part la fenêtre courante. Ces trois commandes permettent de passer de la fenêtre d’aide à la fenêtre de texte et vice versa, puis de fermer la fenêtre d’aide lorsque vous avez terminé. Si en revanche le texte d’aide s’affiche dans la fenêtre entière, vous pouvez revenir à votre propre texte avec Ctrl+X+B+Entrée. Emacs gère plusieurs textes (par exemple, votre texte et le texte d’aide) par le biais de tampons, dont nous parlerons plus tard. Utilisation du système d’aide 11 1 A texte e 1B 1 C raccourci 1 s+F 1I 1N 1T 1 c+F nom 1 c+P
Mode info
affiche une vue d’ensemble des commandes d’aide disponibles affiche toutes les commandes contenant text affiche tous les raccourcis clavier décrit le raccourci indiqué affiche la FAQ d’Emacs démarre le système info pour afficher un texte d’aide hiérarchisé affiche les modifications par rapport aux anciennes versions démarre le tutoriel d’Emacs démarre le système info et affiche des informations sur la commande indiquée offre des informations sur le concept de logiciel libre
La principale source d’informations à propos d’Emacs est le système info interne, qui fait office de manuel officiel. Certaines distributions le fournissent au format HTML pour qu’il soit plus facile à lire. Le système d’aide d’Emacs repose sur le format GNU Info. Pour lire ce texte, Emacs active le mode info. Ce dernier fournit quelques raccourcis clavier supplémentaires. Vous pouvez aussi suivre les liens ou les éléments de menus avec le bouton du milieu de la souris. L permet de revenir à la dernière page vue.
18.2 Bases Modes d’édition
Emacs connaît plusieurs modes d’édition, dans lesquels sont définies des commandes supplémentaires pour éditer des fichiers spécifiques. Il faut différencier les modes majeurs et mineurs. Un seul mode majeur peut être actif à la fois, tandis que plusieurs modes mineurs peuvent coexister. Les modes majeurs contiennent, entre autres, des modes pour presque tous les langages de programmation (C, C++, Java, etc.), ainsi que le mode LaTeX pour modifier des fichiers
Linux Livre Page 267 Mardi, 23. septembre 2008 1:05 13
EMACS ET XEMACS
Conventions du clavier
Gestion de la souris
267
LaTeX. Lorsqu’on charge un fichier, Emacs charge automatiquement le mode correspondant (par exemple, le mode C, lorsque le nom du fichier se termine par .c). S’il ne reconnaît pas le mode, il choisit le mode Fundamental. Les modes mineurs comprennent, entre autres, le mode Fill (pour éditer du texte continu avec des paragraphes sur plusieurs lignes) et le mode Abbrev (pour remplacer automatiquement les abréviations). Les commandes élémentaires d’Emacs fonctionnent de la même manière dans tous les modes. C’est pourquoi vous n’avez pas à vous en préoccuper pour l’instant. Lorsque vous désirez désactiver les actions d’Emacs dues à un mode donné (par exemple, l’indentation automatique des lignes de programme en mode C), repassez dans le mode fondamental avec Alt+X+fundamental-mode+Entrée. Il existe généralement trois possibilités pour saisir des commandes Emacs : le menu, l’utilisation de raccourcis clavier (pour la plupart, des combinaisons commençant par Ctrl ou Alt) ou la saisie de la commande. Cette dernière méthode implique de préfixer la commande par Alt+X+− par exemple, Alt+X+delete-char+Entrée. La saisie des commandes et des paramètres est facilitée par deux mécanismes : • Vous pouvez étendre un nom de commande comme dans un interpréteur de commandes avec Tab. Emacs est sensible à la casse. Les noms de fichiers peuvent également être étendus de cette manière. Lorsque plusieurs possibilités existent, Emacs les affiche toutes à l’écran. • Vous pouvez, après avoir tapé Alt+X, passer aux commandes précédente et suivante de l’historique avec Alt+P et Alt+N. Dans cet ouvrage, les touches sont indiquées en majuscules, mais cela ne signifie pas que la touche Maj doit être enfoncée. Alt+X signifie simplement que vous devez appuyer simultanément sur la touche Alt et la touche X. Dans la documentation d’Emacs, DEL ne signifie pas Suppr, mais Retour Arrière. C signifie Ctrl et M Méta. Il n’existe pas de touche Méta sur un clavier PC standard. M-x peut être saisi de deux manières sur un clavier PC : Échap X (l’un après l’autre) ou Alt+X. J’utiliserai dans ce livre la combinaison avec Alt, généralement plus confortable. Dans le cas de certains programmes compatibles avec Emacs ou si l’on utilise Emacs dans une console texte, certains problèmes peuvent survenir avec la touche Alt. Il faut donc, à la place de Alt+X (les deux touches simultanées), taper Échap X (successivement). Attention, Ctrl+X Ctrl+B est différent de Ctrl+X+B. Dans Emacs et XEmacs, la convention habituelle de X (marquage du texte avec la souris et copie avec le bouton du milieu) reste valable. Lorsque vous affichez plusieurs textes en même temps, vous pouvez déplacer la barre de séparation entre les zones de texte avec le bouton gauche de la souris. Les fonctions supplémentaires dépendent de la version d’Emacs. • Sous GNU Emacs, le bouton droit place le point de fin d’une zone de texte marquée, qui peut ensuite être modifiée. Les boutons de la souris ont des fonctions différentes lorsqu’ils sont utilisés en combinaison avec Ctrl ou Maj. • Sous XEmacs, le bouton droit affiche un menu contextuel.
Linux Livre Page 268 Mardi, 23. septembre 2008 1:05 13
268 Options de démarrage
LINUX
Lorsque vous démarrez Emacs sous X, vous pouvez utiliser de nombreux paramètres pour les couleurs, le jeu de caractères, etc. Le tableau ci-dessous recense les principales options. La page de manuel d’Emacs en offre une référence complète. Options de la ligne de commande Emacs en mode texte dans la fenêtre de l’interpréteur de commandes couleur d’avant-plan, c’est-à-dire du texte, normalement noir couleur d’arrière-plan (normalement noir) couleur du curseur (normalement noir) taille (largeur × hauteur et position de la fenêtre, en nombres de caractères Emacs avec le jeu de caractères indiqué
-nw -fg couleur -bg couleur -cr couleur -geometry bxh+x+y -fn jeu de caractères
18.3 Déplacement du curseur En plus des touches de direction, Emacs connaît de nombreux raccourcis clavier pour déplacer le curseur. Les principaux raccourcis sont résumés dans le tableau ci-après. Déplacement du curseur a+F / a+B c+A / c+E a+A / a+E c+V / a+V a+< / a+> c+L a+G n e
déplace le curseur d’un mot vers l’avant et vers l’arrière place le curseur au début ou à la fin de la ligne place le curseur au début ou à la fin du paragraphe déplace le curseur d’une page vers le bas ou vers le haut déplace le curseur au début ou à la fin d’un texte déplace le texte pour que le curseur se trouve au milieu de l’écran place le curseur à la ligne n
Déplacements multiples du curseur
Emacs est capable de répéter plusieurs fois une commande. Vous devez d’abord saisir Alt+n, où n est un nombre arbitraire. Les chiffres doivent être saisis dans le clavier alphanumérique, et non dans le pavé numérique à droite du clavier. Alt doit être pressé pendant toute la saisie de votre nombre. Pour finir, saisissez la commande. Vous pouvez, par exemple, descendre de plusieurs pages dans un texte avec Alt+n+PgSuiv. Ce comportement peut aussi être utilisé pour saisir du texte. Par exemple, Alt+60+– dessine une ligne.
Où suis-je ?
Pour savoir sur quelle ligne vous vous trouvez, saisissez Alt+X+what-line+Entrée. Emacs affiche alors le numéro de ligne courant dans la dernière ligne de l’écran. Vous pouvez aussi afficher ce numéro de façon permanente avec Alt+X+line-number-mode+Entrée. Cependant, cela ne fonctionne pas pour les textes très longs (de plusieurs mégaoctets). La colonne s’affiche de la même manière en activant column-number-mode.
Enregistrer la position du curseur dans des registres
Il est souvent souhaitable, lorsqu’on travaille sur un texte long, de pouvoir passer rapidement d’un emplacement à un autre du texte. Pour cela, on peut enregistrer la position courante du curseur dans un registre. Ce dernier est un emplacement de sauvegarde désigné
Linux Livre Page 269 Mardi, 23. septembre 2008 1:05 13
269
EMACS ET XEMACS
par un caractère (lettre ou chiffre). Pour revenir au point enregistré, indiquez le nom du registre. Notez cependant que les registres ne sont pas enregistrés lorsqu’on quitte Emacs. Registres pour la position du curseur c+X R z z e c+X R J z e
enregistre la position courante du curseur dans le registre z place le curseur à la position enregistrée dans le registre z
18.4 Marquer, supprimer et coller du texte Nous avons déjà mentionné que les touches Suppr, Ctrl+D et Retour Arrière permettaient de supprimer des caractères isolés. Pour supprimer de plus grandes quantités de texte, vous pouvez utiliser l’une des commandes du tableau suivant. Supprimer du texte et le réinsérer a+D a+B c+K a+0 c+K a+Z x c+Y
supprime le mot suivant ou la fin du mot courant supprime le mot précédent ou le début du mot courant supprime la fin de la ligne supprime le début de la ligne supprime tous les caractères jusqu’à la première occurrence de x colle le texte supprimé à la position du curseur
Lorsque vous exécutez plusieurs fois l’une de ces commandes, Ctrl+Y colle l’ensemble du texte supprimé par cette série de commandes. Ctrl+Y peut être lancé plusieurs fois et à des endroits arbitraires du texte. Cette commande permet de coller le texte précédemment supprimé à un autre endroit. Les commandes indiquées sont peu souples, car la quantité de texte à supprimer est fixée. Pour supprimer une section complète, vous devez d’abord la marquer. Pour cela, tapez Ctrl+Espace au début ou à la fin de la section à marquer. Ce marquage reste invisible, mais Emacs affiche le message Mark set. La zone marquée se trouve entre le point de marquage et la position courante du curseur de texte. Si vous ne vous habituez pas au marquage avec Ctrl+Espace, vous pouvez, sous GNU Emacs, activer le marquage habituel de Windows avec Maj. Pour cela, lancez la commande Alt+X+pcselection-mode. Sous XEmacs, le mode correspondant est automatiquement activé. Marquer du texte c+z c+W c+X c+X
place une marque (invisible) supprime le texte entre la marque et le curseur échange la position du curseur et de la marque
Linux Livre Page 270 Mardi, 23. septembre 2008 1:05 13
270
LINUX
La commande Ctrl+X Ctrl+X sert principalement à vérifier l’emplacement de la marque. Répéter cette combinaison replace le curseur à sa position d’origine. La commande Ctrl+W considère que le premier caractère entre la marque et le curseur fait partie du marquage et qu’il doit être supprimé, tandis que le dernier caractère supprimé est celui qui se situe avant le curseur.
18.5 Éditer du texte Insertion et écrasement
Emacs se trouve normalement en mode insertion. Cela signifie que le texte saisi est inséré à la position courante du curseur. Pour écraser le texte précédent, vous pouvez passer en mode écrasement avec Alt+X+overwrite-mode+Entrée. Saisir à nouveau cette commande permet de revenir au mode insertion. Sur un clavier bien configuré, on passe d’un mode à l’autre avec la touche Inser. Casse a+C a+L a+U a+- a+C a+- a+L a+- a+U c+X c+L c+X c+U
Fautes de frappe
passe la lettre sous le curseur en majuscule, et toutes les lettres suivantes du mot en minuscules passe toutes les lettres du mot à partir du curseur en minuscules passe toutes les lettres du mot à partir du curseur en majuscules passe la première lettre du mot en majuscule, le reste en minuscules ; si le curseur est au début d’un mot, s’applique au mot précédent passe toutes les lettres du mot jusqu’au curseur en minuscules ; si le curseur est au début d’un mot, s’applique au mot précédent passe toutes les lettres du mot jusqu’au curseur en majuscules ; si le curseur est au début d’un mot, s’applique au mot précédent passe la zone entre la marque et le curseur en minuscules passe la zone entre la marque et le curseur en majuscules
Une faute de frappe fréquente est l’échange de deux lettres. Ctrl+T permet de corriger ce type d’erreur. Le curseur doit se trouver sur la deuxième lettre. Alt+T permet, de la même manière, d’échanger deux mots. Lorsque le curseur se trouve au début d’un mot, celui-ci est échangé avec le mot précédent. Si le curseur est n’importe où ailleurs dans le mot, alors il est échangé avec le mot suivant. L’appui successif de plusieurs Alt+T éloigne le premier mot du second. Ctrl+X Ctrl+T permet d’échanger la ligne courante avec la ligne précédente. L’exécution successive de plusieurs de ces raccourcis éloigne la première ligne de plus en plus vers le bas.
Tabulations Par défaut, lorsqu’on édite un texte ASCII normal, Tab insère un caractère tabulation. Les tabulations ne sont pas visibles. Pour savoir s’il s’agit d’une tabulation ou de plusieurs espaces, observez le comportement du curseur : lorsque celui-ci se déplace par "sauts", c’est une tabulation.
Linux Livre Page 271 Mardi, 23. septembre 2008 1:05 13
271
EMACS ET XEMACS
En fonction du texte modifié (par exemple un fichier *.tex), (X)Emacs passe automatiquement dans le mode d’édition correspondant. Certains modes redéfinissent quelques touches. C’est particulièrement vrai pour Tab. En mode C, si on appuie sur cette touche, elle indente la ligne en fonction de la structure du programme. En mode LaTeX, elle n’a aucun effet. Lorsque Tab ne se comporte pas comme vous le désirez, le mode d’édition est probablement en cause. Il existe cependant différentes possibilités pour insérer des tabulations :
Taille des tabulations
Passage entre espaces et tabulations
• Ctrl+Q+Tab permet d’insérer une tabulation, indépendamment du mode. • Alt+I permet, indépendamment du mode d’édition, d’insérer un caractère tabulation ou plusieurs espaces (cela se règle dans indent-tab-mode). • Alt+X+fundamental-mode permet de désactiver le mode d’édition courant. Tab fonctionne alors comme dans tout autre programme, mais vous perdez aussi toutes les fonctions associées au mode d’édition. Par défaut, les tabulations ont une largeur de huit caractères. Alt+X+set-variable tab-width permet de modifier cette valeur par défaut. Si vous travaillez toujours avec la même taille de tabulations, vous pouvez modifier ce paramètre dans le fichier de configuration ~/.emacs. Certains modes d’Emacs remplacent automatiquement les longues suites d’espaces par des tabulations. Alt+X tabify permet de remplacer toutes les séries d’espaces de la zone marquée par des caractères tabulation. Alt+X untabify a le comportement inverse.
Indenter manuellement du texte L’indentation de texte est nécessaire lorsqu’on programme pour structurer le code. La commande la plus importante est appelée avec Ctrl+X+Tab. Elle indente d’un espace le texte entre la marque (Ctrl+Espace) et le curseur. Lorsque vous préfixez cette commande de Alt+n, vous pouvez indenter les lignes de n espaces. La même commande préfixée de Alt+– désindente le texte. Indentation de texte c+X t a+- c+X t
indente le texte marqué d’un espace désindente le texte marqué d’un espace
Les commandes ci-dessus permettent uniquement d’ajouter ou de supprimer des espaces en début de ligne. Pour réaliser cette opération au milieu d’une ligne (par exemple, lorsque vous travaillez sur un tableau ou pour indenter les commentaires à la fin des lignes de code), vous devez utiliser les commandes de rectangles. Un rectangle contient tous les caractères de la zone entre la marque et la position du curseur. Commandes de rectangles c+X R O c+X R K c+X R Y a+X string-rectangle
remplit la zone d’espaces (en décalant le reste du texte) supprime le rectangle insère le rectangle supprimé à la position du curseur remplace chaque ligne du rectangle par une chaîne
Linux Livre Page 272 Mardi, 23. septembre 2008 1:05 13
272
LINUX
Emacs a également quelques modes d’édition dans lesquels l’indentation est effectuée automatiquement. Par exemple, le mode C ajoute ou supprime des espaces après les accolades.
18.6 Texte continu Pour l’instant, nous avons considéré que vous éditiez du code ou des fichiers de configuration avec Emacs. Son environnement est un peu différent lorsqu’il s’agit de texte continu. Emacs ne coupe pas les lignes. Lorsque celles-ci sont plus longues que la largeur de l’écran ou de la fenêtre, un caractère \ ou une petite flèche termine la ligne et le texte se poursuit sur la ligne suivante. Il n’y a cependant en interne aucun retour à la ligne. Pour découper une ligne, lancez la commande Alt+Q. Celle-ci la découpe à l’espace le plus approprié en plusieurs lignes plus courtes. Emacs considère toutes les lignes qui ne sont pas explicitement séparées par une ligne vide comme des paragraphes. Cette commande peut évidemment avoir des répercussions désastreuses sur du code. Ctrl+X+U permet d’annuler. Il est bien sûr pénible de lancer sans cesse Alt+Q lorsqu’on tape un texte. Il existe donc un mode pour le texte continu, activé avec Alt+X+auto-fill-mode. Dans ce mode, toutes les nouvelles saisies sont automatiquement découpées. Les lignes déjà saisies avant de passer dans ce mode ne sont cependant pas modifiées. La longueur des lignes est généralement limitée à 70 caractères. Vous pouvez modifier cette limite avec Alt+X+set-variable+Entrée+fill-column+Entrée+n. Coupure de lignes dans du texte continu a+Q a+X auto-fill-mode Entrée Indentation dans du texte continu
procède à la coupure manuelle des lignes active le mode de texte continu (coupure automatique des lignes)
Pour saisir plusieurs paragraphes de texte indenté, vous pouvez définir la position de la première colonne en tapant plusieurs espaces ou tabulations dans une ligne vide, qui définiront la taille de l’indentation de votre texte. Lancez ensuite le raccourci Ctrl+X .. Le programme indente alors dès la deuxième ligne du paragraphe toutes les lignes comme la première. Cette opération ne fonctionne que pour le texte qui n’est pas encore saisi. Pour indenter du texte déjà saisi, il faut définir l’indentation avec Ctrl+X+., puis lancer Alt+Q. Pour désactiver la largeur de l’indentation, placez le curseur au début de la ligne avec Ctrl+X+.. La commande Ctrl+X+. enregistre en fait tous les caractères qui se trouvent entre la position courante du curseur et le début de la ligne. Ces derniers sont ensuite ajoutés automatiquement au début des nouvelles lignes créées par la coupure du paragraphe. Vous pouvez utiliser cela pour préfixer toutes les lignes d’une chaîne de caractères donnée (par exemple >).
Pour remettre en forme de plus grandes quantités de texte indenté différemment, la commande Alt+X+fill-individual-paragraphs+Entrée peut s’avérer utile. Elle met en forme la zone entre la marque et la position du curseur. L’indentation courante est alors préservée.
Linux Livre Page 273 Mardi, 23. septembre 2008 1:05 13
EMACS ET XEMACS
273
Indenter du texte continu c+X . définit la colonne d’indentation à la position du curseur ; celui-cidoit se situer sur une ligne vide a+M déplace le curseur au début d’une ligne indentée a+X fill-individ met en forme la zone entre la marque et le curseur en gardant l’indentation courante
Mode texte
Si vous utilisez beaucoup d’indentations, le mode texte est plus confortable que les procédures décrites ci-dessus. Vous pouvez l’activer avec Alt+X+text-mode+Entrée. Pour éditer du texte continu dans ce mode, activez le mode mineur correspondant, Alt+X+auto-fill-mode. La seule nouveauté du mode texte est qu’Emacs indente automatiquement chaque nouvelle ligne comme la précédente. Alt+Q, pour la coupure automatique, gère également l’indentation du paragraphe par rapport à la première ligne. Mode texte a+X text-mode active le mode texte a+X auto-fill-mode active le mode mineur pour le texte continu a+Q procède à une coupure manuelle des lignes et conserve l’indentation de la première sur le paragraphe. a+S centre la ligne courante a+s+S centre le paragraphe courant
Pour centrer une ligne ou un paragraphe sans avoir à passer dans le mode texte, vous pouvez lancer la commande correspondante depuis un autre mode grâce à Alt+X+center-line et Alt+X+center-paragraph. Abréviations
Une des particularités d’Emacs est que vous pouvez étendre des abréviations sans prérequis particulier. Indiquez les premières lettres d’un mot et saisissez Alt+/. Emacs cherche d’abord dans le texte précédent, puis dans le texte suivant et enfin, dans tous les fichiers ouverts, les mots qui débutent par ces lettres. Plusieurs appuis sur Alt+/ permettent de faire défiler les différents complètements possibles.
18.7 Chercher et remplacer Recherche incrémentale
Le plus rapide pour chercher du texte est d’utiliser Ctrl+S+texte_à_chercher. La commande présente une particularité par rapport à celle des autres éditeurs : elle commence la recherche dès la saisie du premier caractère. Si vous cherchez "recherche", tapez Ctrl+S+rech : le curseur passe au premier mot qui contient "rech". Plutôt que de continuer à taper les autres lettres, lancez à nouveau Ctrl+S pour passer au mot suivant
Linux Livre Page 274 Mardi, 23. septembre 2008 1:05 13
274
LINUX
contenant "rech". Si vous ne saisissez que des minuscules, la recherche est indépendante de la casse. Si vous changez d’avis et décidez de chercher "recréer", il suffit de supprimer le "h" avec Retour Arrière. Emacs revient alors au premier mot (à partir de la position du curseur au début de la recherche) qui contient "rec". La saisie de "r" passe le curseur au premier mot qui contient "recr". Si vous tapez Entrée ou une touche du curseur, Emacs considère que la recherche est finie et place le curseur à l’emplacement trouvé. La position du curseur au début de la recherche est enregistrée par la marque. Vous pouvez y retourner avec Ctrl+X Ctrl+X. La répétition de cette commande vous ramène au résultat de la recherche. Vous pouvez reprendre la recherche en tapant deux fois Ctrl+S pour passer à l’occurrence suivante. Pour chercher la chaîne vers l’arrière, tapez Ctrl+R à la place de Ctrl+S. Recherche incrémentale c+S
recherche incrémentale vers l’avant
c+R
recherche incrémentale vers l’arrière
a+P
récupère la recherche précédente dans l’historique
a+N
récupère la recherche suivante dans l’historique
c+G
interrompt la recherche
c+X c+X
échange la position de la marque (début de la recherche) et celle du curseur
Pour recommencer une recherche, vous pouvez naviguer dans l’historique après avoir tapé Ctrl+S grâce à Alt+P et Alt+N.
Recherche avec des expressions rationnelles La recherche incrémentale trouve du texte qui correspond exactement à la recherche. Il est cependant souvent pratique de chercher du texte qui correspond à un motif donné. Ctrl+Alt+S et Ctrl+Alt+R permettent de chercher du texte avec des expressions rationnelles, respectivement vers l’avant et vers l’arrière. Si vous saisissez des majuscules dans le motif de recherche, ce dernier devient sensible à la casse. Pour chercher une lettre indépendamment de sa casse dans un motif contenant des majuscules, il faut utiliser une syntaxe du type [Xx] qui recherche x, en minuscules ou en majuscules. Les caractères \< et \> permettent respectivement de restreindre la recherche au début et à la fin du mot. Ainsi, \
renvoie le mot connecte, mais ni déconnecte, ni connecter. Le signe + indique que le mot doit contenir au moins l’un des éléments qui le précèdent. Ainsi, [Ll]es[a-z]+ cherche les mots composés de "les" ou "Les", suivis au moins d’une lettre. Attention, les caractères accentués ne sont pas gérés par cette syntaxe ; il faut les ajouter explicitement.
Linux Livre Page 275 Mardi, 23. septembre 2008 1:05 13
275
EMACS ET XEMACS
Les paires de parenthèses \( et \) n’ont pas d’influence sur la recherche en soi. Les caractères correspondant à ce groupe peuvent néanmoins être rappelés dans le motif de remplacement (voir paragraphe suivant). Recherche avec des expressions rationnelles c+a+S c+a+R
recherche incrémentale par motif vers l’avant recherche incrémentale par motif vers l’avant
Construction du motif de recherche
\< \> ^ $ . .* .+ .? [abc...] [^abc...] \( \) \x
début d’un mot fin d’un mot début d’une ligne fin d’une ligne caractère arbitraire à l’exception d’un retour à la ligne nombre arbitraire (y compris 0) de caractères arbitraires nombre arbitraire (mais au moins un) de caractères arbitraires zéro ou un caractère arbitraire un des caractères entre crochets aucun des caractères entre crochets début d’un atome (voir Chercher et remplacer) fin d’un atome caractère spécial (par exemple \\ pour chercher \ ou \. pour chercher .)
Chercher et remplacer Emacs différencie également, dans le cas du remplacement, la commande normale de la commande étendue avec des motifs de recherche. Lorsqu’on remplace un texte, la lettre initiale des mots est dans la même casse que celle qu’elle remplace lorsque le texte de remplacement est entièrement en minuscules. Les fonctions de recherche et de remplacement ne fonctionnent pas pour les textes de recherche sur plusieurs lignes, car les caractères joker * et + ne prennent pas en compte les passages à la ligne. Recherche et remplacement a+% a+x query_replace-r e \& \1
recherche et remplacement sans motif recherche et remplacement avec motif référence au texte trouvé complet référence au premier atome entre \(...\)
Pour mieux comprendre comment fonctionnent les atomes dans la fonction de recherche/remplacement, le plus simple est de donner un exemple. Si on remplace
Linux-Part 3-CH-18 Page 276 Mercredi, 24. septembre 2008 7:15 07
276
LINUX
fonction(\([^,]*\),\([^,]*\)) par fonction(\2, \1), les paramètres de fonction sont intervertis. fonction(a+b,2*e) devient alors fonction(2*e,a+b). Attention cependant, les paramètres de la fonction ne peuvent pas avoir de virgules. Par exemple, si la chaîne est fonction(f(a,b),g(x,y)), le remplacement échoue. Soyez toujours prudent lorsque vous utilisez cette fonction avec des expressions rationnelles et enregistrez au préalable votre texte. Il est fréquent que le motif de recherche corresponde à un tout autre texte ou à une section plus large que vous ne l’aviez envisagé. Ctrl+X Ctrl+U permet de remédier facilement à une erreur de ce type. Raccourcis clavier pour éditer le texte modifié z ou Y . B ou N q ! c+R c+a+R
remplacer, continuer la recherche remplacer, mais laisser le curseur à son emplacement courant pour contrôler le résultat ; la recherche peut être reprise avec Espace ne pas remplacer, continuer la recherche ne pas remplacer, interrompre la recherche remplacer toutes les occurrences suivantes sans confirmation interrompre temporairement la commande pour effectuer une modification manuelle à l’emplacement du curseur reprendre la commande Remplacer
18.8 Tampon et fenêtre Lorsqu’on travaille sur plusieurs textes, Emacs place chaque texte dans un tampon. Même lorsque vous n’éditez qu’un seul fichier, plusieurs tampons coexistent : un pour le texte (le nom du tampon correspond à celui du fichier), un pour les fenêtres d’aide ou les fenêtres info ouvertes (le nom du tampon est alors *Help* ou *Info*), etc. En plus du concept de tampons, Emacs connaît aussi celui de fenêtres. Une fenêtre est une zone d’Emacs dans laquelle un tampon s’affiche. Généralement, une seule fenêtre occupant tout l’espace est utilisée. Pour certaines commandes (par exemple, affichage de l’aide ou autres informations internes à Emacs), l’écran est divisé horizontalement en deux fenêtres. On peut aussi diviser Emacs en plusieurs morceaux horizontaux ou verticaux. Chaque zone (fenêtre) peut alors afficher un tampon différent. Représenter le même tampon dans deux fenêtres est également une possibilité. Cela est très pratique pour les textes très longs : vous pouvez ainsi éditer deux sections différentes du texte sans devoir déplacer le curseur, ce qui s’avère à la longue très inconfortable. Sous Emacs, la notion de fenêtre n’a rien à voir avec celle de fenêtre X : elle représente une partie d’une fenêtre X. Si vous désirez ouvrir une autre fenêtre X (par exemple, pour travailler confortablement entre deux morceaux de code), vous pouvez la créer dans le menu File, New Frame (GNU Emacs) ou View, New Frame (XEmacs).
Les commandes suivantes s’appliquent à la fenêtre courante (dans laquelle se trouve le curseur). Ces commandes changent le tampon affiché dans la fenêtre.
Linux Livre Page 277 Mardi, 23. septembre 2008 1:05 13
277
EMACS ET XEMACS
Commandes du tampon c+X B e c+X B nom e c+X c+B c+X K nom e
active le dernier tampon utilisé active le tampon indiqué affiche dans une fenêtre la liste de tous les tampons ferme le tampon indiqué ; lorsque le tampon contient des données non enregistrées, demande confirmation
Les commandes suivantes s’appliquent à l’affichage de tampons dans différentes zones de l’écran (fenêtres). La ligne de séparation entre les fenêtres peut être déplacée à la souris. Commandes de fenêtre c+X O c+X 0 c+X 1 c+X 2 c+X 3
passe à la fenêtre suivante ferme la fenêtre courante ferme toutes les fenêtres, à part la fenêtre courante sépare la fenêtre courante en deux zones horizontales sépare la fenêtre courante en deux zones verticales
Le tampon n’est pas modifié lorsqu’on ferme une fenêtre. Il devient invisible, mais reste en mémoire et peut être affiché de nouveau.
18.9 Modes d’édition spécifiques De nombreux modes d’édition modifient les fonctions de l’éditeur et fournissent des commandes spéciales. Emacs s’adapte ainsi de manière optimale à tous les types de texte. En fonction du mode, une coloration syntaxique peut également s’appliquer (mise en évidence des mots clés et des commentaires). Emacs distingue les modes majeurs et mineurs. Un seul mode majeur peut être actif à la fois. Celui-ci est choisi automatiquement en fonction de l’extension du fichier et de ses mots clés. Chaque mode majeur peut être associé à zéro, un ou plusieurs modes mineurs. Il existe une configuration de mode pour chaque fichier modifié dans Emacs (pour chaque tampon). Modifier manuellement un mode n’impacte que le tampon courant. Le passage à un autre mode majeur désactive le mode majeur courant. L’ajout ou la suppression d’un mode mineur ne modifie pas le mode majeur. Les tableaux suivants recensent, sans prétendre à l’exhaustivité, quelques modes majeurs et mineurs d’Emacs. Il en existe de nombreux autres, par exemple pour la multitude de langages de programmation disponibles sous Linux. F1+A+mode+Entrée affiche un aperçu des modes disponibles et F1+M, des informations sur le mode majeur courant.
Linux Livre Page 278 Mardi, 23. septembre 2008 1:05 13
278
LINUX
Quelques modes majeurs importants d’Emacs a+X fundamental-mode e a+X text-mode e a+X c-mode e a+X c++-mode e a+X emacs-lisp-mode e a+X html-mode e a+X sh-mode e
mode standard (configuration de base) mode pour indenter confortablement du texte mode C mode C++ fichiers Emacs Lisp (par exemple ~/.emacs) mode HTML mode d’édition de scripts shell
Quelques modes mineurs importants d’Emacs a+X auto-fill-mode e a+X font-lock-mode e a+X iso-accents-mode e a+X abbrev-mode e
mode texte continu, coupure automatique coloration syntaxique saisie d’accents complètement automatique des abréviations
Emacs tente de reconnaître automatiquement, d’après l’extension du fichier et le contenu des premières lignes, le type de fichier et active le mode correspondant. Si cela ne fonctionne pas, vous devez activer le mode comme indiqué ci-dessus. Lorsque le mode n’est pas automatiquement détecté, vous pouvez ajouter dans la première ligne du fichier un commentaire contenant les caractères *-* nom *-*. nom est le nom du mode souhaité (par exemple *-* html *-*). Mise en évidence de la syntaxe
L’élément le plus remarquable du mode d’édition est la mise en évidence de la syntaxe. Les commandes ou les commentaires sont distingués par des couleurs ou des attributs de police. Le code ou certains documents deviennent ainsi nettement plus lisibles. La mise en évidence de la syntaxe est généralement désactivée pour des raisons de performances. Pour l’activer dans un document, vous devez lancer le mode correspondant Alt+X+font-lock-mode : Emacs analyse le texte entier et marque les éléments qu’il trouve. Il arrive, après une modification du texte, que la reconnaissance de la syntaxe ne fonctionne plus. Pour la remettre d’aplomb, relancez Alt+X+font-lock-mode.
18.10 Unicode Les versions actuelles d’Emacs et de XEmacs sont en principe compatibles avec Unicode, mais en pratique, diverses limitations et problèmes se posent encore. Les deux variantes d’Emacs gèrent UTF-8 ; XEmacs gère de plus UTF-7 et UTF-16. L’édition de fichiers Unicode implique que le paquetage d’extensions Mule (Multilingual Enhancement, améliorations multilingues) soit installé. Les commandes Mule peuvent être lancées sous GNU Emacs avec Options, Mule et sous XEmacs avec Edit, Multilingual. Une prise en charge avancée d’Unicode est disponible dans le paquetage Mule-UCS.
Linux Livre Page 279 Mardi, 23. septembre 2008 1:05 13
279
EMACS ET XEMACS
Les deux versions d’Emacs prévoient de passer à une gestion interne du texte complètement en Unicode, probablement à partir de la version 23. Il se peut donc que quelques-unes des fonctions décrites ici ne fonctionnent plus ou différemment dans les versions futures d’Emacs.
GNU Emacs et Unicode Indiquer explicitement le jeu de caractères
GNU Emacs reconnaît bien souvent le jeu de caractères des fichiers et utilise par défaut celui de la distribution. Il est néanmoins parfois nécessaire d’indiquer explicitement le jeu de caractères. Pour cela, on peut lancer la commande Ctrl+X+Entrée+C+codage. On peut ainsi charger un fichier en UTF-8, comme le montre l’exemple suivant. Les codages disponibles sont accessibles sous forme de liste grâce à Tab. Ctrl+X+Entrée+C+utf-8+Entrée+Ctrl+X Ctrl+F+nom_du_fichier+Entrée Codages fréquemment utilisés dans GNU Emacs iso-8859-n iso-latin-n utf-8 utf-8-dos binary no-conversion raw-text
Barre d’état
fichiers ISO-8859-n fichiers ISO-Latin-n fichiers UTF-8 fichiers UTF-8 avec retours à la ligne DOS/Windows fichiers binaires correspond pour l’instant à Latin-1 correspond pour l’instant à Latin-1
Pour modifier le codage d’un tampon déjà chargé, lancez Ctrl+X+Entrée+F+codage. Le jeu de caractères utilisé est indiqué dans les premiers caractères de la barre d’état. Le tableau suivant donne quelques exemples : Description du codage dans la barre d’état de GNU Emacs -n -u -= -t
Aide
Latin-n UTF-8 fichier binaire ou no-conversion pas de codage (raw-text), correspond pour l’instant à Latin-1
Ctrl+H Maj+C+Entrée indique le codage du tampon courant. Ctrl+U Ctrl+X+= indique le code du caractère sous le curseur.
XEmacs et Unicode Il peut être nécessaire de définir explicitement la prise en charge d’Unicode dans XEmacs en ajoutant ces lignes dans le fichier de configuration : (require ’un-define) (set-coding-priority-list ’(utf-8)) (set-coding-category-system ’utf-8 ’utf-8)
Linux Livre Page 280 Mardi, 23. septembre 2008 1:05 13
280 Indiquer explicitement le jeu de caractères
LINUX
En plus des raccourcis clavier de GNU Emacs, XEmacs dispose également de raccourcis avec Ctrl U, plus confortables. La commande suivante permet d’indiquer explicitement le jeu de caractères à utiliser pour ouvrir un fichier : Ctrl+U Ctrl+X Ctrl+F+fichier+Entrée+codage+Entrée Les codages disponibles s’affichent dans une liste avec Tab. Le tableau suivant donne quelques exemples. XEmacs reconnaît, à la différence d’Emacs, les codages UTF-7 et UTF-16. Codages fréquemment utilisés dans XEmacs iso-8859-n utf-7 utf-8 utf-8-dos utf-8-ws utf-16-le utf-16-be binary no-conversion raw-text
fichiers ISO-8859-n fichiers UTF-7 fichiers UTF-8 fichiers UTF-8 avec retours à la ligne DOS/Windows fichiers UTF-8 avec code de marquage UTF-8 (signature) fichiers UTF-16 usuels (little endian) fichiers UTF-16 (big endian) fichiers binaires correspond pour l’instant à Latin-1 correspond pour l’instant à Latin-1
Pour enregistrer un fichier, XEmacs utilise le même jeu de caractères que celui utilisé lors du chargement. Si vous désirez modifier le jeu de caractères à ce moment, vous pouvez utiliser la commande suivante. Attention cependant, il arrive que le passage d’un codage à un autre ne soit pas pris en charge. Il vaut alors mieux utiliser la commande recode (voir section 15.3). Ctrl+U Ctrl+X Ctrl+W nom_du_fichier Entrée codage Entrée Barre d’état
Le jeu de caractères utilisé est indiqué dans les premiers caractères de la barre d’état. Le tableau suivant donne quelques exemples, qui diffèrent de GNU Emacs : Description du codage dans la barre d’état de XEamcs MIME/Ltn-n 7 u U Binary Raw Noconv
Latin-n UTF-7 UTF-8 UTF-16 fichiers binaires pas de codage, correspond pour l’instant à Latin-1 pas de codage, correspond pour l’instant à Latin-1
Vous trouverez davantage d’informations sur le codage des textes et la gestion de différents jeux de caractères dans le chapitre Mule du manuel Emacs-Lisp. Vous pouvez aussi le lire sur Internet à l’adresse http:// www.xemacs.org/Documentation/21.5/html/lispref_64.html. Le manuel Mule-UCS fournit des informations spécifiques à Unicode à l’adresse http://www.xemacs.org/Documentation/packages/html/mule-ucs.html.
Linux Livre Page 281 Mardi, 23. septembre 2008 1:05 13
EMACS ET XEMACS
281
Saisie de caractères spéciaux étrangers
Saisie de codes en octal Modes de saisie
Les commandes et fonctions décrites ci-dessus devraient vous permettre de charger, d’afficher et d’enregistrer des fichiers Unicode. Vous souhaitez probablement aussi pouvoir les modifier. Mais comment faire lorsque les caractères voulus ne sont pas sur votre clavier ? Ctrl+Q+n permet de saisir n’importe quel caractère du jeu de caractères Latin-1 grâce à son code octal. Il suffit alors de taper celui-ci avec des chiffres. Alt+X set-input-method permet de définir un autre mode de saisie, afin de pouvoir taper des caractères accentués, mais aussi chinois, japonais et coréens. La liste des modes est disponible comme d’habitude grâce à Tab. Ainsi, latin-9-prefix permet de redéfinir le comportement des touches ", ~, ^, /, ’ et `. Par exemple, "O insère le caractère Ö, /a insère un å, /e insère un æ et ~n insère un ñ . Sous GNU Emacs, le mode de saisie peut être défini avec le raccourci Ctrl+X Ctrl+\. Sous XEmacs, il suffit de taper Ctrl+\.
Linux Livre Page 282 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 283 Mardi, 23. septembre 2008 1:05 13
19
bash Ce chapitre traite de bash, bourne again shell. Ce programme permet de lancer des commandes dans une fenêtre de console ou une console texte. bash est également un interpréteur de commandes. Il fournit donc un langage de programmation qui peut être utilisé pour développer des programmes shell (scripts shell). Utiliser un interpréteur de commandes est intéressant pour tous ceux qui souhaitent lancer des programmes non seulement par le biais des menus KDE ou Gnome, mais aussi via le clavier. Cela semble à première vue peu pratique, mais offre de nombreuses possibilités, par exemple la combinaison de plusieurs commandes ou l’enregistrement des résultats d’une commande dans un fichier. Ce chapitre présente l’environnement de bash, la redirection des entrées et des sorties, la communication entre plusieurs processus (tubes, substitution des commandes) et l’utilisation de variables.
19.1 Qu’est-ce qu’un shell ? bash signifie bourne again shell. Il s’agit en fait d’un jeu de mots en anglais : bash est le successeur du Bourne-Shell qui, avec le Korn-Shell et le C-Shell, est l’un des trois shells classiques sous Unix. Les trois interpréteurs de commandes sont disponibles sous Linux ; bash est généralement le shell par défaut. Qu’est-ce qu’un shell ? Il s’agit d’une interface utilisateur entre le système Linux et l’utilisateur. L’interpréteur de commandes permet d’appeler des commandes Linux et des programmes. Il est en ce sens comparable à command.com du monde MS-DOS. Un shell est lancé dans chaque fenêtre de console (console, gnome-terminal, xterm) et dans chaque console texte. Un shell fournit également un langage de programmation pour automatiser des tâches. Certaines commandes permettent d’utiliser des variables dans ces programmes, de poser des questions, de construire des boucles, etc. Les programmes sont alors décrits par le nom de programmes shell, de scripts shell, de fichiers batch, ou simplement de scripts selon les préférences des auteurs. Il existe pour bash une page de manuel très complète (man bash) et un fichier info tout aussi complet (info bash). Certaines distributions fournissent également le fichier bashref.html qui présente le même contenu dans un format plus lisible. Ce fichier est également disponible sur Internet à l’adresse http:// www.gnu.org/software/bash/manual/bash.html. Ce chapitre décrit les versions 3.n de Bash (presque toutes les informations sont également valables pour les version 2.n). Si vous ne savez pas quelle version de Bash vous utilisez, lancez la commande suivante : utilisateur$ echo $BASH_VERSION 3.2.39(1)-release
Linux Livre Page 284 Mardi, 23. septembre 2008 1:05 13
284
LINUX
Passer à un autre shell bash est le shell par défaut de la plupart des distributions Linux. Mais d’autres interpréteurs sont souvent disponibles. Ils se distinguent par une syntaxe légèrement divergente. Le choix de l’interpréteur de commandes est avant tout une question de préférences personnelles ou d’habitude. Nous ne décrirons que bash dans cet ouvrage, avant tout pour des questions de place. Si vous avez installé plusieurs interpréteurs de commandes, vous pouvez passer de l’un à l’autre à tout moment. bash et sh lancent bash. ash lance l’interpréteur des systèmes BSD (idéal pour les ordinateurs avec peu de mémoire vive). ksh et pdksh lancent Korn Shell ; csh et tcsh lancent le C Shell ou sa variante tcsh. exit permet de revenir au dernier interpréteur de commandes actif. Notez que tous les interpréteurs distribués par Linux sont des versions libres. Il peut donc y avoir quelques différences par rapport aux originaux de divers systèmes Unix. Si vous ne savez plus dans quel shell vous vous trouvez, tapez la commande echo $0, qui existe dans tous les interpréteurs et qui a la même signification : elle renvoie le nom de l’interpréteur courant. utilisateur$ echo $0 bash
Changer de shell par défaut Chaque utilisateur connecté a un shell par défaut. Celui-ci est démarré automatiquement lors de la connexion dans une console texte. Sous X, le shell standard est lancé dans toutes les fenêtres de console. Le shell par défaut est enregistré dans /etc/passwd. Il s’agit du dernier élément de la ligne de chaque utilisateur. Pour passer à un autre shell par défaut, lancez la commande chsh. Les interpréteurs de commandes sont enregistrés dans le répertoire /bin. Vous devez donc indiquer /bin/csh si vous désirez lancer csh par défaut. Les interpréteurs disponibles sont listés dans /etc/shells.
19.2 Configuration de base Touches de fonctions de bash
La configuration du clavier de bash est enregistrée dans le fichier /etc/inputrc au niveau global et dans ~/.inputrc pour chaque utilisateur. Si vous ne pouvez pas saisir de caractères spéciaux ou si les touches Suppr, Home et Fin ne fonctionnent pas, vous devez modifier inputrc comme suit (c’est généralement le cas dans les distributions courantes) : set meta-flag on set convert-meta off set output-meta on "\e[1~": beginning-of-line "\e[3~": delete-char "\e[4~": end-of-line
Linux Livre Page 285 Mardi, 23. septembre 2008 1:05 13
285
BASH
Ce fichier définit la fonction readline, utilisée en interne par bash pour traiter les entrées du clavier. Les trois premières lignes assurent que les caractères 8 bits sont reconnus lors de la saisie, qu’ils ne sont pas transformés en un autre caractère et qu’ils s’affichent. Les trois lignes suivantes définissent le comportement des touches Home, Suppr et Fin. Les modifications ne sont prises en compte qu’au démarrage d’un nouveau shell : vous devez vous déconnecter et vous reconnecter à une console texte ou démarrer une nouvelle fenêtre de console sous X. Pour tester, il est plus pratique de lancer simplement la commande bash. Un nouvel interpréteur est alors lancé et vous pouvez revenir à l’ancien shell avec exit. Cela est particulièrement avantageux lorsque la configuration n’a pas le résultat escompté − l’ancien interpréteur a encore les associations de touches précédentes. Sous X, les fonctions du clavier dépendent aussi de la configuration de X (voir Chapitre 22). Invite de commande
Au début de chaque ligne du shell, certains éléments s’affichent en fonction de la distribution : le nom de l’ordinateur, celui de l’utilisateur et/ou le répertoire courant. La chaîne de caractères se termine généralement par $ ou > (pour les utilisateurs réguliers) ou par # (root). Cette chaîne est définie par la variable d’environnement PS1, qui peut être définie dans /etc/ bash.bashrc ou /etc/bashrc. Sans autre configuration, PS1="\s-\v$". Dans ce cas, bash affiche le nom de l’interpréteur et le numéro de version. Vous pouvez modifier PS1 dans ~/.profile. Par exemple, si PS1="\w \$", l’invite de commande est simplement le répertoire courant. À la place ou en plus de PS1, la variable PROMPT_COMMAND peut être définie. Celle-ci contient une commande lancée avant chaque affichage de PS1. Les codes utilisables dans la variable PS1 (par exemple, \w comme raccourci pour le répertoire courant) sont décrits dans la documentation de Bash.
19.3 Saisie de commandes bash est normalement utilisé pour saisir des commandes tout à fait habituelles. Il propose cependant de nombreux raccourcis clavier et touches spéciales. En particulier, vous pouvez naviguer dans l’historique des commandes précédemment lancées avec les flèches de direction Haut et Bas, ce qui peut réduire significativement la quantité de saisie nécessaire. Lorsque vous quittez un interpréteur, les dernières commandes utilisées sont également enregistrées dans le fichier ~/.bash_history et sont donc à nouveau disponibles à la connexion suivante. Vous pouvez modifier les lignes de commande comme dans un éditeur de texte. Vous pouvez ajouter et supprimer des caractères à n’importe quel endroit. L’allocation des touches de bash est configurable pratiquement sans limite. Vous pouvez notamment associer les touches spéciales (curseur et touches fonction) avec les commandes que vous souhaitez. Vous pouvez aussi passer entre les modes emacs et vi. Les commandes de base d’édition sont alors les mêmes que dans l’éditeur choisi. Le mode par défaut est généralement le mode Emacs. Cette section décrit les raccourcis clavier de ce mode.
Linux Livre Page 286 Mardi, 23. septembre 2008 1:05 13
286
LINUX
Complètement des commandes et noms de fichiers Le complètement automatique des commandes et des noms de fichiers aide à minimiser la saisie. Tapez d’abord les premières lettres de la commande ou du nom de fichier, puis appuyez sur Tab. Si les lettres tapées identifient un élément de manière unique, ce nom s’affiche. Lorsque plusieurs noms correspondent, le nom est complété jusqu’à la dernière correspondance des noms. De plus, un signal sonore est souvent émis pour indiquer que le nom du fichier n’est probablement pas complet. Le complètement de noms de fichiers est plus simple à comprendre avec un exemple. utilisateur$ xem Tab com Tab
est, sur mon ordinateur, complété en utilisateur$ xemacs command.tex
xemacs est le nom de mon éditeur préféré et command.tex un fichier LaTeX. Pour étendre xem, bash cherche dans tous les répertoires de la variable PATH le programme correspondant. Pour étendre le nom du fichier, seul le répertoire courant est considéré. Le complètement fonctionne également pour les noms de fichiers préfixés par plusieurs répertoires. utilisateur$ ls /usr/sh Tab
est complété par Bash en utilisateur$ ls /usr/share
S’il n’est pas possible de compléter l’élément de manière unique (signal sonore), vous pouvez taper à nouveau Tab. bash affiche alors dans les lignes qui suivent tous les complètements possibles. Par exemple, utilisateur$ e Tab Tab
liste toutes les commandes qui commencent par e. Vous pouvez alors reprendre votre saisie. Les programmes et les commandes présents dans le répertoire courant ne sont étendus par le complètement de commandes que lorsque le répertoire courant se trouve dans la variable PATH. echo $PATH affiche cette variable. Le répertoire courant est abrégé en . . Dans la plupart des distributions Linux, . ne fait pas partie de la variable PATH pour des raisons de sécurité. Afin de lancer des commandes dans le répertoire courant, il faut donc saisir ./commande. Déterminer le chemin d’un programme
Le complètement automatique de commandes masque l’emplacement réel d’un programme. Pour le savoir, vous avez plusieurs possibilités : • whereis name parcourt tous les répertoires par défaut. • which name parcourt tous les répertoires de la variable PATH et détermine le programme lancé par la commande sans chemin. which est donc intéressant lorsque plusieurs versions d’un programme coexistent dans un système. • type name fonctionne comme which, mais prend également en compte les commandes intégrées à Bash ou définies en tant qu’alias.
Linux Livre Page 287 Mardi, 23. septembre 2008 1:05 13
287
BASH
Extensions spécifiques aux programmes
bash fournit un mécanisme de complètement similaire pour le nom des répertoires personnels (~mi Tab renvoie sur mon ordinateur ~michael/) et les noms de variables ($PAT Tab renvoie $PATH). Lorsqu’on lance la commande latex nom. Tab, seuls les fichiers se terminant par .tex sont proposés. man nom Tab ne renvoie que les éléments pour lesquels il existe une page de manuel. Cela fonctionne pour de nombreuses commandes pour lesquelles le choix de fichiers possibles ou de paramètres est restreint. C’est pratique, car seuls les fichiers ou paramètres cohérents sont pris en compte pour le complètement. La commande bash complete gère cela. De nombreuses distributions disposent d’une configuration énorme pour complete, mais qui n’est installée qu’en partie ou qui doit l’être explicitement (par exemple, sous Fedora avec le paquetage bash-completion). La commande complete sans autre paramètre affiche toutes les règles connues. La configuration se trouve généralement dans l’un des fichiers suivants : • /etc/bash_completion ; • /etc/bash_completion.d/* ; • /etc/profile.d/complete.bash ; • /etc/profile.d/bash_completion.sh. Pour définir des règles de complètement supplémentaires, vous devez comprendre la syntaxe peu courante de complete . help complete et man bash en offrent une courte description. Pour en savoir plus, vous pouvez consulter http://www.caliban.org/bash/index.shtml et http:// www.minet.net/spip/spip.php?article93.
Raccourcis clavier importants Le tableau suivant indique les raccourcis d’un bash configuré en mode Emacs. Si vous travaillez sous X, il se peut que X interfère avec une configuration correcte de bash. Si vous travaillez dans le terminal de Gnome, vous devez aller dans Édition > Raccourcis clavier, puis cocher l’option Désactiver tous les raccourcis clavier des menus. Raccourcis claviers de bash W/Z A/S h j c+A c+E a+B a+F B D a+D c+K
navigue dans l’historique des commandes déplace le curseur vers la droite ou vers la gauche déplace le curseur au début ou à la fin de la ligne déplace le curseur au début ou à la fin de la ligne déplace le curseur d’un mot vers l’arrière ou vers l’avant supprime le caractère précédent ou courant supprime un mot supprime le reste de la ligne
Linux Livre Page 288 Mardi, 23. septembre 2008 1:05 13
288
LINUX
c+Y c+T a+T t c+L c+R a+. c+_
colle le dernier texte supprimé échange les deux caractères précédents échange les deux mots précédents complète la commande ou le nom du fichier vide l’écran cherche une commande lancée précédemment colle le dernier paramètre utilisé annule la dernière modification
Coller le dernier paramètre
Le raccourci Alt+. est plus simple à comprendre avec un exemple. Supposons que vous ayez copié un fichier (cp fichier1 fichier2). Vous voulez maintenant supprimer la copie. Plutôt que de taper rm fichier2, vous pouvez taper rm, puis Alt+.. bash récupère alors automatiquement le dernier paramètre de la commande. Plusieurs appuis sur Alt+. permettent de naviguer dans l’historique des paramètres.
Chercher une commande
Ctrl+R requiert également une explication supplémentaire. Ce raccourci permet de chercher une commande déjà saisie. Tapez, au début de la ligne, Ctrl+R et les premiers caractères de la commande recherchée. bash affiche alors la dernière commande utilisée qui commence par les lettres saisies. Plusieurs appuis sur Ctrl+R permettent de passer entre les différentes commandes correspondantes. Ctrl+S fonctionne comme Ctrl+R, mais passe les commandes dans l’ordre inverse. Entrée, Tab et les touches de direction interrompent la recherche et lancent la commande ou modifient la ligne trouvée. Certaines consoles comprennent Ctrl+S comme l’ordre d’arrêter momentanément l’affichage. Ctrl+Q redémarre cet affichage. Si votre console l’interprète ainsi, vous ne pouvez chercher des commandes qu’avec Ctrl+R. Les raccourcis clavier de bash proviennent de la bibliothèque readline, utilisée par bash pour traiter les entrées. D’autres raccourcis sont indiqués dans man readline.
Alias La commande alias permet d’économiser quelques touches lorsqu’on saisit des commandes. Elle définit des raccourcis. Lors du traitement de la ligne de commande, l’interpréteur vérifie si le premier mot est un alias. Si c’est le cas, il est étendu au texte complet. Les alias pour une combinaison de raccourcis ou des noms de fichiers ne sont pas valides, car bash ne cherche pas à remplacer les autres termes de la ligne de commande. bash reconnaît cependant les cas particuliers où plusieurs programmes sont appelés (tubes, substitution de commande, exécution de plusieurs commandes à la suite avec ;) et remplace les alias par les commandes correspondantes. utilisateur$ alias cdb=’cd ~michael/livrelinux’
Cette commande définit l’abréviation cdb qui me permet de passer rapidement dans un répertoire que j’utilise beaucoup.
Linux Livre Page 289 Mardi, 23. septembre 2008 1:05 13
289
BASH
Les appels à alias peuvent également être imbriqués. Notez aussi que les raccourcis définis ont priorité sur les commandes du même nom. On peut ainsi définir des alias pour éviter l’appel à certaines commandes : utilisateur$ alias more=less
Les alias peuvent être supprimés avec la commande unalias. Ils sont valables jusqu’à ce que l’utilisateur quitte l’interpréteur de commandes (donc, au plus tard, jusqu’à la déconnexion de l’utilisateur). Si vous utilisez fréquemment certains alias, vous pouvez les ajouter dans les fichiers .profile et .bashrc de votre répertoire personnel. Dans de nombreuses distributions, divers alias sont prédéfinis. Par exemple, rm peut être un raccourci vers rm -i. La commande alias sans paramètre envoie la liste de toutes les commandes définies par alias. Les lignes suivantes indiquent à quels endroits sont définis les alias sous Fedora, SUSE et Ubuntu : Fedora /etc/bashrc /etc/profile.d/*.sh ~/.bashrc SUSE /etc/bashrc.bashrc ~/.bashrc Ubuntu /etc/bashrc ~/.bashrc Les scripts shell permettent également des applications comparables à celles des alias. Ils ont l’avantage de comprendre les paramètres ($1, $2, etc.) et d’être plus souples.
19.4 Redirections Lorsqu’on lance des commandes sous bash, il existe trois fichiers spéciaux. Il ne s’agit pas à proprement parler de fichiers en soi, mais de descripteurs de fichiers qui sont gérés par le système d’exploitation comme des fichiers. • Entrée standard. Le programme déjà lancé (par exemple, bash ou une commande déjà lancée) lit ses entrées depuis l’entrée standard. Il s’agit généralement du clavier. • Sortie standard. Toutes les sorties du programme (par exemple, la liste de tous les fichiers par ls) sont dirigées vers la sortie standard. Il s’agit généralement de la fenêtre de terminal ou de la console texte. • Erreur standard. Les messages d’erreur sont généralement envoyés sur l’erreur standard, qui bien souvent s’affiche sur le terminal courant. Tout cela semble évident − si ce n’était pas le cas, où devraient être envoyés les saisies du clavier, les résultats et les messages d’erreur, sinon sur l’écran ? Il faut cependant remarquer que l’on peut rediriger la sortie ou l’entrée standard. Par exemple, supposons que vous ne souhaitiez pas afficher le contenu d’un répertoire, mais l’enregistrer dans un fichier. La sortie standard doit alors être redirigée dans un vrai fichier. Dans bash, on utilise pour cela le caractère > : utilisateur$ ls *.tex > liste
Le fichier liste contient après cette commande une liste de tous les fichiers *.tex du répertoire courant. Ce type de redirection est probablement le plus courant. Il en existe plusieurs
Linux Livre Page 290 Mardi, 23. septembre 2008 1:05 13
290
LINUX
variantes : 2> fichier enregistre tous les messages d’erreur dans le fichier indiqué. >& fichier et &> fichier enregistrent la sortie et les messages d’erreur d’une commande dans le fichier indiqué. L’opérateur double >> signifie que les éléments sont ajoutés à la fin d’un fichier déjà existant (> écrase le fichier). Les entrées sont redirigées avec le caractère < fichier : les commandes qui attendent une saisie au clavier peuvent lire le fichier à la place de cette saisie. On ne peut pas traiter un fichier et écrire le résultat en même temps dans ce même fichier ! sort fichier > fichier ou sort < fichier > fichier n’ont pour seul effet que de vider le fichier !
Tubes Les tubes, ou pipes, sont construits avec le caractère |. La sortie de la première commande est alors fournie comme entrée de la seconde. En pratique, les tubes sont souvent utilisés avec la commande less, afin d’afficher de longs résultats page par page. utilisateur$ ls -l |less
La commande ci-dessus envoie le contenu de la commande dans un tube. La commande less lit dans ce tube et affiche le résultat à l’écran. Les tubes sont également très pratiques pour combiner plusieurs commandes. Par exemple, la commande suivante affiche une liste triée de tous les paquetages RPM installés : utilisateur$ rpm -qa |sort
À la place des tubes, vous pouvez aussi utiliser des fichiers FIFO. FIFO signifie first in, first out (premier entré, premier sorti) et réalise un tube sous la forme d’un fichier nommé. Ces fichiers sont bien plus lourds que les tubes, mais ils rendent clair l’effet exact d’un tube. En pratique, ils sont utilisés pour que deux programmes indépendants puissent communiquer. utilisateur$ mkfifo fifo utilisateur$ ls -l > fifo & utilisateur$ less < fifo
Les trois commandes ci-dessus créent un fichier FIFO. ls est ensuite lancé comme processus d’arrière-plan. Il écrit ses résultats dans le fichier. less lit dans ce fichier les données et les affiche à l’écran. Les tubes ne sont indiqués que lorsque les commandes lisent leurs entrées sur l’entrée standard. Si ce n’est pas le cas, vous pouvez obtenir des résultats similaires grâce à des substitutions de commandes ou grâce à xargs.
Multiplication des sorties avec tee De temps en temps, on souhaite enregistrer la sortie d’un programme dans deux fichiers différents ou afficher la sortie tout en l’enregistrant. Il est dans ce cas nécessaire de dédoubler la sortie. C’est ce que fait la commande tee : utilisateur$ ls |tee liste
Linux Livre Page 291 Mardi, 23. septembre 2008 1:05 13
291
BASH
Cette commande affiche le contenu du répertoire à l’écran et l’enregistre dans le fichier liste. La sortie standard est redirigée vers la commande tee. Par défaut, cette commande affiche la sortie standard sur le terminal et enregistre une copie dans le fichier indiqué. Vous pouvez voir qu’il s’agit effectivement d’une multiplication des sorties si vous redirigez la sortie standard de tee dans un fichier : utilisateur$ ls |tee liste1 > liste2
Il en résulte deux fichiers identiques liste1 et liste2. La commande ci-dessus est un simple exemple. Il peut être plus délicat, mais plus utile, de comprendre l’exemple suivant : utilisateur$ ls -l |tee liste1 |sort -k 5 -n > liste2
liste1 contient le contenu "normal" du répertoire renvoyé et trié par ls. La copie de cette sortie est redirigée vers sort qui la trie selon la taille du fichier (cinquième colonne) et l’enregistre dans le fichier liste2.
Résumé de la syntaxe Redirections d’entrées et de sorties commande > fichier
envoie la sortie standard de commande dans fichier
commande < fichier
lit l’entrée standard de commande dans fichier
commande 2> fichier
enregistre les messages d’erreur de commande dans fichier
commande >& fichier
redirige la sortie standard et les messages d’erreur
commande &> fichier
redirige la sortie standard et les messages d’erreur
commande >> fichier
ajoute la sortie standard à un fichier existant
commande1 | commande 2
envoie la sortie standard de commande1 à l’entrée standard de commande2
commande | tee fichier
affiche la sortie et enregistre le résultat dansfichier
19.5 Lancer des commandes
Tâches de fond
Le plus courant pour lancer une commande est de saisir son nom. Vous pouvez indiquer de nombreux caractères spéciaux, évalués par bash avant qu’il ne lance effectivement la commande. Ainsi, vous pouvez lancer des commandes en arrière-plan, désigner plusieurs noms de fichiers similaires grâce à des caractères joker (par exemple *.tex), passer le résultat d’une commande dans la liste de paramètres d’une autre commande, etc. Le caractère spécial le plus courant et le plus important est &. Lorsqu’il se trouve à la fin d’une ligne de commande, bash démarre le programme concerné en tâche de fond. C’est particulièrement pertinent pour les programmes dont l’exécution est longue, car vous
Linux Livre Page 292 Mardi, 23. septembre 2008 1:05 13
292
LINUX
pouvez immédiatement reprendre la main sur le terminal, sans attendre que la commande soit terminée. utilisateur$ find / -name ’*sh’ > resultat & [1] 334
La commande ci-dessus cherche, dans tout le système de fichiers, des fichiers dont le nom se termine par les lettres "sh". La liste est enregistrée dans le fichier resultat. Comme la commande est lancée en tâche de fond, le terminal rend la main immédiatement. [1] 334 signifie que la tâche de fond a pour identifiant de processus 334. Ce numéro peut être utile pour terminer prématurément la tâche avec kill. Le numéro entre crochets indique le numéro du processus en tâche de fond dans l’interpréteur de commandes courant, ce qui n’a généralement aucun intérêt. Si vous avez oublié le caractère &, vous pouvez passer le programme en tâche de fond rétrospectivement. Pour cela, interrompez le programme avec Ctrl+Z et relancez-le avec bg. Lancer plusieurs commandes
On peut aussi ajouter une commande après le caractère &. Dans ce cas, la première tâche est lancée en arrière-plan et la seconde au premier plan. L’exemple suivant réutilise la commande find décrite ci-dessus, mais on affiche cette fois-ci le contenu du répertoire courant avec ls : utilsateur$ find / -name ’*sh’ > resultat & ls
Si on saisit un point-virgule à la place de &, les commandes sont lancées l’une après l’autre en avant-plan : utilisateur$ ls; date
La commande affiche le contenu du répertoire, puis la date. Pour rediriger l’ensemble de ces informations dans un fichier, les deux commandes doivent être regroupées entre parenthèses. Elles sont alors lancées dans un même shell (sans parenthèses, un nouveau shell est lancé pour chaque commande). utilisateur$ (ls; date) > fichier
fichier contient maintenant la liste de fichiers fournie par ls, ainsi que la date fournie par date. Les opérateurs && et || servent à lancer des commandes en fonction du résultat d’une autre commande. utilisateur$ commande1 && commande2
Cette ligne lance d’abord commande1. Si cette commande fonctionne sans problème (pas d’erreur, code de retour 0), commande2 est lancée. À l’inverse, dans la ligne qui suit, commande2 n’est lancée que si commande1 renvoie une erreur (code de retour différent de 0) : utilisateur$ commande1 || commande2
Linux Livre Page 293 Mardi, 23. septembre 2008 1:05 13
293
BASH
La commande if présente des possibilités supplémentaires pour construire et enchaîner des commandes. Elle n’est cependant réellement utile qu’à ceux qui s’intéressent à la programmation shell. Lancer des commandes commande1; commande 2 commande1 && commande2 commande1 || commande 2 commande & commande1 & commande2 (commande1 ; commande2)
lance les deux commandes l’une après l’autre lance commande2 si commande1 s’est bien déroulée lance commande2 si commande1 ne s’est pas bien déroulée lance commande en tâche de fond lance commande1 en tâche de fond et commande2 en avant-plan lance les deux commandes dans le même shell
19.6 Mécanismes de substitution Le concept de mécanismes de substitution semble abstrait et compliqué. L’idée de base est que les commandes construites avec des caractères spéciaux sont remplacées par leurs résultats. Dans le cas le plus simple, cela signifie que, dans ls *.tex, *.tex est remplacé par la liste des fichiers correspondants. Alors, la commande ls ne reçoit pas *.tex, mais une liste de noms de fichiers réels. Cette section vise à résumer les principaux mécanismes d’interprétation de la ligne de commande : les caractères jokers, les accolades pour résumer des chaînes de caractères, les crochets pour effectuer des calculs, les apostrophes inversées pour la substitution de commandes, etc. Construction de noms de fichiers avec les caractères joker
bash est responsable du fait que, lorsque vous saisissez rm *~, tous les fichiers qui se terminent par ~ sont supprimés. L’interpréteur de commandes parcourt le répertoire courant et remplace *~ par les noms de fichiers correspondants. Les caractères jokers autorisés sont ? (exactement un caractère) et * (nombre arbitraire de caractères arbitraires, y compris 0). La chaîne de caractères [a, b, e-h]* représente des noms de fichiers qui commencent par les lettres a, b, e, f, g ou h. Si l’élément entre crochets est préfixé de ^ ou de !, tous les caractères à l’exception de ceux qui se trouvent entre crochets sont considérés. ~ est également utilisé comme raccourci pour le répertoire personnel. Les fonctions des caractères spéciaux se testent facilement avec echo. La première commande affiche tous les fichiers et dossiers du répertoire racine. La seconde restreint la sortie aux fichiers et dossiers qui commencent par les lettres a à f : utilisateur$ echo /* /bin /boot /dev /etc /home /lib /lost+found /media /misc /mnt /net /opt /proc /root /sbin /selinux /srv /sys /tmp /usr /var utilisateur$ echo /[a-f]* /bin /boot /dev /etc
Linux Livre Page 294 Mardi, 23. septembre 2008 1:05 13
294
LINUX
Comme la construction des noms de fichiers n’est pas gérée par les différents programmes, mais par bash, les résultats peuvent être différents de ce à quoi vous vous attendez. Par exemple, ls * affiche une liste sans fin de fichiers, même lorsque le dossier courant n’en contient que quelques-uns. La commande ls reçoit une liste de fichiers et de répertoires. Mais lorsqu’on lui passe un nom de répertoire, elle affiche le contenu complet de ce répertoire ! Si vous désirez afficher une liste de tous les fichiers et répertoires correspondant à un motif, vous devez passer l’option -d. Celle-ci cache le contenu des répertoires passés en paramètre. Pour savoir comment bash fonctionne en interne, lancez la commande set -x. bash affiche alors, avant de lancer toute commande, comment la commande est évaluée, éventuellement avec les options et tous les noms de fichiers étendus. Construction de chaînes avec {}
bash compose toutes les combinaisons de chaînes possibles avec les chaînes qu’il reçoit entre accolades. partie{1,2a,2b} est donc étendu en partie1 partie2a partie2b. L’extension d’accolades économise de la saisie lorsqu’on accède à des fichiers qui ont des noms similaires. Par rapport à des caractères joker comme ? ou *, les accolades ont l’avantage de construire également des noms de fichiers qui n’existent pas encore, ce qui est pratique, par exemple pour mkdir. utilisateur$ echo {a,b}{1,2,3} a1 a2 a3 b1 b2 b3 utilisateur$ echo {ab,cd}{123,456,789}-{I,II} ab123-I ab123-II ab456-I ab456-II ab789-I ab789-II cd123-I cd123-II cd456-I cd456-II cd789-I cd789-II
Depuis Bash 3.0, la syntaxe {a..b} est valide, où a et b sont des chiffres ou des lettres. Les exemples suivants expliquent le fonctionnement de cette syntaxe : utilisateur$ echo {1..5} 1 2 3 4 5 utilisateur$ echo {z..t} z y x w v u t Calcul d’expressions arithmétiques avec []
Normalement, bash ne sait pas faire de calculs. Par exemple, lorsqu’on saisit 2+3, il faut les entourer de crochets et les préfixer d’un caractère $ pour que l’interpréteur effectue le calcul : utilisateur$ echo $[2+3] 5
Dans les crochets, la plupart des opérateurs de C sont autorisés : +, -, *, et / pour les quatre opérations de base, % pour le modulo, ==, !=, <, <=, >, >= pour la comparaison, << et >> pour les décalages de bits, !, && et || pour les NON, ET et OU logiques, etc. Ces opérateurs sont valables pour des entiers sur 32 bits (nombres entre +/- 2147483648). La commande expr fournit une autre méthode pour effectuer des calculs. Il s’agit d’une commande Linux indépendante de bash. Substitution de commandes
La substitution de commandes permet de passer le résultat d’une commande à l’intérieur d’une autre commande. Cette commande doit être entourée de deux caractères `. $(commande) est une syntaxe alternative. Celle-ci est préférable pour éviter la confusion avec d’autres caractères (par exemple " ou ’) et entrelacer des commandes.
Linux Livre Page 295 Mardi, 23. septembre 2008 1:05 13
295
BASH
La commande considérée est donc remplacée par son résultat. Cette substitution permet d’entrelacer l’appel de plusieurs commandes, où chaque commande renvoie son résultat à d’autres commandes. Les deux commandes identiques suivantes éclaircissent ce mécanisme très puissant : utilisateur$ ls -lgo `find /usr/share -name ’*README*’` utilisateur$ ls -lgo $(find /usr/share -name ’*README*’)
find /usr/share -name ’*README*’ est la première commande exécutée. Son résultat est une liste de tous les fichiers qui contiennent la chaîne README dans leur nom dans le répertoire /usr/share. Cette liste remplace la commande find dans la commande originale. La commande devient donc : utilisateur$ ls -lgo /usr/share/a2ps/ppd/README \ > /usr/share/a2ps/README ...
Cette commande renvoie le résultat suivant : -rw-r--r-- 1 -rw-r--r-- 1 ...
301 15. Feb 12:30 /usr/share/a2ps/ppd/README 1029 15. Feb 12:30 /usr/share/a2ps/README
Il ne serait pas possible d’obtenir ce résultat avec un simple tube. ls n’attend pas une entrée sur l’entrée standard et ignore donc l’information renvoyée par find sur un tube. La commande find /usr/share -name ’*README*’ |ls -l ne fonctionne pas ; elle affiche le résultat du répertoire courant. Il existe cependant une autre solution qui ne fait pas appel à la substitution de commandes. xargs transforme les données de l’entrée standard en paramètres de la commande donnée en argument de xargs. Le résultat précédent s’obtient donc également avec : utilisateur$ find /usr/share -name ’*README*’ | xargs ls -l
xargs présente également un avantage du fait qu’il existe une limite de taille des données à traiter. xargs appelle en effet la commande plusieurs fois et passe les arguments de l’entrée standard en plusieurs étapes. La substitution est limitée par la taille maximale d’une ligne de commande (généralement plusieurs milliers de signes). Les noms de fichiers contenant des espaces posent problèmes. Pour les éviter, passez à find l’option -print0 et à xargs l’option --null. Caractères joker dans des chaînes de caractères
Comme presque tous les caractères, à l’exception des chiffres et des lettres, ont une signification particulière pour bash, il semble impossible de les utiliser dans des chaînes de caractères ou des noms de fichiers. Ce problème est résolu par deux méthodes. Le caractère spécial peut être préfixé d’une barre oblique inverse (\) ou la chaîne complète peut être encadrée par des apostrophes ou des guillemets. La commande suivante permet ainsi de supprimer les fichiers nommés ab* et $cd : utilisateur$ rm ’ab* $cd’
Notez la différence entre les caractères ` et ’ !
Linux Livre Page 296 Mardi, 23. septembre 2008 1:05 13
296
LINUX
Les guillemets ont un comportement différent des apostrophes. Ils sont moins restrictifs et interprètent certains caractères spéciaux, en l’occurrence $, \ et `. Une chaîne de caractères entourée de guillemets verra ainsi les variables du shell qui s’y trouvent étendues : utilisateur$ echo "Ceci est le chemin d’accès : $PATH" Ceci est le chemin d’accès : /usr/local/bin::/usr/bin:/bin:/usr/bin/X11:/usr/ games
Si, à la place des guillemets, on utilise des apostrophes, la chaîne s’affiche sans transformation. Mécanismes de substitution Caractères joker pour les noms de fichiers
?
exactement un caractère arbitraire
*
nombre arbitraire (y compris 0) de caractères arbitraires (mais pas de fichiers .*)
[abc]
un des caractères entre crochets
[a-f]
un des caractères de l’intervalle
[!abc]
aucun des caractères entre crochets
[^abc]
aucun des caractères entre crochets
~
répertoire personnel
.
répertoire courant
..
répertoire parent
Construction de chaînes
ab{1,2,3} a{1..4}
renvoie ab1 ab2 ab3 renvoie a1 a2 a3 a4
Arithmétique
$[3*4]
calcul, renvoie 12
Substitution de commandes
`commande`
remplace la commande par son résultat
$(commande)
remplace la commande par son résultat
Analyse de chaînes de caractères
commande "chaîne" commande ’chaîne’
empêche l’analyse des caractères spéciaux empêche l’analyse de caractères spéciaux (plus restrictif)
Linux Livre Page 297 Mardi, 23. septembre 2008 1:05 13
297
BASH
19.7 Variables Les fonctionnalités de bash et de nombreux autres programmes sont définies par des variables du shell. Elles sont comparables à celles d’autres langages de programmation, à ceci près qu’elles ne peuvent contenir que des chaînes de caractères. On assigne une variable avec l’opérateur d’assignation =. Pour afficher le contenu d’une variable, le plus simple est d’utiliser echo, suivi du nom de la variable préfixé d’un $ : utilisateur$ var=abc utilisateur$ echo $var abc
Lorsque la valeur de la variable contient des espaces ou d’autres caractères spéciaux, il faut l’entourer d’apostrophes ou de guillemets : utilisateur$ var=’abc efg’
On peut concaténer les variables les unes aux autres en les assignant. L’exemple suivant définit une variable a contenant son ancienne valeur, suivie de la chaîne xxx et de son ancienne valeur : utilisateur$ a=3 utilisateur$ a=$a’xxx’$a utilisateur$ echo $a 3xxx3
L’exemple suivant étend la variable PATH (qui contient tous les répertoires parcourus pour chercher un programme à exécuter) du sous-répertoire bin du répertoire personnel. Cela permet de lancer les commandes qui s’y trouvent sans devoir saisir le chemin complet. utilisateur$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin utilisateur$ PATH=$PATH’:/home/michael/bin’ utilisateur$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/michael/bin
Pour effectuer des calculs, utilisez les crochets : utilisateur$ a=3 utilisateur$ a=$[$a*4] utilisateur$ echo $a 12
Lorsque le résultat d’une commande doit être enregistré dans une commande, utilisez la substitution de commandes, comme $(commande). L’exemple suivant enregistre le répertoire courant dans la variable a : utilisateur$ a=$(pwd) utilisateur$ echo $a /home/michael
Linux Livre Page 298 Mardi, 23. septembre 2008 1:05 13
298
LINUX
Le contenu de la variable n’est enregistré que dans l’interpréteur courant. Les variables sont perdues lorsque vous quittez le shell (au plus tard lorsque vous éteignez l’ordinateur). Pour enregistrer certaines variables de manière permanente, ajoutez-les à /etc/profile ou ~/.profile. Ces deux fichiers sont exécutés au démarrage de bash. Pour enregistrer le contenu d’une variable dans un fichier, le plus simple est de rediriger la sortie de echo : utilisateur$ echo $var > fichier
Variables locales et globales (variables d’environnement) Les concepts de variables locales et globales sont empruntés au monde de la programmation. Une variable shell est considérée comme globale lorsqu’elle est relayée lors du démarrage d’une commande ou d’un programme. Les variables globales sont aussi souvent appelées variables d’environnement. Les variables simplement assignées sont des variables locales. Pour définir des variables globales, il faut appeler export ou declare -x. Il existe de nombreuses commandes pour gérer les variables et certaines fonctionnalités sont fournies par plusieurs commandes. Les exemples suivants essaient d’expliquer le comportement de ces commandes : a=3
raccourci pour let, a est une variable locale
declare a=3
donne à la variable locale a la valeur 3 (comme let)
declare -x a=3
donne à la variable globale a la valeur 3 (comme export)
export
affiche toutes les variables globales
export a
fait de a une variable globale
export a=3
donne à la variable globale a la valeur 3
let a=3
donne à la variable locale a la valeur 3
printenv
affiche, comme export, toutes les variables globales
set
affiche toutes les variables (locales et globales)
unset a
supprime la variable a
Si vous définissez des variables pour qu’elles modifient le comportement d’autres commandes, ces variables doivent toujours être globales. Pour qu’elles exploitent le mécanisme de substitution du shell et pour déclarer des variables globales, vous devez assigner les variables avec x=... et les définir comme globales avec export x. L’attribution des variables n’est valable que pour un seul shell. Si vous travaillez dans plusieurs terminaux ou fenêtres de terminal, les shells qui s’y trouvent sont indépendants les uns des autres. Modifier la valeur d’une variable dans un shell n’a aucune influence sur sa valeur dans un autre shell. Vous pouvez définir les variables fréquemment utilisées dans votre fichier .profile, exécuté à chaque démarrage de l’interpréteur de commandes.
Linux Livre Page 299 Mardi, 23. septembre 2008 1:05 13
299
BASH
Variables importantes En principe, vous pouvez définir autant de variables arbitraires que vous le souhaitez. Il est cependant préférable d’éviter les noms de variables prédéfinis, souvent utilisés par bash et d’autres commandes. Modifier ces variables sans contrôle peut entraîner des problèmes dans le traitement de commandes, dans la recherche de fichiers, etc. Cette liste décrit les principales variables de l’interpréteur de commandes dans l’ordre alphabétique. • BASH contient le nom de fichier de bash. • glob_dot_filenames définit l’extension des caractères Joker : si la variable existe (et a une valeur arbitraire), * renvoie également les fichiers qui commencent par un .. unset glob_dot_filenames supprime ce comportement. • HOME contient le chemin du répertoire personnel, par exemple /home/michael. • LOGNAME contient l’identifiant de connexion (nom de l’utilisateur). • HOSTNAME contient le nom d’hôte (nom de l’ordinateur). • MAIL contient le chemin du répertoire où sont enregistrés les courriers électroniques lorsqu’ils arrivent. • MANPATH contient le chemin de tous les répertoires où se trouvent des pages de manuel. • OLDPATH contient le chemin du dernier répertoire actif. • PATH contient une liste de répertoires. Lorsque bash doit lancer une commande, il la cherche dans tous les répertoires énumérés dans PATH. Les répertoires sont séparés par des caractères deux-points. PATH est défini dans /etc/profile. Pour ajouter un répertoire à PATH, modifiez /etc/ profile avec une ligne de cette forme : PATH=$PATH:/opt/kde/bin
Pour des raisons de sécurité (éviter l’exécution de programmes malicieux dans le répertoire courant), PATH ne contient généralement pas le répertoire courant. Si vous souhaitez lancer des programmes du répertoire courant sans avoir à taper ./, ajoutez . à la variable PATH. • PROMPT_COMMAND peut contenir une commande lancée avant chaque affichage de l’invite de commande par bash. • PS1 contient une chaîne de caractères, dont le contenu s’affiche à chaque début de ligne (invite de commande). Cette chaîne comprend, entre autres, les combinaisons suivantes : \t indique l’heure, \d la date, \w le répertoire courant, \W la dernière partie du répertoire courant (soit X11 pour /usr/bin/X11), \u le nom d’utilisateur, \h le nom de l’ordinateur et \$ le caractère d’invite ($ pour un utilisateur standard, # pour root) • PS2 contient la chaîne de caractères affichée aux lignes suivant la première dans les commandes en plusieurs lignes (par exemple, lorsque la première ligne se termine par \). Sa valeur classique est ">". • PWD contient le nom du répertoire courant.
Linux Livre Page 300 Mardi, 23. septembre 2008 1:05 13
300
LINUX
En plus des variables décrites dans cette section, il existe d’innombrables variables d’environnement, définies par le shell ou les différents programmes. Vous pouvez en afficher la liste avec printenv | sort.
19.8 Programmation shell Les programmes shell sont de simples fichiers texte qui contiennent quelques commandes Linux ou bash. Quand on démarre un tel programme, les commandes qui s’y trouvent sont exécutées dans l’ordre. Les programmes shell peuvent avoir des paramètres, qu’ils sont capables d’évaluer. Comme l’exécution de quelques commandes ne permet pas vraiment d’exécuter des tâches complexes, bash dispose d’expressions conditionnelles et de boucles. Il s’agit donc d’un vrai langage de programmation pour lequel vous n’avez besoin ni d’un compilateur, ni de connaissances en C. Les applications typiques des programmes shell sont l’automatisation de suites de commandes fréquentes pour installer des programmes, administrer le système, gérer des sauvegardes, configurer et lancer des programmes, etc. Nous n’entrerons pas ici dans les détails du langage. Les lecteurs intéressés peuvent se reporter à l’excellente traduction du Advanced Bash Scripting Guide (Guide avancé d’écriture des scripts Bash), disponible à l’adresse http://abs.traduc.org/.
Linux Livre Page 301 Mardi, 23. septembre 2008 1:05 13
PARTIE 4 – CONFIGURATION ET ADMINISTRATION DU SYSTÈME
20
Configuration de base Ce chapitre est le premier d’une longue série traitant des différents aspects de la configuration de Linux. Après avoir donné quelques informations introductives, nous y présenterons les fonctions élémentaires suivantes : • la configuration des consoles en mode texte ; • le paramétrage de la date et de l’heure ; • l’administration des utilisateurs ; • l’internationalisation, les jeux de caractères, Unicode ; • une synthèse rapide sur la configuration du matériel ; • les rouages internes de la gestion du matériel ; • les fichiers de journalisation. Les chapitres suivants s’intéresseront à la gestion des paquetages, l’administration des bibliothèques système, la configuration du système graphique (X), l’administration du système de fichiers, l’amorçage (GRUB, Init-V) ainsi que la gestion du noyau et de ses modules.
20.1 Introduction Ce chapitre ainsi que ceux qui suivent vous offrent un aperçu de ce que réalisent, en coulisses, les programmes de configuration de Linux. Vous devez comprendre tous les tenants et aboutissants de la configuration. Par conséquent, vous trouverez dans ce chapitre une grande quantité d’informations de fond sur le fonctionnement du système dans son ensemble. Malheureusement, les différentes distributions se distinguent par de nombreux détails de configuration. Dans cet ouvrage, je tente de décrire les points communs au plus grand nombre de systèmes Linux possible. Il se peut toutefois que votre distribution présente justement quelques détails légèrement différents de ce que vous aurez lu ici. Dans de tels cas, pensez à jeter un coup d’œil à la documentation. Même si cela peut vous sembler d’un certain inconfort, je reste néanmoins persuadé qu’il est préférable de proposer des solutions génériques plutôt qu’un livre sur l’administration de Red Hat, un autre pour l’administration de SUSE, etc. C’est d’autant plus vrai que les distributions individuelles changent d’une version à l’autre. Vous devrez également apprendre, d’une façon ou d’une autre, à consulter et comprendre par vous-même les pages de manuels, d’aide en ligne, qui sont bien souvent disponibles seulement en anglais. Ce livre ne
Linux Livre Page 302 Mardi, 23. septembre 2008 1:05 13
302
Mais où est l’administrateur système ?
Outils de configuration
Administration réseau
LINUX
remplacera pas le manuel d’origine ou des tutoriels pas à pas, mais il vise à vous donner des connaissances fondamentales. Jusqu’à présent, celui que l’on nomme "l’administrateur système" était peut-être une personne anonyme qui vous venait en aide occasionnellement (souvent contrainte et surchargée de travail). Si vous ne travaillez pas dans une grande entreprise, l’administrateur n’est bien souvent qu’un concept abstrait issu d’ouvrages ayant pour devise "si quelque chose ne fonctionne plus, consultez votre administrateur système". Si vous avez installé vous-même Linux sur votre ordinateur, ce point de vue change légèrement : vous êtes vous-même l’administrateur système ! Toutefois, que cette idée ne vous effraie pas : l’administrateur système est tout simplement la personne responsable de la configuration de l’ordinateur. Tant qu’il s’agit de fonctions de base de Linux, ce peut être n’importe qui ! Il est toutefois naturel, de temps à autre, de devoir jeter un œil dans cet ouvrage ou toute autre source d’informations sur Linux. La plupart des distributions proposent des programmes de configuration d’un grand confort que vous pouvez utiliser aussi bien pendant qu’après l’installation : drakconf sous Mandriva, divers programmes dénommés system-xxx sous Red Hat, YaST sous SUSE, etc. En cas de problème de configuration, vous devez toujours faire appel en premier lieu à ces outils ! Ils sont optimisés spécialement pour votre distribution et vous épargnent bien du travail et des difficultés. Outre ces outils de configuration spécifiques à une distribution, il existe également des programmes indépendants de toute distribution. Leur représentant le plus populaire à l’heure actuelle est Webmin. Il présente en outre un avantage de taille : intégralement utilisable via une interface web, il est donc idéal pour l’administration distante. http://www.webmin.com/ Le programme eBox, relativement récent, paraît très prometteur. Il est spécialement conçu pour l’administration des fonctionnalités réseau des systèmes Debian : http://www.ebox-platform.com/ Ces outils posent toutefois un problème : la société ou l’organisation produisant votre distribution ne sont pas directement responsables de leur maintenance. Les outils de configuration indépendants d’une distribution sont donc toujours légèrement en retard par rapport aux nouvelles versions d’une distribution et aux modifications que celle-ci introduit. Jusqu’à présent, je suis parti du principe que vous souhaitiez configurer un ordinateur individuel (l’ordinateur local). Si votre travail d’administrateur consiste à gérer des centaines d’ordinateurs sous Linux, les outils de configuration présentés ci-dessus sont pour le moins inefficaces. À leur place, vous aurez besoin de programmes permettant de configurer de manière centralisée un groupe d’ordinateurs à la fois. Vous pourrez ainsi envisager sereinement d’installer sur tous les postes une nouvelle version d’OpenOffice, d’activer de nouvelles règles de pare-feu sur tous les ordinateurs directement connectés à Internet, etc. La liste ci-après présente un certain nombre de ces outils. Ils se différencient non seulement au niveau des fonctionnalités proposées, mais également et de façon assez marquée par leur coût. Il n’est pas possible d’entrer ici plus en détail sur ces produits, pour des questions de place mais aussi parce que je n’ai aucune expérience pratique de ces programmes. http://www.redhat.com/rhn/ (Red Hat, commercial) ; http://www.novell.com/products/ zenworks/(Novell/SUSE, commercial) ; http://www.informatik.uni-koeln.de/fai/ (installation
Linux Livre Page 303 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
303
automatique pour Debian, open-source) ; http://m23.sourceforge.net/ (administration et configuration de Debian/Ubuntu, open-source) ; https://www.gosa-project.org/ (gestion des comptes utilisateurs pour Debian, open-source). Fichiers de configuration
Les outils de configuration sophistiqués et dotés d’interfaces graphiques agréables n’ont pour but que de vous épargner la modification manuelle des fichiers de configuration. Pour le débutant sous Linux, c’est sans aucun doute très pratique. Mais il existe bon nombre de raisons de se familiariser avec ces fichiers de configuration et, ainsi, avec les rouages internes de Linux : • Les fichiers de configuration peuvent être modifiés avec n’importe quel éditeur de texte, même lorsque vous travaillez avec une console en mode texte ou par ssh à travers un réseau. De nombreux programmes de configuration ne sont en revanche disponibles qu’en mode graphique et uniquement pour une utilisation locale. • Dès que vous avez compris comment configurer une fonctionnalité particulière de Linux, vous pouvez appliquer cette connaissance à quasiment n’importe quelle autre distribution Linux. Un outil de configuration graphique est, en revanche, spécifique à une distribution. • Ce n’est qu’à travers la modification directe des fichiers de configuration que vous pouvez contrôler tous les aspects d’une fonctionnalité système. Les outils de configuration se limitent bien souvent à un nombre restreint de détails (les plus importants). • Les fichiers de configuration peuvent être copiés d’un ordinateur à l’autre. Cela peut vous faire gagner un temps certain lorsque vous devez changer de distribution, procéder à une installation complète de Linux sur un nouvel ordinateur, etc. • Plus vous comprenez comment sont construits les fichiers de configuration et quelles possibilités de contrôle ils offrent, mieux vous comprenez Linux : votre ordinateur vous apparaîtra alors d’autant moins comme une "boîte noire" dont les mécanismes internes vous restent inaccessibles. La plupart des fichiers de configuration de Linux se trouvent dans le répertoire /etc. Vous trouverez par conséquent dans l’index, à la lettre E, une référence de tous les fichiers de configuration présentés dans cet ouvrage. Pour les programmes plus gros, les divers fichiers de configuration devant collaborer sont souvent répartis dans des sous-répertoires individuels. Par exemple, tous les fichiers de configuration du système graphique X se trouvent dans le répertoire /etc/X11. Certains sousrépertoires ont une signification particulière : /etc/default fichiers spécifiques à la distribution (Debian, Ubuntu) /etc/init.d ou /etc/rc.d système InitV (amorçage du système, voir Chapitre 24) /etc/sysconfig fichiers spécifiques à la distribution (Fedora, Red Hat, SUSE) Il est par ailleurs judicieux de conserver une copie de sauvegarde de l’ensemble du répertoire /etc. De cette manière, vous pourrez vérifier rapidement, après chaque modification, l’état d’origine d’un fichier de configuration donné. root# mkdir /etc-backup root# cp -a /etc/* /etc-backup
Linux Livre Page 304 Mardi, 23. septembre 2008 1:05 13
304
LINUX
Lorsque vous modifiez les fichiers de configuration, veillez bien à ce que la dernière ligne se termine elle aussi par un retour chariot (touche Entrée). De nombreux programmes Linux ne traitent pas correctement les fichiers lorsque le caractère de fin de ligne manque sur la dernière ligne. Ceci vaut naturellement aussi lorsque vous travaillez avec plusieurs éditeurs de texte. Rechercher des fichiers de configuration
Si vous ne parvenez pas à trouver un fichier de configuration donné dans votre distribution, plusieurs causes sont envisageables : il est possible que les paquetages logiciels sous-jacents ne soient tout simplement pas installés, ou les fichiers de configuration se trouvent, sur votre distribution, dans un autre répertoire que celui attendu. Pour vos recherches, utilisez les commandes suivantes (voir Annexe B) : locate : find : grep : La commande suivante montre comment vous pouvez rechercher dans le répertoire /etc et dans l’ensemble de ses sous-répertoires tous les fichiers dont le contenu (pas le nom du fichier) présente le mot abcde : root# cd /etc root# find -type f -exec grep -q abcde {} \; -print
Durant la rédaction de cet ouvrage, j’ai régulièrement recherché dans la distribution x où se paramétrait la fonctionnalité y ou l’emplacement du programme z. J’aurais donc pu être amené à taper la commande cidessus des centaines de fois mais, pour gagner du temps et m’épargner cette répétition fastidieuse, j’ai rédigé le miniscript grepall pour prendre en charge cette tâche. Reportez-vous au Chapitre 19 pour les détails relatifs à ce script ainsi qu’une introduction à la programmation Bash. Activer une nouvelle configuration
Dans un certain nombre de programmes, les modifications apportées au fichier de configuration ne prennent effet que lorsque vous relancez le programme ou que vous lui indiquez explicitement de recharger le fichier de configuration. Pour ce faire, vous aurez généralement besoin de l’une ou l’autre des deux commandes suivantes (pour les détails, reportezvous au Chapitre 14) : root# /etc/init.d/nom_de_la_fonction restart root# /etc/init.d/nom_de_la_fonction reload
Contrairement à Windows, il n’est pratiquement jamais nécessaire de redémarrer l’ordinateur. Les exceptions à cette règle ne concernent que des modifications au noyau Linux ainsi que certains paramétrages matériels spécifiques, qui ne peuvent être appliqués qu’au démarrage du système.
20.2 Configuration de la console en mode texte Sur les distributions récentes, Linux lance directement l’environnement graphique et, bien souvent, les débutants ignorent qu’il existe également une console en mode texte. Il se peut toutefois que la configuration du système X soit défectueuse ou que, pour une raison
Linux Livre Page 305 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
305
quelconque, aucun environnement graphique ne soit disponible. Sur de nombreuses installations de serveurs, c’est même un choix délibéré que de renoncer à l’environnement graphique. Pour gérer de tels cas, vous devrez vous être familiarisé avec la console texte (reportez-vous également au Chapitre 12). Le système responsable de paramètres élémentaires (du type configuration du clavier ou police de caractères) dépend de la distribution : il s’agira soit de l’outil très répandu kbd, soit du système plus moderne console. Les sections suivantes commencent par décrire ces deux systèmes avant de s’intéresser plus en détail à tous les autres paramètres (couleurs, prise en charge de la souris) qui en dépendent.
Configuration de kbd (clavier, police) loadkeys
L’outil centralisé pour la gestion du clavier est le programme loadkeys. Celui-ci charge une table de correspondance entre le code clavier et le caractère associé. Pour la langue française, l’installation devrait avoir mis en place la correspondance fr-latin1.map. Une variante en est fr-latin1-nodeadkeys.map. La différence entre ces deux variantes réside dans la gestion des caractères spéciaux `, ’, ~ et ^ : dans la variante standard, ces caractères peuvent servir à générer des caractères étrangers. Lorsque l’on souhaite saisir le caractère lui-même, on doit ensuite appuyer sur la barre d’espace. Avec la variante nodeadkeys, le caractère apparaît immédiatement. loadkeys charge la table de correspondance clavier souhaitée à partir du répertoire /lib/ kbd/keymaps (sur Fedora, Red Hat) ou /usr/share/keymaps (sur SUSE). Les tables compressées sont automatiquement décompressées. root# loadkeys fr-latin1
À l’amorçage du système, la table de correspondance clavier est chargée par le script InitV /etc/rc.d/rc.sysinit (Fedora, Red Hat) ou /etc/init.d/kbd (SUSE). C’est le fichier de configuration /etc/sysconfig/keyboard qui, dans ce cadre, détermine quelle table est effectivement chargée. setfont
setfont charge une police de caractères pour la console. Les fichiers sous-jacents associés se trouvent dans le répertoire /lib/kbd/consolefonts (Fedora, Red Hat) ou dans /usr/share/ kbd/consolefonts (SUSE). Ainsi, par exemple, iso01.16 est une police pour le jeu de caractères ISO-Latin-A, dans laquelle chaque caractère est représenté sur 16 pixels de hauteur. iso01.08 et iso01.14 en sont des variantes présentant respectivement chaque caractère sur 8 et 14 pixels de hauteur. Les caractères sont donc plus petits et vous pouvez ainsi afficher davantage de lignes à la fois. root# setfont iso01.14
La mise en place de la police à l’amorçage du système dépend, comme bien souvent, de la distribution. Dans le cas de Red Hat et de Fedora, /etc/rc.d/rc.sysinit appelle le script /sbin/setsysfont. Celui-ci analyse alors le fichier de configuration /etc/sysconfig/i18n. Par défaut, c’est la police latarcyrheb-sun16 qui est utilisée : outre les caractères latins essentiels, elle comprend également des caractères cyrilliques et hébraïques.
Linux Livre Page 306 Mardi, 23. septembre 2008 1:05 13
306
LINUX
Dans le cas de SUSE, la police de la console est mise en place via /etc/init.d/kbd. Ce script analyse /etc/sysconfig/console. Par défaut, c’est la police lat9w-16.psfu qui est utilisée : outre les caractères Latin-1, elle comprend également le symbole Euro. Fondamentalement, les consoles sont compatibles avec l’Unicode. Néanmoins, le nombre maximal de caractères possibles pour les polices de la console est très restreint (256 ou 512). Par conséquent, les polices de console ne peuvent utiliser qu’une petite partie de l’ensemble des caractères Unicode.
Configuration de la console (clavier, police) Sur certaines distributions, en lieu et place de kbd est utilisé le nouveau paquetage console (console-setup, console-tools, etc.). Son avantage par rapport à kbd est que les paramètres contrôlant la disposition du clavier sont communs avec l’environnement graphique X (voir aussi Chapitre 22). Sur Ubuntu 7.04, le fichier de configuration /etc/default/console-setup commande aussi bien les paramètres du clavier que ceux de la police : # /etc/default/console-setup ... # Police CHARMAP="UTF-8" CODESET="Lat15" FONTFACE="VGA" FONTSIZE="16" # Clavier XKBMODEL="pc105" XKBLAYOUT="fr" XKBVARIANT="" XKBOPTIONS="lv3:ralt_switch"
Ce fichier est analysé par le script /bin/setupcon, lui-même exécuté deux fois lors de l’amorçage du système : une fois par le biais de /etc/init.d/keyboard-setup et une seconde fois par le biais de /etc/init.d/console-setup. Il est intéressant de noter comment sont traitées les quatre variables du clavier : elles sont analysées par le script ckbcomp. Celui-ci génère, à partir des fichiers de clavier X, une table de correspondance pour le clavier qui est alors activée comme avec kbd par le biais de la commande loadkeys.
Configuration de gpm (souris) L’utilisation de la souris n’est envisageable qu’avec le système X Window. Le programme gpm permet toutefois une utilisation restreinte de la souris dans le cadre de la console texte : en particulier, vous pouvez sélectionner du texte avec le bouton gauche de la souris et l’insérer à l’emplacement du curseur à l’aide du bouton central ou du bouton droit. Attention, toutefois, au fait que, dans la plupart des programmes de consoles, vous ne pouvez pas modifier l’emplacement du curseur à l’aide de la souris !
Linux Livre Page 307 Mardi, 23. septembre 2008 1:05 13
307
CONFIGURATION DE BASE
gpm est, en règle générale, lancé par le processus InitV (voir Chapitre 24). La configuration s’effectue, suivant la distribution, dans /etc/gmp.conf ou dans /etc/sysconfig/mouse : le plus souvent, il n’est pas nécessaire de modifier les paramètres par défaut. Pour lancer manuellement le programme, exécutez la commande suivante : root# /etc/init.d/gpm start
20.3 Date et heure La plupart des distributions reposent sur des outils de configuration pour le paramétrage de l’heure et de la date système : Gnome
time-admin
KDE
Centre de configuration > module Administration du système > Date et heure
Debian, Ubuntu
outils Gnome ou KDE
Red Hat / Fedora system-config-date SUSE
module YaST Système > Fuseau horaire
Il est toutefois intéressant de savoir comment l’heure est gérée en interne : l’existence d’un réseau informatique international impose d’utiliser une heure de référence unifiée au niveau mondial, à savoir l’heure GMT. Cet acronyme, correspondant à Greenwich Mean Time (heure du méridien de Greenwich), est la mesure de toute chose (a minima, du temps) sur tous les ordinateurs Unix. On trouve également l’acronyme UTC (Universal Time, Coordinated ou temps universel coordonné) pour représenter cette heure de référence. Lorsque vous enregistrez un fichier, c’est donc non pas l’heure locale courante qui est utilisée, mais une heure calculée à partir de ce standard international. Si vous affichez les détails des fichiers à l’aide de la commande ls -l, l’heure d’enregistrement est convertie pour correspondre au fuseau horaire local de l’ordinateur. Ceci permet donc d’identifier, parmi deux fichiers, lequel est le plus récent : un fichier enregistré à 18 heures à l’heure locale de Munich ou un fichier enregistré à 12 heures 30 à l’heure locale de New York. Paramétrage de l’heure à l’amorçage de l’ordinateur
C’est durant la première phase du processus InitV (voir Chapitre 24) qu’est configurée l’heure. Pour cela, la commande hwclock lit l’heure dans la puce CMOS de votre ordinateur. Celle-ci peut contenir soit l’heure locale, soit l’heure GMT. Si vous utilisez également votre ordinateur sous Windows, il est plus pratique que le CMOS fournisse l’heure locale. Sous Red Hat, Fedora et SUSE, le fichier de configuration /etc/sysconfig/clock contient des informations déterminant si l’heure CMOS est l’heure locale ou l’heure GMT, ainsi que le fuseau horaire dans lequel se trouve votre ordinateur. Sous Debian et Ubuntu, c’est le fichier /etc/default/rcS qui indique si l’heure CMOS est l’heure locale ou l’heure GMT. /etc/timezone indique quant à lui le fuseau horaire.
Linux Livre Page 308 Mardi, 23. septembre 2008 1:05 13
308
LINUX
Plutôt que récupérer l’heure CMOS de votre ordinateur, notoirement imprécise, vous pouvez également obtenir cette information de serveurs de temps beaucoup plus fiables hébergés soit sur Internet, soit sur votre réseau local. Ceci présuppose toutefois l’existence d’une connexion permanente à Internet ou au serveur de temps local : c’est la solution idéale pour un ordinateur qui reste allumé en permanence. Paramétrage du fuseau horaire
Pour que les commandes du type ls, ou le gestionnaire de fichiers de KDE ou Gnome, puissent reconvertir l’heure GMT vers l’heure locale de l’ordinateur et l’afficher, chaque programme doit savoir dans quel fuseau horaire se trouve l’ordinateur. La plupart des programmes Linux utilisent pour cela des fonctions de la bibliothèque glibc. Cette bibliothèque consulte le fichier /etc/localtime. Ce fichier constitue en fait une copie d’un fichier de fuseau horaire hébergé dans le répertoire /usr/share/zoneinfo. /etc/localtime peut également être un lien symbolique vers un fichier de fuseau horaire.
20.4 Utilisateurs et groupes, mots de passe La gestion des utilisateurs consiste en premier lieu à définir quels utilisateurs ont accès à quels fichiers, quels utilisateurs ont le droit d’exécuter quels programmes, quels utilisateurs ont accès à quels composants matériels (fichiers de périphériques), etc. Gérer les utilisateurs et les droits d’accès est toujours obligatoire lorsque plusieurs personnes doivent travailler sur un même ordinateur. Des règles sont indispensables pour déterminer dans quelles conditions un utilisateur peut lire ou modifier les données d’un autre utilisateur. Sous Linux, on gère à cette fin une liste des utilisateurs. De surcroît, chaque utilisateur se voit affecté à au moins un groupe (mais, potentiellement, il peut être affecté à plusieurs). Les groupes servent à autoriser l’accès de plusieurs utilisateurs à des fichiers et programmes communs. Pour que la gestion des droits d’accès fonctionne, avec chaque fichier sont enregistrés un propriétaire, un groupe propriétaire ainsi que des droits d’accès sous forme binaire. Du fait que les programmes sont également des fichiers et que l’accès aux composants matériels s’effectue également souvent par le biais des fichiers de périphériques, ce mécanisme est très générique. Dans ce chapitre, nous n’aborderons que la gestion des utilisateurs et des groupes. Les conséquences de ce système pour la gestion des fichiers et l’exécution des processus sont abordées respectivement aux Chapitres 13 et 14. Vous trouverez donc dans ces chapitres des informations de base sur l’utilisation des droits d’accès binaires enregistrés avec chaque fichier. Vous y trouverez aussi des astuces pour exécuter des programmes système sans pour autant posséder les droits de l’utilisateur root. Programmes de configuration
En principe, vous pouvez en tant qu’utilisateur root assurer la gestion manuelle de vos utilisateurs si vous modifiez directement les fichiers décrits dans cette section. Il est toutefois plus confortable et plus sûr de faire appel pour cela aux outils de gestion des utilisateurs et des groupes fournis avec la plupart des distributions :
Linux Livre Page 309 Mardi, 23. septembre 2008 1:05 13
309
CONFIGURATION DE BASE
Gnome KDE
users-admin (outil de gnome-system-tools) Centre de configuration > module Administration du système > Administration des utilisateurs Debian, Ubuntu outils Gnome ou KDE Red Hat, Fedora system-config-users SUSE module YaST Sécurité > Utilisateurs et Sécurité > Groupes
Commandes
Si vous préférez renoncer au confort des interfaces graphiques ou que vous souhaitiez automatiser la gestion des utilisateurs par le biais de scripts, vous pouvez faire appel aux commandes présentées dans le tableau suivant. Vous trouverez à l’Annexe B une brève référence des options principales. L’exemple suivant montre comment créer un nouvel utilisateur utilisateurtest et lui attribuer un mot de passe. root# useradd -m utilisateurtest root# passwd utilisateurtest New passwd: xxx Re-enter new passwd: xxx
Commandes pour l’administration des utilisateurs et des groupes adduser addgroup chgrp chmod chown chsh delgroup deluser groupadd groupdel groupmod groups id newgrp newusers passwd useradd userdel usermod
crée un nouvel utilisateur (Debian) crée un nouveau groupe (Debian) modifie le groupe propriétaire d’un fichier modifie les droits d’accès binaires à un fichier modifie le propriétaire d’un fichier modifie le shell par défaut d’un utilisateur supprime un groupe (Debian) supprime un utilisateur (Debian) crée un nouveau groupe supprime un groupe modifie les propriétés d’un groupe affiche les groupes auxquels appartient l’utilisateur courant affiche les numéros d’identifiant de l’utilisateur et du groupe courants modifie le groupe auquel appartient l’utilisateur crée plusieurs nouveaux utilisateurs à la fois modifie le mot de passe d’un utilisateur crée un nouvel utilisateur supprime un utilisateur modifie les propriétés d’un utilisateur
Vous remarquerez très certainement que, pour plusieurs tâches, il existe deux commandes différentes (par exemple adduser et useradd). adduser, addgroup, deluser et delgroup sont de
Linux Livre Page 310 Mardi, 23. septembre 2008 1:05 13
310
LINUX
fait des extensions spécifiques à Debian pour les commandes d’origine useradd, groupadd, etc. Sous Debian, Ubuntu et les autres distributions basées sur Debian, ces commandes obéissent aux règles définies dans /etc/adduser.conf et /etc/deluser.conf. Red Hat et Fedora se chargent quant à elles d’ajouter à la confusion ambiante : les commandes adduser, addgroup, deluser et delgroup y sont également disponibles. Toutefois, il s’agit non pas des mêmes commandes que propose Debian, mais de liens vers useradd, groupadd, userdel et groupdel. De ce fait, adduser possède sous Fedora la même syntaxe que useradd (mais une syntaxe différente de celle d’adduser sous Debian !). SUSE/Novell suit également son propre chemin : les commandes adduser/-group et deluser/-group n’y sont pas disponibles. Au lieu de groupadd/-del/-mod et useradd/-del/-mod, on y utilise une implémentation propre à la distribution qui reste compatible avec les commandes des autres distributions sur la plupart (mais non la totalité) des options.
Administration des utilisateurs
/etc/passwd
Sous Linux et, de façon générale, sur tout système de type Unix, il existe trois types d’utilisateurs : • Le superutilisateur (administrateur système ou root). Cet utilisateur possède habituellement le nom root. Tout utilisateur s’identifiant en tant que root (naturellement, il faut pour cela connaître le mot de passe root) possède des droits illimités : il ou elle peut lire, modifier, supprimer tout fichier, exécuter tout programme, etc. Des droits aussi étendus ne sont nécessaires que pour l’administration du système. Pour des raisons de sécurité, aucune autre tâche ne doit être réalisée en tant que root ! • Les utilisateurs usuels. Ces utilisateurs se servent de Linux pour travailler. Ils possèdent un accès illimité à leurs propres fichiers mais des droits d’accès restreints sur le reste du système. Comme identifiant de connexion, on utilise autant que possible le nom de l’utilisateur (par exemple isabelle ou dupont). • Les utilisateurs système pour les démons et services. Enfin, il existe toute une série d’utilisateurs prévus non pas pour le travail interactif sur l’ordinateur mais pour l’exécution de programmes spécifiques. Par exemple, le serveur web Apache est exécuté non pas par l’utilisateur root mais par un utilisateur propre dénommé suivant les distributions apache, wwwrun, httpd ou tout autre nom similaire. Ce fonctionnement permet de tendre vers une sécurité maximale du système. La liste de tous les utilisateurs est enregistrée dans le fichier /etc/passwd. On y trouve, pour chaque utilisateur, les identifiants de connexion, le nom complet, les numéros UID et GID, le répertoire personnel, ainsi que le shell par défaut. Le format suivant est utilisé : NomDUtilisateur:MotDePasse:UID:GID:Nom:RepertoirePersonnel:Shell
Les lignes qui suivent illustrent quelques définitions d’utilisateurs dans le fichier /etc/passwd sous Ubuntu : root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh
Linux Livre Page 311 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
311
mail:x:8:8:mail:/var/mail:/bin/sh ... kofler:x:1000:1000:Michael Kofler,,,:/home/kofler:/bin/bash huber:x:1001:1001:Herbert Huber,,,:/home/huber:/bin/bash
Le nom du fichier, passwd, laisse à penser que les mots de passe y sont également enregistrés. Ce fut le cas par le passé mais, entre-temps, c’est devenu plutôt rare. Au lieu des mots de passe, le fichier /etc/passwd ne contient que le caractère x. Les informations de mot de passe (naturellement chiffrées) sont enregistrées dans le fichier distinct /etc/shadow. Nom d’utilisateur
Le nom d’utilisateur ne devrait être constitué que de lettres minuscules (chiffres et lettres US-ASCII) et ne doit pas dépasser huit caractères. Il est certes envisageable, en principe, d’utiliser des caractères non ASCII et de dépasser huit caractères, mais cela peut engendrer des problèmes avec certains programmes. Pour le nom complet, enregistré séparément, ces restrictions n’ont pas cours.
UID et GID
Le numéro UID (User Identification ou identifiant utilisateur) sert à l’identification interne de l’utilisateur. Le numéro est enregistré comme information supplémentaire avec chaque fichier de manière à expliciter le propriétaire du fichier. Il existe des règles pour l’attribution des numéros UID : root possède toujours l’identifiant UID=0. Pour les services et démons, les numéros UID sont sur la plupart des distributions compris entre 1 et 999 (Red Hat et Fedora, ainsi que quelques autres distributions, utilisent encore les anciennes règles définissant un domaine de valeurs compris entre 1 et 499). Pour les utilisateurs usuels, les numéros d’identifiants sont par conséquent attribués à partir de 1 000 (500 sur Red Hat et Fedora). Le numéro GID (Group Identification ou identifiant de groupe) indique à quel groupe appartient l’utilisateur. La section suivante donnera plus d’informations sur les groupes.
Répertoire personnel
Le répertoire personnel est l’emplacement dans lequel un utilisateur peut enregistrer ses données personnelles. Pour les utilisateurs usuels, ce répertoire correspond habituellement au chemin /home/nom_d_utilisateur. Dans le répertoire personnel sont également enregistrés les paramètres de configuration personnels de l’utilisateur pour divers programmes. Par exemple, le fichier .emacs contient les paramètres de configuration pour l’éditeur Emacs. Du fait que le nom de tels fichiers de configuration commence la plupart du temps par un point, ils sont invisibles. Vous pouvez toutefois les afficher avec la commande ls -la. Pour que les nouveaux utilisateurs disposent immédiatement d’une configuration standard sensée pour les programmes essentiels, on doit, à la création d’un nouvel utilisateur, copier tous les fichiers du répertoire /etc/skel vers le nouveau répertoire personnel. De nombreux programmes de création d’utilisateurs gèrent automatiquement cette étape. Le contenu de /etc/skel représente donc la configuration par défaut pour tout nouvel utilisateur.
Shell
Le shell est un interpréteur grâce auquel l’utilisateur peut, une fois connecté, exécuter des commandes. Du fait que Linux propose différents interpréteurs, vous devez en choisir un et indiquer votre choix dans le fichier passwd. Sous Linux, il s’agit en général du shell bash, que nous décrivons en détail au Chapitre 19. On doit indiquer dans le fichier passwd le chemin complet du shell, par exemple /bin/bash.
Linux Livre Page 312 Mardi, 23. septembre 2008 1:05 13
312
LINUX
Administration des groupes Le but des groupes consiste à autoriser pour plusieurs utilisateurs l’accès conjoint à certains fichiers. Pour ce faire, chaque utilisateur se voit affecté à un groupe primaire (initial group). On peut également l’affecter à autant de groupes supplémentaires (supplementary groups) que souhaité : il est alors membre de plusieurs groupes. Le fichier /etc/group contient la liste de tous les groupes. Les lignes qui suivent donnent un exemple de définitions de groupes dans /etc/group. Le format appliqué est le suivant : NomDeGroupe:MotDePasse:GID:ListeDUtilisateurs
Les lignes qui suivent proviennent du fichier group d’un système Ubuntu : root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:kofler ... dialout:x:20:cupsys,kofler,huber ... users:x:100: admin:x:114:kofler ... kofler:x:1000: huber:x:1001: ...
La correspondance entre utilisateur et groupes s’effectue de deux manières : • Le groupe primaire d’un utilisateur est enregistré dans /etc/passwd. Pour l’utilisateur kofler, le groupe primaire est intitulé kofler (GID 1000 dans le fichier /etc/passwd). • L’appartenance à d’autres groupes est déterminée en renseignant le nom de l’utilisateur dans la dernière colonne du fichier /etc/group. Ainsi, kofler appartient également aux groupes adm, admin et dialout. Ceci permet à l’utilisateur kofler de procéder, sur un système Ubuntu, à des tâches d’administration ainsi que d’établir une connexion Internet. Au niveau des numéros de GID, 0 est réservé à l’utilisateur root tandis que les valeurs de 1 à 99 sont prévues pour les services système. Le GID 100 est normalement réservé au groupe users. Les GID supérieurs à 100 peuvent être utilisés pour vos besoins propres. Correspondance entre utilisateur et groupe primaire
Pour la correspondance entre les utilisateurs et leurs groupes primaires, il existe deux stratégies : • La méthode classique, utilisée depuis de nombreuses années sur Unix/Linux, consiste à affecter tous les utilisateurs normaux au groupe primaire users. SUSE adopte cette stratégie très simple. • Les distributions à base Debian, ainsi que Red Hat et Fedora, reposent sur un autre principe : chaque utilisateur se voit attribuer son propre groupe primaire. Dans ce cas, pour les utilisateurs kofler et huber, il existe deux groupes éponymes. Le groupe users ne joue plus aucun rôle. Cette méthode présente certains avantages dans des conditions particulières, par exemple lorsque plusieurs membres d’un groupe secondaire produisent des fichiers communs.
Linux Livre Page 313 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
313
On ne peut toutefois en tirer parti que dans le cadre d’une administration système appropriée. Sur de nombreuses installations Linux où les groupes d’utilisateurs n’ont, bien souvent, aucun fichier en commun ou qui utilisent pour la gestion de projets communs des outils spécialisés du type CVS (Concurrent Versioning System), le choix du groupe primaire entre le groupe commun users ou les noms d’utilisateurs individuels n’a aucune importance.
Mots de passe Les mots de passe Linux ne peuvent être constitués que de caractères ASCII (aucun caractère étranger n’est autorisé !). Pour des raisons de sécurité, les mots de passe doivent contenir aussi bien des majuscules que des minuscules, ainsi qu’au moins un chiffre. Les mots de passe sont enregistrés sous Linux sous une forme chiffrée qui ne permet aucune reconstruction du mot de passe. L’algorithme DES utilisé pour cela ne prend en compte que huit caractères, ce qui rend pour le moment inutile le choix de mots de passe plus longs. Ce point pourra toutefois faire l’objet de changements à l’avenir. Le code chiffré ne permet au système que de tester si le mot de passe que vous avez saisi correspond à celui enregistré. Tapez man 3 crypt pour obtenir plus de détails sur la procédure de chiffrement. Les programmes permettant de "craquer" (c’est-à-dire de déchiffrer) des mots de passe empruntent le chemin inverse : ils testent tout simplement des millions de mots de passe aléatoires (la plupart du temps des mots du dictionnaire combinés avec des chiffres) pour voir si le mot de passe chiffré correspond. Du fait que beaucoup d’utilisateurs utilisent des mots de passe trop simples et que les ordinateurs deviennent de plus en plus rapides, cette méthode permet fréquemment d’aboutir au résultat souhaité, ce qui est peu rassurant. Pour compliquer quelque peu la vie des pirates cherchant à accéder à votre système, dans les systèmes Linux récents le mot de passe chiffré est enregistré non plus directement dans /etc/passwd mais dans le fichier séparé /etc/shadow. L’avantage est que ce fichier peut être lu seulement par root (/etc/passwd et /etc/group doivent être lisibles pour tous les utilisateurs du système car ils contiennent des informations d’administration de base ; avec /etc/ shadow, il suffit en revanche que le fichier soit accessible seulement aux programmes de vérification et de modification des mots de passe ; un pirate tentant d’accéder à votre ordinateur doit donc tout d’abord obtenir un accès root à votre machine avant de pouvoir lire les mots de passe chiffrés). Pour le fichier shadow, le format suivant est utilisé : NomDUtilisateur:MotDePasseChiffre:d1:d2:d3:d4:d5:d6:reserved
Les lignes qui suivent vous présentent un extrait d’un fichier shadow : root:$1$v/BiTkAA$o7ccAO18X0suOtXXNw3Qm1:13528:0:99999:7::: daemon:*:13479:0:99999:7::: bin:*:13479:0:99999:7::: sys:*:13479:0:99999:7::: ... kofler:$1$mT.09dkO$O69fx51MRPXVcNrgp05GK1:13479:0:99999:7:::
Linux Livre Page 314 Mardi, 23. septembre 2008 1:05 13
314 d1 à d6
LINUX
Les champs d1 à d6 peuvent contenir des indications de temps facultatives : • d1 indique la date de dernière modification du mot de passe (en nombre de jours écoulés depuis le 01/01/1970). • d2 indique dans combien de jours le mot de passe doit être modifié. • d3 indique dans combien de jours au plus tard le mot de passe doit être modifié avant de perdre sa validité (la commande man 5 shadow vous donnera plus de détails sur les champs). • d4 indique combien de jours avant l’expiration du mot de passe l’utilisateur doit être averti. • d5 indique au bout de combien de jours un compte désactivé et sans mot de passe valide doit être définitivement désactivé. • d6 indique depuis quand un compte a été désactivé. Normalement, des valeurs par défaut sont utilisées pour d1 à d3, de manière que le mot de passe puisse être changé à tout moment et reste valide indéfiniment. Toutefois, on peut aussi utiliser d1 à d6 pour restreindre la validité des mots de passe, désactiver automatiquement des comptes utilisateurs en fonction du temps, etc. (par exemple pour gérer les comptes d’étudiants dans une école ou une université). Pour la plupart des utilisateurs système (par exemple, ci-dessus, daemon, bin, sys, etc.), on enregistre au lieu du mot de passe une simple étoile ou un point d’exclamation. Cela signifie qu’il n’y a pas de mot de passe valide et qu’une ouverture de session est donc impossible. Les comptes système restent toutefois utilisables : les programmes lancés initialement avec des droits root peuvent ensuite changer de propriétaire et poursuivre leur exécution en tant que bin, daemon, lp, etc. C’est d’ailleurs précisément le cas pour la plupart des processus système : à l’amorçage, ils sont lancés automatiquement par l’utilisateur root et changent immédiatement d’utilisateur propriétaire pour des raisons de sécurité.
/etc/login.defs
Un grand nombre de paramètres relatifs à l’administration interne des mots de passe et noms d’utilisateurs se trouvent dans le fichier /etc/login.defs. Vous pouvez y configurer le délai d’attente après la saisie d’identifiants erronés, le nombre de tentatives de connexion autorisées, si passwd doit accepter des mots de passe visiblement trop faibles, quels droits d’accès binaires doivent être utilisés pour les répertoires personnels à leur création, etc.
Modifier un mot de passe
Pour changer votre propre mot de passe, exécutez la commande passwd. Celle-ci commence par vous demander votre ancien mot de passe, puis vous êtes invité à deux reprises à saisir un nouveau mot de passe. La saisie n’est pas affichée à l’écran. Le nouveau mot de passe n’est accepté que si les deux saisies correspondent. À partir de ce moment, vous devrez utiliser le nouveau mot de passe pour ouvrir une session. Les mots de passe doivent comprendre de six à huit caractères. Ils peuvent être constitués de majuscules, minuscules, de chiffres ainsi que de signes de ponctuation. passwd réalise quelques tests et rejette les mots de passe visiblement trop simples. Un bon mot de passe doit contenir, outre des minuscules, au moins un chiffre et une majuscule. De surcroît, il ne doit pas s’agir de mots (ou de variations basées sur un mot) que l’on puisse trouver dans le dictionnaire.
Linux Livre Page 315 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
315
Si les utilisateurs normaux ne peuvent modifier que leur propre mot de passe, l’utilisateur root peut également modifier les mots de passe de tout autre utilisateur : root# passwd hofer New password: ****** Re-enter new password: ****** Password changed.
Que faire lorsque vous avez oublié votre mot de passe root ? Dans ce cas, vous devrez amorcer votre système avec une disquette d’installation ou de sauvetage, ou encore avec un CD amorçable (par exemple Knoppix). Créez alors un nouveau répertoire avec mkdir dans la RAM de votre système d’installation ou de sauvetage, et montez-y la partition sur laquelle se trouve votre système Linux : root# mount -t ext3 /dev/xxx /rep
Vous avez maintenant accès au fichier /rep/etc/shadow et vous pouvez y effacer le mot de passe root (tous les caractères compris entre le premier et le second caractère "deux-points") ou le remplacer par le mot de passe chiffré (mais connu) d’un autre utilisateur. L’ouverture d’une session root sans mot de passe n’est possible, de par les paramètres de sécurité de /etc/pam.d/common-auth , que dans une console texte. Vous pouvez alors y saisir un nouveau mot de passe root au prochain amorçage à l’aide de la commande passwd, de manière à pouvoir ensuite travailler en tant qu’utilisateur root dans votre environnement graphique X. Si vous souhaitez empêcher d’autres utilisateurs de modifier le mot de passe root suivant la méthode exposée ici, vous devez désactiver dans le BIOS de votre ordinateur tout médium d’amorçage autre que le premier disque dur (de manière qu’il ne soit pas possible d’amorcer depuis une disquette, un CD ou une clé USB) et sécuriser le BIOS par un mot de passe. Mot de passe que vous ne pouvez toutefois vous permettre d’oublier... Une autre possibilité consiste à chiffrer entièrement la partition système. faillog
Suivant le paramétrage figurant dans /etc/login.defs, toutes les tentatives d’ouverture de session ayant échoué sont enregistrées dans le fichier journal /var/log/faillog. Contrairement à de nombreux autres fichiers journaux, c’est ici un format binaire qui est utilisé. La commande faillog -u nom vous permet de vérifier, pour un utilisateur donné, combien de tentatives de connexion ont échoué depuis sa dernière connexion réussie. faillog -u nom -m max vous permet de fixer un nombre maximal d’échecs autorisés pour les ouvertures de session d’un utilisateur donné. Si ce nombre est dépassé, l’identifiant correspondant est bloqué jusqu’à être à nouveau autorisé par l’utilisateur root par le biais de la commande faillog -u nom -r (le nombre d’échecs enregistrés est alors réinitialisé). Vous pouvez également établir le nombre maximal d’échecs autorisés pour l’ensemble des utilisateurs par le biais de faillog -m max. Toutefois, vous devriez toujours exécuter aussi faillog -u root -m 0 de manière à exclure l’utilisateur root de cette mesure. Dans le cas contraire, vous pourriez ne plus être en mesure de vous connecter en tant qu’administrateur si un autre utilisateur a tenté sans succès de se connecter en tant que root et a atteint la limite fixée.
Linux Livre Page 316 Mardi, 23. septembre 2008 1:05 13
316 Mots de passe de groupe
LINUX
Comme pour les utilisateurs, il est possible de définir des mots de passe pour les groupes (avec la commande gpasswd). Toutefois, s’il est fortement conseillé d’imposer des mots de passe aux utilisateurs, cela devient superflu au niveau des groupes. Leur inconvénient principal est que tous les membres d’un même groupe doivent connaître le mot de passe en question, ce qui alourdit encore l’administration. Si toutefois des mots de passe de groupe doivent être mis en place, ils sont habituellement enregistrés dans le fichier /etc/gshadow. Un utilisateur doit alors fournir le mot de passe de groupe lorsqu’il cherche à changer de groupe actif par le biais de la commande newgrp. Le groupe actif détermine à quel groupe appartiennent de nouveaux fichiers à leur création.
Collaboration entre fichiers de configuration Les paragraphes suivants synthétisent la manière dont les trois fichiers passwd, groups et shadow collaborent. Pour chaque utilisateur, le fichier passwd contient une ligne construite sur le modèle suivant : # une ligne de /etc/passwd kofler:x:1000:1000:Michael Kofler:/home/kofler:/bin/bash
kofler est le nom d’utilisateur. 1000 est l’identifiant d’utilisateur (UID), 1000, l’identifiant de groupe primaire (GID), Michael Kofler, le nom complet (utilisé pour les e-mails, les groupes de news, etc.), /home/kofler, le répertoire personnel de l’utilisateur, et /bin/bash, son shell. L’identifiant UID doit être unique car il joue un rôle important dans la gestion des droits d’accès aux fichiers. La ligne correspondante dans /etc/shadow, contenant les informations de mot de passe, possède l’allure suivante : # une ligne de /etc/shadow kofler:$1$mT.09dkO$O69fx51MRPXVcNrgp05GK1:13479:0:99999:7:::
La chaîne de caractères qui suit kofler: est le mot de passe chiffré. Si l’on renonce à cette chaîne de caractères, le nom d’utilisateur peut être utilisé sans mot de passe. Si, au lieu de la chaîne de caractères, figure un symbole * ou !, l’ouverture de session est verrouillée pour cet utilisateur. Le numéro d’identifiant GID figurant dans /etc/passwd doit correspondre à un groupe figurant dans /etc/group. Pour de nombreuses distributions, chaque utilisateur usuel se voit affecté à un groupe portant le même intitulé que le nom d’utilisateur : # une ligne de /etc/group kofler:x:1000:
PAM (Pluggable Authentication Modules ou modules d’authentification enfichables) La quasi-totalité des distributions Linux utilise les outils PAM (Pluggable Authentication Modules) pour l’authentification effective. PAM teste si les informations de connexion fournies (nom d’utilisateur et mot de passe) sont valides. L’intérêt de PAM réside dans le fait que toutes les commandes critiques pour la sécurité du système (login, passwd, le gestionnaire de session X xdm) n’ont pas forcément besoin de leur code propre pour la vérification des
Linux Livre Page 317 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
317
mots de passe. Au lieu de cela, toutes ces commandes peuvent utiliser PAM. La page suivante propose une documentation complète sur PAM, même si elle date un peu : http://www.kernel.org/pub/linux/libs/pam/ PAM offre le choix entre plusieurs modules d’authentification. Le module standard gère l’authentification en analysant le fichier /etc/shadow que nous avons déjà mentionné (gestion des utilisateurs locaux). Il existe par ailleurs divers modules PAM pour l’authentification des utilisateurs sur un serveur centralisé (voir la section suivante). Configuration
La configuration générale de PAM intervient par le biais de plusieurs fichiers hébergés dans le répertoire /etc/security. Toutefois, pour la plupart des distributions, ces fichiers ne contiennent que des lignes commentées. De surcroît, pour chaque programme accédant à PAM il existe un fichier de configuration propre dans le répertoire /etc/pam.d. C’est par exemple ainsi que fonctionnent les programmes passwd, gdm, kdm, ssd, su et sudo.
Modification des droits d’accès à travers PAM
Sur certaines distributions (par exemple Red Hat, Fedora jusqu’à sa version 7), PAM est configuré de façon que les droits d’accès sur divers fichiers de périphériques soient modifiés automatiquement à l’ouverture de session. C’est utile pour permettre aux utilisateurs usuels d’accéder à des CD et DVD, de communiquer avec leur appareil photo numérique ou avec leur PDA, etc. (Au lieu de cela, SUSE repose sur le démon resmgrd. Debian et Ubuntu affectent les fichiers de périphériques à des groupes, de manière que le contrôle d’accès s’effectue par le biais de l’appartenance à un groupe.) Ce sont les fichiers /etc/security/console.perms.d qui gèrent la modification automatique des droits d’accès à la première ouverture de session. Les modifications restent en place jusqu’à déconnexion de l’utilisateur. À la connexion suivante, de nouvelles modifications sont mises en place. C’est ainsi que l’on évite les conflits lorsque plusieurs utilisateurs sont connectés simultanément au système. Le premier à s’être connecté garde la main jusqu’à sa déconnexion. La structure des fichiers console.perms suit l’exemple fourni par les lignes suivantes. Vous obtiendrez des informations détaillées avec la commande man console.perms. # /etc/security/console.perms.d/50-default.perms (Red Hat, Fedora) <sound>=/dev/dsp* /dev/audio* /dev/midi* /dev/mixer* /dev/sequencer* \ /dev/sound/* /dev/beep /dev/snd/* /dev/adsp* =/dev/cdrom* /dev/cdroms/* /dev/cdwriter* /mnt/cdrom* =/dev/pilot ... 0600 <sound> 0600 root 0600 0660 root.disk 0600 0660 root.uucp ...
Droits d’exécution pour certaines commandes
Une particularité supplémentaire de Red Hat et Fedora est que les utilisateurs usuels s’identifiant dans la console texte peuvent faire appel à de nombreux outils de configuration sans pour autant devoir fournir le mot de passe root. Cela concerne par exemple les commandes halt, poweroff, reboot et setup. Divers fichiers de configuration situés dans le répertoire /etc/security/console.apps gèrent ces droits supplémentaires.
Linux Livre Page 318 Mardi, 23. septembre 2008 1:05 13
318
LINUX
Administration des utilisateurs sur un réseau Si vous avez mis en réseau plusieurs ordinateurs sous Linux et que vous souhaitiez autoriser l’accès concurrent aux fichiers par NFS, vous devez veiller à ce que les numéros d’identifiant UID et GID se correspondent d’un ordinateur à l’autre. Cette contrainte seule se révèle déjà particulièrement complexe à mettre en œuvre sur plusieurs ordinateurs. Si vous souhaitez de surcroît que chaque utilisateur puisse se connecter depuis n’importe quel poste (naturellement toujours avec les mêmes identifiants de connexion, nom d’utilisateur et mot de passe), vous devez alors synchroniser en permanence tous les fichiers /etc/passwd. La charge de travail d’administration est alors incroyablement élevée. Pour éviter cette surcharge, une solution consiste à mettre en place un serveur centralisé pour la gestion des utilisateurs. Pour l’authentification des clients, on a le choix entre un grand nombre de protocoles alternatifs, qu’il ne nous est toutefois pas possible de décrire en détail dans ce livre pour des raisons de place : • NIS (Network Information Service) ; • LDAP (Lightweight Directory Access Protocol) ; • Hesiod ; • Kerberos ; • Samba et la gestion des utilisateurs Windows. De nombreuses distributions permettent de configurer le système dès l’installation pour que les modules de gestion des utilisateurs contactent un serveur d’authentification approprié. Vous pouvez naturellement activer aussi cette fonctionnalité ultérieurement : Debian, Ubuntu
installation et configuration de libpam-smbpass, libpam-ldap, etc.
Red Hat, Fedora
system-config-authentification
SUSE
module YaST Sécurité > Utilisateurs > commande Options pour experts > Authentification
20.5 Configuration des langues, internationalisation, Unicode Dans cette section, nous aborderons deux sujets : • La localisation et la configuration des langues. Il s’agit de la configuration déterminant dans quelle langue sont affichés les messages d’erreur, les menus, les boîtes de dialogue, l’aide, etc. La mise en forme des dates, heures, unités monétaires est également adaptée en conséquence. • Le jeu de caractères. Le jeu de caractères détermine le codage utilisé pour enregistrer les lettres. Le seul jeu de caractères pour lequel il règne une uniformité générale est le code ASCII sur 7 bits. La majorité des jeux de caractères utilise par conséquent le code 65 pour la lettre A. Il y a toutefois des décalages pour les caractères de langues étrangères : par conséquent, la lettre À se verra représentée par un code différent suivant le jeu de caractères en vigueur. Il existe même des jeux de caractères dans lesquels la lettre À
Linux Livre Page 319 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
319
n’intervient absolument pas, de manière à libérer de la place pour d’autres caractères (par exemple pour des lettres cyrilliques ou hébraïques). Dans le contexte de la localisation des programmes, vous vous heurterez fréquemment aux abréviations particulières i18n et l10n : il s’agit de raccourcis pour désigner d’une part l’internationalisation (internationalization : i plus 18 lettres plus n), d’autre part la localisation (localization). Ces abréviations peuvent être utilisées comme mots-clés si vous souhaitez rechercher davantage d’informations sur Internet. La configuration du clavier est décrite pour la console texte dans ce chapitre, pour l’environnement graphique X au Chapitre 22. Vous y trouverez aussi des astuces pour la gestion des caractères étrangers avec X.
Bases sur les jeux de caractères Un jeu de caractères (character set) décrit la correspondance entre des codes numériques et des lettres. Des jeux de caractères connus sont, par exemple, l’ASCII (7 bits), l’ISO-Latin-n (8 bits) et l’Unicode (16 bits). • ASCII. Le jeu de caractères ASCII décrit 127 signes, parmi lesquels les lettres a à z, A à Z, les chiffres 0 à 9 ainsi que divers signes de ponctuation. • ISO-8859, caractères latins. Les jeux de caractères ISO comprennent, outre les 127 caractères ASCII, jusqu’à 128 caractères particuliers supplémentaires pour différentes régions linguistiques. La liste suivante donne la liste des principaux jeux de caractères ISO : ISO-8859-1 = Latin-1 : Europe de l’Ouest ISO-8859-2 = Latin-2 : Europe centrale et de l’Est ISO-8859-3 = Latin-3 : Europe méridionale ISO-8859-4 = Latin-4 : Europe du Nord ISO-8859-9 = Latin-5 : turc ISO-8859-10 = Latin-6 : scandinave (saame, inuktitut, islandais) ISO-8859-13 = Latin-7 : balte ISO-8859-14 = Latin-8 : celtique ISO-8859-15 = Latin-9 (= Latin-0) : identique au Latin-1 mais comprenant en outre le symbole Euro Le terme Latin-0 n’a été utilisé que dans un document de travail et ne constitue donc pas un nom officiel. Il est toutefois fréquemment utilisé dans la pratique. Sous Windows, les jeux de caractères sont désignés par le terme "code pages". Le code page 1252 présente de grandes similitudes avec le Latin-1, sans toutefois lui être absolument identique. • Unicode. Pour limiter la confusion causée par la multiplicité de jeux de caractères sur 8 bits, le jeu de caractères Unicode sur 16 bits (alias ISO-10646) a été introduit. Il permet de coder non seulement tous les caractères spéciaux européens, mais également la majorité des caractères asiatiques. Comme 16 bits sont prévus pour chaque symbole, ce jeu de caractères permet de gérer plus de 65 000 caractères.
Linux Livre Page 320 Mardi, 23. septembre 2008 1:05 13
320
LINUX
Unicode régit uniquement l’affectation d’un code à un caractère et non la façon dont ce code est enregistré. La solution la plus simple, au premier abord, consisterait donc à représenter chaque caractère par deux octets (c’est-à-dire 16 bits). Ce format est désigné par l’appellation UTF-16 (UTF représentant Unicode Transfer Format). Elle présente toutefois deux inconvénients : tout d’abord, elle double l’espace de stockage requis, et ce même lorsque l’on cherche à enregistrer majoritairement des caractères européens ou même uniquement ASCII-US. De plus, l’octet de code 0 intervient à différents emplacements dans les chaînes de caractères Unicode : de nombreux programmes C, serveurs de courrier électronique, etc. considèrent toutefois que l’octet 0 marque la fin d’une chaîne de caractères. Par conséquent, il existe aussi d’autres manières de représenter des textes Unicode. L’alternative de loin la plus populaire à UTF-16 est UTF-8. Dans ce cadre, tous les caractères ASCII-US (7 bits) sont représentés comme précédemment par un unique octet dont le bit de poids fort est 0. Tous les autres caractères Unicode sont représentés par des chaînes d’octets comprenant de 2 à 4 octets. L’inconvénient le plus visible de ce format est l’absence de rapport entre le nombre d’octets et le nombre de caractères du document. Du fait de sa compatibilité croissante avec des programmes existants et d’une série d’autres avantages, UTF-8 s’est établi comme le standard sous Unix/Linux (tandis que, sous Microsoft Windows, c’est fréquemment l’UTF-16 qui est employé). Lorsque l’on parle d’Unicode dans le contexte de Linux, il s’agit implicitement dans la plupart des cas d’Unicode au format UTF-8. Par défaut, le jeu de caractères Unicode UTF-8 est maintenant appliqué dans la quasitotalité des distributions. Effets du jeu de caractères
Le jeu de caractères actif détermine comment sont codés les caractères dans les fichiers de texte mais aussi dans les noms de fichiers. Les systèmes de fichiers de Linux s’adaptent à chaque jeu de caractères. Comme nom de fichier, toute chaîne de caractères se terminant par l’octet 0 est valide. Suivant le jeu de caractères en vigueur, la série et le nombre d’octets utilisés pour représenter un nom de fichier comme àèù.txt pourront toutefois prendre des valeurs très différentes ! Si le jeu de caractères courant est Latin-1, ce nom peut être représenté par 7 octets (plus un huitième pour l’octet 0). Si, en revanche, c’est le jeu de caractères Unicode/UTF-8 qui est utilisé, le nom du fichier comptera 10 octets (car il faut 2 octets pour représenter chacun des caractères à, è et ù). Il existe toute une série de programmes qui fonctionnent indépendamment du jeu de caractères ou gèrent indifféremment différents jeux de caractères : par exemple, les logiciels de courrier électronique ou les navigateurs Internet peuvent tous présenter des e-mails et pages web rédigés dans un jeu de caractères autre que le jeu courant. Pour que cela fonctionne, chaque e-mail ou chaque page web contient des informations sur le jeu de caractères utilisé. Les outils de traitement de texte modernes enregistrent en général le texte dans un jeu de caractères Unicode ou utilisent un code qui leur est propre. Même les éditeurs de texte du type Emacs ou XEmacs sont en mesure de travailler sur des fichiers de texte dans différents encodages et de les enregistrer.
Problèmes liés aux jeux de caractères
Les problèmes surviennent le plus fréquemment lorsque des utilisateurs échangent des fichiers (de texte, entre autres) alors qu’émetteur et destinataire utilisent des jeux de caractères différents. Supposons, par exemple, qu’un utilisateur d’une distribution Linux sous
Linux Livre Page 321 Mardi, 23. septembre 2008 1:05 13
321
CONFIGURATION DE BASE
Unicode compose à l’aide d’un éditeur un fichier de texte comprenant des caractères étrangers. Imaginons maintenant qu’un utilisateur d’une autre distribution Linux, au jeu de caractères Latin, doive travailler sur ce fichier : il constatera, à sa grande surprise, que tous les caractères non ASCII s’afficheront de façon erronée. Il est toutefois simple, dans la plupart des cas, de résoudre de tels problèmes à l’aide des commandes recode ou iconv (voir Chapitre 12).
Police (font)
Les noms des fichiers ne sont pas épargnés par de tels problèmes : si vous enregistrez un fichier sous le nom äöü.txt dans une distribution U (Unicode), que vous redémarriez votre ordinateur sous la distribution L (Latin) et que vous observiez le fichier, vous verrez apparaître une chaîne de caractères qui ressemble davantage à äöÃ.txt. La meilleure solution consiste ici à modifier le jeu de caractères utilisé dans l’une ou l’autre des distributions, de manière qu’un même jeu de caractères soit utilisé dans les deux cas. Si vous envisagez de modifier le jeu de caractères pour les noms d’un grand nombre de fichiers existants, la commande convmv décrite au Chapitre 12 pourra vous être utile. La police ne doit pas être confondue avec le jeu de caractères. Elle détermine la façon dont un caractère donné est affiché à l’écran. Il existe donc pour cela diverses polices (par exemple Arial, Courier, Helvetica, Palatino, pour ne citer que quelques-unes des plus connues). Naturellement, les polices et les jeux de caractères ne sont pas indépendants les uns des autres : avant de pouvoir afficher correctement à l’écran un caractère de code 234, le jeu de caractères utilisé pour encoder ce symbole doit être clair. C’est le jeu de caractères qui répond en effet à la question de savoir quel caractère se cache derrière le code 234. Plusieurs des anciennes polices X étaient limitées à 256 caractères et donc disponibles dans plusieurs versions distinctes pour différents jeux de caractères. Les polices récentes (TrueType, PostScript) peuvent en revanche contenir davantage de caractères et sont en règle générale compatibles avec plusieurs jeux de caractères.
Configurer la localisation et le jeu de caractères Outils de configuration
Suivant les distributions et l’environnement de bureau, vous pouvez utiliser différents outils pour la configuration de la langue. Au niveau du jeu de caractères, c’est quasiment toujours l’UTF-8 qui est utilisé. Seules quelques distributions permettent encore d’utiliser un jeu de caractères sur 8 bits. Sur toutes les distributions, vous devrez quitter X et vous connecter à nouveau pour que les nouveaux paramètres de localisation soient pris en compte après une modification. Gnome se fonde sur la configuration linguistique du système et ne propose par conséquent aucun outil de configuration propre. KDE
Centre de configuration > module Régionalisation et accessibilité > Pays & Langue
Red Hat, Fedora
system-config-language
SUSE
module YaST Système > Langue
Ubuntu
gnome-language-selector
Linux Livre Page 322 Mardi, 23. septembre 2008 1:05 13
322 Fichiers de configuration
Variables LC et LANG
LINUX
Naturellement, l’emplacement où sont enregistrés les paramètres de configuration varie lui aussi suivant les distributions : Debian, Ubuntu /etc/default/local Red Hat, Fedora /etc/sysconfig/i18n SUSE /etc/sysconfig/language De nombreuses distributions tiennent en outre compte de paramètres spécifiques à l’utilisateur, stockés dans ~/.i18n. En interne, la localisation et le jeu de caractères sont contrôlés par des variables d’environnement telles que LC_CTYPE et LANG. La bibliothèque glibc, utilisée dans la quasi-totalité des programmes Linux, se charge d’analyser ces variables. La localisation peut s’effectuer par catégorie. Pour une configuration correcte, vous pourriez par exemple choisir d’utiliser le format français pour les dates et heures, tout en affichant les messages d’erreur en anglais. Le tableau suivant présente les variables essentielles. Variables principales pour la localisation LANG LC_CTYPE LC_COLLATE LC_MESSAGES LC_NUMERIC LC_TIME LC_MONETARY LC_PAPER LC_ALL
détermine la valeur par défaut pour toutes les variables LC dont la valeur n’a pas été établie détermine le jeu de caractères détermine l’ordre de classement détermine la présentation des informations, messages d’erreur, etc. détermine la présentation des nombres détermine la présentation de la date et de l’heure détermine la présentation des unités monétaires détermine le format de papier écrase tous les paramètres LC individuels
Naturellement, tous les programmes ne tiennent pas compte de l’intégralité des catégories (bon nombre d’entre eux ignorent même totalement les variables LC_). Lorsque des catégories individuelles ne sont pas paramétrées, les programmes utilisent comme valeur par défaut C ou POSIX. Cela signifie que les messages d’erreur apparaissent en anglais, les dates et heures au format américain, etc. Plutôt que configurer individuellement chacune des variables exposées ici, vous pouvez tout simplement paramétrer la variable LANG. De cette manière, toutes les variables non définies utilisent la valeur par défaut définie par LANG. Seule la variable LC_COLLATE conserve la valeur par défaut POSIX. Pour la plupart des distributions, la configuration globale de la langue s’effectue par la variable LANG. Plus puissante encore que LANG est la variable LC_ALL. Lorsque cette variable est configurée, sa valeur s’applique à toutes les catégories, indépendamment des valeurs attribuées par ailleurs aux variables LC_ ou LANG. Pour la plupart des programmes, les messages d’erreur et autres textes utilisés se trouvent dans un répertoire dédié pour chaque langue : /usr/share/locale/langue/LC_MESSAGES. KDE utilise en règle générale ses propres répertoires, par exemple /opt/kde3/share/
Linux Livre Page 323 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
323
locale/langue/LC_MESSAGES/. Vous trouverez davantage d’informations de fond sur le sujet de la localisation et de l’internationalisation (Locales and Internationalization) dans la page de manuel de la commande locale ainsi que dans le manuel de la bibliothèque glibc : http://www.gnu.org/software/libc/manual/ Tester la localisation
La manière la plus simple de vérifier les paramètres courants de localisation consiste à utiliser la commande locale. Cette commande analyse également les variables LANG et LC_ALL et renvoie l’ensemble des paramètres résultants. L’exemple suivant montre la configuration de mon ordinateur personnel : utilisateur$ locale LANG=fr_FR.UTF-8 LANGUAGE=fr_FR:fr:en_GB:en LC_CTYPE="fr_FR.UTF-8" LC_NUMERIC="fr_FR.UTF-8" LC_TIME="fr_FR.UTF-8" LC_COLLATE="fr_FR.UTF-8" ... LC_ALL=
Pour vérifier la localisation, vous pouvez également exécuter de façon erronée une commande de votre choix. Le message d’erreur affiché devrait apparaître dans la langue configurée. Lorsque LANG est configuré à la valeur fr_FR, le message d’erreur de la commande mount devrait apparaître comme à l’exemple suivant. Sur certaines distributions, toutefois, seuls les messages d’erreur en langue anglaise sont installés et ce test peut ne pas fonctionner. utilisateur$ mount /xy mount: ne peut repérer /xy dans /etc/fstab ou /etc/mtab env
Si vous souhaitez pouvoir exécuter une commande particulière avec un paramétrage de langue différent du système, sans pour autant devoir modifier la configuration dans son ensemble, l’idéal consiste à utiliser la commande env. Cette commande reçoit une série de variables et les valeurs associées, ainsi que la commande à exécuter en tenant compte des variables de localisation fournies : utilisateur$ env LANG=C mount /xy mount: can’t find /xy in /etc/fstab or /etc/mtab
Si, malgré la modification apportée au paramètre LANG, le message d’erreur apparaît toujours dans la langue du système plutôt qu’en anglais, essayez aussi de changer le paramétrage de la variable LANGUAGE : utilisateur$ env LANG=C LANGUAGE=C mount /xy mount: can’t find /xy in /etc/fstab or /etc/mtab Valeurs possibles pour les paramètres LC/LANG
Vous pouvez obtenir une liste de toutes les valeurs possibles pour les variables de localisation à l’aide de la commande locale -a. La notation habituellement utilisée est de la forme x_y, où x représente la langue sur deux caractères et y représente le pays sur deux caractères. Pour la langue française utilisée en France, vous devrez donc utiliser fr_FR (fr_BE pour la Belgique, fr_CA pour le Canada, etc.). Pour le paramétrage en langue anglaise standard, on peut utiliser l’abréviation C.
Linux Livre Page 324 Mardi, 23. septembre 2008 1:05 13
324
Paquetages de localisation
Paramétrage du jeu de caractères
LINUX
Les versions récentes de la glibc comprennent également le paramétrage exprimé par français ou french. Le fichier /usr/share/locale/locale.alias contient un tableau décrivant toutes les abréviations autorisées pour les noms de localisation complets. L’affichage correct des menus, boîtes de dialogue, messages d’erreur, textes d’aide, etc. dans la langue souhaitée dépend de fait de l’installation des fichiers de localisation nécessaires. Pour des raisons d’espace disque, ce n’est souvent le cas que pour une ou deux langues (par exemple anglais et français). Si vous souhaitez également utiliser votre distribution en langue allemande, vous devrez installer les paquetages supplémentaires correspondants pour Gnome, KDE, OpenOffice, Firefox, etc. Pour SUSE et Ubuntu, les outils de configuration présentés dans l’introduction de ce chapitre pourront vous aider ; pour les autres distributions, toutefois, vous devrez procéder manuellement. Tous les programmes Linux ne sont pas nécessairement traduits dans chaque langue. Il y a des lacunes particulièrement importantes au niveau de la documentation en ligne (pages de manuel, manuels, systèmes d’aide). Lorsque les fichiers de localisation correspondants font défaut, Linux présente la version anglophone du texte. Le jeu de caractères est paramétré conjointement à la localisation. Le jeu de caractères suit le code du pays dont il est séparé par un point, par exemple fr_FR.ISO-8859-1 ou fr_FR.utf8.
20.6 Référence relative au matériel Dans ce livre, il n’y a pas de chapitre dédié au matériel. La configuration correcte des composants matériels est plutôt traitée aux chapitres correspondant à leur usage : ainsi, si vous rencontrez des problèmes avec une carte réseau, le Chapitre 26, qui traite de la configuration réseau, est le bon endroit pour démarrer. Cette section possède donc deux objectifs : tout d’abord, la référence systématique doit faciliter la recherche d’informations supplémentaires sur des composants matériels particuliers. Ensuite, vous trouverez ici des informations concises sur certains sujets relatifs au matériel que nous ne pouvons développer ailleurs dans ce livre. Naturellement, il existe une pléthore de composants matériels que nous ne pouvons, pour diverses raisons, décrire dans cet ouvrage. La raison principale en est que je n’ai pas les possibilités, en matière de tests, dont dispose par exemple un magazine informatique. Renseignez-vous avant l’achat sur la compatibilité de votre nouveau matériel avec Linux ! Il ne suffit pas pour cela de consulter le vendeur : celui-ci n’en a en général aucune idée, voire il vous fournira des informations erronées. Jetez un coup d’œil aux pages habituelles dédiées au matériel avec Linux (voir Chapitre 1). Effectuez des recherches sur http://groups.google.com avec comme mots-clés linux modèle_matériel. Vous trouverez invariablement des messages dans lesquels des utilisateurs de Linux demandent comment configurer le composant XY sous Linux. À cet égard, les magazines orientés Linux sont également et par nature une meilleure source d’informations que les livres, qui ne sont actualisés de manière exhaustive que tous les deux ou trois ans. Fichiers de périphériques
On accède à la plupart des composants matériels par le biais de fichiers de périphériques (devices), par exemple /dev/sda pour un disque dur SATA. Les fichiers de périphériques sont
Linux Livre Page 325 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
325
générés dynamiquement, suivant les besoins, par le système udev. Vous trouverez au Chapitre 13 une liste des principaux fichiers de périphériques Linux. Fichiers /proc et /sys
Pour de nombreux composants, les systèmes de fichiers virtuels des répertoires /proc et /sys fournissent des informations détaillées. Vous trouverez un aperçu de ces fichiers de matériel au Chapitre 23.
Modules noyau
Les pilotes des innombrables composants matériels se trouvent dans les modules du noyau. Une partie de ces modules est chargée à l’amorçage du système, le reste uniquement lorsque le besoin s’en fait sentir. Si le chargement automatique de modules ne fonctionne pas, vous devriez jeter un coup d’œil aux fichiers /etc/modprobe.conf ou /etc/modprobe.conf.d/*. La gestion des modules et le rôle de ces fichiers sont décrits au Chapitre 23. Les messages du noyau indiquent quels événements interviennent au chargement des modules et si le matériel a pu effectivement être initialisé avec succès. Pour consulter ces messages, utilisez la commande dmesg.
Synthèse du matériel
Quelques distributions proposent des outils donnant une synthèse du matériel disponible : citons par exemple lshw (Mandriva, Ubuntu), siga (SUSE) ou encore hwbrowser (Fedora, Red Hat). lshal et son interface graphique Gnome hal-device-manager fournissent des informations similaires.
Processeur et mémoire Ce livre ne traite que les ordinateurs équipés d’un processeur de type Intel Pentium, c’est-àdire, exprimé plus simplement, les processeurs Intel et AMD à 32 et 64 bits. Il existe toutefois des versions de Linux pour les nombreuses autres architectures de processeurs existantes (par exemple pour PowerPC). Le fichier /proc/cpuinfo vous renseigne sur les processeurs utilisés dans votre ordinateur. L’exemple suivant (quelque peu raccourci) provient d’un ordinateur équipé d’un processeur Intel Dual-Core. Linux considère chacun des cœurs comme un processeur indépendant. La ligne model name présente la fréquence d’horloge maximale, tandis que la ligne cpu MHz donne la fréquence d’horloge effectivement utilisée. utilisateur$ cat /proc/cpuinfo processor : 0 model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz cpu MHz : 1596.000 ... processor : 1 model name : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz cpu MHz : 1596.000 ...
Dans le cas des processeurs à fréquence variable, les modules cpufreq sont responsables de la réduction de fréquence destinée à économiser l’énergie. La documentation du noyau
Linux Livre Page 326 Mardi, 23. septembre 2008 1:05 13
326
LINUX
disponible dans le répertoire cpu-freq (voir aussi Chapitre 25) fournit davantage d’informations sur les fondements de ce système. Les fichiers du répertoire : /sys/devices/system/cpu/cpun/cpufreq/
fournissent des renseignements sur l’état courant du système ainsi que sur les possibilités de contrôle. Mémoire (RAM)
La commande free vous renvoie des informations sur la mémoire disponible. Lorsque vous supposez que votre ordinateur rencontre des problèmes matériels au niveau de la RAM (secteurs défectueux, etc.), le programme Memtest86 est une bonne solution pour tester la RAM. Avec de nombreuses distributions, vous pouvez lancer ce programme à l’amorçage du système ou à partir du CD/DVD d’installation. Si toutefois cela ne fonctionne pas chez vous, vous trouverez sur le site web suivant une image ISO vous permettant de graver un CD amorçable : http://www.memtest86.com/
Gestion de l’énergie (ACPI, APM) ACPI
ACPI est l’acronyme d’Advanced Configuration and Power Interface et contrôle toutes les fonctionnalités de gestion de l’énergie des ordinateurs et portables modernes. L’ACPI est pris en charge par Linux depuis le noyau 2.6. Sur les ordinateurs ACPI, les modules noyaux nécessaires sont automatiquement chargés, ce dont vous pouvez vous convaincre avec la commande dmesg | grep -i acpi. Le processus noyau kacpid et le démon ACPI acpid sont lancés simultanément. Ces deux programmes traitent les événements ACPI. acpid est dirigé par le biais du fichier /etc/acpi. La commande acpi -V et les fichiers du répertoire /proc/acpi fournissent des informations sur l’état courant du système ACPI (état de charge des batteries, leur température, etc.). Si l’ACPI cause des problèmes au démarrage, vous trouverez au Chapitre 24 un certain nombre de paramètres du noyau pour désactiver partiellement ou totalement l’ACPI. Vous trouverez par ailleurs davantage d’informations sur l’ACPI et Linux à la page suivante : http://acpi.sourceforge.net/
Suspend
ACPI prend en charge plusieurs modes de veille dans lesquels l’ordinateur consomme peu (mode Standby) ou pas du tout d’énergie (veille prolongée). Sur la plupart des distributions et environnements de bureau, vous pouvez passer l’ordinateur dans le mode de veille souhaité par le biais des commandes du menu, par exemple Démarrer > Déconnexion. Le mode de veille intéressant pour les propriétaires de portables est le mode de veille prolongée, pour lequel on parle également de mode d’hibernation (hibernate), Suspend to Disk ou Software Suspend. Le contenu de la mémoire au moment de la mise en veille est enregistré dans la partition de swap du disque dur et l’ordinateur est mis hors tension. Lorsqu’il est remis sous tension, le contenu de la mémoire est lu depuis le disque dur. L’ensemble des composants matériels doit par ailleurs être réinitialisé. Ce processus est très complexe et demande une collaboration optimale entre le noyau Linux, ses modules et le système ACPI. Il existe à l’heure actuelle plusieurs procédures différentes de réactivation à partir de la veille prolongée. Les détails de mise en œuvre varient fortement d’une distribution à l’autre et d’un matériel à l’autre.
Linux Livre Page 327 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
327
Mon expérience personnelle des différents modes de veille est malheureusement essentiellement négative. Si la tentative de réactivation ne se soldait pas par une erreur, il était fréquent de ne pas pouvoir sortir l’ordinateur de son mode de veille. La seule solution consistait alors à réinitialiser ou à éteindre puis rallumer manuellement l’ordinateur. Sur mon ordinateur portable IBM, le mode de veille a toujours fonctionné de façon satisfaisante avec plusieurs distributions. Testez les fonctions Suspend avec la plus grande prudence. Sécurisez préalablement toutes vos données, exécutez la commande sync et démontez tous les systèmes de fichiers non indispensables de l’arborescence du système ! Lorsque la mise en veille prolongée (suspend to disk) ne fonctionne pas, TuxOnIce (anciennement Suspend2) peut se révéler utile dans certains cas. Cette implémentation de Suspend n’est pas encore parvenue à intégrer le noyau officiel et elle n’est donc pas livrée avec la majeure partie des distributions. Pour ceux que la compilation manuelle des modules requis n’effraie pas, un coup d’œil à la page suivante devrait être intéressant : http://www.tuxonice.net/ APM
APM est l’acronyme d’Advanced Power Management (gestion avancée de l’énergie) et il est le prédécesseur d’ACPI. Vous ne devriez rencontrer APM que sur des ordinateurs et portables relativement anciens. Dans ce cas, le fichier /proc/apm devrait vous renvoyer des informations sur l’état courant de l’alimentation. De surcroît, le processus kapmd est lancé au démarrage de l’ordinateur : il peut effectuer diverses opérations suivant l’état de la batterie (afficher des messages d’avertissement, éteindre l’ordinateur, etc.). Pour le contrôle manuel des fonctionnalités APM, faites appel à la commande apm. Utilisée sans paramètre, la commande renseigne sur l’état d’alimentation courant (branché/débranché, charge de la batterie). apm -S place l’ordinateur en mode Standby. Avec de nombreux ordinateurs, toutefois, cela consiste simplement à éteindre l’écran. Éventuellement, la fréquence du processeur est également diminuée et les disques durs, éteints. Il suffit d’appuyer sur une touche pour sortir l’ordinateur de sa veille. apm -s active le mode Suspend. Si tout fonctionne correctement, l’ordinateur est alors entièrement mis hors tension et n’a donc plus besoin que de très peu d’énergie. Le contenu de la RAM est conservé de manière à pouvoir reprendre le travail immédiatement après la remise sous tension. L’ordinateur peut être remis sous tension par le biais d’une combinaison de touches dépendant du fabricant.
Interfaces et bus système Interfaces série et parallèle
Sous Linux, on accède aux interfaces série et parallèle par le biais des fichiers de périphérique respectifs /dev/ttySn et /dev/lpn. Vous ne devriez pas rencontrer ces interfaces quelque peu anciennes avant d’aborder la configuration d’un modem analogique ou d’une imprimante (voir Chapitres 27 et 30).
IDE, SATA, SCSI
Les disques durs internes, lecteurs de CD ou DVD, ainsi que divers autres espaces de stockage sont en règle générale connectés à l’ordinateur par le biais de bus système IDE, SATA ou SCSI (voir aussi Chapitre 23). Linux communique avec les périphériques SATA et SCSI à travers le système SCSI du noyau. Pour les périphériques IDE, il existe deux variantes :
Linux Livre Page 328 Mardi, 23. septembre 2008 1:05 13
328
LINUX
traditionnellement, on utilise le système IDE conventionnel ; depuis le noyau 2.6.19, on peut également accéder aux périphériques IDE par le biais du système SCSI grâce à l’extension libata. L’utilisation effective de cette extension dépend néanmoins de la distribution. La commande lsscsi ainsi que les fichiers dont la liste est donnée ci-après fournissent des informations sur l’état des systèmes IDE et SCSI ainsi que sur l’ensemble des périphériques qu’ils gèrent : /sys/bus/ide/* /sys/bus/scsi/* /proc/scsi/* USB
Firewire
PCI
L’USB (Universal Serial Bus) est utilisé pour connecter à l’ordinateur divers périphériques externes, allant de la souris au scanner. Les modules noyau USB nécessaires sont chargés automatiquement. Les espaces de stockage USB (disques durs externes, clés USB, lecteurs de CD ou DVD externes) sont gérés comme des périphériques SCSI. Le système de fichiers virtuel usbfs fournit dans le répertoire /proc/usb des informations sur tous les périphériques USB connectés. Vous pourrez obtenir davantage d’informations dans le répertoire /sys/bus/usb. lsusb -v (paquetage lsbutils) renvoie une liste exhaustive de tous les périphériques et interfaces USB. Le bus système Firewire est une solution alternative à l’USB. Firewire est défini par le standard IEEE 1394 et est également connu sous le nom i.Link, émanant de Sony. Firewire est plus rapide que l’USB et sert principalement pour le transfert de données depuis les caméras numériques. Vous trouverez sur le site web suivant des informations détaillées sur le sujet de l’IEEE 1394 et Linux : http://www.linux1394.org/ Les modules nécessaires (en particulier ieee1394) sont automatiquement chargés lorsque vous branchez un périphérique Firewire. Les fichiers du répertoire /sys/bus/ieee1394 fournissent des informations sur les périphériques connectés et sur l’état du système Firewire. L’idéal pour obtenir des informations sur les composants PCI de votre ordinateur consiste à faire appel à la commande lspci. Les fichiers des répertoires /proc/bus/pci/ et /sys/bus/ pci/ contiennent les mêmes informations, mais ils sont notoirement plus difficiles à interpréter. L’exemple qui suit a été, pour des raisons de place, fortement abrégé : root# lspci 00:00.0 Host bridge: Intel Corporation 82P965/G965 Memory Controller Hub (rev 02) 00:01.0 PCI bridge: Intel Corporation 82P965/G965 PCI Express Root Port (rev 02) 00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #4 (rev 02) 00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02) 00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller (rev 02) 00:1f.2 IDE interface: Intel Corporation 82801H (ICH8 Family) 4 port SATA IDE Controller (...) 00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02) 01:00.0 VGA compatible controller: nVidia Corporation G70 [GeForce 7600 GS] (rev a1) 02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 12) 05:03.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (...) ...
Linux Livre Page 329 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
PCMCIA
329
L’abréviation PCMCIA, quasiment impossible à prononcer, est l’acronyme de Personal Computer Memory Card International Association. Les cartes PCMCIA sont des cartes d’extension au format carte bancaire pour les ordinateurs portables, les extensions en question n’étant pas limitées à des cartes mémoire mais couvrant un large éventail d’applications. Pour la plupart des utilisateurs de Linux, les cartes Wi-Fi, UMTS et RNIS sont probablement les plus importantes. Il existe deux types de cartes PCMCIA, à savoir les PC-Cards (anciennes) et les cartes CardBus. La différence entre les deux réside dans la taille du bus utilisé pour le transfert de données entre le portable et la carte (16 bits dans un cas, 32 bits dans l’autre). Linux prend en charge les deux types de cartes. Les cartes PCMCIA compatibles avec Linux sont reconnues par le système Hotplug (voir la section suivante) et initialisées automatiquement. pccardctl renvoie des informations sur les cartes PCMCIA branchées à l’ordinateur. Du fait qu’en interne on accède en règle générale à la carte par le bus PCI, ce programme fait fréquemment appel à lspci. Avec pccardctl, vous pouvez aussi commander diverses fonctionnalités PCMCIA et, par exemple, interrompre l’alimentation électrique des cartes PCMCIA.
Système Hotplug (udev, D-Bus et HAL) Jusqu’à il y a quelques années, la configuration matérielle restait relativement statique. Les modifications ne devenaient nécessaires que lorsque l’ordinateur, au bout de quelques années, devait être mis à jour. Entre-temps, les choses ont bien changé : l’utilisation courante d’un ordinateur implique aujourd’hui de connecter et de déconnecter fréquemment des disques durs, clés USB, cartes d’extension et autres périphériques. Linux doit réagir de façon rapide et aussi automatique que possible à ces modifications de la configuration matérielle. Le système Hotplug prend en charge cette tâche : au cours des dernières années, ses composants ont été entièrement réécrits et réimplémentés. Depuis 2006 environ, le processus suivant est mis en œuvre dans la plupart des distributions : • Le noyau constate une modification du matériel, par exemple parce que l’utilisateur a placé un CD dans son lecteur ou qu’il a branché une clé USB à l’ordinateur. • Le noyau appelle /sbin/hotplug pour charger les modules noyau requis. • Le noyau génère via udev de nouveaux fichiers de périphériques (voir Chapitre 13). • udev annonce les nouveaux périphériques à la couche HAL (Hardware Abstraction Layer) par le biais du processus noyau hald ; la commande lshal renvoie une liste de tous les composants matériels connus par HAL. • hotplug transmet les événements matériels à hald. • hald actualise la configuration du système et informe par le système de communication D-Bus tous les programmes concernés. D-Bus est un système pour la transmission des informations entre programmes. Sur la base de la bibliothèque libdbus, la communication peut s’établir directement entre deux
Linux Livre Page 330 Mardi, 23. septembre 2008 1:05 13
330
LINUX
programmes. Lorsque des informations doivent être échangées entre plusieurs programmes à la fois, le programme dbus-daemon doit être utilisé en guise de "central téléphonique". La page web suivante constitue une introduction au fonctionnement interne de D-Bus : http://dbus.freedesktop.org/doc/dbus-tutorial.html • Sous KDE 3, kioslave media:/ attend les informations en provenance de D-Bus et réagit en conséquence. Sous KDE 4, le nouveau framework Solid est responsable du traitement des informations en provenance de HAL et de D-Bus. Jusqu’à la version 2.20 de Gnome, c’est gnome-volume-manager qui prenait en charge cette tâche (configuration par le biais de gnome-volume-properties). À partir de la version 2.22, c’est Nautilus qui gère les supports de stockage externes conjointement avec PolicyKit ; la configuration s’effectue alors par le biais d’Éditer > Préférences > Volumes. La configuration de HAL, de D-Bus et d’udev (que vous trouverez dans les répertoires /etc/hal, /etc/ dbus-1 et /etc/udev ) est décisive pour le bon fonctionnement de l’ensemble. De par la complexité élevée que cela représente, vous êtes guidé par votre distribution dans la configuration du système Hotplug. Seuls les experts Linux pourront s’en sortir en cas de problème lors d’une modification de la configuration. Vous trouverez plus de détails sur ce sujet sur les pages suivantes : http://webcvs.freedesktop.org/hal/hal/doc/spec/hal-linux26.png?view=co http://qa.mandriva.com/twiki/bin/view/Main/HotPluggableHardwareRemovableMedia http://www.freedesktop.org/wiki/Software/hal http://www.redhat.com/magazine/003jan05/features/hal/ http://www.reactivated.net/writing_udev_rules.html http://www.linuxformat.co.uk/pdfs/LXF66.tut_udev.pdf Le remplacement de HAL par le DeviceKit est envisagé à une date indéterminée, mais pour le moment les paris sont ouverts pour savoir si et quand une distribution franchira le pas : http://lists.freedesktop.org/archives/hal/2008-May/011560.html http://fedoraproject.org/wiki/Features/DeviceKit
Interfaces réseau Pour la configuration des cartes Ethernet, du Wi-Fi, des modems analogiques, des cartes RNIS et des modems ADSL, reportez-vous aux Chapitres 26 et 27. Bluetooth
Bluetooth est une méthode de communication radio entre périphériques matériels. Bluetooth possède une portée plus réduite que le Wi-Fi et est plus généralement utilisé pour les téléphones portables, PDA et autres petits périphériques électroniques. Linux prend également en charge Bluetooth mais, n’ayant pas pu tester moi-même la gestion du matériel Bluetooth, je ne peux que vous renvoyer aux pages suivantes : http://www.bluez.org/ ; http://www.holtmann.org/linux/bluetooth/ (collection de liens).
Linux Livre Page 331 Mardi, 23. septembre 2008 1:05 13
331
CONFIGURATION DE BASE
Interface graphique (X) Les cartes graphiques sont, sous Linux, utilisées par le biais du système X Windows. La configuration de ce système fait l’objet d’un long développement au Chapitre 22. Vous y trouverez également des informations pour optimiser l’utilisation des fonctions 3D de votre carte graphique.
Système audio (ALSA) ALSA
Avant de pouvoir jouer le moindre son sur la carte ou le contrôleur audio de votre ordinateur, le pilote ALSA correspondant à votre matériel doit être chargé dans le noyau et initialisé. ALSA est l’acronyme de Advanced Linux Sound Architecture et c’est le système chargé, depuis le noyau 2.6, du pilotage des cartes son au plus bas niveau. Dans les versions précédentes du noyau, c’était OSS (Open Sound System) qui était utilisé. ALSA propose au besoin une couche de compatibilité avec OSS sous la forme des modules snd-pcm-oss, snd-seq-oss et snd-mixer-oss. Dans le cas des contrôleurs audio pris en charge par le noyau, le module ALSA requis est automatiquement chargé. Le nom de tous les modules ALSA commence par snd. Par conséquent, la commande lsmod | grep snd vous renvoie une synthèse rapide de tous les modules ALSA actifs. L’accès aux diverses fonctionnalités audio se fait par le biais de fichiers situés dans le répertoire /proc/asound. La configuration du système ALSA s’effectue par le biais des fichiers /etc/alsa/*, /etc/ asound.conf ainsi que ~/.asoundrc. Il n’existe aucune nécessité impérieuse de modifier ces fichiers dans le cadre d’une utilisation classique du système audio. La reconnaissance du matériel doit être automatique. Pour les utilisateurs ayant des exigences particulières en matière de son (par exemple les musiciens) ou souhaitant différencier plusieurs cartes audio, le site web et le wiki associé fournissent une documentation complète sur ALSA et sa configuration : http://www.alsa-project.org Lorsque vous éteignez votre ordinateur, le volume sonore est enregistré par un script InitV (voir Chapitre 24) ; au lancement suivant, ce même script restaure la valeur du volume enregistrée.
Outils ALSA
Pour utiliser directement ALSA, vous disposez de diverses commandes (paquetage alsautils) dont nous ne mentionnons ici que les plus importantes : Commandes ALSA alsactl alsamixer aplay arecord
enregistre ou charge tous les paramètres ALSA (volume, etc.) modifie le volume ou le niveau d’entrée de divers canaux audio ALSA lit un fichier audio enregistre un fichier audio
Linux Livre Page 332 Mardi, 23. septembre 2008 1:05 13
332
LINUX
Si les haut-parleurs restent silencieux, c’est bien souvent que l’un des réglages de volume est à 0. Pour une utilisation standard, trois canaux sont importants : le volume principal pilote le niveau sonore du signal global ; le volume PCM indique le niveau sonore des données audio générées par les programmes et insérées dans le signal global (PCM est l’acronyme de Pulse Code Modulation : tous les lecteurs de MP3 utilisent, par exemple, le canal PCM) ; enfin, le volume du CD indique le niveau sonore correspondant aux données provenant directement du lecteur de CD (ce qui présuppose que le lecteur de CD et la carte audio soient connectés par le biais d’un câble !). Bibliothèques audio
De nombreux programmes audio n’utilisent pas directement ALSA mais accèdent à des bibliothèques audio, un serveur de son, etc. Cette couche intermédiaire entre le système ALSA (de bas niveau) et l’application audio effective doit faciliter la programmation, rendre les applications audio utilisables à travers le réseau et assurer la coopération de programmes audio s’exécutant simultanément. Toutefois, le problème est qu’il n’existe pour le moment aucune architecture audio unifiée au-dessus d’ALSA : KDE et Gnome ont chacun suivi leur propre chemin. Les applications audio exigeantes, pour lesquelles les bibliothèques audio existantes sont insuffisantes, doivent réimplémenter elles-mêmes des fonctionnalités audio élémentaires. Il est extrêmement difficile de développer des logiciels audio capables de fonctionner indépendamment de l’environnement de bureau de manière simple. Pour les programmeurs de la société Adobe, les problèmes audio avaient même justifié la lenteur des développements pour le plugin Flash Linux. La liste qui suit présente rapidement quelques-uns des systèmes audio actuellement disponibles : • aRts. aRts est l’acronyme d’analog real-time synthesizer et c’est la base audio pour KDE 2.n et 3.n. aRts est constitué d’une série de modules pour générer, filtrer, fusionner, etc. les données audio. Les programmes KDE accèdent à aRts par le biais du démon aRtsd, qui est lancé en même temps que KDE. Les programmes qui ne sont pas compatibles avec aRts mais qui accèdent directement aux périphériques du module son du noyau sont automatiquement redirigés par le biais de artsdsp. aRts n’est toutefois plus maintenu et il deviendra obsolète avec la sortie de KDE 4. • EsounD. EsounD (Enlightened Sound Daemon) était l’homologue d’aRts pour Gnome. Les programmes compatibles avec EsounD envoient les données audio au démon esd, qui est lancé en même temps que Gnome. EsounD a rencontré un sort comparable à celui d’aRts : il est certes toujours installé avec Gnome pour des raisons de compatibilité, mais la plupart des applications audio reposent maintenant sur GStreamer. • GStreamer. La bibliothèque GStreamer est un framework multimédia complet (audio et vidéo) utilisé par de nombreux programmes Gnome. Grâce à son architecture par greffons, il est très modulaire et peut être facilement étendu. Les codecs de différents formats audio et vidéo sont également disponibles en tant que greffons. Contrairement à aRts et EsounD, GStreamer ne comprend pas de démon pour la gestion du son. C’est ALSA qui est directement responsable de la tâche principale, à savoir gérer plusieurs signaux audio. Vous trouverez davantage d’informations sur la page suivante : http://www.gstreamer.net
Linux Livre Page 333 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
333
• Phonon. Le système audio servant de base à KDE 4 est Phonon. Cette bibliothèque doit proposer une interface de programmation (API) unifiée pour l’utilisation de fonctionnalités audio tout en reposant, comme GStreamer, sur des bibliothèques audio et vidéo existantes. L’objectif ici consiste à ce que les programmeurs d’applications audio et vidéo sous KDE n’aient plus à se préoccuper de la compatibilité avec tous les moteurs imaginables, mais qu’ils puissent accéder à ce moteur par le biais d’une interface centrale. On ne peut pour le moment prévoir jusqu’à quel point cela sera possible sans perte de fonctionnalités et d’efficacité. Le site web Phonon renseigne sur l’état actuel du projet : http://phonon.kde.org/ • PulseAudio. PulseAudio est un serveur de son capable de fonctionner à travers un réseau et proposant des fonctionnalités comparables au programme esd, qu’il remplace sur les distributions récentes (Fedora depuis sa version 8, openSUSE depuis sa version 11, Ubuntu depuis sa version 8.04). Au premier abord, vous ne devriez rien remarquer : tout devrait fonctionner comme à l’accoutumée. Toutefois, en coulisse, il se passe beaucoup de choses : vous pouvez piloter séparément chacun des flux audio à l’aide du programme pavucontrol et les affecter à une carte audio ou à un périphérique de sortie de votre choix. PulseAudio devrait également reconnaître et activer automatiquement tout périphérique audio complémentaire (par exemple des blocs USB). Vous trouverez plus de détails sur ce projet sur les pages suivantes : http://pulseaudio.org/ http://pulseaudio.org/wiki/FAQ http://fedoraproject.org/wiki/Interviews/LennartPoettering À ces systèmes audio s’ajoutent divers programmes contenant eux-mêmes des bibliothèques audio ou multimédias complètes, qu’ils mettent à leur tour à la disposition d’autres programmes. Deux exemples notables en sont le lecteur RealPlayer/HelixPlayer (bibliothèque Helix DNA) et le lecteur xine (bibliothèque xinelib) : https://helixcommunity.org/ ; http://xinehq.de/. Il n’est pas difficile de voir que les incompatibilités entre programmes et bibliothèques audio sont volontaires. Pour les musiciens et les utilisateurs professionnels, il existe des distributions dédiées optimisées pour les programmes audio : http://64studio.com/ ; http://jacklab.net/
Supports de données (disques durs, CD-ROM, DVD, etc.) Sur le partitionnement des disques durs, reportez-vous au Chapitre 2. La lecture des CD audio et DVD vidéo est évoquée au Chapitre 11. La gestion des fichiers et répertoires ainsi que la gravure de CD et DVD sont traitées au Chapitre 13. Enfin, le montage de lecteurs de tout type dans un système (disque dur, CD, DVD, disquette, etc.) fait l’objet du Chapitre 23. Lecteurs de bandes
Les lecteurs de bandes ne sont pas montés dans le système à l’aide de la commande mount vu qu’ils ne contiennent aucun système de fichiers. Ils comprennent uniquement un ou plusieurs fichiers d’archives. Les données sont donc transmises directement depuis ou vers le
Linux Livre Page 334 Mardi, 23. septembre 2008 1:05 13
334
LINUX
lecteur par le biais des commandes tar ou cpio. La commande mt vous permet de faire défiler la bande en avant ou en arrière (voir à ce sujet la référence des commandes mt et tar). Suivant le lecteur, vous devrez utiliser l’un ou l’autre des périphériques suivants. Périphériques lecteurs de bandes /dev/st* /dev/nst* /dev/ht* /dev/nht*
lecteur SCSI, la bande est rembobinée automatiquement lecteur SCSI, la bande n’est pas rembobinée automatiquement lecteur IDE, la bande est rembobinée automatiquement lecteur IDE, la bande n’est pas rembobinée automatiquement
Clavier et souris Pour la disposition de clavier US, reportez-vous au Chapitre 2 ; les particularités des souris sous Linux sont évoquées au Chapitre 3. La configuration du clavier et de la souris dans la console texte est présentée un peu plus haut dans ce chapitre. La configuration du clavier et de la souris avec X ainsi que la gestion des caractères spéciaux dans X sont traitées au Chapitre 22.
Imprimante, appareil photo numérique, scanner Pour l’utilisation des appareils photo numériques et des scanners, reportez-vous au Chapitre 9. Pour la configuration et l’utilisation des imprimantes, consultez le Chapitre 30.
20.7 Fichiers journaux et messages du noyau Linux enregistre de très nombreuses informations dans les fichiers journaux : messages du noyau, connexion et déconnexion des utilisateurs, opérations réseau, etc. Les fichiers journaux se trouvent généralement dans le répertoire /var/log, parfois aussi dans /var/adm/ log. Ils fournissent une aide précieuse lorsque vous recherchez des erreurs de configuration ou des failles de sécurité. Deux démons (processus qui s’exécutent en tâche de fond) sont responsables de la journalisation. Tous deux sont lancés dans le cadre du processus InitV : • klogd gère les messages du noyau. Ceux-ci sont enregistrés dans une mémoire tampon d’où ils peuvent être lus grâce à dmesg. • syslogd enregistre dans les fichiers journaux les messages des divers programmes ou en redirige le contenu vers la console. Le démon syslogd est lancé par le processus Init-V et piloté par le fichier /etc/syslog.conf. Dans ce fichier, vous pouvez configurer exactement tout ce qui doit être journalisé et dans quels fichiers enregistrer les messages résultants. Attention, toutefois, à un point : vos services réseau ne communiquent pas tous avec syslogd ! De très nombreux programmes (CUPS, Samba, etc.) assurent leur propre journalisation et s’excluent de la configuration globale par le biais de syslog.conf. Les paramètres de
Linux Livre Page 335 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
335
journalisation sont dans ce cas configurés dans les fichiers de configuration propres du programme. Gestion des fichiers journaux
Les fichiers journaux ont pour caractéristique désagréable de grossir, lentement mais sûrement. Il est donc régulièrement nécessaire de repartir d’un fichier journal vierge. Le fichier utilisé jusqu’à ce moment doit alors être renommé et également, si possible, compressé. Il en résulte donc des fichiers du type messages.1.gz, messages.2.gz, etc. Après un temps d’archivage plus ou moins long, tous les fichiers journaux trop anciens sont totalement supprimés. Sur la plupart des distributions, une tâche cron appelle pour cela régulièrement le programme logrotate. Son fonctionnement est piloté par les fichiers /etc/logrotate.conf et /etc/logrotate.d/*.
Journalisation du processus d’amorçage
Sur les distributions anciennes, l’amorçage de Linux conduit à afficher les messages du noyau et d’InitV à l’écran. Sur les distributions récentes, ces messages sont dissimulés par une belle interface graphique ; toutefois, vous pouvez au besoin afficher ces messages par une touche du clavier ou un clic de souris. Lorsque vous utilisez le système, vous pouvez afficher à tout moment les messages du noyau à l’aide de la commande dmesg. Les lignes qui suivent correspondent à un noyau 2.6 (la sortie a été notablement raccourcie pour des raisons de place) : utilisateur$ dmesg Linux version 2.6.20-1.2949.fc7 (gcc version 4.1.2 20070222) ... BIOS-provided physical RAM map: ... 1151MB HIGHMEM available. 896MB LOWMEM available. found SMP MP-table at 000ff780 Using x86 segment limits to approximate NX protection Entering add_active_range(0, 0, 524192) 0 entries of 256 used Zone PFN ranges: DMA 0 -> 4096 Normal 4096 -> 229376 HighMem 229376 -> 524192 ... DMI 2.4 present. Using APIC driver default ACPI: RSDP 000FAE40, 0014 (r0 ACPIAM) ACPI: RSDT 7FFA0000, 0034 (r1 A M I OEMRSDT 7000610 MSFT 97) ... Processor #0 6:15 APIC version 20 Processor #1 6:15 APIC version 20 ... Allocating PCI resources starting at 88000000 (gap: 80000000:7ee00000) Detected 2400.178 MHz processor. Built 1 zonelists. Total pages: 517538 Kernel command line: ro root=LABEL=/12 rhgb quiet ... Memory: 2058540k/2096768k available (2144k kernel code, 36944k reserved, 1134k data, 248k init, 1179264k highmem)
Linux Livre Page 336 Mardi, 23. septembre 2008 1:05 13
336
LINUX
virtual kernel memory layout: ... Checking if this processor honours the WP bit even in supervisor mode... Ok. Calibrating delay using timer specific routine.. 4802.45 BogoMIPS (lpj=2401229) Security Framework v1.0.0 initialized SELinux: Initializing. ... CPU0: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz stepping 06 CPU1: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz stepping 06 Total of 2 processors activated (9601.77 BogoMIPS) ... Linux Plug and Play Support v0.97 (c) Adam Belay pnp: PnP ACPI init pnp: PnP ACPI: found 13 devices usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb PCI: Using ACPI for IRQ routing PCI: If a device doesn’t work, try "pci=routeirq". If it helps, post a report PCI: Cannot allocate resource region 2 of device 0000:03:00.0 PCI: Cannot allocate resource region 3 of device 0000:03:00.0 NetLabel: Initializing NetLabel: domain hash size = 128 NetLabel: protocols = UNLABELED CIPSOv4 NetLabel: unlabeled traffic allowed by default ... apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac) apm: disabled - APM is not SMP safe. ... isapnp: Scanning for PnP cards... isapnp: No Plug & Play device found ... Real Time Clock Driver v1.12ac Non-volatile memory driver v1.2 Linux agpgart interface v0.102 (c) Dave Jones agpgart: Detected an Intel 965G Chipset. agpgart: AGP aperture is 256M @ 0x0 Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A RAMDISK driver initialized: 16 RAM disks of 16384K size 4096 blocksize input: Macintosh mouse button emulation as /class/input/input0 usbcore: registered new interface driver libusual usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid ... SCSI subsystem initialized libata version 2.10 loaded. ata1: SATA max UDMA/133 cmd 0x0001ec00 ctl 0x0001e882 bmdma 0x0001e400 irq 19 ata2: SATA max UDMA/133 cmd 0x0001e800 ctl 0x0001e482 bmdma 0x0001e408 irq 19 scsi0 : ata_piix scsi1 : ata_piix sda: Write Protect is off
Linux Livre Page 337 Mardi, 23. septembre 2008 1:05 13
CONFIGURATION DE BASE
337
sda: Mode Sense: 00 3a 00 00 SCSI device sda: write cache: enabled, read cache: enabled, doesn’t support DPO or FUA SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB) sda: Write Protect is off sda: Mode Sense: 00 3a 00 00 SCSI device sda: write cache: enabled, read cache: enabled, doesn’t support DPO or FUA sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 > sd 0:0:0:0: Attached scsi disk sda scsi 1:0:0:0: CD-ROM TSSTcorp CD/DVDW SH-S183A SB00 PQ: 0 ANSI: 5 ata_piix 0000:00:1f.5: MAP [ P0 P2 P1 P3 ] ACPI: PCI Interrupt 0000:00:1f.5[B] -> GSI 19 (level, low) -> IRQ 19 PCI: Setting latency timer of device 0000:00:1f.5 to 64 ata3: SATA max UDMA/133 cmd 0x0001d400 ctl 0x0001d082 bmdma 0x0001c880 irq 19 ata4: SATA max UDMA/133 cmd 0x0001d000 ctl 0x0001cc02 bmdma 0x0001c888 irq 19 ... kjournald starting. Commit interval 5 seconds EXT3-fs: mounted filesystem with ordered data mode. ... sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray Uniform CD-ROM driver Revision: 3.20 sr 1:0:0:0: Attached scsi CD-ROM sr0 ... ... ip6_tables: (C) 2000-2006 Netfilter Core Team ip_tables: (C) 2000-2006 Netfilter Core Team Netfilter messages via NETLINK v0.30. nf_conntrack version 0.5.0 (8192 buckets, 65536 max) skge eth0: enabling interface ADDRCONF(NETDEV_UP): eth0: link is not ready skge eth0: Link is up at 100 Mbps, full duplex, flow control both ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready Bluetooth: Core ver 2.11 ...
Messages InitV
La mémoire tampon utilisée pour les messages du noyau et dont le contenu est affiché par dmesg est limitée. Lorsqu’elle est pleine, les messages anciens sont écrasés par les plus récents. Du fait que le noyau produit également des messages tout au long de son fonctionnement (par exemple lors du chargement de nouveaux modules ou lorsque le noyau rencontre des erreurs), une journalisation complète des messages liés à l’amorçage n’est possible qu’immédiatement après le démarrage du système. Pour cette raison, les messages du noyau sont également enregistrés, dans la plupart des distributions, dans un fichier : Debian, Fedora, Red Hat, Ubuntu /var/log/dmesg SUSE /var/log/boot.msg (contient également les messages InitV) Dès que le noyau est totalement initialisé, le premier processus qui se lance est le processus InitV (ou un autre système pour le lancement des processus réseau, voir Chapitre 24). De façon surprenante, la plupart des distributions renoncent à journaliser explicitement les
Linux Livre Page 338 Mardi, 23. septembre 2008 1:05 13
338
LINUX
messages InitV. L’enregistrement ne s’effectue que dans le cadre de la journalisation habituelle, c’est-à-dire uniquement lorsque les démons et services réseau à lancer prévoient leur propre journalisation. SUSE est toutefois ici une exception intéressante : cette distribution enregistre les messages du système InitV dans /var/log/boot.msg.
Linux Livre Page 339 Mardi, 23. septembre 2008 1:05 13
21
Gestion des logiciels et des paquetages Sous Windows, on installe généralement des programmes en lançant setup.exe. Linux a une autre approche : le système de gestion de paquetages est une base de données qui contient des informations sur tous les paquetages déjà installés. Les nouveaux programmes sont installés par des commandes du gestionnaire de paquetages. Ce concept présente de nombreux avantages. En particulier, il prend en compte les dépendances et les conflits entre les paquetages logiciels. Si le programme A a besoin de la bibliothèque B, le système de paquetages n’installe A qu’après avoir installé B. On peut aussi, à tout moment, connaître le paquetage auquel appartient un fichier donné, savoir si ce fichier se trouve encore à son emplacement original, etc.
Formats de paquetages
Le marché Linux est dominé par deux systèmes de paquetages différents. Red Hat, Fedora, Mandriva et SUSE utilisent le système RPM développé par Red Hat. Debian et toutes les distributions qui en sont dérivées (y compris Ubuntu) utilisent le format DEB. Les commandes d’installation, de désinstallation et de mise à jour de ces paquetages (rpm, dpkg) sont relativement primitives. Elles peuvent, par exemple, identifier des dépendances manquantes, mais pas les résoudre.
Systèmes de gestion de paquetages
rpm et dpkg sont les fondations de programmes plus avancés dotés de fonctions supplémentaires. On compte l’installation automatique des dépendances, la mise à jour de systèmes complets et l’utilisation de sources de paquetages sur CD et DVD ou encore sur Internet. Les systèmes de gestion de paquetages fournissent également un système de mises à jour unifié pour tous les programmes installés (en dehors des fonctions de base du système d’exploitation, comme cela est géré sous Windows). Yum (pour les paquetages RPM) et APT (pour les paquetages APT) sont des exemples de systèmes de gestion de paquetages. Yum Extender ou Synaptic proposent des alternatives graphiques à ces outils.
Outils spécifiques aux distributions
En plus de ces outils standard, il existe pour certaines distributions des programmes de gestion de paquetages et des mises à jour : Debian, Ubuntu
update-manager
Red Hat, Fedora
pirut, pup
SUSE, Novell
module YaST du groupe Logiciels, zypper
Ubuntu
gnome-app-install
Les paquetages d’une distribution Linux sont harmonisés entre eux. Cela signifie qu’ils utilisent un jeu de bibliothèques unifié, qu’ils sont compilés avec le même compilateur, etc. Un débutant sous Linux a donc intérêt à installer uniquement les paquetages fournis avec sa distribution. L’installation de paquetages prévus pour une autre distribution pose souvent problème. Bien souvent, installer un paquetage Red Hat sous SUSE ne fonctionne pas ou difficilement : il manque des bibliothè-
Linux Livre Page 340 Mardi, 23. septembre 2008 1:05 13
340
LINUX
ques, les dépendances ne sont pas résolues, etc. La résolution de ces problèmes demande beaucoup de connaissances. Administration centralisée de plusieurs ordinateurs
Si vous êtes responsable de 50, 100 ou 1 000 ordinateurs, les outils de gestion de paquetages s’avèrent vite insuffisants. Vous avez besoin d’un outil qui permet de lancer des mises à jour sur tous les ordinateurs (ou une partie d’entre eux). Ce type d’outils n’est actuellement disponible que pour les versions entreprise de Red Hat (http://www.europe.redhat.com/rhn/) et de Novell (http://www.novell.com/fr-fr/products/zenworks/).
21.1 Gestionnaire de paquetages RPM La commande rpm installe et gère les paquetages RPM. Ce système a été développé par Red Hat. Le projet RPM est entre temps devenu un projet libre tout à fait habituel, qui n’est pas sous le contrôle de Red Hat, ni aucune autre entreprise. Il a de nombreuses utilités : • effectuer des modifications dans un fichier déjà existant (par exemple un script) au cours d’une installation ; • mettre à jour un programme tout en mettant à jour proprement les fichiers modifiés ; • supprimer tous les fichiers d’un programme ; • s’assurer avant d’installer un programme que toutes les dépendances sont remplies et que les bibliothèques présentes le sont dans le bon numéro de version ; • vérifier si un fichier a été modifié pendant l’installation d’un paquetage ; • déterminer à quel paquetage appartient un fichier donné.
Notions de base La plupart des paquetages RPM sont disponibles en deux versions : comme paquetage binaire et paquetage de code source. Le paquetage binaire contient les fichiers nécessaires à l’exécution du programme. Le paquetage de code source n’est intéressant que pour les développeurs. Il contient le code source nécessaire pour construire un paquetage binaire. Le nom du paquetage contient quelques informations : abc-2.0.7-1.i686.rpm décrit le paquetage abc dans sa version 2.0.7, première version du paquetage (release). Si le paquetage contient une erreur, si de la documentation est ajoutée ou si d’autres modifications sont effectuées, le numéro de version du paquetage est supérieur à 1 pour une version donnée du logiciel. Le numéro de version est donc celui du programme, et le numéro de version du paquetage, celui de la version du RPM pour cette version donnée du programme. i686 indique que le paquetage contient des fichiers destinés aux processeurs compatibles avec le Pentium 2 − il existe des versions de Linux pour d’autres processeurs. Lorsque le paquetage abc ne se compose que de scripts ou de fichiers texte, indépendants de l’architecture du processeur, cet identifiant est remplacé par noarch. Lorsqu’il contient du code source, c’est indiqué par l’identifiant src.
Linux Livre Page 341 Mardi, 23. septembre 2008 1:05 13
GESTION DES LOGICIELS ET DES PAQUETAGES
341
Voici une brève explication des différents paquetages x86 :
i386 : processeur 386 et compatibles i486 : processeur 486 et compatibles i586 : processeur Pentium et compatibles i686 : processeur Pentium 2 et compatibles Un paquetage i386 fonctionne sur tous ces processeurs. Un paquetage i686 utilise, en revanche, les extensions du Pentium 2. Il fonctionne donc probablement plus rapidement, mais pas sur les processeurs plus anciens.
Le paquetage contient, en plus des fichiers à installer, de nombreuses informations de gestion : une description du paquetage, des informations sur les numéros de versions, un classement dans la hiérarchie de groupes, les dépendances vis-à-vis d’autres paquetages, etc. Les dépendances indiquent qu’un paquetage a besoin d’un langage de programmation donné, comme Perl, ou de différentes bibliothèques. Les paquetages correspondant aux dépendances doivent être installés avant le paquetage lui-même. rpm maintient une base de données d’informations sur tous les paquetages binaires installés. Cette base est enregistrée dans divers fichiers dans le répertoire /var/lib/rpm. Elle contient des informations uniquement sur les paquetages binaires ; les paquetages de code source éventuellement installés ne sont pas pris en compte. Il ne faut en aucun cas modifier les fichiers de la base de données rpm ! Pour que cette base corresponde aux fichiers effectivement installés, il ne faut pas supprimer de fichiers, mais désinstaller les paquetages correspondants (rpm -e). Problèmes
Le système RPM est fantastique, mais il n’est pas sans inconvénient. La liste suivante recense les problèmes les plus fréquents : • Certains paquetages RPM ont des dépendances que la commande rpm ne parvient pas à résoudre. yum sait, en général, gérer ces cas. • La gestion de dépendances est invasive lorsque vous mélangez des paquetages de différentes distributions, installez des programmes avec tar ou en compilez vous-même. Alors, les informations de la base RPM ne correspondent pas aux logiciels installés sur l’ordinateur. • Les nouvelles versions de RPM ont une compatibilité descendante, mais pas ascendante. Un paquetage RPM créé avec rpm version 5 ne peut pas être installé avec la version 4.4. Le plus simple dans ce cas est d’installer une version plus récente de rpm. • La base de données RPM prend énormément de place. Une installation de 5 Go remplit généralement 50 Mo de base de données. Le problème est moins la place sur le disque que la rapidité des opérations de RPM. Une mise à jour de la distribution complète peut être relativement longue (voire très longue si l’ordinateur dispose de peu de mémoire vive). • Il arrive que la base de données contienne des données incohérentes. Cela implique que la commande rpm ne peut plus être utilisée et qu’elle renvoie des messages du type
Linux Livre Page 342 Mardi, 23. septembre 2008 1:05 13
342
LINUX
cannot open packages database (impossible d’ouvrir la base de données de paquetages). Les commandes rm -f /var/lib/rpm/__db* et rpm --rebuilddb réparent généralement ce type de problèmes, mais cela peut durer un certain temps. • Pendant plusieurs années, RPM n’a été qu’en partie maintenu. Différents distributeurs utilisent donc leur propre version avec leurs propres extensions et correctifs. Cette situation devrait cependant s’améliorer avec une version unifiée de RPM.
Syntaxe et exemples La syntaxe de base de rpm est rpm options nom_de_paquetage/fichier. Le nom de fichier peut également être une adresse FTP ou HTTP. Les opérations de base sont effectuées avec les options suivantes : Options de base de RPM rpm rpm rpm rpm rpm rpm
--install ou -i --import --upgrade ou -U --verify ou -V --erase ou -e --query ou -q
installe un paquetage installe un fichier de clés met à jour un paquetage vérifie l’état d’un paquetage supprime un paquetage affiche des informations sur les paquetages installés
rpm --help et man rpm fournissent une référence complète de la commande. Les exemples suivants illustrent l’utilisation de rpm dans des situations courantes : root# rpm -i abc-2.0.7-1.i386.rpm
installe le programme abc. root# rpm --import http://monserveur/RPM-monserveur-GPG-KEY
charge la clé GPG du serveur monserveur et l’enregistre comme fichier de clés pour RPM. root# rpm -U http://monserveur/monchemin/abc-2.1.0-2.i386.rpm
met à jour le programme abc en téléchargeant directement le paquetage du serveur web indiqué. root# rpm -V abc
liste tous les fichiers du paquetage abc qui ont été modifiés depuis l’installation. root# rpm -e abc
désinstalle le programme abc. root# rpm -qa
liste tous les paquetages installés. root# rpm -qa --last
Linux Livre Page 343 Mardi, 23. septembre 2008 1:05 13
GESTION DES LOGICIELS ET DES PAQUETAGES
343
liste tous les paquetages installés, triés par date d’installation (le dernier paquetage installé en premier). root# rpm -qa |grep -i mysql
liste tous les paquetages installés, dont le nom contient la chaîne mysql (indépendamment de la casse). root# rpm -qi perl
affiche des informations sur le paquetage Perl (si celui-ci est installé). root# rpm -ql perl
liste tous les fichiers du paquetage Perl. root# rpm -qd perl
liste tous les fichiers de documentation du paquetage Perl. root# rpm -qc cups
liste tous les fichiers de configuration du paquetage CUPS. root# rpm -qip abc-2.0.7-1.i386.rpm
affiche des informations à propos du paquetage abc non installé. root# rpm -qf /usr/lib/libkdnssd.so
indique à quel paquetage appartient le fichier /usr/lib/libkdnssd.so. root# rpm -q --provides php5-mysql
indique quelles "capacités" fournit le paquetage php5-mysql. openSUSE renvoie php-mysql, php-mysqli = 5.2.4, php-pdo_mysql = 5.2.4, mysql.so, mysqli.so, pdo_mysql.so et php5mysql = 5.2.4-11. Les capacités sont utilisées pour résoudre les dépendances de paquetages. Les noms des capacités correspondent généralement à ceux des programmes ou des bibliothèques fournis par un paquetage. L’administrateur de chaque distribution décide comment les capacités sont définies. Celles-ci peuvent également indiquer des numéros de versions. root# rpm -q --requires php5-myql
indique quelles dépendances doivent être remplies pour installer le paquetage. Sous openSUSE, la liste des capacités est assez longue, mais contient entre autres libc.so.6, libm.so.6 et libmysqlclient.so.15. root# rpm -q --requires -p alien-8.68-27.i586.rpm
utilise l’option -p afin d’afficher des listes de capacités pour les paquetages qui ne sont pas encore installés. Cette option peut également être utilisée avec --provides. root# rpm -q --what-provides mysqli.so
indique quel paquetage installé fournit la capacité mysqli.so. root# rpm -q --whatrequires libpthread.so.0
affiche une liste de paquetages installés qui dépendent de la capacité libpthread.so.0.
Linux Livre Page 344 Mardi, 23. septembre 2008 1:05 13
344
LINUX
Sur les distributions 64 bits, il arrive que rpm -qi renvoie des informations pour deux paquetages. Il ne s’agit pas d’une erreur : c’est dû au fait que les paquetages 32 et 64 bits d’un programme ou d’une bibliothèque sont nommés de manière identique. Problèmes de dépendances
Un problème de dépendance se manifeste généralement par un message du type failed dependencies: nom_capacité is needed by nom_paquetage. Pour le résoudre, installez le paquetage avec yum install, plutôt qu’avec rpm -i (ou un autre outil de gestion de paquetages fourni par votre distribution). Si cela ne fonctionne pas, vous devez trouver un paquetage fournissant la capacité nom_capacité. Si vous disposez d’une archive de paquetages locale (sur un disque dur ou un CD-ROM), vous pouvez lancer la recherche avec cette commande : root# rpm -qpi --provides *.rpm | less
Dans less, utilisez la commande / pour chercher le texte nom_capacité. Installez alors le paquetage trouvé, puis le paquetage que vous souhaitiez installer à l’origine. Dans certains cas, en particulier lorsque vous avez installé des paquetages en dehors du système rpm, ce dernier n’arrive pas à résoudre les dépendances, bien que les fichiers manquants soient en fait présents. Vous pouvez alors mener l’installation à bien avec l’option --nodeps. Vous devez néanmoins savoir ce que vous faites dans ce cas.
21.2 Yum (gestion de paquetages RPM) Yum est un programme facilitant la gestion des paquetages RPM. Il est basé sur rpm, mais fournit de nombreuses fonctions supplémentaires : • Yum sait utiliser des sources de paquetages (dépôts, repositories) qui se trouvent sur Internet. Une archive Yum est un ensemble de paquetages RPM auquel sont ajoutées des métadonnées (répertoire repodata). Il s’agit d’informations sur le contenu et les dépendances de tous les paquetages. La séparation entre les paquetages et les métadonnées permet de traiter le tout très rapidement (sans avoir à lire tous les paquetages pour en extraire les données). Yum sait passer d’un miroir à un autre pour une source de paquetages donnée. • Yum résout automatiquement toutes les dépendances de paquetages, télécharge tous les paquetages nécessaires et les installe. Tous les dépôts de paquetages sont pris en compte au cours de cette opération. Si vous souhaitez installer un paquetage provenant du dépôt A, il se peut que Yum télécharge un paquetage depuis les dépôts B et C. • Yum peut actualiser tous les paquetages installés en une seule commande. Pour chaque paquetage installé, il regarde s’il en existe une nouvelle version dans l’un des dépôts de paquetages enregistrés. Si c’est le cas, le paquetage correspondant est téléchargé et installé. Les dépendances de ces nouveaux paquetages sont également résolues. Yum est développé en Python. Il peut être étendu par des greffons et dispose alors d’encore plus de fonctionnalités. Il est présent dans plusieurs distributions qui utilisent des paquetages RPM (par exemple, Fedora et Red Hat). Pour d’autres distributions, vous devez le télécharger à l’adresse http://www.linux.duke.edu/projects/yum/.
Linux Livre Page 345 Mardi, 23. septembre 2008 1:05 13
GESTION DES LOGICIELS ET DES PAQUETAGES
Conflits de verrous
345
Yum ne peut être lancé qu’une seule fois (c’est également valable pour toutes les interfaces). Si Yum ou l’une de ses interfaces fonctionne déjà, essayer d’en lancer un deuxième exemplaire renvoie l’erreur another copy is running (une autre copie fonctionne déjà). Ce problème tire souvent son origine dans le système de mises à jour automatique de Yum. Vous pouvez le détecter facilement : le fichier /var/run/yum.pid contient le numéro de processus du programme qui génère le conflit. ps | grep identifiant renvoie le nom du programme en question. Si cela s’avère nécessaire, vous pouvez arrêter le système de mises à jour avec /etc/init.d/yum-updated stop et le relancer plus tard.
Configuration Yum est configuré dans le fichier /etc/yum.conf. Les lignes suivantes représentent la configuration de Fedora 9 : [main] cachedir=/var/cache/yum keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 metadata_expire=1800 # 30 minutes installonly_limit=2
keepcache=0 indique que les paquetages téléchargés ne doivent pas être archivés après leur installation. Il s’agit d’un paramètre sensé, car la place nécessaire pour les paquetages peut grossir de manière démesurée. De plus, il n’existe aucune raison d’installer un paquetage une deuxième fois. Il arrive cependant que yum rencontre un problème et interrompe l’installation : dans ce cas, le paquetage est supprimé. Pour régler le problème et recommencer l’installation, vous devez télécharger à nouveau le même paquetage. Pour éviter cette situation, utilisez keepcache=1. Pour supprimer explicitement les paquetages téléchargés, lancez yum clean packages. exactarch=1 indique que Yum ne prend en compte que les mises à jour qui correspondent à l’architecture du paquetage courant. Ainsi, les paquetages i386 ne peuvent pas être remplacés par des paquetages x86_64, même plus récents. gpgcheck=1 demande à Yum de vérifier l’authenticité d’un paquetage avec une clé. gpgcheck peut également être configuré pour des sources de paquetages individuelles. plugins indique si Yum doit prendre en compte des greffons. Yum peut être étendu par des greffons sous forme de fichiers Python. Les greffons sont configurés grâce à des fichiers du répertoire /etc/yum/pluginconf.d. metadata_expires définit combien de secondes sont disponibles les métadonnées d’une source de paquetages. Yum enregistre les métadonnées dans un cache et ne les retélécharge que lorsqu’elles sont périmées. Cela économise du temps et du volume de données téléchargées
Linux Livre Page 346 Mardi, 23. septembre 2008 1:05 13
346
LINUX
(les fichiers de métadonnées prennent beaucoup de place). Néanmoins, il arrive que Yum ignore momentanément les modifications de la source de paquetages. yum clean metadata permet de supprimer les métadonnées locales ; Yum est alors obligé de récupérer les métadonnées de toutes les sources. Mise en place d’un dépôt de paquetages
Chaque dépôt de paquetages est défini dans son propre fichier *.repo dans le répertoire /etc/yup.repos.d. On peut aussi définir les dépôts à la fin de la configuration de base dans /etc/yum.conf, mais ce n’est pas très courant. Les lignes suivantes proviennent de la définition des dépôts de Fedora 9. Les lignes baseurl, mirrorlist et gpgkey ne sont coupées que pour des raisons de place. [fedora] name=Fedora $releasever - $basearch # baseurl=http://download.fedora.redhat.com/pub/fedora/linux/... # releases/$releasever/Everything/$basearch/os/ mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora$releasever&arch=$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPMGPG-KEY
L’adresse du dépôt peut être saisie de manière absolue avec baseurl=... ou sous la forme d’un fichier de miroirs avec mirrorlist=.... Ce fichier contient une liste des serveurs miroir et Yum décide lui-même lequel utiliser. Il remplace dans le fichier de configuration les variables $releasever, $arch et $basearch par le numéro de version de la distribution et par l’architecture. Blocages des paquetages
Pour bloquer un paquetage et éviter qu’il ne soit mis à jour par Yum, ajoutez dans yum.conf ou dans le fichier *.repo du dépôt une ligne exclude nom1 nom2 nom3. Vous pouvez utiliser des caractères joker dans les noms de paquetages : exclude xemacs* est une ligne valide.
Mise à jour de la distribution
En principe, vous pouvez mettre à jour votre distribution avec Yum. Pour cela, remplacez $releasever par le numéro de la distribution souhaitée dans le fichier de description du dépôt. Lancez alors yum upgrade. Cependant, d’après mon expérience, les mises à jour de distributions fonctionnent généralement assez mal, quel que soit le système de gestion de paquetages. Il vaut mieux réinstaller le système.
Exemples man yum fournit une référence complète de la syntaxe de yum. Les commandes suivantes sont des exemples d’utilisation de yum. root# yum check-update
indique quels paquetages seront mis à jour si vous lancez yum update. root# yum update
met à jour les paquetages de la distribution. root# yum install abiword
installe le paquetage abiword et ses dépendances.
Linux Livre Page 347 Mardi, 23. septembre 2008 1:05 13
GESTION DES LOGICIELS ET DES PAQUETAGES
347
La première utilisation de yum peut être assez longue, car les méta-données de tous les dépôts de paquetages sont téléchargées. Les utilisations suivantes sont visiblement plus rapides. Paquetages de code source
yum ne sait pas installer de paquetages de code source. Cette tâche est déléguée à yumdownloader, qui se trouve dans le paquetage yum-utils. La commande suivante télécharge le paquetage de code source de l’éditeur gedit dans le répertoire courant : utilisateur$ yumdownloader --source gedit
Téléchargements et mises à jour automatiques Sur de nombreuses distributions, Yum est configuré de sorte que le programme yum-updatesd soit lancé automatiquement par InitV au démarrage de l’ordinateur. yum-updatesd vérifie régulièrement si des mises à jour sont disponibles. Selon la configuration de /etc/yum/yum-updatesd.conf, les paquetages de mise à jour sont directement téléchargés et installés. Dans l’exemple suivant, les mises à jour sont automatiquement téléchargées, mais doivent être installées manuellement. [main] # tester toutes les heures s’il y a de nouvelles mises à jour run_interval = 3600 # contacter le serveur de mise à jour au plus toutes les 10 minutes updaterefresh = 600 # émettre une notification de mise à jour via dbus emit_via = dbus # télécharger automatiquement les mises à jour do_download = yes # télécharger également les dépendances pour ces mises à jour do_download_deps = yes # ne pas installer automatiquement les mises à jour do_update = no
Malheureusement, le programme de mises à jour de yum mène souvent à des problèmes de verrous. Vous devez alors stopper yum-updatesd avant d’installer des paquetages. Ensuite, n’oubliez pas de redémarrer yum-updatesd. root# /etc/init.d/yum-updatesd stop root# ...installer ou supprimer des paquetages... root# /etc/init.d/yum-updatesd start
21.3 Yum Extender (Yumex) Il existe plusieurs interfaces graphiques de Yum. Une des plus populaires et des plus stables est Yum Extender (yumex, voir Figure 21.1). Son utilisation est simple. Une fois démarré, Yumex actualise les métadonnées locales de tous les dépôts de paquetages. Vous pouvez
Linux Livre Page 348 Mardi, 23. septembre 2008 1:05 13
348
LINUX
ensuite choisir dans les différents groupes (Updates, Disponibles, Installés, Tous) les paquetages à traiter, puis cliquer sur le bouton Traiter la file d’attente. L’onglet Vue des paquetages en file d’attente affiche toutes les actions que Yumex va effectuer. Le bouton Traiter la file d’attente démarre l’opération. Yumex examine alors toutes les dépendances et affiche une boîte de dialogue de résumé. Vous devez confirmer avant que les paquetages ne soient effectivement téléchargés et installés.
Figure 21.1 Gestion des paquetages avec Yum Extender.
21.4 Gestion de paquetages sous Debian (dpkg) On peut gérer les paquetages Debian de deux manières. Cette section décrit la commande dpkg, qui est comparable à rpm. Elle installe, met à jour, supprime des paquetages individuels et teste si les dépendances de ces paquetages sont remplies. Cependant, elle ne sait pas résoudre elle-même les dépendances de paquetages ou télécharger des paquetages depuis un dépôt. La section suivante décrit APT (Advanced Packaging Tool, outil de paquetages avancé). Ce système, basé sur dpkg, fournit des fonctions comparables à Yum.
Syntaxe et exemples Le tableau suivant résume les opérations de base de dpkg. Vous trouverez plus d’informations sur la syntaxe dans dpkg --help et man dpkg.
Linux Livre Page 349 Mardi, 23. septembre 2008 1:05 13
GESTION DES LOGICIELS ET DES PAQUETAGES
349
Options de base de dpkg dpkg dpkg dpkg dpkg dpkg dpkg dpkg
--install --configure --remove --purge --list --listfiles --search
installe ou met à jour un paquetage lance le script de configuration d’un paquetage supprime un paquetage supprime un paquetage et ses fichiers de configuration affiche une liste des paquetages installés affiche les fichiers d’un paquetage détermine le paquetage auquel un fichier appartient
Les exemples suivants illustrent l’utilisation de dpkg dans des situations habituelles. En pratique, dpkg est rarement utilisé. Dans la plupart des distributions, les paquetages sont administrés grâce à APT ou un outil basé sur ce système. root# dpkg --install test.deb Dépaquetage de test (à partir de test.deb) ... Paramétrage de test... root# dpkg --search /etc/mediaprm fdutils: /etc/mediaprm root# dpkg --listfiles fdutils /. /usr /usr/bin /usr/bin/diskd ...
Certains programmes fournissent comme scripts de configuration des programmes interactifs qui servent à installer des programmes individuels. Pour modifier la configuration ultérieurement, lancez dpkg-reconfigure nom_du_paquetage.
21.5 APT APT (Advanced Packaging Tool, outil de paquetages avancé) est aux paquetages Debian ce que Yum est aux paquetages RPM : un gestionnaire de haut niveau qui télécharge les paquetages depuis des dépôts et résout automatiquement les dépendances de paquetages. Il est souvent remplacé par aptitude dans les versions plus récentes de Debian et d’Ubuntu, mais reste une référence pour gérer les paquetages DEB. Le système APT se compose de plusieurs commandes, dont la principale est apt-get. Lorsque APT est correctement configuré, apt-get install nom_du_paquetage télécharge et installe le paquetage indiqué et toutes ses dépendances.
Linux Livre Page 350 Mardi, 23. septembre 2008 1:05 13
350
LINUX
Configuration APT est configuré par les fichiers apt.conf et sources.list du répertoire /etc/apt. D’autres fichiers, optionnels, peuvent se trouver dans le répertoire /etc/apt.conf.d. apt.conf ne contient généralement que quelques paramètres de base ; vous n’avez généralement pas à toucher à la configuration fournie par votre distribution (man apt.conf détaille les options de ce fichier). Le fichier sources.list (man sources.list) est plus intéressant : il contient la liste des dépôts utilisés par APT. La syntaxe de chaque ligne est de ce type : type adresse distribution [composants1] [composants2] [composants3] ...
type a la valeur deb pour les paquetages Debian classiques et deb-src pour les paquetages de code source. La deuxième colonne indique l’adresse de base de la source de paquetages. APT comprend les adresses HTTP et FTP, les répertoires, les serveurs RSH et SSH, ainsi que les CD et DVD. Les dépôts sur CD et DVD sont cependant un cas particulier ; ils doivent être installés avec la commande apt-cdrom. La troisième colonne indique la distribution (un serveur peut distribuer des paquetages pour plusieurs distributions ou versions). Les colonnes suivantes indiquent les composants de la distribution pris en compte. Les noms des composants dépendent de la distribution et du dépôt ! Sous Ubuntu, les paquetages se divisent en paquetages main, restricted, universe et multiverse, tandis que sous Debian, il s’agit des paquetages main, contrib, non-free, etc. Si un paquetage est présent dans plusieurs dépôt, APT le télécharge depuis le premier dépôt qu’il trouve. Les lignes suivantes illustrent la syntaxe. Elles proviennent de la configuration de miroirs français pour Ubuntu 8.04. deb cdrom:[Ubuntu 8.04 _Hardy Heron_ - Release i386 (20080423)]/ hardy main restricted deb http://fr.archive.ubuntu.com/ubuntu/ hardy main restricted deb http://fr.archive.ubuntu.com/ubuntu/ hardy universe multiverse deb http://security.ubuntu.com/ubuntu hardy-security main restricted deb http://security.ubuntu.com/ubuntu hardy-security universe deb http://archive.canonical.com/ubuntu hardy partner
Le plus simple pour modifier ce fichier est de l’ouvrir dans un éditeur de texte. Vous pouvez aussi utiliser le programme apt-setup ou une interface graphique comme Synaptic. Ajouter des dépôts sur CD
Les CD peuvent aussi servir de dépôts de paquetages. On ne peut cependant pas les ajouter simplement dans sources.list. Vous devez lancer, pour chaque CD, la commande aptcdrom. Celle-ci lit les métadonnées du CD et ajoute les paquetages à prendre en compte dans un fichier de cache. Puis, sources.list est mis à jour. Si apt-cdrom se plaint qu’il ne trouve pas de CD/DVD, passez-lui en argument le répertoire de montage du CD avec -d : root# apt-cdrom -d /media/dvd add
Installer des clés
La plupart des métadonnées des dépôts sont signées par une clé. Les répertoires d’APT contiennent également des sommes de contrôle pour tous les paquetages. Vous pouvez, grâce à ces mécanismes, vous assurer qu’un paquetage n’est pas modifié malicieusement. Cependant, ce contrôle ne fonctionne que si APT dispose de la clé publique pour authentifier les archives de paquetages. Pour installer une clé APT, utilisez la commande apt-key : root# apt-key add fichier_de_cle.gpg
Linux Livre Page 351 Mardi, 23. septembre 2008 1:05 13
GESTION DES LOGICIELS ET DES PAQUETAGES
351
Exemples Actualiser les informations d’APT
Avant d’installer des paquetages, il est préférable de lancer apt-get update pour télécharger les dernières informations des dépôts. Cette commande n’installe pas de paquetage et n’en met pas à jour. Il ne s’agit que des descriptions des paquetages ! root# apt-get update Atteint http://archive.canonical.com hardy Release.gpg ...
Installer des paquetages
Vous pouvez ensuite lancer apt-get install, auquel il faut donner le nom exact du paquetage. Si la commande détecte des dépendances non résolues, elle propose de télécharger et d’installer les paquetages manquants. root# apt-get install wine Lecture des listes de paquets... Fait Construction de l’arbre des dépendances Lecture des informations d’état... Fait Les paquets supplémentaires suivants seront installés : binfmt-support samba-common smbclient smbfs winbind Les NOUVEAUX paquets suivants seront installés : binfmt-support winbind wine Les paquets suivants seront mis à jour : samba-common smbclient smbfs 3 mis à jour, 3 nouvellement installés, 0 à enlever et 273 non mis à jour. Il est nécessaire de prendre 17,5 Mo dans les archives. Après cette opération, 60,8 Mo d’espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ? o ...
Supprimer des paquetages Actualiser des paquetages
apt-get remove paquetage supprime le paquetage indiqué. Les paquetages installés en tant que dépendances de ce paquetage ne sont pas désinstallés. apt-get upgrade permet de mettre à jour tous les paquetages déjà installés.
Installer un paquetage de code source
apt-get source paquetage installe le code source du paquetage dans le répertoire courant.
Afficher des informations sur les paquetages
apt-cache permet d’afficher diverses données sur les paquetages disponibles et ceux déjà installés (voir man apt-cache pour plus d’informations sur la syntaxe). root# apt-cache show apache2 Package: apache2 Priority: optional Section: web ... Description-fr: Serveur web de prochaine génération, modulable et évolutif Apache v2 est la prochaine génération de l’omniprésent serveur web Apache. Cette version - totalement réécrite - introduit de nombreuses nouvelles améliorations comme le threading (exécution de processus légers indépendamment du programme principal), une nouvelle API, le support de l’IPv6, le filtrage de la requête/réponse, et plus encore. ...
Linux Livre Page 352 Mardi, 23. septembre 2008 1:05 13
352
LINUX
root# apt-cache search scribus | sort create-resources - shared resources for use by creative applications icc-profiles - ICC color profiles for use with Scribus, Gimp, CinePaint, and scribus - Open Source Desktop Page Layout scribus-template - additional scribus templates
Téléchargements et mises à jour automatiques APT est normalement installé de manière que seuls quelques fichiers de configuration doivent être adaptés pour télécharger et installer automatiquement les mises à jour. Sous Ubuntu, le paquetage unattended-upgrades contient les fichiers de configuration nécessaires. Le point de départ de la configuration est le programme cron qui lance le script /etc/ cron.daily/apt tous les jours. Les tâches menées à bien par ce script dépendent de deux fichiers de configuration. 10periodic indique à quelle fréquence les listes de paquetages sont mises à jour (par exemple, 3 signifie "tous les trois jours"), si les paquetages doivent être téléchargés, s’ils doivent être installés automatiquement et à quelle fréquence apt-get autoclean doit être lancé (0 signifie "jamais"). # Fichier /etc/apt/apt.conf.d/10periodic APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::AutocleanInterval "0";
50unattended-updates indique quels dépôts sont pris en compte pour les mises à jour automatiques (par défaut, uniquement les dépôts de mises à jour de sécurité critiques). Chaque dépôt est décrit par deux informations : son origine et son nom. Unattended-Upgrade::Allowed-Origins { "Ubuntu hardy-security"; // "Ubuntu hardy-updates"; };
21.6 Synaptic Installer des paquetages
Il existe d’innombrables interfaces graphiques à APT. L’une des plus populaires est Synaptic. Pour installer un paquetage, cherchez-le avec le bouton Rechercher ou directement dans la liste, cliquez dessus du bouton droit et choisissez Sélectionner pour installation (voir Figure 21.2). Si le paquetage dépend d’autres paquetages, une boîte de dialogue avec tous les paquetages supplémentaires devant être installés apparaît. Vous pouvez afficher la liste de tous les paquetages sélectionnés en cliquant sur le bouton Filtres, puis Changements en file d’attente. L’installation commence lorsque vous cliquez sur Appliquer, qui affiche un résumé de toutes les actions à mener. Une fois ce résumé confirmé, Synaptic lance toutes les opérations d’installation. Les modifications sont enregistrées et disponibles dans Fichier > Historique.
Linux Livre Page 353 Mardi, 23. septembre 2008 1:05 13
GESTION DES LOGICIELS ET DES PAQUETAGES
353
Figure 21.2 Gestion de paquetages avec Synaptic.
Administration des dépôts
Les dépôts sont configurés dans Configuration > Dépôts. Vous pouvez les activer ou les désactiver rapidement, modifier ceux qui sont prédéfinis ou en ajouter de nouveaux.
Problèmes Vous pouvez rencontrer certains problèmes avec Synaptic. Les points suivants résument l’origine et les solutions des plus courants. Verrous
Vous ne pouvez lancer qu’un seul gestionnaire de fichiers à la fois. Si vous essayez d’en lancer deux en même temps, vous obtiendrez une erreur du type unable to get exclusive lock. Cela signifie que le programme ne peut pas accéder aux fichiers de gestion de paquetages. Vous devez donc arrêter l’un des deux programmes. Il arrive aussi que cet avertissement apparaisse même lorsque aucun autre gestionnaire n’est lancé : c’est le cas si un programme ne supprime pas le fichier de verrou lorsqu’il est terminé. Il suffit alors de supprimer le fichier en question : root# rm /var/lib/dpkg/lock
Paquetages cassés
Il arrive, dans de rares cas, que l’installation ou la désinstallation d’un paquetage ne fonctionne pas ou que l’opération ne se termine pas bien. Le paquetage est alors marqué comme cassé. Synaptic et les autres programmes de gestion de paquetages refuseront d’obéir à vos ordres tant que ce problème ne sera pas résolu. Dans Synaptic, cliquez sur Filtres, puis sur Cassés pour afficher une liste de tous les paquetages cassés. Sélectionnez-les tous avec Ctrl+A, cliquez du bouton droit sur la liste, puis
Linux Livre Page 354 Mardi, 23. septembre 2008 1:05 13
354
LINUX
choisissez Sélectionner pour réinstallation. Cliquez sur Appliquer. Si cela ne résout pas le problème, supprimez les paquetages en question.
22.7 Aptitude Le programme aptitude est également basé sur APT. Il peut être utilisé en ligne de commande (aptitude install nom_du_paquetage) ou en tant que programme indépendant dans une console. Pour cela, lancez aptitude sans paramètre supplémentaire ; Ctrl+T permet d’afficher le menu (voir Figure 21.3).
Figure 21.3 Gestion des paquetages avec Aptitude.
Utilisation en ligne de commande
L’utilisation d’aptitude n’est pas aussi confortable que celle de Synaptic, mais il présente un avantage décisif : il note quels paquetages ont été installés comme dépendances et les supprime automatiquement lorsqu’ils ne sont plus utiles. De plus, il installe également les paquetages "conseillés" en parallèle des paquetages à installer et de leurs dépendances. aptitude peut également être installé en ligne de commande. Son utilisation ressemble à celle de apt-get. Les deux commandes suivantes installent le paquetage claws-mail-plugins et le suppriment. Remarquez la suppression des paquetages installés par le jeu de dépendances. root# aptitude install claws-mail-plugins Lecture des listes de paquets... Fait ... Les NOUVEAUX paquets suivants vont être automatiquement installés : claws-mail-bogofilter claws-mail-dillo-viewer claws-mail-pgpinline claws-mail-pgpmime claws-mail-spamassassin claws-mail-trayicon dillo ...
Linux Livre Page 355 Mardi, 23. septembre 2008 1:05 13
GESTION DES LOGICIELS ET DES PAQUETAGES
355
Voulez-vous continuer ? [Y/n/?] y root# aptitude remove claws-mail-plugins ... Les paquets suivants ne sont pas utilisés et vont être ENLEVÉS : claws-mail-bogofilter claws-mail-dillo-viewer claws-mail-pgpinline claws-mail-pgpmime claws-mail-spamassassin claws-mail-trayicon ...
21.8 Conversion entre deux formats de paquetages Que faire lorsque vous ne trouvez un paquetage qu’au format RPM et que vous désirez l’installer sur un système Debian ou Ubuntu ? Ou lorsque vous souhaitez seulement voir quelques fichiers d’un paquetage RPM ? La réponse à ces deux questions est le programme alien. Cette commande convertit les paquetages entre différents formats : RPM, DEB, archives tar. alien ne fonctionne cependant que pour les paquetages simples. Si un paquetage fait appel à des scripts d’installation ou à des propriétés spécifiques d’un format de paquetages donné, l’installation échouera probablement. Il s’agit globalement d’un outil pour les utilisateurs avancés de Linux. Le format du paquetage souhaité est indiqué par les options --to-deb (Debian), --to-rpm (RPM) ou --to-tgz (archive tar). alien doit être lancé par l’utilisateur root pour que les permissions et droits d’accès du nouveau paquetage soient corrects. La commande suivante convertit un paquetage Debian en paquetage RPM : root# alien --to-rpm paquetage.deb
Les commandes suivantes montrent comment extraire un fichier donné d’un paquetage RPM. Celui-ci est transformé en archive tar et la commande tar est ensuite utilisée pour extraire le fichier. root# alien --to-tgz paquetage.rpm root# tar -xzf paquetage.tgz ./usr/share/doc/packages/paket/TODO
Linux Livre Page 356 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 357 Mardi, 23. septembre 2008 1:05 13
22
Système XWindow Le système XWindow (en abrégé, X) est un ensemble de fonctions et de protocoles qui permet d’afficher des informations graphiques à l’écran et de gérer le clavier et la souris. Ces fonctions sont également disponibles sur le réseau. Une première implémentation de XWindow provenait du projet XFree86. Il s’agissait au départ d’un système développé uniquement pour les processeurs compatibles Intel x86, mais il a été adapté depuis à presque toutes les architectures de processeurs et à d’innombrables dérivés d’Unix. Le projet X.org a vu le jour à partir de la version 4.4 de XFree86, suite à des différends entre les développeurs de XFree86 concernant une modification de la licence de XFree86, incompatible avec la licence GPL. Depuis, presque toutes les distributions Linux utilisent le serveur X.org. Ce chapitre se base sur les versions 7.1 à 7.3. Il décrit différents aspects de la configuration d’un serveur X, y compris l’inclusion de pilotes binaires d’ATI/AMD et de NVIDIA. Nous parlerons également des fonctions 3D du bureau, de la gestion des polices, ainsi que de divers utilitaires X (comme xterm). Vous trouverez plus d’informations sur X et X.org à l’adresse http://www.x.org.
22.1 Glossaire Cette section éclaircit quelques notions de base et concepts auxquels vous serez probablement confronté lors de la configuration de X. Système XWindow
Le système XWindow (abrégé en X) ne définit que les fonctions de base pour dessiner des points, des rectangles, etc. Il contient également un protocole réseau qui permet de lancer un programme X sur l’ordinateur A et d’afficher les résultats sur l’ordinateur B. Fin 2007, la version actuelle de X.org (7.3) se base sur X11R7.3. Le système XWindow a été développé au départ par le MIT. X est à la base d’une interface graphique pour Linux, mais il n’est pas en soi une interface graphique. L’aspect des programmes X et leur utilisation dépendent des bibliothèques utilisées par les programmeurs (par exemple, GTK pour Gnome, QT pour KDE) et du gestionnaire de fenêtre actif.
Serveur X
Le serveur X est l’interface entre le système XWindow et le matériel (carte graphique, souris, etc.). Ce serveur est modulaire : il est étendu par des fonctions spéciales pour chaque carte graphique.
Modules d’extension de X
Les fonctions standard du serveur X peuvent être étendues par divers modules d’extension, par exemple pour les graphismes 3D, une sortie vidéo plus rapide, etc.
Écran virtuel
Le serveur X sait exploiter un écran virtuel plus grand que la résolution effective du moniteur. Par exemple, l’écran virtuel peut avoir une résolution de 1600x1200, tandis que seuls
Linux Livre Page 358 Mardi, 23. septembre 2008 1:05 13
358
Bureaux virtuels
Xinerama Gestionnaire de fenêtres
Gestionnaire de bureau
Bureau 3D
LINUX
1280x1024 pixels s’affichent à l’écran. Le changement de zone visible se fait sans ralentissement dès que la souris s’approche du bord de l’écran. Comme le fait de travailler avec un écran virtuel demande un peu d’habitude, la plupart des configurations X l’évitent. Un écran virtuel peut cependant s’avérer utile si votre résolution est très faible, par exemple sur un vieil ordinateur portable. Un bureau virtuel est une interface graphique élargie qui se compose de plusieurs écrans (espaces de travail) côte à côte. Comme vous n’avez qu’un seul moniteur physique, vous ne pouvez voir qu’un seul bureau à la fois. Les bureaux virtuels ne sont pas gérés par X, mais par le gestionnaire de fenêtre ou de bureau (KDE, Gnome). Avec une carte graphique appropriée, le serveur X peut exploiter plusieurs moniteurs grâce au mode Xinerama. L’espace de travail s’étale alors sur plusieurs moniteurs. Le gestionnaire de fenêtres est un programme X qui sert à gérer les fenêtres. Vous pouvez ainsi démarrer d’autres programmes (au moins une fenêtre de terminal xterm), passer d’une fenêtre à une autre, déplacer et fermer des fenêtres, etc. Il s’agit de tâches très simples, mais il ne faut pas oublier qu’elles sont gérées par le gestionnaire de fenêtres et non par X. enlightenment, fvwm et xfce sont des gestionnaires de fenêtres usuels. Les gestionnaires de bureau, comme KDE ou Gnome, vont au-delà des fonctions d’un gestionnaire de fenêtre. Grâce aux bibliothèques graphiques, les applications KDE et Gnome sont plus unifiées, à la fois au niveau de leur aspect et de leur utilisation. Les communications entre les programmes sont standardisées au point que le glisser-déposer entre différents programmes fonctionne. Vous trouverez plus d’informations sur Gnome et KDE aux Chapitres 4 et 5. Du fait que KDE et Gnome sont de plus en plus populaires, il est devenu peu fréquent d’utiliser X avec un simple gestionnaire de fenêtre sans gestionnaire de bureau. Il existe cependant des cas où ce choix a un sens, par exemple sur un ordinateur avec peu de mémoire vive ou un processeur lent (KDE et Gnome sont plutôt gourmands en ressources). Depuis 2006, il existe des gestionnaires de fenêtres qui "améliorent" diverses opérations grâce aux fonctions 3D de la carte graphique : les fenêtres sont déformées lorsqu’elles sont déplacées, les bureaux sont projetés sur un cube lorsqu’on change de bureau, etc. Des effets similaires sont utilisés sous Mac OS X et Windows Vista.
Glossaire matériel
Balayage horizontal (HSync)
Même si les écrans cathodiques se font rares, connaître le fonctionnement d’un tel moniteur aide à comprendre les paramètres de configuration d’une carte graphique. Pour afficher une image, un moniteur cathodique parcourt ligne par ligne toute la surface de l’écran avec un faisceau d’électrons et allume des petits points (sauf si ces derniers doivent rester noirs). Pour que l’image ne scintille pas, ce processus est répété plusieurs fois par seconde (au moins 60, de préférence 70 à 100 fois). Le balayage de l’écran commence dans le coin en haut à gauche. Le faisceau d’électrons se déplace vers la droite et parcourt ainsi la première ligne. Il saute alors au début de la deuxième ligne et la traite de la même manière. Pendant ce retour du faisceau, celui-ci a une intensité nulle pour qu’il ne soit pas visible. Ce retour est déclenché par l’impulsion HSync, transmise de la carte graphique au moniteur.
Linux Livre Page 359 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
Balayage vertical (VSync) Fréquences
Fréquence verticale
Fréquence horizontale
359
Une fois que toutes les lignes ont été balayées et que le faisceau d’électrons se trouve dans le coin en bas à droite de l’écran, l’impulsion VSync déclenche le retour du faisceau en haut à gauche. Celui-ci reste éteint pendant ce retour, afin d’éviter une traînée lumineuse sur tout l’écran. La construction d’une image est caractérisée par trois fréquences. Celles-ci sont données en Hz (Hertz, soit le nombre d’oscillations par seconde) ou en multiples de cette unité, par exemple kHz ou MHz. Cette fréquence indique combien de fois par seconde l’écran est entièrement rafraîchi. Plus ce nombre est élevé, plus la stabilité de l’image est grande. Une fréquence de 70 images par seconde (70 Hz) assure une image sans scintillement. Cette fréquence indique combien de lignes sont parcourues par le faisceau d’électrons en une seconde. Pour une résolution de 640 × 480 (480 lignes) à une fréquence verticale de 60 Hz, la fréquence horizontale atteint 31,5 kHz (60 × 480 = 28,8 kHz, mais il faut garder un peu de temps pour le balayage vertical). Pour une résolution de 1200 × 1600 et 85 Hz, la fréquence horizontale atteint 110 kHz. Il ne faut pas dépasser les fréquences maximales d’un écran cathodique ! Sinon, le faisceau ne peut pas suivre les données, des zones de l’écran (voire l’écran entier) sont éclairées trop longtemps ou trop souvent, et l’écran peut rapidement être détruit. Les moniteurs modernes reconnaissent normalement cette situation et désactivent automatiquement le faisceau ; pour un moniteur plus ancien, le risque de destruction est réel.
Fréquence de pixels (débit vidéo)
Comparaison entre les écrans cathodiques et LCD
DDC (Display Data Channel − canal de données d’affichage)
Cette fréquence indique le nombre de pixels qui sont transmis de la carte graphique au moniteur en une seconde. En 640 × 480 à une fréquence de 60 Hz, la valeur minimale est de 18,4 MHz. Pour prendre en compte le temps de retour sur le balayage, la fréquence vidéo est normalement plus proche de 25 MHz. Sur un écran plat, l’image est construite par de l’électronique de pilotage qui rend plus ou moins transparentes des petites parties de la surface de l’écran. Il n’est donc plus nécessaire de construire l’image ligne par ligne. Les moniteurs LCD avec une entrée analogique traitent, pour des raisons de compatibilité, les mêmes signaux d’entrée que les moniteurs cathodiques. Le signal est donc converti deux fois : de la carte graphique numérique au câble analogique puis à l’écran numérique. Cela peut faire légèrement scintiller l’image. La qualité est meilleure lorsque le signal est transmis en numérique via un câble DVI entre les prises correspondantes de la carte graphique et de l’écran. La qualité de l’image n’est optimale que lorsque la résolution du moniteur (par exemple 1280 × 1024) est respectée avec exactitude. Contrairement aux écrans cathodiques, les fréquences d’image sont le plus souvent fixées (généralement, entre 60 et 75 Hz). Une fréquence trop élevée peut entraîner un écran noir : aucune image ne s’affiche, car la fréquence maximale de l’électronique de commande est dépassée. La plupart des moniteurs modernes transmettent leurs références (par exemple, leur fréquence maximale) à la carte vidéo par le biais du câble de l’écran. Cela permet de reconnaître automatiquement l’écran et aide à configurer correctement la carte graphique.
Linux Livre Page 360 Mardi, 23. septembre 2008 1:05 13
360
LINUX
22.2 Problème des pilotes Avant de décrire la configuration et l’utilisation de X dans les sections suivantes, nous aimerions traiter ici du principal problème de X : la mauvaise prise en charge des cartes graphiques modernes par les pilotes libres. (Ce texte a été traduit et mis à jour en juillet 2008. Il se peut que la situation ait changé au moment où vous lirez ces lignes.) L’immense majorité des PC et ordinateurs portables actuels dispose d’un processeur graphique de l’un des trois fabricants ATI/AMD, Intel et NVIDIA − Intel ne fournit pas de cartes graphiques, mais uniquement des processeurs. Les solutions graphiques de VIA (principalement en tant que partie de la carte mère) se propagent également très vite. Donnons d’abord une bonne nouvelle : les pilotes libres contenus dans X fonctionnent en principe avec presque toutes les cartes graphiques courantes. Voici maintenant la mauvaise nouvelle : les performances atteintes sont au mieux médiocres et de nombreuses fonctions supplémentaires de la carte graphique restent inutilisées, comme les fonctions 3D, la gestion de plusieurs sorties, etc. ATI/AMD
Jusqu’à récemment, ATI/AMD se refusait à spécifier publiquement les interfaces de ses processeurs graphiques, ce qui a longtemps empêché le développement de pilotes 3D libres. Il existait cependant des pilotes fermés gratuits, mais leur prise en charge devenait de pire en pire au fil des ans : incompatibilité avec les versions actuelles de X.org, pas de prise en charge de AIGLX (bureau 3D), etc. Depuis le printemps 2007, la situation s’améliore nettement. ATI/AMD ouvre les spécifications de ses processeurs et les pilotes libres fonctionnent de mieux en mieux.
Intel
La prise en charge libre des processeurs graphiques Intel est globalement excellente. Cela vient du fait qu’Intel coopère beaucoup avec la communauté libre et fournit lui-même des pilotes libres.
NVIDIA
NVIDIA reste pour l’instant sur ses positions : les accords de licence avec d’autres entreprises et les brevets rendent impossibles le développement de pilotes libres et l’ouverture des spécifications. NVIDIA fournit en revanche des pilotes fermés gratuits, dont la qualité est globalement meilleure que celle des pilotes d’ATI/AMD. Les pilotes libres ne prennent en charge que les fonctions 2D (nv) ou ne sont pas encore très mûrs (nouveau).
VIA
Le pilote libre intégré à X ne fonctionne qu’avec les modèles VIA anciens. Pour les plus récents, vous avez trois possibilités : le pilote VESA (lent), le pilote libre de VIA (qui n’a pas bonne réputation et qui n’est pas intégré à X) et un second pilote libre du projet openChrome qui n’est pas très mûr. Fin juillet, VIA a publié plus de 800 pages de spécifications visant au développement de pilotes libres ; gageons que la situation s’améliorera rapidement.
Problèmes avec les pilotes non libres
Vous vous dites peut-être que la différence entre des "vrais" pilotes libres et des pilotes binaires gratuits tient du coupage de cheveux en quatre : l’important est que cela fonctionne. Il existe cependant de bonnes raisons de préférer les pilotes libres aux pilotes binaires : • Les pilotes binaires ne sont pas toujours stables. Cela s’est récemment amélioré, mais il n’existe aucune garantie pour le futur.
Linux Livre Page 361 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
361
• Pour que les pilotes graphiques fonctionnent de manière efficace, il est nécessaire de les lier étroitement au noyau Linux. Il existe donc entre le pilote réel (propriétaire) et le noyau (sous licence GPL) un petit module de noyau qui sert uniquement d’interface entre ces deux parties. De nombreux développeurs de Linux doutent que cette façon de procéder soit conforme à la GPL et ne la tolèrent qu’à contrecœur. Ils décrivent un tel noyau comme tainted (entaché) et déclinent dans ce cas toute responsabilité vis-à-vis d’éventuels problèmes de stabilité. La proximité avec le noyau a un inconvénient supplémentaire : après une mise à jour du noyau, le module de la carte graphique doit également être actualisé pour être compatible avec le noyau. La complexité de cette opération dépend de la distribution. Dans un cas idéal, le pilote est mis à jour automatiquement par le gestionnaire de paquetages. Sinon, le système graphique ne fonctionne plus et vous devez recompiler un module de noyau dans une console. • En raison des conflits avec la GPL, la redistribution de pilotes fermés est difficile au vu des licences utilisées. Pour de nombreuses distributions, vous devez télécharger et installer vous-même ces pilotes. Cette opération est plus ou moins complexe suivant la distribution : certaines privilégient le confort des utilisateurs par rapport à la stricte observance des idéaux libres. • Comme le code des pilotes graphiques n’est connu que des entreprises correspondantes, il est impossible d’en contrôler la sécurité depuis l’extérieur. Si un pilote rencontre un problème de sécurité (ce qui s’est déjà produit), les utilisateurs de Linux ne peuvent qu’espérer que l’entreprise concernée fournisse une mise à jour rapide − pour du code libre, la communauté de développeurs peut s’en occuper elle-même, ce qui va généralement plus vite. • Faute de code, il est impossible de porter les pilotes pour d’autres systèmes d’exploitation, d’autres architectures de processeurs, etc. Les entreprises décident quels systèmes sont pris en charge. Par exemple, les architectures 64 bits ont longtemps été exclues de ces pilotes. • La prise en charge graphique sous Linux dépend de la bonne volonté d’une poignée d’entreprises. Il est déjà arrivé qu’une carte graphique soit soudain inutilisable suite à une nouvelle version de X. Jusqu’à récemment, on pouvait résoudre le dilemme des pilotes en se disant que les pilotes libres suffisaient pour la 2D et que les fonctions 3D ne jouaient qu’un rôle mineur sous Linux. Ce n’est plus vrai : les bureaux 3D commencent à s’établir comme des standards. De plus, certains processeurs graphiques ne fonctionnent plus non plus en 2D sans pilote du fabricant. Linux ne peut rester un système complètement libre que si les principaux composants le sont également. Et ces derniers comptent évidemment les pilotes graphiques. Renseignezvous lors de vos prochains achats de matériel sur le statut des pilotes !
Linux Livre Page 362 Mardi, 23. septembre 2008 1:05 13
362
LINUX
22.3 Démarrer et arrêter X Cette section est un aperçu des commandes qui permettent de démarrer et d’arrêter X. La façon de procéder dépend de la distribution. Démarrage automatique
En général, le processus InitV démarre X automatiquement par le biais d’un gestionnaire d’affichage (Display Manager). Selon la distribution et la configuration, trois programmes peuvent jouer ce rôle : xdm, sa variante KDE kdm ou sa variante Gnome gdm. Une boîte de dialogue de connexion s’affiche généralement − il arrive que le gestionnaire de bureau soit configuré de manière à connecter automatiquement un utilisateur donné. Les détails du processus de démarrage dépendent fortement de la distribution. Sous Fedora et Red Hat, /etc/inittab contient une ligne qui lance X au niveau d’exécution 5 : x:5:once:/etc/X11/prefdm -nodaemon
Sous Debian et Ubuntu, le processus InitV lance le script /etc/init.d/gdm ou /etc/init.d/ kdm aux niveaux d’exécution 2 à 5. Sous SUSE, il lance le script /etc/init.d/xdm au niveau d’exécution 5. Redémarrer X
Les modifications dans la configuration de X ne sont prises en compte qu’après un redémarrage. Pour cela, déconnectez-vous. Lorsque le gestionnaire d’affichage affiche la boîte de dialogue de connexion, saisissez la combinaison de touches Ctrl+Alt+Retour Arrière. X est alors terminé et généralement redémarré immédiatement. Si X ne redémarre pas, connectez-vous en tant que root et lancez la commande suivante. Selon la distribution, vous devez remplacer gdm par kdm ou xdm. root# /etc/init.d/gdm start
Arrêter X
X fonctionne normalement jusqu’à l’arrêt de l’ordinateur sans qu’il faille l’arrêter. Vous pouvez connecter et déconnecter n’importe quel utilisateur. X fonctionne aussi lorsque aucun utilisateur n’est connecté et affiche, dans ce cas, la boîte de dialogue de connexion. Vous pouvez facilement passer à une console texte avec Ctrl+Alt+Fn. X fonctionne alors toujours et vous pouvez y retourner avec Alt+F7 ou, dans certaines distributions, Alt+F5. Si vous désirez réellement arrêter X (par exemple, pour effectuer des tâches de configuration), déconnectez-vous du bureau courant, passez dans une console texte avec Ctrl+Alt+F1, puis connectez-vous en tant que root et lancez init 3. Cette procédure fonctionne dans de nombreuses distributions, comme Fedora, Red Hat et SUSE. root# init 3
En ce qui concerne les distributions basées sur Debian (Debian, Ubuntu), vous devez dans cette même console texte arrêter le gestionnaire d’affichage gdm, kdm ou xdm. root# /etc/init.d/gdm|kdm|xdm stop Désactiver le démarrage automatique
Il est parfois nécessaire de désactiver le démarrage automatique de X, par exemple lorsqu’on utilise l’ordinateur en tant que serveur. Sous Red Hat, Fedora et SUSE, il suffit de réduire le niveau standard d’exécution de InitV et de le passer de 5 à 3. Pour cela, modifiez la ligne initdefault dans /etc/inittab. # Niveau d’exécution par défaut : 3 (multi-utilisateur sans X) id:3:initdefault:
Linux Livre Page 363 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
363
Cette modification est prise en compte au redémarrage de l’ordinateur. Pour réactiver le démarrage automatique, repassez au niveau d’exécution 5 par défaut. La procédure est différente pour les distributions basées sur Debian. Le niveau d’exécution n’est pas modifié, mais le démarrage automatique du gestionnaire d’affichage est supprimé. Remplacez si nécessaire gdm par kdm ou xdm. root# update-rc.d -f gdm remove root# update-rc.d gdm stop 1 0 1 2 3 4 5 6 .
Pour réactiver le démarrage automatique, les deux commandes suivantes sont nécessaires. Les valeurs 30 et 1 indiquent les valeurs de priorité pour le démarrage et l’arrêt du service. Elles varient selon la distribution ; celles indiquées ici sont les valeurs par défaut d’Ubuntu 8.04. root# update-rc.d -f gdm remove root# update-rc.d gdm defaults 30 1 Démarrer manuellement X
Lorsque X n’est temporairement pas lancé, il existe deux possibilités pour le démarrer manuellement. Jusqu’à ce que la configuration soit stable, utilisez de préférence la première. • startx. Cette commande démarre directement X. Il n’y a pas de boîte de dialogue de connexion. L’utilisateur qui lance startx est l’utilisateur connecté sous X. Certaines distributions (Fedora jusqu’à sa version 7 et RHEL jusqu’à sa version 5.n) s’appuient sur le fait qu’un serveur de polices est lancé avant le démarrage de X. Si vous lancez X manuellement, ce n’est pas le cas. Vous devez alors démarrer aussi manuellement le serveur de polices (ce qui n’est faisable qu’en tant que root). root# /etc/init.d/xfs start utilisateur$ startx
• Démarrage avec un gestionnaire d’affichage. Dans de nombreuses distributions, vous devez pour lancer le gestionnaire d’affichage passer au niveau d’exécution 5 : root# init 5
Pour les distributions basées sur Debian, il faut lancer explicitement le gestionnaire d’affichage : root# /etc/init.d/gdm|kdm|xdm start
Fichiers de journalisation de X Au démarrage de X, d’innombrables messages, avertissements, voire messages d’erreur sont enregistrés dans le fichier /var/log/Xorg.0.log. Ce dernier contient des informations supplémentaires sur le fichier de configuration utilisé, les modules chargés, les problèmes rencontrés, le mode graphique utilisé ou encore les raisons de cette utilisation. Les lignes de ce fichier sont annotées par les codes suivants : (**) paramètre provenant du fichier de configuration (++) paramètre provenant de la ligne de commande (==) paramètre par défaut de X
Linux Livre Page 364 Mardi, 23. septembre 2008 1:05 13
364
LINUX
(--) paramètre résultant du matériel détecté (!!) information (II) information (WW) avertissement (EE) erreur S’il existe plusieurs fichiers de journalisation pour X dans /var/log, utilisez le plus récent. En raison de la grande quantité d’informations dans le fichier Xorg.0.log, chercher des informations pertinentes revient à chercher une aiguille dans une botte de foin. Le plus simple est alors d’envoyer le fichier en question à quelqu’un qui s’y connaît mieux ou de le poster dans un forum d’aide.
Déterminer la version de X Pour connaître la version de X que votre ordinateur utilise, lancez la commande suivante. Depuis quelque temps, celle-ci ne renvoie plus la version de X (par exemple, 7.2 pour X11R7.2), mais le numéro de version du serveur (celle du programme Xorg). utilisateur$ X -showconfig ... X.Org X Server 1.4.0.90 Release Date: 5 September 2007 X Protocol Version 11, Revision 0 ...
Vous pouvez aussi lancer la commande xdpyinfo : utilisateur$ xdpyinfo |grep release vendor release number: 10400090
22.4 Configuration de base Les versions actuelles du serveur X ne peuvent être lancées que lorsque le fichier de configuration /etc/X11/xorg.conf existe. Si celui-ci est absent ou erroné (par exemple, si vous changez de carte graphique), le démarrage de X échoue. Vous devez alors vous connecter dans une console texte et modifier xorg.conf avec un éditeur ou un autre programme de configuration. Le serveur X est normalement configuré pendant l’installation. Si X fonctionne sans soucis sur votre ordinateur, vous pouvez passer cette section. Mais si vous avez un problème avec l’écran, la souris ou le clavier, cette section et les suivantes vous seront utiles. Cette section s’adresse aux lecteurs qui s’intéressent à la configuration interne de X ou qui ont des problèmes de configuration. Normalement, vous ne devriez pas modifier x.org manuellement, mais utiliser les outils de configuration de votre distribution : Debian Fedora, Red Hat
dpkg-reconfigure xserver-xorg system-config-display
Linux Livre Page 365 Mardi, 23. septembre 2008 1:05 13
365
SYSTÈME XWINDOW
SUSE
Module YaST Matériel, Carte graphique et moniteur ou sax2
Ubuntu (à partir de 7.10)
display-config-gtk
Toutes les distributions
X -configure ou xorgcfg ou xorgconfig
Depuis la version 7.3, le serveur X.org reconnaît lui-même le matériel. Grâce à ces données, X peut démarrer sans fichier de configuration (au moins, dans un mode graphique restreint).
Construction du fichier de configuration xorg.conf Le fichier /etc/X11/xorg.conf se divise en plusieurs sections préfixées d’une ligne Section "nom" et terminées par EndSection. Voici les différents noms de sections : Sections du fichier xorg.conf Monitor Device Screen ServerLayout Files Module ServerFlags Modes InputDevice InputDevice
données du moniteur configuration de la carte graphique résolution de l’écran assemblage des sections Screen et InputDevices noms de fichiers (par exemple, répertoire de polices) modules supplémentaires (par exemple, freetype, dri) options diverses du serveur modes vidéo (résolution, fréquence, etc.) configuration du clavier configuration de la souris
Un fichier de configuration classique ne contient qu’une partie de ces sections. X utilise dans ce cas les paramètres par défaut ou tente de détecter lui-même le matériel. Les lignes suivantes offrent un exemple minimal de configuration. Une de mes machines de test dispose d’une carte graphique NVIDIA et d’un écran LCD ; elle fonctionne sans problème avec ce fichier de configuration. Cet exemple suppose qu’un serveur de polices fonctionne ou que les polices se trouvent dans les répertoires de polices par défaut. Si ce n’est pas le cas, vous devez indiquer dans une section Files l’emplacement des fichiers de polices. X reconnaît la bonne résolution de l’écran et la souris. # /etc/X11/xorg.conf Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "InputDevice"
Linux Livre Page 366 Mardi, 23. septembre 2008 1:05 13
366
LINUX
Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "fr" Option "XkbVariant" "nodeadkeys" EndSection Section "Device" Identifier "Videocard0" Driver "nv" EndSection Section "Screen" Identifier "Screen0" Device "Videocard0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection
Vous remarquerez sûrement que toutes les sections incluent une ligne Identifier. Elle donne un nom à la section. Les noms sont utilisés pour agencer des sections individuelles. Par exemple, la section ServerLayout fait appel à Screen0 et Keyboard0. Certaines configurations incluent également des chaînes de caractères telles que Board, Vendor ou ModelName. Ces informations ne servent qu’à rendre plus clair le fichier de configuration. Elles ne sont pas utilisées par X et n’ont aucune relation avec les fonctions de X. man xorg.conf est une référence complète des mots clés et sections de xorg.conf.
Section Monitor (écran) La section Monitor ne nécessite généralement que deux informations : l’intervalle de fréquences horizontales (en kHz) et l’intervalle de fréquence d’image (en Hz). Les valeurs suivantes conviennent pour un écran LCD 20" doté d’une résolution de 1600x1200 pixels à une fréquence maximale de 75 Hz : Section "Monitor" ... HorizSync 30-95 # 30 à 95 kHz (lignes/sec) VertRefresh 58-78 # 58 à 78 Hz (images/sec) EndSection
Pour un écran cathodique traditionnel, la fréquence d’image doit être plus élevée pour afficher des images sans scintillement. Les données suivantes s’appliquent à un moniteur 19" cathodique classique. Attention, des valeurs élevées pour ces deux intervalles peuvent mener à la destruction de votre écran cathodique ! HorizSync 27-102 # 27 bis 102 kHz (lignes/sec) VertRefresh 50-160 # 50 bis 160 Hz (images/sec)
Linux Livre Page 367 Mardi, 23. septembre 2008 1:05 13
367
SYSTÈME XWINDOW
En pratique, ces valeurs sont rarement renseignées lorsqu’un écran LCD est branché. La section ne sert alors qu’à indiquer les éventuelles options, comme l’économie d’énergie du moniteur.
Section Device (carte graphique) Le mot clé le plus important de la section Device est Driver. Il indique quel module doit être chargé. Les pilotes de carte graphique disponibles se trouvent dans le répertoire /usr/ lib[64]/xorg/modules/drivers. Choix du pilote
Si vous ne savez pas quelle carte graphique vous avez, lancez lspci : root# lspci ... 01:00.0 VGA compatible controller: ATI Technologies Inc M10 NT [FireGL Mobility T2] (rev 80)
Le résultat n’indique cependant pas toujours le pilote graphique nécessaire. Dans ce cas, les notes de version de X.org (http://www.x.org/wiki/XorgReleases) sont très utiles, tout comme les pages de manuel qui sont indiquées. Par exemple, man radeon offre des informations sur le pilote Radeon et man nv sur le pilote NVIDIA de X.org. Si vous n’avez pas de chance, votre carte graphique n’est pas encore prise en charge par X.org, ou alors partiellement. Il s’agit peut-être d’un problème de détection de la carte : vous avez indiqué le bon module dans la section Device, mais X ne reconnaît pas la carte. Dans ce cas, vous pouvez essayer d’indiquer l’identifiant d’une carte compatible avec l’option ChipID (par exemple ChipID "0x1234"). Le fichier pci.ids fournit une liste d’identifiants valides. L’emplacement de ce fichier dépend de la distribution : /usr/share, /usr/share/ hwdata ou /var/lib/misc. Les forums de discussion peuvent également être un bon point de départ pour trouver une valeur correcte de ChipID. Si votre carte ne fonctionne toujours pas, vous pouvez utiliser les pilotes vga, vesa ou fbdev. Ils fonctionnent avec presque toutes les cartes graphiques, mais leurs performances sont relativement limitées. Options spécifiques aux pilotes
Presque tous les pilotes disposent d’options pour définir des paramètres spéciaux, contourner des problèmes ou activer des fonctions particulières. Nous ne pouvons pas les décrire ici pour des raisons de place. Vous trouverez des informations détaillées sur ces options dans les pages de manuel correspondant aux pilotes (par exemple man radeon). Les lignes suivantes illustrent, par exemple, l’utilisation de l’option DisplayPriority, nécessaire sur un ordinateur portable pour obtenir une image stable sur un moniteur TFT relié à la station d’accueil : Driver "radeon" Option "DisplayPriority" "High"
Linux Livre Page 368 Mardi, 23. septembre 2008 1:05 13
368
LINUX
Le tableau suivant recense les pilotes les plus fréquemment utilisés. Pilotes utilisés fréquemment par marque de carte graphique ATI/AMD Intel NVIDIA Autres
radeon, fglrx, radeonhd, ati intel, i810 nv, nvidia, nouveau vesa, fbdev, vga
Section Screen (résolution, nombre de couleurs) La section Screen lie le moniteur et la carte graphique, et indique à quelle résolution et à quelle profondeur de couleurs la carte graphique doit être utilisée. Chaque fichier xorg.conf doit disposer d’une section Screen ; pour une configuration multi-écrans, plusieurs sections sont nécessaires. Les mots clés Device et Monitor indiquent la carte graphique et l’écran à utiliser parmi ceux déjà définis. DefaultDepth définit la profondeur de couleurs par défaut ; il s’agit de bits par pixels. 24 bits indique que chaque composant (rouge, vert et bleu) dispose de 8 bits, soit 256 nuances, pour un total de 224 couleurs. Sous-section Display
Dans la section Screen, plusieurs sous-sections Display peuvent être définies pour plusieurs profondeurs de couleurs. Dans l’exemple ci-après, un seul mode est défini, pour des couleurs 24 bits : Section "Screen" Identifier
"Screen0"
Device
"Videocard0"
DefaultDepth
24
SubSection "Display" Depth
24
Modes
"1280x1024"
EndSubSection EndSection
La ligne Modes, optionnelle, peut définir la résolution souhaitée. Si cette ligne est omise ou contient une résolution invalide, X détermine automatiquement la meilleure résolution adaptée à l’écran et à la carte graphique. Il utilise pour cela une base de données de modes qui contient les paramètres de résolutions définis par les modes VESA − VESA signifie Video Electronics Standard Association et définit une série de normes suivies par la plupart des cartes graphiques. Il n’est malheureusement pas possible de configurer directement la fréquence d’image. X définit cette valeur lui-même en fonction des données de l’écran et de la carte graphique. La section Display peut aussi définir la taille d’un écran virtuel. Par exemple, Virtual 1600 1200 définit un écran virtuel de 1600x1200 pixels, quelle que soit la résolution réelle de l’écran.
Linux Livre Page 369 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
369
Si la ligne Modes définit plusieurs résolutions valides, X utilise la première comme paramétrage de base. Vous pouvez ensuite passer entre les différentes résolutions avec Ctrl+Alt++. Vous devez pour cela utiliser la touche + du pavé numérique.
Section ServerLayout La section ServerLayout lie les sections Screen et InputDevice. Généralement, un fichier de configuration ne contient qu’une seule section Screen et deux sections InputDevice (souris et clavier). Dans ce cas, la section ServerLayout peut être omise, car X combine les sections Screen et InputDevice selon ce schéma : Section "ServerLayout" Identifier "Layout0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" Screen "Screen0" EndSection Xinerama
La section ServerLayout est particulièrement importante lorsque plusieurs moniteurs sont utilisés en même temps. Il faut alors activer le mode multi-écrans avec Option "Xinerama" "On" et définir une section Screen par écran. La configuration minimale pour deux moniteurs est indiquée ci-après. Notez que vous avez aussi besoin de deux sections Device, même lorsqu’il n’y a qu’une seule carte graphique. # deux sections Monitor Section "Monitor" Identifier "Monitor1" ... EndSection Section "Monitor" Identifier "Monitor2" ... EndSection # deux sections Device, une par moniteur Section "Device" Identifier "Videocard1a" Driver "..." Screen 0 ... EndSection Section "Device" Identifier "Videocard1b" Driver "..." Screen 1 ... EndSection # deux sections Screen qui associent une section Device à une section
Linux Livre Page 370 Mardi, 23. septembre 2008 1:05 13
370
LINUX
# Monitor Section "Screen" Identifier "Screen1a" Device "Videocard1a" Monitor "Monitor1" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1b" Device "Videocard1b" Monitor "Monitor2" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection # une section ServerLayout qui assemble les sections Screen Section "ServerLayout" Identifier "Layout1" Screen 0 "Screen1a" LeftOf "Screen1b" Screen 1 "Screen1b" Option "Xinerama" "on" InputDevice ... EndSection Plusieurs dispositions
On peut définir plusieurs sections ServerLayout pour différents scénarios d’utilisation, par exemple Layout0 pour utiliser un portable de manière classique, Layout1 pour une présentation sur un vidéoprojecteur et Layout2 pour utiliser un moniteur externe. L’option DefaultServerLayout dans la section ServerFlags permet de choisir la disposition par défaut.
Section Files La section Files permet d’indiquer divers répertoires depuis lesquels le serveur X charge des fichiers. Ils ne sont nécessaires que lorsqu’ils diffèrent des répertoires par défaut. Nous parlerons des répertoires FontPath à la section 22.14.
Section Module La section Module contient, grâce au mot clé Load, différents modules d’extensions à charger par le serveur X : Section "Module" Load "extmod" ... EndSection
Linux Livre Page 371 Mardi, 23. septembre 2008 1:05 13
371
SYSTÈME XWINDOW
La section Module est optionnelle : la plupart des modules importants sont chargés automatiquement. Les fichiers de modules se trouvent le plus souvent dans les répertoires /usr/ lib[64]/xorg/modules/extensions et /usr/lib[64]/xorg/modules/fonts. Le tableau suivant indique les principaux modules. Modules importants extmod v4l dri glx dbe freetype type1 speedo
extensions souvent installées dans X, presque toujours essentielles Video 4 Linux (vidéo pour Linux) Direct Rendering Infrastructure (infrastructure de rendu direct) interface du protocole OpenGL X Double Buffering Extension (extension de tampon double) prise en charge des polices TrueType prise en charge des polices Adobe-Type-1 prise en charge des polices Bitstream
Section ServerFlags La section ServerFlags contient des options qui influent sur le comportement du serveur X : Section "ServerFlags" Option "DontZap" "on" Option "DefaultServerLayout" "Layout2" EndSection
Une description complète de toutes les options se trouve dans man xorg.conf. Voici les plus importantes : • AllowMouseOpenFail (par défaut, off) permet à X de démarrer même lorsqu’il échoue à initialiser ou reconnaître la souris. • DefaultServerLayout indique la section ServerLayout à utiliser par défaut. Cette option n’est nécessaire que lorsque xorg.conf contient plusieurs sections ServerLayout. • DontZap (par défaut, off) désactive, lorsqu’elle est à on, la terminaison immédiate du serveur X avec la combinaison de touches Ctrl+Alt+Retour Arrière. • DontVTSwitch (par défaut, off) désactive, lorsqu’elle est à on, le passage à une console texte avec Ctrl+Alt+Fn.
Définir ses propres modes graphiques X dispose d’une base de données qui contient toutes les résolutions et fréquences définies par VESA. Si vous utilisez l’un de ces modes (par exemple, avec la ligne Modes "1280x1024"), il est inutile de vous occuper de la manière dont ils sont définis.
Linux Livre Page 372 Mardi, 23. septembre 2008 1:05 13
372
LINUX
Si vous désirez utiliser une autre résolution (ce qui peut être nécessaire sur certains ordinateurs portables dont l’écran utilise une résolution non standard, par exemple 1024x600) ou atteindre une fréquence donnée, vous devez indiquer vous-même les paramètres du mode graphique souhaité. Pour cela, lancez la commande ModeLine dans la section Monitor. Vous pouvez aussi décrire ces paramètres dans une sous-section délimitée par Mode et EndMode. Ces opérations sont rares aujourd’hui. Il existe certains tutoriels de calcul de modes, par exemple aux adresses http://koala.ilog.fr/cgi-bin/nph-colas-modelines-fr ou http://www.traduc.org/docs/HOWTO/lecture/XFree86-Video-Timings-HOWTO.html.
XVideo XVideo (V4L)
DGA
Les lecteurs vidéo sous Linux (voir Chapitre 11) affichent, lorsque c’est possible, les images sur l’extension XVideo (en abrégé, XV) grâce à de la mémoire partagée de la carte graphique. Cette méthode nécessite le module de noyau v4l2 (Video 4 Linux version 2). Elle est très efficace, mais ne fonctionne que lorsque le pilote de la carte graphique prend en charge XV, ce qui n’est malheureusement pas toujours le cas. Si c’est le cas, l’extension X correspondante est normalement activée automatiquement. Dans certaines circonstances, vous pouvez avoir à activer manuellement le module avec la ligne Load "v4l" dans la section Module. Vous pouvez voir si XV est pris en charge avec la commande xvinfo. Celle-ci devrait renvoyer une longue liste d’informations à propos de diverses fonctions XVideo. Si le résultat est no adaptors present, XV n’est pas utilisable. Vous trouverez d’autres informations sur XV et Video 4 Linux aux adresses http://linuxtv.org/ v4lwiki/index.php/Main_Page et http://www.exploits.org/v4l. Si le pilote de votre carte graphique ne prend pas en charge XV, DGA fonctionne peutêtre. À l’instar de XV, il est activé automatiquement si le pilote reconnaît cette extension. Vous pouvez le tester avec le programme dga. B lance un test de performances et Q quitte le programme.
22.5 Pilotes ATI/AMD Les cartes graphiques ATI/AMD disposent de plusieurs pilotes en fonction du modèle : • atimisc. Pilote libre pour les cartes graphiques très anciennes avec un processeur Mach8/32/64. • r128. Pilote libre pour les cartes disposant d’un processeur graphique ATI Rage128 (comme Rage Fury, XPERT 128). • radeon. Pilote libre pour les cartes graphiques actuelles disposant d’un processeur graphique Radeon et de la prise en charge des fonctions 3D pour tous les modèles R100 à R400. • ati. Pilote libre qui active l’un des trois pilotes cités ci-dessus en fonction du modèle. • radeonhd. Pilote libre pour les cartes graphiques R500 et supérieures. Il ne dispose pas encore de la prise en charge des fonctions 3D, mais cela devrait changer rapidement au vu de l’ouverture des spécifications des cartes ATI/AMD. Ces pilotes sont, en juillet 2008, en cours de développement.
Linux Livre Page 373 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
373
• fglrx. Pilote propriétaire pour les modèles Radeon à partir du R300. Il prend en charge toutes les fonctions des cartes graphiques actuelles, mais pas celles des cartes plus anciennes. Le pilote radeon fonctionne convenablement avec les cartes R100 à R400 (voir man radeon), mais il ne prend pas forcément en charge toutes les fonctions des cartes graphiques et est sensiblement plus lent que fglrx. J’ai personnellement testé les deux pilotes sur mon portable doté d’une carte ATI Mobility T2 (famille R300). Depuis X.org version 7.2, radeon suffit à mes besoins : la sortie DVI fonctionne jusqu’à une résolution 1600x1200 dans scintillement et les fonctions 3D permettent l’utilisation du bureau 3D AIGLX. Le nom de la carte graphique n’indique pas quel processeur graphique est utilisé. La page Wikipedia suivante s’avère souvent utile : http://en.wikipedia.org/wiki/Comparison_of_ATI_Graphics_Processing_Units.
Pilote radeon Le pilote radeon fait partie du système X.org ; il n’est pas nécessaire de l’installer séparément. La configuration xorg.conf minimale se compose des lignes suivantes : Section "Device" Identifier "Device0" Driver "radeon" EndSection
man radeon fournit une référence complète des diverses options associées au pilote.
Pilote fglrx Seules quelques distributions fournissent directement le pilote fglrx. Cependant, il existe souvent des dépôts qui contiennent des paquetages pour le pilote correspondant au noyau courant. L’installation est alors un jeu d’enfant : le pilote est installé avec les commandes habituelles du gestionnaire de paquetages, une fois le dépôt ajouté. Pour activer le pilote, lancez la commande aticonfig --initial. Elle modifie xorg.conf pour qu’il contienne une référence au pilote fglrx : Section "Device" Identifier "Device0" Driver "fglrx" EndSection
aticonfig permet également de mettre en place des configurations plus avancées, par exemple pour utiliser plusieurs moniteurs (aticonfig --initial=dual). La nouvelle configuration xorg.conf n’est fonctionnelle que lorsque vous redémarrez X. Pour que les fonctions 3D de la carte soient effectivement utilisées, il faut que les conditions suivantes soient remplies : • xorg.conf doit contenir l’instruction Load "dri" dans la section Modules.
Linux Livre Page 374 Mardi, 23. septembre 2008 1:05 13
374
LINUX
• L’extension Composite doit être désactivée explicitement : Section "Extensions" Option "Composite" "Disable" EndSection
Installation manuelle
• Le module du noyau fglrx doit être chargé, ce dont se charge normalement le serveur X au démarrage. Pour savoir si ce module est effectivement actif, le plus simple est de lancer lsmod |grep fglrx. S’il n’est pas chargé, il n’est probablement pas installé ou incompatible avec la version courante du noyau. Si votre distribution ne dispose pas de paquetages pour les pilotes, vous devez les installer manuellement. Pour cela, installez tous les programmes nécessaires à la compilation d’un module du noyau (compilateur C, make, fichiers d’en-têtes du noyau, etc.). Téléchargez ensuite le pilote à la page http://ati.amd.com/support/driver.html, rendez le fichier téléchargé exécutable avec chmod u+x et lancez-le en root.
Pilote radeonhd Le pilote radeonhd est fourni dans certaines distributions et il suffit alors de l’installer. Les pages http://wiki.x.org/wiki/radeonhd et http://www.radeonhd.org/ fournissent des informations à jour sur le statut de ce pilote.
22.6 Pilotes Intel Le pilote libre i810 est compatible avec tous les processeurs Intel i8nn et i9nn. Le pilote intel, disponible depuis le printemps 2007, fonctionne avec quelques processeurs plus récents (G33, Q33, Q35).
Configuration
Modifier la résolution de l’écran
Les deux pilotes font officiellement partie de X ; il n’est donc pas nécessaire de les installer en sus. Ils prennent en charge les fonctions 3D. Les performances de ces dernières ne sont certes pas comparables avec celles des cartes ATI et NVIDIA actuelles, mais elles sont amplement suffisantes pour utiliser les effets 3D du bureau. man i810, man intel et la page http://intellinuxgraphics.org/man.html fournissent de plus amples informations sur ces pilotes. Dans la plupart des cas, la section Device ne nécessite pas d’option spécifique. Il faut néanmoins indiquer une exception lorsqu’un ordinateur portable est utilisé avec un vidéoprojecteur ou lorsque deux moniteurs sont utilisés en même temps. Vous trouverez plus d’informations à ce sujet dans la page de manuel du pilote et à la section 22.11. Les processeurs graphiques Intel prennent en charge peu de résolutions par défaut. En particulier, les écrans larges (résolutions 1280x800, 1440x1050, etc.) manquent souvent. Pour utiliser de telles résolutions, le Bios du processeur graphique doit être modifié. Le pilote intel actuel reconnaît ces résolutions, mais ce n’est pas le cas du pilote i810, plus ancien. La commande 915resolution peut aider à résoudre les problèmes liés au pilote i810 pour les distributions qui ne fournissent pas encore intel. La page web de ce projet se trouve à l’adresse http://www.geocities.com/stomljen/.
Linux Livre Page 375 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
375
22.7 Pilotes NVIDIA Les utilisateurs de cartes NVIDIA ont le choix entre les pilotes suivants : • nv est le pilote libre intégré à X, utilisable pour tous les modèles courants. Il ne prend pas en charge la 3D et souffre de plusieurs restrictions en ce qui concerne le mode multiécrans, l’utilisation de la sortie TV, etc. Si vous n’avez pas besoin de ces fonctionnalités, nv fonctionne sans problème et de manière efficace. • nvidia est le pilote propriétaire de NVIDIA prenant en charge presque toutes les fonctions. Il est disponible à l’adresse http://www.nvidia.com/Download/index.aspx. • nouveau est un pilote libre plus récent prenant en charge la 3D. Il n’en est cependant qu’aux débuts de son développement. Vous trouverez plus d’informations à son sujet à l’adresse http://nouveau.freedesktop.org/wiki/.
Pilote nv Le pilote nv fait partie du système X.org et ne nécessite pas d’installation supplémentaire. La configuration minimale contient les lignes suivantes : Section "Device" Identifier "Device0" Driver "nv" EndSection
man nv fournit une référence des options et des fonctions spéciales du pilote.
Pilote nvidia
xorg.conf
Seules quelques distributions fournissent directement le pilote nvidia. Il existe cependant souvent des dépôts contenant des paquetages pour le pilote correspondant au noyau courant. L’installation est alors un jeu d’enfant : le pilote est installé avec les commandes habituelles du gestionnaire de paquetages, une fois le dépôt ajouté. La documentation du pilote NVIDIA est très complète et se trouve normalement dans un des répertoires /usr/share/doc/xorg-x11-drv-nvidia* ou /usr/share/doc/NVIDIA*. Pour activer le pilote, lancez la commande nvidia-xconfig en root. Celle-ci modifie xorg.conf pour faire référence au pilote dans la section Device : Section "Device" Identifier "Device0" Driver "nvidia" EndSection
Selon l’emplacement où a été installé le pilote NVIDIA, la section Files doit également contenir une ligne ModulePath : Section "Files" ModulePath "/usr/lib[64]/xorg/modules/extensions/nvidia" ... EndSection
Linux Livre Page 376 Mardi, 23. septembre 2008 1:05 13
376
Module du noyau
TwinView
Installation manuelle
LINUX
Le pilote NVIDIA est incompatible avec l’extension DRI de X.org et effectue les opérations correspondantes lui-même. Il faut donc supprimer la ligne Load "dri" de la section Module. Le programme graphique nvidia-settings permet, une fois le pilote NVIDIA installé, de configurer plus finement l’affichage. Il est impératif de disposer du module du noyau nvidia pour que le pilote fonctionne. S’il est absent ou compilé pour une version différente du noyau, le pilote ne fonctionne pas et X ne peut pas être démarré. Le mode TwinView est une alternative intéressante à Xinerama. Il présente l’avantage de pouvoir faire fonctionner toutes les fonctions 3D en parallèle sur les deux écrans. De plus, la configuration est relativement simple. L’inconvénient est que certains gestionnaires de bureau ou de fenêtre présentent dans ce cas des problèmes de positionnement de fenêtres. Vous trouverez plus d’informations à ce sujet à l’adresse http://memoire-grise-liberee.fr.eu.org/nVidia/support/TwinView/. Si votre distribution ne fournit pas de paquetages pour les pilotes ou si ceux-ci ne sont pas à jour, vous devez installer le pilote et compiler le module du noyau nvidia vous-même. Installez d’abord les paquetages nécessaires à cette compilation (compilateur C, make, fichiers d’en-têtes du noyau, etc.). Sous Ubuntu, assurez-vous que les modules nvidia-glx et linux-restricted-modules ne sont pas installés et que le fichier /etc/init.d/nvidia-glx n’existe pas. La désinstallation du paquetage linux-restricted-modules présente l’inconvénient de supprimer tous les paquetages non GPL, y compris ceux dont vous avez éventuellement besoin, par exemple pour votre carte Wi-Fi. Téléchargez le pilote à l’adresse http://www.nvidia.com/Download/index.aspx. Arrêtez X avec init 3 ou /etc/init.d/gdm stop (selon votre distribution), puis lancez le programme d’installation en tant que root. Pour désinstaller le pilote, lancez la commande : root# nvidia-installer --uninstall
22.8 Pilotes VESA, Framebuffer et VGA
Pilote VESA
Si vous utilisez une carte graphique pour laquelle il n’existe pas (encore) de pilote, les trois pilotes suivants peuvent servir de solution d’urgence. L’affichage est plutôt lent et les fonctions 3D inexistantes, mais ils permettent au moins d’utiliser un système graphique. Vous pouvez utiliser tous les modes VESA de votre carte graphique. Ces modes sont des résolutions standardisées. Chacun est défini par trois caractéristiques : la résolution, la profondeur de couleurs et la fréquence d’image. Presque toutes les cartes graphiques comprennent, en plus de leurs propres modes, quelques modes VESA. Les lignes suivantes montrent que l’utilisation du pilote VESA est très simple. Si le reste du fichier de configuration est correct, tous les modes VESA compris par la carte et par l’écran sont pris en charge. Section "Device" Identifier "myDevice" Driver "vesa" EndSection
Linux Livre Page 377 Mardi, 23. septembre 2008 1:05 13
377
SYSTÈME XWINDOW
Pilote Framebuffer
Le pilote fbdev accède directement à la mémoire de la carte graphique. Il se situe donc à un niveau encore plus bas que le pilote VESA. Il devrait fonctionner avec presque toutes les cartes graphiques si le noyau Linux est compilé avec la prise en charge de cette opération. C’est le cas si le fichier /proc/fb existe. Un prérequis pour utiliser ce pilote est que le mode VGA correct soit choisi au moment de l’amorçage de l’ordinateur. Jusqu’au redémarrage de l’ordinateur, X ne peut utiliser que ce mode graphique. Pour choisir un mode, passez l’option vga=n au noyau (voir Chapitre 24). La valeur correcte de n se trouve dans le tableau suivant. 6402400 6402480 8002600 10242640 10242768 11522720 128021024 14402900
160021200
8 bpp
768
769
771
874
773
869
775
864
796
16bpp (5:5:5)
797
784
787
875
790
870
793
865
797
16bpp (5:6:5)
798
785
788
876
791
871
794
866
798
24bpp
799
786
789
877
792
872
795
867
799
32bpp
834
809
814
878
824
873
829
868
834
Vous devez indiquer la bonne chaîne de caractères pour la ligne Driver de la section Device : Section "Device" Identifier "myDevice" Driver "fbdev" EndSection Pilote VGA
Le pilote VGA ne peut afficher que 640x480 ou 800x600 pixels en 4 bits (soit 16 couleurs) ; il est donc la dernière solution envisageable. Vous trouverez plus de détails avec man vga.
22.9 Clavier Configuration de base Il existe deux mécanismes de configuration d’un clavier sous X : Xmodmap et Xkb. Ils permettent de modifier la disposition du clavier et les touches d’état comme Ctrl, les raccourcis clavier, etc. Xmodmap est considéré comme obsolète et devrait être remplacé par Xkb. En pratique, vous utiliserez probablement un mélange des deux : • La disposition du clavier est configurée dans xorg.conf avec Xkb. • Pendant le démarrage, le gestionnaire d’affichage lit les fichiers Xmodmap et Xkbmap locaux et globaux. En général, les fichiers suivants sont pris en compte (lorsqu’ils existent) : – /etc/X11/Xkbmap ; – ~/.Xkbmap ; – /etc/X11/Xmodmap (uniquement lorsqu’il n’y a pas de fichier Xkbmap) ; – ~/.Xmodmap (uniquement lorsqu’il n’y a pas de fichier Xkbmap).
Linux Livre Page 378 Mardi, 23. septembre 2008 1:05 13
378
xorg.conf
LINUX
Selon la distribution, certaines divergences peuvent apparaître. La syntaxe des fichiers Xkbmap et Xmodmap est différente : Xkbmap est directement redirigé vers setxkbmap et contient une seule ligne d’options pour cette commande (voir man xkbmap), tandis que Xmodmap contient plusieurs instructions (voir man xmodmap). • Pour finir, KDE et Gnome permettent de modifier la configuration du clavier ; Xkb est alors à nouveau utilisé. La large diffusion des fichiers Xmodmap provient des innombrables pages Internet qui documentent Xmodmap. À l’inverse, Xkb a peu de documentation en ligne. L’utilisation en parallèle de ces deux systèmes peut cependant mener à des incompatibilités. Si vous désirez modifier vous-même la configuration de votre clavier, il est préférable de le faire dans xorg.conf ou dans les boîtes de configuration de KDE ou de Gnome. Si ces solutions ne vous conviennent pas, vous pouvez toujours modifier directement les fichiers ~/.Xmodmap ou ~/.Xkbmap. La configuration de base du clavier se trouve dans une section InputDevice du fichier xorg.conf. Cette configuration minimale est utilisée pour un clavier US de 101 touches : Section "InputDevice" Identifier "myKeyboard" Driver "Keyboard" EndSection
Ce second exemple définit un clavier français de 105 touches : Section "InputDevice" Identifier Driver Option Option Option Option EndSection
"Generic Keyboard" "kbd" "CoreKeyboard" "XkbRules" "XkbModel" "XkbLayout"
"xorg" "pc105" "fr"
Lorsque vous configurez vous-même votre clavier, sans passer par un programme de configuration, vous vous heurtez à l’énorme quantité d’options et de paramètres, souvent insuffisamment documentés (voir man 4 keyboard ou man kbd). Voici quelques éléments pour régler les principales options : • XkbRules définit comment les options suivantes sont exploitées. En général, la bonne valeur est xorg ; les claviers PC-98 sont une exception pour laquelle il faut saisir la valeur xfree98. • XkbModel décrit le clavier. – pc101 : clavier US sans touches Windows (valeur par défaut). – pc102 : clavier international sans touches Windows. – pc104 : clavier US avec touches Windows. – pc105 : clavier international avec touches Windows. – abnt2 : clavier brésilien. – jp106 : clavier japonais. – pc98 : clavier PC-98.
Linux Livre Page 379 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
Gnome et KDE
379
– macintosh : clavier Apple Macintosh. – powerpcps2 : un clavier Apple Power PC. • XkbLayout décrit la disposition des touches sur le clavier, qui dépend du pays. – us : clavier anglais US (valeur par défaut). – fr : clavier français. – be : clavier belge. – ch : clavier suisse. – de : clavier allemand. – it : clavier italien. – es : clavier espagnol. • XkbVariant permet d’ajouter des paramètres à la disposition du clavier. Elle définit, par exemple, le comportement nodeadkeys qui permet de saisir directement les caractères ~, ^, ’ et `. Par défaut, ils sont utilisés comme caractères de composition pour les caractères accentués. Elle sert aussi à définir des variantes dans une disposition de clavier : le clavier suisse se décline avec des valeurs de XkbVariant fr ou de. • XkbOptions passe des options supplémentaires qui sont transmises à setxkbmap -option. Sous KDE, vous pouvez modifier la disposition du clavier dans la configuration du système (Régional & langue, Disposition du clavier). Sous Gnome, l’applet Indicateur de claviers permet d’atteindre un résultat similaire. Ces outils permettent de passer rapidement d’une disposition de clavier à une autre, par exemple pour saisir du texte en plusieurs langues. Si la modification du clavier dans xorg.conf reste sans effet, cela provient probablement de la configuration clavier du bureau. Indépendamment de la configuration du clavier, les deux gestionnaires de bureau permettent d’associer des raccourcis clavier à des actions, par exemple pour lancer rapidement des programmes fréquemment utilisés.
Claviers avec touches spéciales
De plus en plus de claviers ont des touches rapides, par exemple pour démarrer un navigateur Internet ou définir des fonctions bureautiques ou multimédias. Pour les utiliser sous Linux, vous devez installer le programme LinEAK (Linux support for Easy Access and Internet Keyboards), fourni par de nombreuses distributions dans divers paquetages nommés lineak*. La configuration de LinEAK est décrite dans man lineakd et sur le site web http://lineak.sourceforge.net/.
VerrNum et VerrMaj VerrNum
Par défaut, le pavé numérique n’est pas actif sous Linux, afin d’éviter des problèmes avec les claviers de portables. Si vous travaillez avec un "vrai" clavier, ce pavé peut être utilisé pour déplacer le curseur. La touche VerrNum permet de l’utiliser pour saisir des chiffres. Sous KDE, vous pouvez activer VerrNum de manière permanente dans le module Clavier & Souris, Clavier.
Linux Livre Page 380 Mardi, 23. septembre 2008 1:05 13
380
LINUX
Si vous utilisez un autre gestionnaire de bureau, lancez la commande numlockx. Dans de nombreuses distributions, elle se trouve dans le paquetage du même nom. Une fois ce dernier installé, VerrNum est activé automatiquement lors de la connexion suivante. VerrMaj
Si vous activez sans cesse par mégarde le verrouillage des majuscules, vous pouvez désactiver la touche en ajoutant ces lignes à ~/.Xmodmap. VerrMaj fonctionne alors comme Maj. remove Lock = Caps_Lock keysym Caps_Lock = Shift_L add Shift = Shift_L
Je n’ai pas trouvé comment obtenir le même comportement avec Xkbmap. Le fichier ~/.Xkbmap s’assure, en revanche, que VerrMaj peut être utilisé comme une troisième touche Ctrl : -option ctrl:nocaps
Vous pouvez aussi passer cette option dans la section InputDevice de xorg.conf : Option "XkbOptions" "ctrl:nocaps"
Saisie de caractères étrangers Il existe plusieurs méthodes sous X pour saisir des caractères étrangers qui ne sont pas directement disponibles sur le clavier :
Touche Compose
• La touche Compose réunit deux caractères. Par exemple, Compose+A+E saisit le caractère æ. • Selon la configuration, les caractères ~, ^, ’ ou ` sont combinés automatiquement avec le caractère suivant. ~+A saisit le caractère ã. Ce mode est souvent désactivé avec l’option nodeadkeys dans /etc/X11/xorg.conf. • Certaines applications ou gestionnaires de bureau (Gnome, KDE et OpenOffice.org par exemple) proposent une boîte de dialogue de caractères spéciaux, qui permet de choisir le caractère souhaité à la souris. Les combinaisons de touches définies par la touche Compose, et même l’existence d’une telle touche dépendent de la distribution. La définition de cette touche était auparavant courante, mais la plupart des distributions l’ont aujourd’hui abandonnée. Le plus simple est de définir les combinaisons de touches avec xmodmap. Dans les résultats présentés ici, la première colonne indique le code de la touche, la deuxième la touche sans modificateur Maj et la troisième la touche avec le modificateur Maj. Si xmodmap ne renvoie pas de résultat, aucune touche Compose n’est définie. Le résultat suivant signifie que les trois combinaisons de touche Maj+AltGr, Maj+Ctrl droit et Maj+Windows droit fonctionnent comme une touche Compose. utilisateur$ xmodmap -pk | grep -i multi_key KeyCode Keysym (Keysym) ... (Shift) 109 0xffe4 (Control_R) 0xff20 (Multi_key) 113 0xfe03 (ISO_Level3_Shift) 0xff20 (Multi_key) 116 0xffec (Super_R) 0xff20 (Multi_key)
Le tableau suivant indique les codes de touches pour les touches de contrôle importantes sur un clavier international de PC.
Linux Livre Page 381 Mardi, 23. septembre 2008 1:05 13
381
SYSTÈME XWINDOW
Codes de touches pour les touches de contrôle (clavier international de PC) s^ c^ X^ a^ l
50 37 115 64 66
sS cS XS bS X
63 109 116 113 117
Si aucune touche Compose n’est prévue dans votre distribution, vous pouvez en définir une simplement : • Sous Gnome, lancez gnome-keyboard-properties (Système > Préférences > Clavier), cliquez sur le bouton Options de l’agencement de l’onglet Agencements, puis choisissez une option dans le groupe Position de la touche Compose. Malheureusement, les choix sont limités et ne permettent pas de définir une combinaison de touches. • KDE dispose d’une configuration similaire, dans le module Régional & Langue > Clavier > Disposition du clavier. L’onglet Avancé permet de définir la position de la touche Compose. • Indépendamment du bureau, ajoutez dans ~/.Xkbmap l’une de ces options : – -option compose:menu pour la touche Windows de menu contextuel ; – -option compose:rwin pour la touche Windows droit qui n’est pas disponible sur tous les claviers ; – -option compose:caps pour la touche VerrMaj. Vous pouvez aussi saisir cette ligne dans xorg.conf : Option "XkbOptions" "compose:menu"
Le tableau suivant recense quelques exemples de saisie de caractères spéciaux. La définition des règles de composition se trouve dans le fichier /usr/share/X11/locale/ jeu_de_caractères/Compose. Exemples d’utilisation de la touche Compose Compose+"+a Compose+`+a Compose+`+a ´ Compose+~+a Compose+o+a Euro et Cent
ä à á ã å
Compose+a+e Compose+<+< Compose+>+> Compose+!+! Compose+c+!
æ « » ¡ ©
Dans toutes les distributions, pour une disposition française, AltGr+E est associé au symbole Euro. De même, AltGr+C affiche le symbole Cent.
Linux Livre Page 382 Mardi, 23. septembre 2008 1:05 13
382
LINUX
22.10 Souris et pavé tactile xorg.conf
À l’instar du clavier, la souris est configurée dans une section InputDevice. Celle-ci est optionnelle. Lorsqu’elle est absente, X tente de déterminer lui-même une configuration correcte. Ces lignes illustrent une configuration minimale : Section "InputDevice" Identifier "myMouse" Driver "mouse" Option "Protocol" "Auto" Option "Device" "/dev/input/mice" EndSection
La configuration de la souris fait appel aux mots clés suivants : • Protocol définit le protocole de communication entre la souris et l’ordinateur. Voici les différents protocoles : – Auto demande à X de détecter le protocole automatiquement. – ExplorerPS/2 est une souris à molette PS/2. – IMPS/2 est une souris à molette PS/2 compatible Microsoft. – IntelliMouse est une souris à molette série compatible Microsoft. – PS/2 est une souris classique PS/2. – usb est une souris USB. • Device définit comment la souris est connectée à l’ordinateur. Les valeurs habituelles de ce paramètre sont /dev/input/mousen ou /dev/input/mice, ce qui, dans le second cas, permet d’utiliser toutes les souris et pavés tactiles connectés en parallèle. • Buttons indique combien de boutons a la souris. Par défaut, X suppose que la souris en a trois. Attention, la molette est considérée comme deux boutons. Pour une souris avec trois boutons et une molette, il faut donc en compter cinq. • ZAxisMapping indique quels boutons virtuels doivent être associés à une molette. Quand vous déplacez la molette dans un sens, X détecte un appui sur un bouton. Quand vous la déplacez dans l’autre sens, X détecte un appui sur un autre bouton. Les lignes suivantes fournissent la configuration d’une souris à molette typique. Elle n’a que deux boutons mais, comme la molette peut elle-même être utilisée comme bouton, elle est considérée comme une souris à trois boutons. Les directions de la molette sont associées aux boutons virtuels 4 et 5. Option Buttons 5 Option "ZAxisMapping" "4 5"
• Emulate3Buttons permet d’émuler le comportement d’un troisième bouton par un clic simultané sur les boutons droit et gauche. Il s’agit d’une solution d’urgence, mais cela peut aider à travailler sous X avec une souris à deux boutons. Emulate3Timeout indique une durée en millisecondes pendant laquelle l’utilisateur doit appuyer sur les deux boutons. Si cette durée est trop courte, l’appui presque simultané sur les deux boutons est compté comme deux clics différents. Si elle est trop longue, elle interfère avec les clics
Linux Livre Page 383 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
383
usuels (car X ne sait pas ce qu’il doit faire du clic en attendant un éventuel second). Les paramètres pour ces options sont : Option "Emulate3Buttons" Option "Emulate3Timeout" "50"
Pavé tactile
xorg.conf
Presque tous les ordinateurs portables actuels disposent d’un pavé tactile (touchpad) Synaptics ou d’un composant compatible. À la base, le protocole de ce périphérique émule une souris standard, de sorte qu’un pilote spécial ne soit pas nécessaire. Pour utiliser diverses fonctions supplémentaires du pavé tactile, il existe cependant un pilote, installé par défaut dans la plupart des distributions et généralement configuré automatiquement. Vous trouverez plus d’informations sur synaptics à l’adresse http://web.telia.com/~u89404340/touchpad/. La configuration dans xorg.conf ressemble généralement à celle-ci : Section "InputDevice" Identifier "Synaptics" Driver "synaptics" Option "Device" "/dev/input/mice" Option "Protocol" "auto-dev" Option "Emulate3Buttons" "yes" EndSection
synclient
L’option Emulate3Buttons est nécessaire, car la plupart des modèles de pavé tactile n’ont pas de troisième bouton. Des options supplémentaires (voir man synaptics) permettent d’activer toutes les autres fonctions. Pour désactiver complètement le pavé tactile (lorsque vous travaillez avec une souris externe), remplacez la section Synaptics par une section pour la souris, ou utilisez l’option "TouchpadOff" "1". L’option "SHMConfig" "on" permet de modifier les paramètres du pavé tactile sans redémarrage de X. Pour cela, installez la commande synclient ou l’interface graphique gsynaptics (Gnome). synclient nom=valeur modifie l’option indiquée. synclient -l affiche les paramètres courants et synclient -m 100 l’état courant du pavé tactile toutes les 100 ms.
22.11 Portable et vidéoprojecteur Quiconque a déjà fait une présentation sous Linux avec un portable connaît la sensation de se demander si la synchronisation de l’image avec un vidéoprojecteur va fonctionner. Et si l’écran reste noir, reste-t-il assez de temps pour modifier xorg.conf, afin de faire coopérer la carte graphique et le vidéoprojecteur ? Ou vaut-il mieux lancer Windows pour mener à bien la conférence ? Grâce à OpenOffice.org, ce n’est pas un problème, mais vous risquez de ne pas faire bonne impression en tenant une conférence sur Linux avec une présentation sous Windows... Il est bien sûr possible de faire cette présentation sous Linux : dans 99 % des cas, les combinaisons ordinateur A, vidéoprojecteur B et distribution Linux C fonctionnent. Mais il faut en
Linux Livre Page 384 Mardi, 23. septembre 2008 1:05 13
384
Règles de survie
LINUX
passer par une configuration manuelle, ce qui demande des compétences techniques, du temps et de la patience. Le quart d’heure précédant votre présentation risque de ne pas suffire. Passons d’abord en revue quelques règles de survie : • Connectez votre portable au vidéoprojecteur avant de l’allumer. En général, l’écran interne du portable est alors désactivé et la sortie de signal est activée. Avec un peu de chance, le gestionnaire d’amorçage, les messages InitV et X apparaissent directement sur le vidéoprojecteur. Vous pouvez alors paramétrer KDE ou Gnome, afin d’utiliser la résolution optimale du projecteur (généralement 1024x768). • Certains portables permettent d’activer explicitement la sortie de signal dans le Bios − la sortie n’est normalement activée que lorsqu’un moniteur externe ou un vidéoprojecteur est connecté. • Testez la sortie vidéo de votre portable chez vous avec un autre écran. Vous n’avez aucune garantie que le projecteur fonctionnera exactement comme votre moniteur, mais ce test est un premier indicateur d’éventuels problèmes. • Pendant que vous testez et configurez votre portable, il est préférable de supprimer le démarrage automatique de X. Passez en niveau d’exécution 3 (init 3) ou arrêtez le gestionnaire d’affichage. Pour tester vos modifications, lancez startx. Que faire lorsque le vidéoprojecteur ou le moniteur externe n’ont pas d’image lisible, et que l’écran du portable est également noir ? Vous pouvez alors essayer de travailler en mode console, ce qui permet de modifier xorg.conf ou au moins d’éteindre proprement l’ordinateur. Si cela ne fonctionne pas, la seule solution consiste à redémarrer l’ordinateur en aveugle. Tapez d’abord Ctrl+Alt+Retour Arrière pour terminer X si celui-ci fonctionne encore puis, avant le redémarrage de X, Ctrl+Alt+Suppr pour redémarrer l’ordinateur.
Configuration minimale
Pour régler les problèmes de vidéoprojecteur, commencez par définir une résolution fixe de 1024 × 768 dans une fréquence horizontale réduite (de l’ordre de 53 kHz) et une fréquence verticale d’environ 60 Hz. Ces données devraient fonctionner avec la plupart des vidéoprojecteurs, y compris les modèles plus anciens. Le fichier de configuration qui suit montre les modifications à faire en gras. # /etc/X11/xorg.conf ... Section "Monitor" ... HorizSync 31.5 - 53 VertRefresh 57-63 EndSection ... Section "Screen" ... DefaultDepth 24 SubSection "Display" ... Modes "1024x768" EndSubSection EndSection
Linux Livre Page 385 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
385
Cette configuration ne garantit certes pas que le vidéoprojecteur fonctionnera après le redémarrage de X, mais la probabilité est largement améliorée. Si vous testez cette configuration sur un écran normal, il arrive que la fréquence d’image ne soit pas de 60 Hz, mais bien plus haute, en contradiction avec la configuration définie. Cela provient du fait que la plupart des moniteurs envoient leurs données de configuration via DDC (Display Data Channel, canal de données d’affichage) à la carte graphique. Ces données ont priorité sur xorg.conf. Certains pilotes permettent de désactiver explicitement DDC dans la section Device. Configurations multi-écrans
Pour les présentations, il est encore plus confortable d’utiliser une configuration multiécrans, dans laquelle l’écran du portable et le vidéoprojecteur sont utilisés indépendamment l’un de l’autre. Vous pouvez alors afficher des notes sur votre portable, tandis que seule votre présentation est visible sur le vidéoprojecteur − selon mon expérience, OpenOffice.org a cependant souvent des problèmes à trouver l’écran correct pour afficher la présentation en mode plein écran. Les lignes suivantes illustrent des extraits de xorg.conf dans ce type de configuration. Attention, les options de la section Device dépendent de la carte graphique ! Cet exemple utilise le pilote i810. Les autres sections de l’exemple peuvent cependant être utilisées pour toutes les configurations multi-écrans : vous devez définir pour chaque écran une section Monitor et une section Device, puis les assembler dans la section Screen. La section ServerLayout indique la position relative des deux écrans. Vous devez aussi utiliser l’option Xinerama. # /etc/X11/xorg.conf # Configuration multi-écrans pour un portable avec carte graphique Intel Section "InputDevice" Identifier "Keyboard0" ... EndSection Section "InputDevice" Identifier "Synaptics" ... EndSection # deux sections Monitor pour l’écran du portable et le vidéoprojecteur Section "Monitor" # moniteur du portable, 1280x800 # xorg récupère lui-même les données nécessaires Identifier "Monitor0" EndSection Section "Monitor" # vidéoprojecteur en 1024x768, 60 Hz Identifier "Monitor1" HorizSync 31.5 - 50.0 VertRefresh 58.0 - 62.0 EndSection # deux sections Device, une par écran
Linux Livre Page 386 Mardi, 23. septembre 2008 1:05 13
386
LINUX
Section "Device" # périphérique pour l’écran du portable Identifier "Videocard1a" Driver "i810" BusID "PCI:0:2:0" Screen 0 Option "MonitorLayout" "CRT,LFP" EndSection Section "Device" # périphérique pour la sortie externe (vidéoprojecteur) Identifier "Videocard1b" Driver "i810" BusID "PCI:0:2:0" Screen 1 Option "MonitorLayout" "CRT,LFP" EndSection # deux sections Screen qui associent chaque Device à son moniteur Section "Screen" # configuration pour l’écran interne pour la disposition 1 Identifier "Screen1a" Device "Videocard1a" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection Section "Screen" # configuration de la sortie pour la disposition 1 Identifier "Screen1b" Device "Videocard1b" Monitor "Monitor1" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection # section ServerLayout qui associe les deux sections Screen Section "ServerLayout" # même image sur l’écran et sur le projecteur Identifier "Layout1" Screen 0 "Screen1a" LeftOf "Screen1b" Screen 1 "Screen1b" Option "Xinerama" "on" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Synaptics" "CorePointer" EndSection # cette disposition est active Section "ServerFlags" # seulement l’écran # Option "DefaultServerLayout" "Layout0" # écran et projecteur en multi-écrans Option "DefaultServerLayout" "Layout1" EndSection
Linux Livre Page 387 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
387
22.12 Graphismes 3D Les graphismes 3D sous Linux végétaient auparavant dans l’ombre. D’une part, en dehors de quelques économiseurs d’écran et jeux isolés, il existait peu d’applications 3D. D’autre part, les graphismes 3D réclamaient l’utilisation de pilotes binaires. La situation des pilotes s’est depuis améliorée et, à l’été 2006, une application majeure a vu le jour : il ne s’agit pas d’un jeu, mais des effets 3D pour le bureau présentés pour la première fois par Novell dans SUSE Enterprise Desktop 10. Les fonctions 3D de la carte sont utilisées pour déformer les fenêtres lorsqu’on les déplace, pour projeter les bureaux sur un cube, etc. Toutes ses fonctionnalités n’ont pas de réelle utilité, mais elles plaisent à de nombreux utilisateurs. Cette section traite des bases des graphismes 3D sous Linux. La section suivante présente les bureaux 3D et des astuces de configuration pour diverses combinaisons matériel/logiciel. Les concepts afférents à la 3D sont bien expliqués sur les pages http://dri.freedesktop.org/wiki/CategoryGlossary et http://jonsmirl.googlepages.com/graphics.html. Vous trouverez plus d’informations sur la 3D sous Linux aux adresses http://dri.freedesktop.org/wiki/ et http://www.mesa3d.org. OpenGL
Les graphismes 3D sous Unix/Linux sont gérés par OpenGL. Il s’agit d’une bibliothèque développée par SGI pour représenter des graphismes 3D, disponible sur presque tous les ordinateurs Unix/Linux. La plupart des programmes et jeux 3D sous Linux sont basés sur OpenGL. Le code d’OpenGL n’était pas libre initialement (cela a depuis changé) ; c’est pourquoi la bibliothèque libre Mesa a été développée. Celle-ci était au départ une solution purement logicielle. Comme elle est trop lente pour de nombreux programmes et jeux, elle est généralement associée sous X au module DRI.
DRI
Le module DRI (Direct Rendering Interface, interface de rendu direct) permet d’utiliser les fonctions 3D rapides de la carte graphique. Cela ne fonctionne que lorsque la carte prend en charge de telles fonctions (ce qui est le cas de la plupart des modèles actuels) et qu’il existe un pilote DRI pour la carte. Les cartes actuelles dotées de processeurs ATI/AMD et NVIDIA ne peuvent être actuellement utilisées de manière optimale qu’en installant les pilotes binaires des fabricants. Ceuxci fonctionnent en général avec le module DRI de X. Le pilote NVIDIA est une exception : il implémente lui-même les fonctions de DRI.
GLX
Sous X, les fonctions OpenGL sont utilisées via la bibliothèque GLX. Cette dernière connecte le système XWindow à OpenGL. GLX s’assure, par exemple, que les tâches OpenGL ne s’occupent que des calculs touchant à une partie visible de la fenêtre sans collision avec d’autres fenêtres. GLX est intégré à X par un module.
Bibliothèque libGL
La bibliothèque libGL est une connexion entre le module GLX et les programmes OpenGL. Elle doit correspondre à l’implémentation OpenGL installée (DRI ou NVIDIA). /usr/lib/ libGL.* sont donc des liens vers les bibliothèques réelles.
Linux Livre Page 388 Mardi, 23. septembre 2008 1:05 13
388
xorg.conf
LINUX
Le pilote NVIDIA installe ses propres versions des bibliothèques libGL. Les liens de /usr/ lib sont également modifiés. Vous pouvez les rétablir avec nvidia-installer --uninstall. Il n’est pas nécessaire de configurer explicitement DRI dans xorg.conf, car les modules dri, glx et dbe sont chargés par défaut − dbe évite les scintillements pendant la construction et le changement d’images. Les lignes suivantes dans la section Module indiquent que ces modules sont chargés : Section "Module" ... Load "dbe" # Double Buffering Extension Load "dri" # Direct Rendering Infrastructure (ne pas utiliser avec # NVIDIA !) Load "glx" # GLX (Open GL for X) EndSection
Droits d’accès à DRI
Par défaut, seul root peut accéder directement au matériel graphique. L’accès aux fonctions DRI/GLX est donc restreint à root. Pour permettre à d’autres utilisateurs de bénéficier des graphismes 3D, il faut ajouter deux options à xorg.conf. Dans les lignes suivantes, tous les membres du groupe graphics ont accès aux graphismes 4D − vous devez bien sûr créer ce groupe et associer des utilisateurs. Section "DRI" # (n’est pas nécessaire lorsque le pilote nvidia est # utilisé) Group "graphics" Mode 0660 EndSection
Ces deux options indiquent le groupe propriétaire et les droits d’accès au fichier /dev/dri/ card0. Ce périphérique sert à accéder à la carte graphique. Le paramétrage suivant est plus libéral. Tous les utilisateurs peuvent alors utiliser les fonctions DRI. Cela peut cependant représenter une faille de sécurité et n’est pas conseillé sur les ordinateurs connectés directement à un réseau. Section "DRI" # (n’est pas nécessaire lorsque le pilote NVIDIA est # utilisé) Mode 0666 EndSection
Tester les fonctions 3D
Certaines distributions donnent automatiquement les bons droits au fichier /dev/dri/card0 à l’utilisateur connecté au système graphique. Dans ce cas, vous pouvez vous passer de la section DRI. Le programme glxinfo permet de vérifier si tout a fonctionné. Il affiche de nombreuses informations sur le système GLX. grep filtre les lignes importantes : root# glxinfo |grep render direct rendering: Yes OpenGL renderer string: MOBILITY FIREGL T2 Pentium 4 (SSE2) (FireGL) (GNU_ICD)
Ces lignes signifient que le pilote DRI pour une carte graphique ATI (fglrx) fonctionne. Si ce n’est pas le cas, la sortie ressemble à ceci : root# glxinfo | grep render direct rendering: No OpenGL renderer string: Mesa GLX Indirect
Linux Livre Page 389 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
389
Un autre test très visuel est le programme gears ou glxgears. Il fait partie des programmes de démonstration de Mesa et doit éventuellement être installé à part (paquetage mesa-demos ou mesa-utils). Si vous utilisez le pilote binaire ATI, vous pouvez aussi lancer le programme fgl_glxgears. glxgears montre dans une fenêtre trois engrenages qui tournent. Le shell qui a lancé glxgears affiche toutes les cinq secondes le nombre d’images par seconde (FPS). Sur ma machine de test (Intel Core 2 Duo 2,4 Ghz, carte graphique NVIDIA 7600-GS), j’ai obtenu comme résultats en plein écran (1600x1200 points, couleurs 24 bit) 92 FPS avec le pilote nv (sans fonctions 3D), et 395 FPS avec le pilote nvidia (avec les fonctions 3D).
22.13 Bureau 3D Apple a été le précurseur de l’utilisation des fonctions 3D des cartes graphiques modernes pour le bureau. Des fonctions élémentaires du bureau, comme le déplacement des fenêtres, sont ainsi nettement plus rapides. Sun a également avancé dans ce sens avec son projet Looking Glass, qui offre au bureau des fonctions 3D pour le rendre plus attrayant. En 2006, SUSE a présenté SuSE Linux Enterprise Desktop avec des fonctions 3D. Depuis, la plupart des grandes distributions Linux fournissent ces fonctions à leurs utilisateurs, pour autant que la carte graphique et le pilote soient adaptés, et permettent généralement de configurer cela en quelques clics. Fonctions
Pour ceux qui n’ont pas encore testé le bureau 3D, voici un bref aperçu des fonctions et gadgets importants : • Lorsqu’on déplace des fenêtres, leur forme est modifiée comme si elles étaient caoutchouteuses (voir Figure 22.1). • Le passage entre les bureaux affiche ces derniers sur les faces d’un cube en 3D. • L’apparition, la réduction, l’agrandissement et la fermeture des fenêtres et des menus sont animés avec différents effets (transparence, etc.). • Lorsqu’on change de fenêtre avec Alt+Tab, la fenêtre choisie passe en avant-plan.. À la place d’une liste d’icônes, vous voyez le programme à activer (voir Figure 22.2). • Vous pouvez aussi utiliser la fonction Scale pour changer de fenêtre. Celle-ci fonctionne comme Exposé sous Mac OS X : toutes les fenêtres ouvertes sont réduites et s’affichent les unes à côté des autres. Vous pouvez alors choisir avec la souris ou les touches du curseur la fenêtre à activer. Cette fonction est souvent lancée avec les touches Pause, Ctrl+Alt+Flèche haut, F8 ou F9 ou, selon la configuration, lorsque vous déplacez la souris dans le coin en haut à droite de l’écran. • La fonction Zoom permet d’agrandir une partie du bureau. Lorsque vous déplacez la souris à la frontière de la section visible, la section se déplace sans ralentissement. Cette fonction facilite la vie des malvoyants, mais permet aussi d’afficher des sites web mal développés sur un grand moniteur à une taille décente.
Linux Livre Page 390 Mardi, 23. septembre 2008 1:05 13
390
LINUX
Figure 22.1 Déplacement d’une fenêtre dans un bureau 3D.
Il est bien sûr légitime de s’interroger sur l’utilité de ces fonctions. Je les ai personnellement désactivées après quelques jours. Le déplacement sans ralentissement des fenêtres est agréable, mais seule la fonction Scale m’a réellement enthousiasmé.
Figure 22.2 Changement de fenêtre.
Raccourcis clavier
La plupart des fonctions peuvent être configurées ou désactivées. En fait, les fonctions disponibles dépendent largement de la distribution, tout comme les raccourcis clavier suivants.
Linux Livre Page 391 Mardi, 23. septembre 2008 1:05 13
391
SYSTÈME XWINDOW
Raccourcis utiles pour le gestionnaire de bureau 3D
Prérequis
a+t
changement de fenêtre animé
p ou c+a+W
changement de fenêtre animé (Scale/Exposé)
c+a+Z
changement de bureau animé
c+a+S ^
tournoiement des bureaux (cube 3D)
X+Clic S
zoom (variante 1)
X+Clic ^
zoom (variante 2)
S+0
changement de vitesse des effets 3D
G
capture d’écran (y compris pendant une animation)
Pour profiter de ces gadgets 3D, les prérequis suivants doivent être respectés : • X doit permettre d’utiliser les fonctions 3D directement dans le gestionnaire de fenêtre (et non, comme précédemment, uniquement à l’intérieur des fenêtres). Il existe pour cela deux choix : AIGLX et XGL. • Un pilote graphique compatible avec ces extensions ou les fournissant directement doit être installé. • Le gestionnaire de fenêtre doit utiliser les fonctions 3D en question. C’est, par exemple, le cas du programme Compiz. Attention, les effets 3D de la carte graphique ne fonctionnent que lorsque vous travaillez avec un seul moniteur. Le pilote NVIDIA et son mode TwinView sont une exception : ils permettent d’utiliser un bureau 3D sur deux moniteurs. Le tableau suivant résume la compatibilité des différents pilotes avec AIGLX et XGL.
Prise en charge des pilotes (été 2008) XGL
AIGLX
radeon
oui, pour autant que les fonctions 3D de la carte soient oui, pour autant que les fonctions 3D de la carte soient priprises en charge par le pilote ses en charge par le pilote
fglrx
oui
oui, pour autant que le pilote soit au moins en version 8.42.3 et qu’une carte graphique compatible soit utilisée
radeonhd
non (pas de prise en charge de la 3D)
non (pas de prise en charge de la 3D)
i810, intel
oui, mais nécessite un processeur i9xx au minimum
oui
nv
non (pas de prise en charge de la 3D)
non (pas de prise en charge de la 3D)
nvidia
oui
oui
nouveau
non (prise en charge de la 3D limitée)
non (prise en charge de la 3D limitée)
Linux Livre Page 392 Mardi, 23. septembre 2008 1:05 13
392
LINUX
Vous vous demandez peut-être s’il vaut mieux utiliser XGL ou AIGLX. De nombreux arguments parlent en faveur d’AIGLX : il est plus efficace, demande moins de mémoire, est plus répandu et compatible avec les jeux 3D. En pratique, vous ne verrez cependant pas de grandes différences entre XGL et AIGLX. Les effets 3D chargent peu la carte graphique ; une différence de performances de quelques pour cent n’est donc pas pertinente. L’important est que cela fonctionne ! L’approche pragmatique est sans doute la meilleure : mettez en place le système pris en charge par votre distribution et votre carte graphique. Il vaut mieux éviter d’installer et de configurer manuellement ces applications : il existe certes d’innombrables tutoriels pour presque tous les cas particuliers, mais leur adaptation échoue souvent à cause d’une incompatibilité quelconque (par exemple, en raison de la parution d’une nouvelle version de votre pilote graphique, de X ou de Compiz Fusion). Nous nous concentrerons dans cette section sur AIGLX.
AIGLX AIGLX signifie Accelerated Indirect GLX (GLX indirect accéléré). Les fonctions 3D sont transmises au serveur X, qui les transmet à la carte graphique (d’où le terme "indirect"). Cette manière de faire implique donc peu de modifications dans l’architecture du serveur X. AIGLX est en particulier utilisé par Red Hat/Fedora et par Ubuntu. Vous trouverez plus d’informations à son sujet sur les pages http://fr.wikipedia.org/wiki/AIGLX, http://en.wikipedia.org/wiki/AIGLX et http://fedoraproject.org/wiki/RenderingProject/ aiglx. xorg.conf
AIGLX fait partie intégrante du serveur X depuis sa version 7.1. Vous ne devez donc rien installer de plus. Il est automatiquement activé lorsque c’est possible. Le fichier de journalisation contient alors la ligne AIGLX enabled. Si ce n’est pas le cas, ajoutez cette ligne dans xorg.conf : Section "ServerFlags" Option "AIGLX" "on" EndSection
AIGLX suppose que l’extension Composite est activée, ce qui est normalement le cas lorsque le serveur X est activé. grep COMPOSITE /var/log/Xorg.0.log doit normalement renvoyer le résultat Initializing built-in extension COMPOSITE. Si ce n’est pas le cas, ajoutez cette ligne dans xorg.conf : Section "Extensions" Option "Composite" "enable" EndSection
Les points suivants conseillent des configurations pour utiliser AIGLX avec différents pilotes graphiques. Nous tenons ici pour acquis que xorg.conf contient déjà toutes les options nécessaires pour utiliser les fonctions 3D. glixinfo | grep render doit renvoyer Direct rendering: Yes. • radeon et AIGLX ne demandent aucune option supplémentaire.
Linux Livre Page 393 Mardi, 23. septembre 2008 1:05 13
393
SYSTÈME XWINDOW
• i810/intel et AIGLX ne demandent aucune option supplémentaire. • nvidia et AIGLX fonctionnent actuellement sans problème. La section Device doit contenir la ligne : Option "AddARGBGLXVisuals" "True"
Le pilote NVIDIA peut lui-même fournir les fonctions AIGLX et n’est donc pas dépendant de l’implémentation AIGLX du serveur X.org.
Compiz Fusion Le gestionnaire de fenêtre est responsable de la représentation des effets optiques. C’est à cela que sert Compiz Fusion. Il provient de la fusion entre les projets Compiz et Beryl. Vous ne le trouverez que dans les distributions répandues ; les plus anciennes utilisent majoritairement Compiz, Beryl étant parfois proposé comme paquetage optionnel. Compiz Fusion se compose d’un ensemble de programmes et de greffons. compiz est le gestionnaire de fenêtre en soi. Il définit les fenêtres qui sont visibles, celle qui a le focus, les effets qui sont appliqués à l’apparition, au redimensionnement ou à la fermeture des fenêtres, ainsi que les raccourcis clavier qui peuvent être utilisés. Le code pour les effets 3D n’est pas directement intégré à compiz, mais se trouve dans d’innombrables greffons (/usr/lib[64]/compiz/libXxx.so). gtk-window-decorator (dans les versions plus anciennes, gnome-window-decorator) affiche, autour du contenu des fenêtres, les décorations, dont la barre de titre et quelques boutons. Ce programme est compatible avec KDE, mais kde-window-decorator est plus souvent utilisé sous KDE. Selon la version et la configuration, le programme emerald du projet Beryl peut aussi être utilisé. Attention, compiz et les programmes d’affichage de décorations, qui remplacent les composants correspondants de Gnome et de KDE, ne sont qu’en partie pris en compte. Cela peut mener à une certaine confusion. Vous trouverez plus d’informations sur Compiz Fusion et ses greffons à l’adresse http://www.compiz-fusion.org/. Configuration
Pour la configuration de base de Compiz et de Compiz Fusion, les grosses distributions ont développé certains outils de configuration : Fedora, Red Hat
desktop-effects
SUSE
gnome-xgl-setting (utilisable aussi sous KDE)
Ubuntu
gnome-appareance-properties (uniquement sous Gnome)
Avec ces trois programmes, vous ne pouvez régler que les fonctions de base du bureau 3D. Il existe cependant beaucoup d’autres paramétrages (activation et configuration de greffons, raccourcis, etc.). Pour configurer ces fonctions supplémentaires, vous devez installer compizconfig-settings-manager (voir Figure 22.3).
Linux Livre Page 394 Mardi, 23. septembre 2008 1:05 13
394
LINUX
Figure 22.3 Configuration détaillée de Compiz.
22.14 Polices
Répertoire des polices
fonts.dir et fonts.scale
fc-list et xlsfonts
Les polices sous X se divisent en polices vectorielles (échelonnables) et en fontes bitmap (prévues pour une taille fixe). Jusqu’à il y a quelques années, X ne pouvait gérer que les fontes bitmap. Celles-ci ne sont disponibles qu’en des tailles données et fixées à l’avance. Elles peuvent s’afficher à d’autres tailles, mais sont alors "pixelisées". freetype et type1 fournissent depuis, via le serveur de polices xfs, des polices libres vectorielles (TrueType, Type-1). Les applications KDE et Gnome utilisent exclusivement ces polices. Les fontes bitmap ne jouent aujourd’hui qu’un rôle limité et ne sont utilisées que dans certains programmes plus anciens (par exemple, xterm). La différence historique entre ces deux jeux de caractères se retrouve aujourd’hui dans de nombreuses commandes de gestion. Par exemple, fc-list renvoie la liste de toutes les polices vectorielles, tandis que xlsfonts renvoie celle de toutes les fontes bitmap. Les fichiers de polices se trouvent généralement dans les sous-répertoires de /usr/share/ fonts. Pour les polices bitmap, il existe un fichier pour chaque taille et attribut (par exemple gras, italique). Pour les polices vectorielles, un fichier pour toutes les tailles suffit. Dans les répertoires de fontes bitmap, on trouve deux fichiers spéciaux : fonts.dir et fonts.scale. Ces derniers sont nécessaires pour les programmes X anciens qui n’utilisent pas le système fontconfig. Ils contiennent des informations sur les noms et les tailles disponibles des fontes. La commande fc-list |sort affiche une liste de toutes les polices vectorielles. xlsfonts effectue la même opération pour les fontes bitmap. Le résultat est long et peu clair, car la liste contient une ligne pour chaque taille de fonte et chaque jeu de caractères. xfontsel permet de chercher des fontes bitmap qui correspondent à vos critères de recherche.
Linux Livre Page 395 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
Noms des fontes
395
Les noms des fontes bitmap sont construits sur ce modèle : -fonderie-famille-graisse-inclinaison-largeur-taille-espacement-codage
Ce qui donne, pour un exemple concret : -adobe-helvetica-bold-o-normal--10-100-75-75-p-60-iso8859-1
gucharmap, xfd et kcharselect
• Il s’agit d’une fonte de l’entreprise Adobe. • La famille de la police est Helvetica (qui est, comme Arial, une police sans serif). • Il s’agit d’une fonte grasse (bold). Les autres possibilités comptent normal, medium, black, extrabold. • L’inclinaison de la fonte est o (oblique). D’autres options sont r (roman, non inclinée) et i (italic, italique). • La largeur de la fonte n’est pas indiquée. Certaines polices comprennent ici condensed, extended, etc. • La taille de la fonte est de 10 points. • L’espacement de la police est p (proportional). D’autres possibilités sont c (character cell) ou m (monospaced), qui signifient toutes deux que les caractères ont la même chasse. C’est le cas, par exemple, de la famille de polices Courier. • Les caractères sont codés en ISO-Latin 1. Ce codage contient la plupart des caractères des langues d’Europe occidentale. • Les nombres qui suivent représentent la résolution de la fonte, la largeur moyenne de la police, etc. Les programmes gucharmap et kcharselect affichent tous les caractères d’une police vectorielle et permettent de copier des caractères individuels dans le presse-papiers (voir Figure 22.4).
Figure 22.4 Représentation de caractères spéciaux dans gucharmap.
Linux Livre Page 396 Mardi, 23. septembre 2008 1:05 13
396
LINUX
Les caractères bitmap peuvent s’afficher avec xfd -fn ’nom_de_la_fonte’. nom_de_la_fonte doit être le nom exact de la fonte en syntaxe. Le plus simple est d’utiliser une ligne de résultat de xlsfonts comme paramètre. Jeux de caractères et prise en charge d’Unicode
X est fourni avec tous les jeux de caractères imaginables, y compris Unicode. Cependant, ceux qui sont pris en charge dépendent de la police : • Pour les polices vectorielles, les informations du jeu de caractères sont embarquées dans le fichier de police. Les fichiers de codage associent des symboles individuels au code d’un jeu de caractères. Ces fichiers sont gérés indépendamment des polices et se trouvent habituellement dans le répertoire /usr/share/fonts/encodings ou /usr/share/ fonts/X11/encodings. • Pour les fontes bitmap, il existe un fichier par jeu de caractères pris en charge. Unicode a peu de fontes bitmap. La commande suivante en affiche la liste : utilisateur$ xlsfonts ’*iso10646-1*’
Attention, le fait qu’une police comprenne le codage Unicode n’offre pas de garantie sur le nombre de caractères qu’elle contient. Il existe actuellement peu de polices Unicode complètes (et aucune d’entre elles n’est gratuite). De plus, les polices de ce type sont énormes et peu adaptées à un usage quotidien. Types de polices
X fournit différents types de polices. En voici une rapide description : • Fontes 75-dpi et 100-dpi (bitmap). Il s’agit des fontes les plus anciennes qui font partie de X depuis plusieurs années. Elles ne sont disponibles dans des tailles correctes que pour des résolutions d’écran de 75 et 100 dpi. Les familles de polices correspondantes comptent généralement Charter, Courier, Helvetica, Lucida, New Century Schoolbook, Times et Utopia. • Polices Type1 (vectorielles). Il s’agit d’un format de polices PostScript définies par Adobe. Elles se trouvent dans des fichiers *.pfa ou *.pfb. • Polices TrueType (vectorielles). Développées par Microsoft et Apple comme alternative au format de polices Adobe, elles fournissent une haute qualité d’affichage et d’impression, comparable à celle des polices Type1. Elles se trouvent dans des fichiers *.ttf. La police DejaVu est l’une des plus populaires sous Linux. Basée sur Bitstream Vera, il s’agit d’une police libre, souvent utilisée par défaut sous Linux. • Polices OpenType (vectorielles). Il s’agit d’un métaformat qui permet de décrire des polices TrueType et Type1. Les fichiers correspondants ont les extensions *.otf et *.ttf. • Polices Speedo (vectorielles). Il s’agit du nom d’une police de l’entreprise Bitstream. Sous Linux, elles regroupent généralement Charter, Courier et Vera. • Polices URW (vectorielles). L’entreprise URW a financé pour GhostScript un paquetage de polices PostScript standard vectorielles (AvantGarde, Bookman, Courier, Gothic, Helvetica, New Century Schoolbook, Palatino, Times, Symbol, ZapfChancery et ZapfDingbats). Il s’agit en interne de polices Type1. Elles peuvent être redistribuées dans le cadre de la GPL et sont utilisées par GhostScript.
Linux Livre Page 397 Mardi, 23. septembre 2008 1:05 13
397
SYSTÈME XWINDOW
Il existe bien sûr, chez des entreprises comme Adobe ou Bitstream, d’innombrables polices qui ne sont pas fournies sous Linux. Elles doivent être achetées comme tout produit commercial. Celles fournies sous Linux ne sont généralement mises à disposition que parce qu’elles sont offertes par ces entreprises.
Configuration sans serveur de fontes
xorg.conf
À la base, les fontes peuvent s’afficher de deux manières à l’écran. Le serveur X peut convertir lui-même les fichiers de polices en bitmap qui s’affichent à l’écran. Un serveur de fontes (le plus souvent xfs) peut également effectuer ce travail. RHEL, jusqu’à sa version 5.n, et Fedora 7 utilisent un serveur de fontes ; ce n’est généralement pas le cas des autres distributions. Il n’y a pas vraiment d’avantage ou d’inconvénient décisif pour l’une ou l’autre des solutions. Les serveurs de fontes n’étant plus vraiment utilisés actuellement, nous n’en parlerons pas dans cet ouvrage. Si vous n’utilisez pas de serveur de fontes, vous pouvez ajouter à la section Files de xorg.conf le chemin des répertoires de polices. Cet ajout est facultatif. Cependant, si vous l’omettez, le serveur X ne prend en compte que quelques répertoires standard indiqués à la compilation. Section "Files" FontPath FontPath FontPath FontPath FontPath FontPath FontPath ... EndSection
"/usr/share/fonts/misc:unscaled" "/usr/share/fonts/local" "/usr/share/fonts/75dpi:unscaled" "/usr/share/fonts/100dpi:unscaled" "/usr/share/fonts/Type1" "/usr/share/fonts/URW" "/usr/share/fonts/Speedo"
L’ordre des répertoires a une importance. Si une fonte existe dans plusieurs répertoires, la première trouvée dans la liste de répertoires est utilisée. Il est donc important d’indiquer en premier les polices ayant une bonne qualité d’affichage. Lorsque le chemin est suivi de :unscaled, X n’utilise la fonte que lorsqu’elle est disponible exactement dans la taille souhaitée. Ce mot clé n’est valide que pour les polices bitmap et non vectorielles. Les versions actuelles du serveur X chargent par défaut tous les modules pour gérer les différents types de polices. Certains fichiers de configuration énumèrent cependant explicitement ces modules : Section "Module" Load "bitmap" Load "speedo" Load "type1" Load "freetype" ... EndSection
# # # #
fontes bitmap polices Speedo polices Type-1 et CID polices TrueType, OpenType et Type1
Linux Livre Page 398 Mardi, 23. septembre 2008 1:05 13
398 Activer la configuration
LINUX
Pour prendre en compte les modifications de la configuration des polices, il suffit généralement de lancer la commande suivante. Il arrive cependant qu’un redémarrage de X soit nécessaire. root# xset fp rehash
Installation de polices TrueType et Type1 supplémentaires La plupart des distributions Linux fournissent peu de polices TrueType et Type1. Si vous possédez des droits sur de telles polices, cette section propose quelques astuces pour leur installation. Trois étapes sont nécessaires :
Installation manuelle
1.
Les fichiers de polices doivent être copiés dans le répertoire prévu à cet effet.
2.
Les fichiers fonts.* doivent être mis à jour dans le répertoire de polices.
3.
X (ou le serveur de fontes xfs) doit être informé que de nouvelles polices sont disponibles.
Copiez les fichiers (*.ttf, *.pfa ou *.pfb) dans l’un des répertoires de polices de votre distribution. Veillez à ce qu’ils soient lisibles par tous les utilisateurs. Lancez ces commandes pour enregistrer les nouvelles polices : root# root# root# root#
cd /usr/share/fonts/xxx fc-cache . mkfontscale . mkfontdir .
La commande fc-cache fait partie du système fontconfig. mkfontscale et mkfontdir mettent à jour les fichiers fonts.scale et fonts.dir. Pour finir, rafraîchissez le système de polices de X : root# xset fp rehash
KDE
Gnome
Il peut également être utile de redémarrer X. Konqueror affiche toutes les polices disponibles lorsque vous saisissez l’adresse fonts:/. Pour installer vos propres polices TrueType et Type1, lancez l’installateur de polices de la configuration du système. Vous pouvez les installer pour l’utilisateur courant ou tous les utilisateurs. Dans le premier cas, elles sont installées dans le répertoire ~/.fonts et ne sont accessibles qu’à l’utilisateur courant et aux programmes compatibles avec fontconfig. Si vous les installez pour le système, elles sont installées dans l’un des répertoires de polices de X. Nautilus permet d’afficher toutes les polices du système à l’adresse fonts:///. Pour installer de nouvelles polices, déplacez le fichier de police par glisser-déposer. Les polices sont alors copiées dans le répertoire ~/.fonts et sont disponibles à tous les programmes compatibles avec fontconfig.
Polices Microsoft
Vous pouvez, même sans Windows, utiliser des polices Microsoft. Microsoft a longtemps fourni des polices TrueType en téléchargement. Elles devaient permettre à tous les utilisateurs d’afficher de manière optimale les polices Microsoft utilisées sur les sites web.
Linux Livre Page 399 Mardi, 23. septembre 2008 1:05 13
SYSTÈME XWINDOW
399
Le site de téléchargement original n’existe plus ; les polices ne peuvent plus être téléchargées que sur le site corefonts. La redistribution commerciale de ces polices est interdite ; c’est pourquoi les distributions ne les fournissent généralement pas directement. Malheureusement, leur installation sous Linux est compliquée, car elles sont contenues dans un fichier *.exe et ne peuvent pas être distribuées sous un autre format. Le site web http://corefonts.sourceforge.net/ fournit une documentation pour les distributions qui utilisent des paquetages RPM. Sous Ubuntu, le paquetage msttcorefonts permet d’installer les polices Microsoft.
Anticrénelage Par défaut, X utilise l’anticrénelage (anti-aliasing) pour afficher les polices TrueType et Type1. Les contours des lettres s’affichent alors en niveaux de gris. Les caractères sont moins pixelisés. Sur de nombreux écrans plats, chaque pixel est composé de trois sous-pixels (rouge, vert et bleu). La variation des couleurs associées permet une plus grande qualité d’affichage de l’anticrénelage. On parle ici de rendu par sous-pixelisation. Configuration
L’anticrénelage et le rendu par sous-pixelisation sont définis dans le fichier XML /etc/ fonts/fonts.conf. Celui-ci ne doit cependant pas être modifié, car il est régulièrement écrasé. Les paramètres doivent être modifiés dans /etc/fonts/local.conf (pour le système) ou dans ~/.fonts.conf (pour l’utilisateur). man fontconfig ou man fonts.conf vous donneront plus d’informations à ce sujet.
Artefacts colorés
Selon le moniteur, le rendu par sous-pixelisation peut mener à des artefacts colorés gênants. Il faut alors désactiver la fonction avec les lignes suivantes : <match target="font" > <edit mode="assign" name="rgba" > none
Configuration sous KDE et Gnome
KDE et Gnome fournissent des boîtes de dialogue confortables pour modifier la configuration utilisateur par utilisateur de l’anticrénelage et du rendu par sous-pixelisation. Sous KDE, les paramètres se trouvent dans le module Apparence > Polices de la configuration du système. Sous Gnome, lancez gnome-font-properties ou Propriétés > Polices.
Linux Livre Page 400 Mardi, 23. septembre 2008 1:05 13
400
LINUX
22.15 Outils X X fournit quelques programmes. La plupart disposent de versions plus modernes intégrées à Gnome ou KDE, mais certains des utilitaires de X sont encore importants de nos jours. En voici une liste rapide. man commande permet d’obtenir plus d’informations sur ces différentes commandes. • xev. xev affiche des informations sur les événements du clavier, de la souris, etc. Vous pouvez ainsi voir comment X réagit lorsque vous appuyez, par exemple, sur une touche donnée. • xkill. xkill permet de terminer un programme X. Lancez xkill, cliquez sur la fenêtre et l’application correspondante est terminée. • xlsfonts. xlsfonts affiche une liste de toutes les polices disponibles. On peut lui passer un motif de filtrage comme à ls. Il faut cependant mettre ce motif entre apostrophes pour qu’il ne soit pas étendu par bash. • xmodmap. xmodpam permet d’afficher et de modifier la configuration du clavier. xmodmap -pk affiche la table de clavier courante. xmodmap -e définition permet de redéfinir une touche. • xrandr. xrandr permet de modifier la résolution de l’écran, la fréquence de l’image et d’autres paramètres de l’écran sans quitter X. xrandr -q affiche les possibilités de configuration. Celles-ci dépendent de la configuration de X et du pilote de la carte graphique. xrandr -s n modifie la résolution, xrandr -r n la fréquence d’affichage et xrandr -o l’orientation de l’image. • xset. xset modifie le paramétrage du serveur X. • xterm. xterm est une fenêtre de terminal dans laquelle diverses commandes peuvent être lancées. xterm dispose de nombreuses options pour modifier son apparence.
Linux Livre Page 401 Mardi, 23. septembre 2008 1:05 13
23
Administration du système de fichiers Ce chapitre décrit diverses facettes de l’administration du système de fichiers. Il s’adresse majoritairement aux utilisateurs avancés de Linux et couvre les thèmes suivants : • Introduction. Cette section offre un premier aperçu des différents aspects des systèmes de fichiers de Linux. • Noms de périphériques. Linux communique avec les disques durs, les supports de données et les partitions qui y sont contenues par le biais de fichiers de périphériques comme /dev/hda1 ou /dev/sdc. Cette section résume la nomenclature et la numérotation de ces fichiers. • Partitionnement du disque dur. Le partitionnement du disque dur est une tâche centrale de l’installation de Linux. Il est parfois aussi nécessaire de créer une nouvelle partition alors que Linux fonctionne déjà. • Types de systèmes de fichiers. Peu de systèmes d’exploitation prennent en charge autant de systèmes de fichiers que Linux. Cette section en présente les plus importants. • Gestion du système de fichiers. Vous y apprendrez comment ajouter des partitions de données manuellement à un système de fichiers (mount) et comment automatiser cette opération (/etc/fstab). • Systèmes de fichiers Linux. Cette section offre divers conseils et astuces pour utiliser les trois systèmes de fichiers les plus importants sous Linux : ext, reiser et xfs. • Systèmes de fichiers Windows. Vous pouvez aussi accéder à des partitions Windows sous Linux. Linux prend en charge les deux systèmes de fichiers courants FAT32 et NTFS. • CD/DVD et disquettes. Les CD et DVD de données disposent de leurs propres types de systèmes de fichiers, qui sont présentés dans cette section. Ce chapitre traite également rapidement des disquettes, même si celles-ci ne sont plus que peu utilisées de nos jours. • Supports de données externes (USB, Firewire). Lorsque vous connectez un disque dur Firewire ou une clé USB, dans la plupart des cas, une fenêtre du gestionnaire de fichiers apparaît et vous donne accès à vos fichiers. Cette section explique ce qu’il se passe dans les coulisses d’une telle opération et comment utiliser si besoin des supports de données externes manuellement. • Partitions d’échange. Lorsque Linux n’a pas assez de mémoire vive pour exécuter ses programmes, il décharge une partie de la mémoire dans une partition d’échange. • Systèmes de fichiers réseau. Vous pouvez intégrer des répertoires d’autres ordinateurs sur votre réseau local, dans votre arborescence de répertoires. Je m’intéresse dans cette section aux systèmes de fichiers CIFS (Windows / Samba) et NFS (Unix / Linux). • LVM. LVM (Logical Volume Manager, gestionnaire de volumes logiques) permet d’administrer les partitions de manière flexible. LVM offre la possibilité par exemple de réunir
Linux Livre Page 402 Mardi, 23. septembre 2008 1:05 13
402
LINUX
les partitions de plusieurs disques en une seule partition virtuelle, de modifier la taille des partitions sans avoir à réinstaller le système, etc. • Optimisation des disques durs. Cette section décrit les outils hdparm et SMART avec lesquels vous pouvez optimiser vos disques durs et relever des statistiques sur leur utilisation. Il resterait encore beaucoup à écrire sur l’administration des systèmes de fichiers. Je n’ai cependant pas la place de traiter des sujets suivants et vous indique donc quelques pointeurs : • Utilisation du système de fichiers. Les commandes de copie de fichiers, de création de sauvegarde, de gestion des droits d’accès, etc. ont déjà été traitées au Chapitre 13. • Quotas de disques. Il s’agit d’un système qui contrôle l’espace disque maximum attribué à un utilisateur. Si cette limite est dépassée, l’utilisateur ne peut pas créer de nouveau fichier. Vous trouverez une bonne introduction à ce système à l’adresse http://tldp.org/HOWTO/Quota.html. • RAID. Le RAID (Redundant Array of Inexpensive Disks, ensemble redondant de disques bon marché) permet d’associer une partition à plusieurs disques et ainsi d’améliorer la sécurité ou les performances de l’ensemble. • Systèmes de fichiers chiffrés. Si vous désirez éviter qu’une personne non autorisée (par exemple un voleur) puisse lire vos données, vous devez chiffrer une partie ou la totalité de votre système de fichiers. Linux fournit plusieurs alternatives pour cela, comme CryptoFS, DM-Crypt, eCryptfs, Enc-FR, Loop-AES et TrueCrypt. Une recherche sur ces termes sur Internet renvoie d’innombrables articles qui décrivent la mise en place de tels systèmes. Certaines distributions en offrent la possibilité dès l’installation. • Systèmes de fichiers de grappes (clusters). Les systèmes de fichiers de grappes ou les systèmes de fichiers globaux réunissent les données de plusieurs ordinateurs via un système de fichiers virtuel. On peut ainsi construire des systèmes de fichiers immenses et les utiliser en parallèle depuis plusieurs machines. On peut citer pour exemples de ce type de systèmes OCFS (Oracle Cluster File System) d’Oracle, ou GFS (Global Filesystem) de Red Hat.
23.1 Fonctionnement général
Disques durs
Les tenants et les aboutissants de la gestion du système de fichiers sont jusqu’ici un peu confus. Cette section tente d’en résumer les principes de manière claire et concise. Pour garder ce texte aussi clair que possible, je me limite ici aux disques durs intégrés et aux systèmes de fichiers habituels. Je ne parle donc ni de supports externes (CD/DVD, disques USB, etc.) ni de LVM. Les disques durs intégrés à l’ordinateur sont associés à des noms de périphériques. Les distributions les plus récentes utilisent /dev/sda, /dev/sdb pour de tels disques durs. D’autres distributions plus anciennes utilisent /dev/hda, /dev/hdb, etc. pour les disques IDE et /dev/ sda, /dev/sdb, etc. pour les disques SATA et SCSI.
Linux Livre Page 403 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
Partitions
Partition système
Partitions supplémentaires
Test de cohérence
Arborescence au lieu de lettres de lecteur
Ajout de systèmes de fichiers
Types de systèmes de fichiers
403
Pour loger plusieurs systèmes de fichiers indépendamment les uns des autres sur un disque dur, il faut diviser ce disque en sections (partitions). Ces partitions sont elles-mêmes associées à des fichiers de périphériques, par exemple /dev/sda1 pour la première partition du premier disque SATA. La nomenclature détaillée des fichiers de périphériques pour les partitions est traitée à la section 23.2. Au démarrage de Linux, le noyau accède d’abord à la partition système (partition racine). Son nom de périphérique est indiqué comme paramètre du noyau dans le fichier de configuration de GRUB ou de LILO. Vous trouverez plus de détails à ce sujet au Chapitre 24. En plus de la partition système, qui est absolument nécessaire, il peut exister des partitions supplémentaires qui doivent être prises en compte dès le démarrage de Linux. Elles sont décrites dans le fichier /etc/fstab. Ce fichier doit se trouver dans la partition système ; il est lu par le processus init. Lorsqu’une partition est attachée à l’arborescence de fichiers, la cohérence de son système de fichiers est automatiquement vérifiée. Si l’ordinateur a été brutalement éteint (par exemple par une coupure de courant), une réparation automatique du système de fichiers ou d’autres mécanismes de sécurité se mettent en place pour éviter d’éventuelles erreurs de cohérence. Le test de cohérence est également lancé après une certaine période d’utilisation. En détail, cette opération dépend de la distribution et de la configuration individuelle de la machine. La durée de la réparation et du test de cohérence dépend largement du système de fichiers. Sous Windows, il est courant de communiquer avec différents systèmes de fichiers via des lettres de lecteur différentes (A:, C:, D:, etc.). Sous Linux, ces systèmes de fichiers sont rassemblés dans une arborescence de répertoires. La partition système est accessible via le répertoire racine /. Le point de départ des autres systèmes de fichiers peut varier selon la distribution et la configuration. On utilise fréquemment des sous-répertoires de /mnt ou de /media, par exemple /media/dvd pour un DVD de données. On peut ajouter ou supprimer des systèmes de fichiers de l’arborescence de répertoires alors que le système fonctionne. Lorsque l’on branche un support de données externe (par exemple une clé USB), cela fonctionne généralement automatiquement. Si cela ne fonctionne pas ou si le mécanisme a été désactivé, root peut ajouter ou supprimer des systèmes de fichiers manuellement avec les commandes mount et umount. La seule constante est la partition système : elle ne peut pas être supprimée de l’arborescence de fichiers lorsque le système fonctionne. Cela n’est possible que pendant le processus d’arrêt de l’ordinateur. Linux prend en charge de nombreux types de systèmes de fichiers. La partition système doit se trouver dans un système de fichiers Linux (par exemple ext3, reiserfs ou xfs). Pour les autres partitions, le choix s’élargit. Les systèmes de fichiers de Windows, d’Unix ou d’Apple sont aussi envisageables.
Linux Livre Page 404 Mardi, 23. septembre 2008 1:05 13
404
LINUX
23.2 Noms de périphériques pour les disques durs et les autres supports de données Glossaire
L’IDE, le SATA et le SCSI sont de nos jours des interfaces courantes pour connecter un ordinateur à ses lecteurs. L’IDE était ces quinze dernières années l’interface la plus répandue. Le SATA est en train de remplacer l’IDE. Ses avantages comptent un taux de transfert de données plus grand et des câbles plus fins. Les disques SCSI sont plus chers que les périphériques IDE ou SATA mais sont plus fiables et plus rapides. Ils sont le plus souvent utilisés dans des serveurs de fichiers et de bases de données. Glossaire ATA ATAPI IDE PATA SATA SCSI
Fonctionnement interne du noyau
interface de connexion des disques durs extension d’ATA pour les lecteurs CD et DVD description alternative de PATA ATA parallèle (interface ATA courante avec un accès parallèle aux données) ATA série (nouvelle interface ATA avec un accès série aux données) alternative à IDE/SATA
Linux accède aux disques durs internes et externes, à leurs partitions, aux CD et DVD et à tout autre support de données par le biais de fichiers de périphériques. Ces fichiers sont des fichiers particuliers qui servent d’interface entre Linux et le noyau. Vous n’avez besoin de ces fichiers qu’à des fins d’administration, c’est-à-dire lorsque vous souhaitez modifier le partitionnement d’un disque ou monter une partition dans l’arborescence de fichiers. En dehors de cela, vous accédez normalement au système de fichiers par le biais de répertoires. / est le début du système de fichiers. Les partitions peuvent y être associées à un emplacement particulier : par exemple, une partition Linux supplémentaire peut être associée au nom /data, et la partition Windows à /media/win. Il existe deux familles de pilotes pour les disques durs et les autres supports de données : • IDE. Le pilote IDE sert à gérer les disques durs IDE et les lecteurs CD/DVD IDE – il s’agit donc de tous les périphériques PATA. • SCSI. Le système SCSI ne gère pas seulement les périphériques SCSI, mais aussi tous les lecteurs connectés aux bus SATA, USB et Firewire. Comme de nombreuses cartes mère utilisent maintenant SATA comme interface principale pour les lecteurs DVD et disques durs, le système SCSI prend de plus en plus d’importance. Le code IDE du noyau est relativement ancien et mal maintenu. De ce fait, de plus en plus de distributions accèdent également aux périphériques IDE par le biais du pilote SCSI. Pour que cela fonctionne, le système SCSI du noyau a été étendu par des fonctions PATA. Le module correspondant s’appelle libata et se trouve dans le noyau officiel depuis sa version 2.6.19. Le passage à libata signifie que tous les supports de données sont accessibles par les périphériques / dev/s*. Il n’y a plus de périphérique /dev/hd*. Tous les supports de données sont donc gérés par la même base de code.
Linux Livre Page 405 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
405
Au passage du pilote IDE au pilote SCSI, les noms de périphériques de tous les périphériques IDE sont modifiés, ce qui peut poser problème lors de la mise à jour d’un noyau ou d’une distribution. Pour régler ces problèmes, de nombreuses distributions n’utilisent plus le nom du périphérique pour identifier une partition, mais son UUID ou son libellé. Cela a un impact sur les fichiers de configuration /etc/fstab et /boot/grub/menu.lst . Cependant, le nombre maximal de partitions utilisables sous Linux passe de 64 à 16. De plus, les fonctions HD_IO ne sont plus disponibles et certains contrôleurs IDE (généralement anciens) ne sont pas pris en charge par les systèmes SCSI. Périphériques IDE
Si le système IDE est toujours utilisé, les disques IDE sont identifiés par les fichiers de périphériques /dev/hda, /dev/hdb, etc. L’ordre des périphériques dépend du câblage interne des disques. Le schéma de nommage est résumé dans le tableau ci-après. Notons que, selon ce schéma, il se peut que les périphériques hda et hdc existent sans que le périphérique hdb n’existe. Noms de périphériques pour les périphériques IDE gérés par le système IDE /dev/hda
périphérique IDE maître du premier canal IDE
/dev/hdb
périphérique IDE esclave du premier canal IDE
/dev/hdc
périphérique IDE maître du second canal IDE
/dev/hdd
périphérique IDE esclave du second canal IDE
...
Périphériques SCSI et SATA
Les disques SCSI et SATA sont, de manière similaire, nommés sdxy. Pour les distributions qui utilisent l’extension libata du système SCSI, cela est également valable pour les disques IDE. Les périphériques SATA sont associés à une lettre dans l’ordre du canal utilisé. Les cartes mère modernes voient généralement six ou huit canaux au plus. Si deux disques durs sont connectés aux canaux 1 et 3, ils sont nommés /dev/sda et /dev/sdb. Si un troisième disque est ensuite connecté au canal 2, le nom du deuxième disque dur devient /dev/sdc. Lorsque libata est utilisé, les périphériques IDE sont également nommés dans la suite de périphériques /dev/sda, /dev/sdb, etc. Attention, il existe ici une différence de nommage importante. Lorsque l’ordinateur dispose d’un disque maître sur chacun des canaux IDE, mais pas de disque esclave, les périphériques IDE s’appellent /dev/hda et /dev/hdc, mais libata les appelle /dev/sda et /dev/sdb. Pour les périphériques SCSI, l’ordre dépend du numéro d’identifiant du périphérique. Les trous dans la numérotation ne sont pas pris en compte : trois périphériques ayant comme identifiants 0, 2 et 5 reçoivent les noms de périphériques /dev/sda, /dev/sdb et /dev/sdb. Comme pour les périphériques SATA, cela peut mener à une modification ultérieure de la configuration.
Linux Livre Page 406 Mardi, 23. septembre 2008 1:05 13
406
LINUX
Les périphériques USB et Firewire sont gérés comme des périphériques USB ; l’identifiant utilisé est le premier disponible. Lorsque des périphériques SCSI, SATA, USB et Firewire sont branchés, la numérotation commence avec les périphériques SCSI ou SATA (en fonction du BIOS, des emplacements PCI utilisés, etc.) et continue avec les périphériques USB et Firewire dans l’ordre dans lequel ils ont été branchés. Les CD et DVD reçoivent des noms de périphériques spéciaux qui peuvent être, selon la distribution, /dev/sdcn ou /dev/srn. Noms de périphériques pour les périphériques SCSI, SATA, USB, Firewire et IDE avec un noyau libata /dev/sda /dev/sdb ... /dev/scd0 ou /dev/sd0 /dev/scd1 ou /dev/sr1
Numérotation des partitions
premier disque SCSI/SATA second disque SCSI/SATA premier lecteur CD/DVD second lecteur CD/DVD
En ce qui concerne la numérotation des partitions, indépendamment du bus utilisé, les chiffres 1 à 4 sont réservés pour les partitions primaires ou étendues et les chiffres supérieurs à 5 servent pour les partitions logiques à l’intérieur de la partition étendue. Il est donc fréquent que cette numérotation contienne des trous. Si votre disque contient une partition primaire, une partition étendue et trois partitions logiques, elles sont respectivement numérotées 1, 2, 5, 6 et 7. Le tableau suivant donne quelques exemples. Le nombre de partitions par disque dur est limité. Pour des raisons historiques, on ne peut créer que quatre partitions primaires ou trois partitions primaires et une partition étendue. D’autre part, Linux limite le nombre de partitions logiques utilisables à 59 (dans le système IDE) ou à 11 (SCSI/SATA/USB/Firewire/IDE avec libata). Le nombre total de partitions est alors de 63 ou de 15. Exemples pour les numéros de partitions /dev/hda /dev/hda1 /dev/hda2 /dev/hda5 /dev/hda8 /dev/sda /dev/sda1 /dev/sdd3
Noms de périphériques alternatifs
premier disque IDE complet (système IDE) première partition primaire du premier disque dur partition étendue première partition logique quatrième partition logique premier disque SCSI/SATA (ou premier disque dur IDE dans un noyau libata) première partition primaire du premier disque dur troisième partition primaire du quatrième disque SCSI/SATA
Comme nous l’avons vu précédemment, la numérotation des disques peut changer au cours du temps, en particulier lorsque l’on ajoute ou supprime un disque. De plus, le nom des périphériques externes est globalement imprévisible : il dépend de l’ordre dans lequel les périphériques sont branchés.
Linux Livre Page 407 Mardi, 23. septembre 2008 1:05 13
407
ADMINISTRATION DU SYSTÈME DE FICHIERS
Pour accéder à des périphériques dont le nom varie (par exemple dans un script de sauvegarde), le répertoire /dev/disk contient des liens supplémentaires vers tous les supports de données, triés selon plusieurs critères : • /dev/disk/by-id/id utilise des identifiants qui dépendent du bus, du nom du périphérique et d’un numéro de série ou de modèle. • /dev/disk/by-label/label utilise des noms indiqués dans le système de fichiers. • /dev/disk/by-path/path utilise un chemin constitué de l’interface PCI, du bus et du numéro de la partition. Attention, si un périphérique USB ou Firewire est connecté à une autre prise de l’ordinateur, cet identifiant est modifié. • /dev/disk/by-uuid/uuid utilise l’UUID des partitions. Les UUID (Universal Unique IDentifier, identifiant universel unique) sont des numéros d’identifiant unique associés à la partition lors de la création du système de fichiers et qui peuvent être utilisés pour identifier le système de fichiers, même lorsque la configuration matérielle a été modifiée. Le nombre de liens dans chaque répertoire /dev/disk/* est variable. /dev/disk/by-label et by-uuid ne contiennent que les partitions nommées ou qui ont un UUID. Le système udev crée automatiquement les liens vers les disques. La commande ls suivante montre par exemple les liens d’un système disposant d’un disque SATA, d’une clé USB et d’une carte CompactFlash (qui fonctionne également en USB). user$ cd /dev/ user$ ls -lR disk/ disk/by-id: scsi-SATA_ST3320620AS_5QF194H9 scsi-SATA_ST3320620AS_5QF194H9-part1 scsi-SATA_ST3320620AS_5QF194H9-part2 scsi-SATA_ST3320620AS_5QF194H9-part3 scsi-SATA_ST3320620AS_5QF194H9-part4 scsi-SATA_ST3320620AS_5QF194H9-part5 usb-Generic_USB_CF_Reader_058F312D81B usb-Generic_USB_MS_Reader_058F312D81B usb-Generic_USB_SD_Reader_058F312D81B usb-Generic_USB_SM_Reader_058F312D81B usb-Hama_FlashPen_09202251030128CA usb-Hama_FlashPen_09202251030128CA-part1 disk/by-path: pci-0000:00:1a.7-usb-0:1:1.0-scsi-0:0:0:0 pci-0000:00:1a.7-usb-0:1:1.0-scsi-0:0:0:0-part1 pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0:0 pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0:1 pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0:2 pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0:3 pci-0000:00:1f.2-scsi-0:0:0:0 pci-0000:00:1f.2-scsi-0:0:0:0-part1
-> -> -> -> -> -> -> -> -> -> -> ->
../../sda ../../sda1 ../../sda2 ../../sda3 ../../sda4 ../../sda5 ../../sdc ../../sde ../../sdb ../../sdd ../../sdf ../../sdf1
-> -> -> -> -> -> -> ->
../../sdf ../../sdf1 ../../sdb ../../sdc ../../sdd ../../sde ../../sda ../../sda1
Linux Livre Page 408 Mardi, 23. septembre 2008 1:05 13
408
LINUX
pci-0000:00:1f.2-scsi-0:0:0:0-part2 pci-0000:00:1f.2-scsi-0:0:0:0-part3 pci-0000:00:1f.2-scsi-0:0:0:0-part4 pci-0000:00:1f.2-scsi-0:0:0:0-part5 pci-0000:03:00.1-ide-0:0 disk/by-uuid: 008f06ef-28be-45c9-acbc-20cda51f712b 06efc09c-9a3e-4668-81d7-8925c380889e 366CA8D16CA88D65 D3A0-1831 e35139a5-5871-48fe-9191-df0d003e4ed5
-> -> -> -> ->
../../sda2 ../../sda3 ../../sda4 ../../sda5 ../../hde
-> -> -> -> ->
../../sda2 ../../sda5 ../../sda1 ../../sdf1 ../../sda3
23.3 Partitionnement du disque dur Les programmes de partitionnement peuvent détruire le contenu de votre disque dur ! Lisez cette section attentivement avant de lancer un outil de partitionnement quelconque. Il est impossible de modifier une partition montée dans le système de fichiers. Le schéma de partitionnement de Windows Vista a changé : Vista ne démarre que lorsque sa partition commence au 2 048e secteur. Or, dans certains programmes de partitionnement, il arrive que le début de la partition passe au 63e secteur. Dans ce cas, il faut corriger la partition avant de redémarrer Vista. Le problème et sa solution sont documentés à l’adresse http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=379835.
Pendant l’installation, presque toutes les distributions Linux fournissent des outils simples à utiliser pour partitionner le disque dur. Une fois l’installation terminée, de nombreux outils sont à votre disposition, comme les commandes texte fdisk ou parted ou les applications graphiques gparted ou qtparted. Si vous devez modifier fréquemment le partitionnement de vos disques, LVM est probablement intéressant. LVM ajoute un niveau virtuel entre les partitions physiques du disque dur et les partitions utilisées pour les systèmes de fichiers. Il facilite nettement les modifications futures du partitionnement. Nous en parlerons à la section 23.12.
Règles de base Indépendamment des outils, vous devez connaître quelques règles de base : • Il est impossible d’effectuer des modifications sur une partition montée. Si vous désirez redimensionner la partition système, vous devez démarrer l’ordinateur avec un live CD. Il existe des minidistributions spécialement prévues pour cela, comme GParted Live (http://gparted.sourceforge.net/livecd.php), Parted Magic (http://partedmagic.com/) ou SystemRescueCD (http://www.sysresccd.org/Page_Principale). • Généralement, il n’est possible de modifier la taille d’une partition que pour la dernière partition du disque dur. Vous ne pouvez pas déplacer les partitions sur le disque.
Linux Livre Page 409 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
409
• Lorsque vous modifiez la taille d’une partition, la taille du système de fichiers qui s’y trouve n’est pas automatiquement modifiée ! Diverses commandes supplémentaires sont nécessaires. Elles dépendent du type de système de fichiers. • Le nombre de partitions par disque est limité (63 pour les disques IDE lorsqu’ils ne sont pas gérés par libata, 15 pour les disques SATA, USB, Firewire et IDE lorsqu’ils sont gérés par libata). Une de ces partitions est la partition étendue qui peut contenir d’autres partitions mais pas de système de fichiers. Le nombre maximal de partitions se réduit donc à 3 partitions primaires et 59 ou 11 partitions logiques. • Lorsque vous modifiez une partition en cours d’utilisation (par exemple la partition système de votre distribution Linux), le programme de partitionnement vous demande de redémarrer l’ordinateur. Sous fdisk, l’erreur qui s’affiche est AVERTISSEMENT: la relecture de la table de partitions a échoué avec l’erreur 16: Périphérique ou ressource occupé. Le kernel va continuer d’utiliser l’ancienne table. La nouvelle table sera utilisée lors du prochain réamorçage. La raison en est que le noyau Linux ne sait pas lire la table de partitions lorsque le disque fonctionne. La modification est donc enregistrée, mais elle n’est active qu’au redémarrage. Vous devez redémarrer Linux avant de pouvoir utiliser le nouveau partitionnement.
Problèmes de compatibilité Les outils présentés dans cette section et ceux qui sont utilisés pendant l’installation de Linux se différencient sur plusieurs points. Certains outils laissent la partition étendue comme elle a été créée à l’origine. Nous appellerons ces programmes les programmes de type 1. Ils comprennent fdisk, parted, les programmes d’installation de Fedora, de Red Hat, de SUSE et les outils de partitionnement de Windows. D’autres programmes modifient automatiquement la partition étendue pour qu’elle dispose exactement de la place nécessaire pour les partitions logiques (type 2). Ils comprennent les programmes d’installation de Debian, de Mandriva et d’Ubuntu. Les deux méthodes sont valides, seul leur mélange pose problème. Supposons que vous créiez une nouvelle partition logique avec un outil de type 2. Le programme adapte la taille de la partition étendue automatiquement. Si vous essayez à présent d’utiliser un outil de type 1 pour créer une nouvelle partition logique, celui-ci indique que la partition étendue est déjà pleine. Les programmes de type 1 ne parviennent pas, à l’exception de parted, à modifier la taille de la partition étendue lorsque des partitions logiques s’y trouvent déjà. Pour corriger cela, lancez un programme de type 2 et modifiez le partitionnement. Vous pouvez aussi utiliser cet outil pour créer une partition logique temporaire pour réserver la place nécessaire. Vous supprimerez cette partition temporaire avec le programme de type 1 et pourrez alors utiliser l’espace libre de la partition étendue.
Linux Livre Page 410 Mardi, 23. septembre 2008 1:05 13
410
LINUX
fdisk fdisk est un des programmes les plus anciens parmi ceux qui sont encore utilisés aujourd’hui. L’interface utilisateur est plutôt démodée, mais le programme est sophistiqué et apprécié par les utilisateurs de longue date. Démarrage
fdisk ne peut modifier qu’un disque à la fois ; son nom doit être passé en argument (par exemple /dev/sdc pour le troisième disque). Si vous utilisez l’option -l, fdisk affiche toutes les partitions de tous les disques durs. La touche M (menu) affiche une courte description des commandes disponibles. P (print, afficher) affiche une liste des partitions existantes sur le disque. Lorsque le disque dur se compose de plus de 1 024 cylindres (ce qui est le cas des disques actuels), fdisk affiche un message d’avertissement. Ce message concerne la partition d’amorçage de Linux et n’est valable que lorsque votre carte mère est ancienne (BIOS datant d’avant 1998) ou lorsque vous utilisez une version de LILO très ancienne. En règle générale, vous pouvez ignorer cet avertissement.
Création d’une nouvelle partition
N (new, nouveau) permet de créer une nouvelle partition sur le disque dur. Vous ne pouvez pas créer plus de quatre partitions primaires. Si vous désirez en créer plus de quatre, vous devez créer une partition étendue. Si plusieurs options sont possibles (partition primaire, étendue ou logique), fdisk affiche les différents choix et demande le type de partition souhaité. Ensuite, il demande à quel endroit la partition doit commencer (normalement au premier cylindre libre) et quelle doit être sa taille (cylindre de fin). La taille peut aussi être indiquée par la syntaxe plus confortable +nM. Par exemple, +2500M pour une partition de 2 500 mégaoctets (Mo). La taille d’un cylindre dépend du disque dur, du BIOS et éventuellement du contrôleur SCSI. Cette information se trouve dans la troisième ligne de la sortie de la commande P. Dans notre exemple, les cylindres sont des ensembles de 16 065 × 512 octets, soit 8 Mo. Une fois la partition créée, vous pouvez réafficher la liste des partitions avec P. Pour finir, vous pouvez créer de nouvelles partitions, supprimer des partitions déjà définies, etc.
Identifiants de partitions
fdisk crée les nouvelles partitions de type Linux Native (numéro d’identifiant 83). Pour utiliser un autre type, vous devez indiquer le nouveau type de partition avec T (type). Les identifiants de partitions courants, en hexadécimal, sont : • 82 : partition d’échange Linux (swap) ; • 83 : Linux (pour tous les systèmes de fichiers Linux : ext, reiser, xfs, etc.) ; • 8e : Linux LVM ; • fd : Linux RAID autodetect. La commande L affiche tous les numéros d’identifiants disponibles. La liste contient également des codes pour d’innombrables autres systèmes d’exploitation (DOS, Windows, Unix, etc.).
Sauvegarde des modifications
fdisk effectue les modifications uniquement lorsque la commande W (write, écrire) est lancée. Vous pouvez vérifier avec V (verify, vérifier) que toutes les informations internes sont cohérentes avec le disque. Il s’agit d’un contrôle de sécurité supplémentaire.
Linux Livre Page 411 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
411
Normalement, V ne fait qu’afficher le nombre de secteurs qui ne sont pas attribués à une partition primaire ou logique. Vous pouvez quitter fdisk à tout moment avec Q (quit, quitter) ou avec Ctrl+C. Votre disque dur reste alors inchangé. Les partitions créées avec fdisk sont vides : fdisk n’installe pas de système de fichiers ! La commande de création d’un système de fichiers dépend du système souhaité (il s’agit par exemple de mkfs.ext3 pour un système de fichier ext3). Les commandes sont présentées à la section suivante. Augmentation de la taille d’une partition
fdisk ne peut pas, de base, augmenter la taille d’une partition existante. Il est toutefois possible de modifier la dernière partition du disque dur (ou la dernière partition logique d’une partition étendue) lorsqu’il reste de la place derrière cette partition. Dans ce cas, vous pouvez supprimer la partition et la recréer à sa nouvelle taille. fdisk modifie uniquement la table de partitions ; il ne modifie pas les données sur le disque. Le système de données de la partition n’est donc pas adapté. Seule une partie de la partition est alors utilisée. Augmenter la taille du système de fichiers n’est possible que pour certains systèmes de fichiers (voir la section 23.4). La modification d’une partition ou d’un système de données est une opération très dangereuse qui n’est à conseiller qu’aux utilisateurs avancés. N’oubliez pas d’effectuer une sauvegarde lorsque cela est possible.
Exemple
Cet exemple montre comment ajouter une partition supplémentaire à un disque dur de 80 gigaoctets (Go). Il s’agit du premier disque de l’ordinateur. fdisk est donc lancé avec le paramètre /dev/sda. La commande P donne des informations sur l’état courant du disque. Le disque se compose de 255 × 63 × 9 729 × 512 octets = 76 316 Mo. Un cylindre occupe 16 065 × 512 octets = 7,8 Mo. Le disque se compose d’une première partition primaire (12 cylindres, 94 Mo, système de récupération Dell), d’une seconde partition primaire (1 215 cylindres, 9 477 Mo, partition Windows) et d’une partition étendue (le reste des cylindres, 66 300 Mo). Dans cette partition étendue se trouvent cinq partitions Linux et une partition d’échange Linux. La partition étendue dispose d’espace libre entre les secteurs 3 783 et 9 729 (soit 46 597 Mo). root# fdisk /dev/sda Le nombre de cylindres pour ce disque est initialisé à 9729. Il n’y a rien d’incorrect avec cela, mais c’est plus grand que 1024, et cela pourrait causer des problèmes en fonction pour certaines configurations : 1) logiciels qui sont exécutés à l’amorçage (i.e., vieilles versions de LILO) 2) logiciels d’amorçage et de partitionnement pour d’autres SE (i.e., DOS FDISK, OS/2 FDISK) Commande (m pour l’aide): p Disque /dev/sda: 80.0 Go, 80026361856 octets 255 heads, 63 sectors/track, 9729 cylinders Units = cylindres of 16065 * 512 = 8225280 bytes
Linux Livre Page 412 Mardi, 23. septembre 2008 1:05 13
412
LINUX
Identifiant disque: 0xeede9d79 Périphérique Amorce /dev/sda1 /dev/sda2 * /dev/sda3 /dev/sda5 /dev/sda6
Début 1 13 1229 1229 1351
Fin 12 1228 9729 1350 3782
Blocs 96358+ 9767520 68284282+ 979933+ 19535008+
Id de 7 5 82 83
Système Dell Utility HPFS/NTFS Extended Linux swap / Solaris Linux
N permet de créer une nouvelle partition logique. Le cylindre de début est le premier cylindre libre. La taille est indiquée avec +1500M. Pour finir, la nouvelle table de partitions est à nouveau affichée. Elle montre que la nouvelle partition occupe en fait 1 506 Mo (parce que fdisk travaille uniquement sur des cylindres complets) : Commande (m pour l’aide): n Action de commande l logique (5 ou plus) p partition primaire (1-4) l Premier cylindre (3783-9729, par défaut 3783): <Entrée> Utilisation de la valeur par défaut 3783 Dernier cylindre ou +taille or +tailleM ou +tailleK (3784-9729, par défaut 9729): +1500M Commande (m pour l’aide): p Disque /dev/sda: 80.0 Go, 80026361856 octets 255 heads, 63 sectors/track, 9729 cylinders Units = cylindres of 16065 * 512 = 8225280 bytes Identifiant disque: 0xeede9d79 Périphérique Amorce /dev/sda1 /dev/sda2 * /dev/sda3 /dev/sda5 /dev/sda6 /dev/sda7
Début 1 13 1229 1229 1351 3783
Fin 12 1228 9729 1350 3782 3974
Blocs 96358+ 9767520 68284282+ 979933+ 19535008+ 1542208+
Id de 7 5 82 83 83
Système Dell Utility HPFS/NTFS Extended Linux swap / Solaris Linux Linux
W enregistre la table de partitions modifiée. Comme le disque est utilisé, fdisk ne parvient pas à lire la nouvelle table. Il faut donc redémarrer l’ordinateur avant de pouvoir utiliser la nouvelle partition. Commande (m pour l’aide): w La table de partitions a été altérée! Appel de ioctl() pour relire la table de partitions. AVERTISSEMENT: la re-lecture de la table de partitions a échoué avec l’erreur 16: Périphérique ou ressource occupé. Le kernel va continuer d’utiliser l’ancienne table. La nouvelle table sera utilisée lors du prochain réamorçage. Synchronisation des disques.
Linux Livre Page 413 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
413
Raccourcis clavier de fdisk D L M N P Q T V W
supprime la partition (delete) affiche les identifiants de partitions (list) affiche l’aide en ligne (menu) crée une nouvelle partition (new) affiche la liste des partitions (print) termine le programme sans modifier la table de partitions (quit) modifie le type de partitions (type) vérifie la table de partitions (verify) écrit la table de partitions (write)
parted La différence la plus importante entre fdisk et parted est que fdisk est un programme de partitionnement pur tandis que parted tente (autant que possible) de prendre en compte le contenu des partitions. parted peut par exemple modifier la taille d’une partition et du système de fichiers qui s’y trouve sans perte de données. Cela fonctionne uniquement lorsque parted peut accéder à diverses commandes et bibliothèques. La page http://www.gnu.org/ software/parted/ recense les nombreuses fonctions de parted. Malheureusement, son utilisation est encore plus inconfortable que celle de fdisk. Par ailleurs, toutes les modifications sont exécutées immédiatement et non après une écriture explicite sur le disque. Pour ces raisons, il vaut mieux préférer fdisk ou un outil graphique de partitionnement. Démarrage
Indiquez au démarrage de parted le disque à utiliser (par défaut, /dev/hda). H+Entrée affiche les commandes disponibles. H+commande affiche un texte d’aide rapide à propos de la commande. P affiche la table des partitions. root# parted /dev/sda GNU Parted 1.7.1 On utilise /dev/sda Bienvenu dans GNU Parted ! Tapez "help" pour voir la liste des commandes. (parted) h check NUMERO effectue une simple vérification du système de fichiers cp [PÉRIPHÉRIQUE-SOURCE] NOMBRE-SOURCE NOMBRE-DESTINATION copie le système de fichiers vers une autre partition help [COMMANDE] affiche l’aide générale, ou l’aide sur la COMMANDE mklabel LABEL-TYPE crée une nouvelle étiquette de disque (table de partition) mkfs NUMERO TYPE-FS crée un système de fichiers de type TYPE-SF sur la partition NUMERO. mkpart TYPE-PART [TYPE-SF] DÉBUT FIN crée une partition mkpartfs TYPE-PART TYPE-SF DÉBUT FIN crée une partition avec un système de fichiers move NUMERO DEPART FIN déplace la partition NUMERO. name NUMERO NOM donne le nom NOM à la partition NUMERO. print [free|NUMÉRO|all] affiche la table de partitions, une partition ou tous les périphériques
Linux Livre Page 414 Mardi, 23. septembre 2008 1:05 13
414
LINUX
quit quitter le programme rescue DEPART FIN restaure une partition perdue entre DEPART et FIN resize NUMERO DÉPART FIN redimensionne la taille de la partition NUMERO et de son système de fichiers. rm NUMERO supprime la partition NUMERO select PERIPHERIQUE sélectionne le périphérique à éditer. set NUMERO STATUT DRAPEAU modifie le drapeau sur la partition NUMERO toggle [NUMERO [DRAPEAU]] change l’état du DRAPEAU de la partition NUMERO unit UNITE change l’unité par défaut à UNITE version affiche la version utilisée de GNU Parted et les informations de copyright (parted) p Disque /dev/sda : 100,0GB Taille des secteurs (logique/physique) : 512o/512o Table de partitions : msdos Numéro 1 2 3 5 6 7 Utilisation
Exemple
Début 32,3kB 98,7MB 10,1GB 10,1GB 11,1GB 31,1GB
Fin 98,7MB 10,1GB 80,0GB 11,1GB 31,1GB 80,0GB
Taille 98,7MB 10,0GB 69,9GB 1003MB 20,0GB 48,9GB
Type primaire primaire étendue logique logique logique
Système de fichiers fat16 ntfs
Fanions amorce
linux-swap ext3 ext3
Les commandes mkpart et rm créent et suppriment des partitions. mkpartfs crée une nouvelle partition et y crée le système de fichiers souhaité, pour autant que parted puisse accéder aux programmes et bibliothèques spécifiques au système de fichiers. Vous devez passer à la commande de création de partition le début et la fin souhaitée de la partition. GB est une abréviation de gigaoctet. parted fait en sorte que les partitions se suivent sans problème. Si vous créez une partition logique, vous devez auparavant agrandir la partition étendue. Les commandes suivantes agrandissent d’abord la partition étendue (numéro 3) de 10 Go. Puis, une nouvelle partition logique y est créée, sans système de fichiers : (parted) resize 4 10.1gb 90gb (parted) mkpart logical 80gb 90gb (parted) print Disque /dev/sda : 100,0GB Taille des secteurs (logique/physique) : 512o/512o Table de partitions : msdos Numéro 1 2 3 5 6 7 8
Début 32,3kB 98,7MB 10,1GB 10,1GB 11,1GB 31,1GB 80,0GB
Fin 98,7MB 10,1GB 90,0GB 11,1GB 31,1GB 80,0GB 90,0GB
Taille 98,7MB 10,0GB 79,9GB 1003MB 20,0GB 48,9GB 10,0GB
Type primaire primaire étendue logique logique logique logique
Système de fichiers fat16 ntfs
Fanions amorce
linux-swap ext3 ext3
Pour créer une nouvelle partition en tant que partition d’échange ou comme partie d’un système LVM ou RAID, vous devez modifier le type de partition. La commande correspondante est set numéro_partition nom_attribut. Les différents attributs comprennent entre autres amorce, swap, lvm et raid.
Linux Livre Page 415 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
415
Interfaces graphiques (gparted et qtparted) parted dispose de deux interfaces graphiques : gparted pour les utilisateurs de Gnome et qtparted pour les utilisateurs de KDE. Le développement de qtparted semble cependant interrompu – la dernière version date de 2005. C’est pour cette raison que seul gparted (voir Figure 23.1) a été testé dans le cadre de cet ouvrage. Ce programme peut également être installé et lancé sous KDE, pour autant que les bibliothèques Gnome sous-jacentes soient installées. Vous trouverez plus d’informations sur ces deux programmes aux adresses http://gparted.sourceforge.net/ et http://qtparted.sourceforge.net/. Au démarrage, gparted analyse les disques présents sur l’ordinateur.
gparted peut modifier uniquement les partitions qui ne sont pas en cours d’utilisation (c’est-à-dire celles qui ne sont pas montées dans l’arborescence). Toutes les partitions utilisées sont affichées avec un verrou et les boutons d’édition correspondants sont désactivés. La partition étendue est verrouillée dès lors qu’au moins une des partitions logiques qui s’y trouvent est active. En pratique, vous devrez donc utiliser souvent gparted sur un live CD, sans quoi presque toutes les opérations importantes sont bloquées. Contrairement à parted, gparted enregistre toutes les actions, mais ne les effectue pas directement. Annuler permet de revenir sur sa décision ; Appliquer effectue les actions. gparted ne sait malheureusement pas créer de partitions LVM ou RAID.
Figure 23.1 Agrandir une partition étendue.
Linux Livre Page 416 Mardi, 23. septembre 2008 1:05 13
416
LINUX
23.4 Types de systèmes de fichiers Cette section est un aperçu des types de systèmes de fichiers utilisés sous Linux. Ce chapitre traitera plus tard des types de fichiers importants : ext, reiserfs, vfat, ntfs et iso9660. Vous pouvez déterminer quels systèmes de fichiers vous utilisez actuellement avec la commande df -T. Linux
Les "systèmes de fichiers Linux" sont ceux qui sont appropriés à l’installation et à l’utilisation de Linux. Vous ne verrez pas de différence au quotidien entre les différents systèmes de fichiers que vous pouvez utiliser. Les commandes élémentaires comme ls ou cp, la gestion des droits d’accès, etc. fonctionnent quel que soit le système de fichiers. Ils se différencient par des particularités qui n’intéressent généralement que les utilisateurs avancés de Linux ou sur des points qui ne concernent qu’une utilisation en tant que serveur : les performances d’accès à de très gros fichiers ou à de très nombreux petits fichiers, l’efficacité des opérations de lecture et d’écriture, la charge du processeur, la fonction de journalisation (comportement après une interruption), la fonction de quotas (la possibilité de limiter l’espace maximal alloué à un utilisateur), la compatibilité avec NFS, la surcharge de gestion, la prise en charge de droits d’accès supplémentaires (ACL), la compatibilité avec SELinux, etc. • ext. ext2 (extended filesystem, système de fichiers étendu, version 2) a longtemps été le système de fichiers dominant sous Linux. Depuis 2002, ext3 a pris la suite. ext3 est compatible avec ext2 mais prend en charge des fonctions de journalisation et, depuis le noyau 2.6, les ACL. La taille maximale d’un fichier est de 2 téraoctets (To) ; la taille maximale du système de fichiers et de 8 To. Le développement d’ext4 a commencé mi-2006. La taille maximale du système de fichiers passe alors à un exaoctet (Eo), soit 1 048 576 To. L’utilisation pratique de ext4 n’est pas encore prévue. • reiser. reiserfs (nommé d’après son créateur, Hans Reiser) fut le premier système de fichiers disposant de la fonction de journalisation intégrée au noyau. La version 3.n était le système de fichiers par défaut de SUSE jusqu’à sa version 10.1 ; c’est toujours le cas pour la distribution Slackware. L’avantage principal de reiserfs sur ext3 est la gestion des petits fichiers : elle est plus rapide et plus efficace en termes de place (un système de données typique se compose essentiellement de petits fichiers). Hans Reiser a complètement revu l’architecture de son système de fichiers pour reiser4 (reiserfs version 4), qui devient un des systèmes les plus modernes. Les nouveautés importantes comptent une interface de greffons pour le développement modulaire de fonctions supplémentaires. Cependant, en raison de divergences personnelles et de critiques sur la qualité du code, reiser4 ne fait toujours pas partie du noyau Linux officiel à ce jour. Il est de ce fait peu répandu. reiser4 est incompatible avec reiserfs : pour changer de version, il faut copier l’ancien système de fichiers reiserfs dans une nouvelle partition reiser4. Du fait des démêlés courants de Hans Reiser avec la justice américaine, l’avenir de ce système de fichiers est inconnu. • xfs. xfs était à l’origine le système de fichiers des stations de travail SGI qui utilisaient le système d’exploitation IRIX. Il est surtout adapté à la gestion des très gros fichiers et il
Linux Livre Page 417 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
417
est par exemple idéal pour l’exploitation de flux vidéo. Il prend en charge les quotas et les ACL. Le système de fichiers peut être agrandi en cours de fonctionnement. • jfs. jfs signifie journaled file system (système de fichiers journalisé). Il a été développé par IBM, puis porté sous Linux. jfs n’a jamais été très populaire sous Linux et est actuellement dans l’ombre des autres systèmes de fichiers existants. Il n’existe pas de système de fichiers "plus sûr" ou "plus rapide" : les performances dépendent de l’utilisation. Pour les débutants sous Linux, il est conseillé d’utiliser ext3. Ce système est très répandu, mûr et stable. Ces éléments sont plus importants que quelques pour cent supplémentaires de performances sur des applications précises. Vous trouverez une description plus précise de tous les types de systèmes de fichiers dans Wikipedia, où les pages en anglais sont encore plus détaillées. Internet regorge de comparaisons et de tests de rapidité. Il est également possible d’exploiter plusieurs types de systèmes de fichiers, par exemple ext2 ou ext3 pour la partition d’amorçage (ce qui évite les problèmes liés à GRUB ou à LILO), ext3 pour la partition système, reiserfs pour une partition de développement (contenant de nombreux petits fichiers) et xfs pour une partition multimédia (qui contient généralement des fichiers plus gros). Unix
DOS, Windows, OS/2 et Macintosh
CD-ROM et DVD
Si vous avez installé un second système Unix sur votre machine, les systèmes de fichiers suivants peuvent servir pour les échanges de fichiers : • efs. Le système efs est utilisé sur les anciennes machines SGI (IRIX, versions antérieures à 6.0). Certains CD-ROM de SGI utilisent également ce format. Linux peut uniquement le lire, il ne sait pas le modifier. • sysv. Le système de fichiers sysv est utilisé par les systèmes SCO, XENIX et Coherent. • ufs. Le système de fichiers UFS est utilisé par FreeBSD, NetBSD, NeXTSTEP et SunOS. Linux peut uniquement lire ces systèmes. Pour accéder à une partition BSD, il faut utiliser l’extension BSD Disklabel. Une extension similaire existe pour les tables de partitions SunOS. Les systèmes de fichiers suivants permettent d’échanger des fichiers avec les systèmes DOS, Windows, OS/2 et Macintosh : • vfat. Ce système est utilisé par Windows 9x/ME. Linux peut lire et écrire sur ce type de partitions. Le pilote vfat peut également travailler avec le système de fichiers DOS (8+3 caractères). • ntfs. Ce système de fichiers est utilisé sous Windows NT4, 2000, XP et Vista. Linux peut y lire des fichiers et en écrire, avec certaines restrictions. • hpfs. hpfs est le système de fichiers de OS/2. Linux peut y lire et écrire des fichiers. • hfs et hfsplus. Ces systèmes de fichiers sont utilisés sur les ordinateurs Apple. Linux peut y lire et écrire des fichiers. Les CD-ROM et DVD utilisent également certains systèmes de fichiers : • iso9660. Le système de fichiers des CD-ROM est défini par la norme ISO 9660. Cependant, cette norme prévoit uniquement des noms de fichiers courts. Les noms de fichiers longs sont définis selon le système d’exploitation par des extensions différentes et
Linux Livre Page 418 Mardi, 23. septembre 2008 1:05 13
418
LINUX
incompatibles entre elles. Linux peut lire aussi bien les extensions Rockridge, souvent utilisées sous Unix, que les extensions Joliet, utilisées par Microsoft. De tels CD sont reconnus automatiquement. • udf. Le format Universal Disk Format (format de disque universel) s’est établi comme successeur du format ISO 9660. Il est souvent utilisé sur les DVD. Systèmes de fichiers réseau
Les systèmes de fichiers ne se trouvent pas obligatoirement sur des disques durs locaux, vous pouvez également y accéder par le réseau. Le noyau Linux prend en charge divers systèmes de fichiers réseau. Je vous indique ici les plus courants : • smbfs/cifs. Ces systèmes de fichiers permettent de monter des répertoires réseau Windows ou Samba dans l’arborescence de fichiers. • nfs. Le Network File System (système de fichiers réseau) est le système de fichiers réseau le plus important sous Unix. • coda. Ce système de fichiers est le plus souvent comparé à NFS. Il fournit quelques fonctionnalités supplémentaires, mais n’est pas très répandu. • ncpfs. ncpfs est basé sur NetWare Core Protocol (protocole principal NetWare). Il est utilisé par Novell NetWare.
Systèmes de fichiers virtuels
Il existe sous Linux de nombreux systèmes de fichiers qui ne servent pas à enregistrer des fichiers sur un disque dur (ou sur un autre support de données) mais à échanger des informations entre le noyau et les applications. Ils sont indiqués par le mot clé nodev dans /proc/ filesystems. La liste suivante présente les systèmes les plus importants. • devpts. Ce système de fichiers permet d’accéder aux pseudo-terminaux (PTY) via /dev/ pts/*, conformément à la spécification Unix 98. Les pseudo-terminaux émulent une interface série. Ils sont utilisés sous Unix/Linux par les émulateurs de terminaux comme xterm. Les périphériques comme /dev/ttypn sont traditionnellement utilisés. La spécification Unix 98 définit à leur place de nouveaux périphériques. Vous trouverez plus de détails à ce sujet dans le Text-Terminal-HOWTO (http://tldp.org/HOWTO/TextTerminal-HOWTO.html). • proc et sysfs. Le système de fichiers proc reproduit les informations d’administration du noyau et de l’administration des processus. Le système sysfs reproduit la connexion entre le noyau et le matériel. Ils sont respectivement montés dans le système aux emplacements /proc et /sys. • tmpfs. Ce système de fichiers est à la base de la mémoire partagée conformément à SystemV. Il est généralement monté à l’emplacement /dev/shm et permet d’échanger efficacement des données entre deux programmes. Dans certaines distributions (par exemple Ubuntu), les répertoires /var/run et /var/ lock sont également mis en œuvre avec tmpfs. Les fichiers de ces répertoires sont utilisés par de nombreux démons réseau pour enregistrer l’identifiant des processus ainsi que des informations d’accès à des fichiers. Grâce à tmpfs, les données sont accessibles en mémoire vive. Cette méthode est plus rapide et permet de s’assurer qu’il ne reste aucun fichier dans /var/run ou dans /var/lock au redémarrage de l’ordinateur.
Linux Livre Page 419 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
Autres systèmes de fichiers
419
• usbfs. usbfs fournit des informations au noyau 2.6 au sujet des périphériques USB branchés. Il est généralement intégré au système de fichiers proc (/proc/bus/usb). Pour finir, je vous présente quelques systèmes de fichiers ou mots clés qui ne peuvent pas être associés aux catégories précédentes. • auto. Il n’existe en fait pas de système de fichiers auto. Cependant, ce mot clé peut être utilisé dans /etc/fstab ou comme argument de la commande mount. Linux essaie alors de reconnaître lui-même le système de fichiers considéré. Cela fonctionne dans la majorité des cas. • autofs, autofs4. autofs et sa nouvelle version autofs4 ne sont pas non plus de réels systèmes de fichiers. Il s’agit d’extensions du noyau qui montent automatiquement les systèmes de fichiers qui ont déjà été utilisés. Si un tel système n’est pas utilisé pendant une certaine période, umount est automatiquement exécuté. Ce comportement est particulièrement pratique lorsque seuls quelques répertoires NFS sont utilisés parmi une pléthore d’entre eux disponibles sur le système. En interne, le programme automount est lancé lors du démarrage du système par le script /etc/init.d/autofs. automount est configuré dans le fichier /etc/auto.master. Les programmes correspondants sont installés par défaut par Fedora et Red Hat. Cependant, autofs n’est actif qu’après la configuration de /etc/auto.master ou de /etc/ auto.misc. Vous trouverez plus de détails dans le Automount-Mini-HOWTO (http://tldp.org/HOWTO/Automount.html). • fuse. FUSE signifie Filesytem in Userspace (système de fichiers en espace utilisateur) et permet de développer et d’utiliser des pilotes de systèmes de fichiers en dehors du noyau. FUSE est donc toujours utilisé en conjonction avec un pilote externe. Il a été intégré au noyau officiel 2.6.14. Il est par exemple mis en œuvre pour deux pilotes NTFS (ntfsmount et ntfs-3g). FUSE est pour le moment le seul moyen d’utiliser le système ZFS de Sun sous Linux. ZFS est un système de fichiers moderne qui gère des quantités presque illimitées de données. Il est cependant publié sous une licence incompatible avec la GPL et ne peut donc pas être intégré au noyau. • gfs et ocfs. gfs (Global File System, système de fichiers global) et ocfs (Oracle Cluster File System, système de fichiers pour grappe d’Oracle) permettent de construire des systèmes de fichiers répartis sur le réseau auquel plusieurs ordinateurs peuvent accéder en parallèle. • jffs et cramfs. Ces deux systèmes sont utilisés dans les périphériques embarqués. Ils permettent de compresser autant de fichiers que possible sur une mémoire Flash ou sur une ROM. • loop. Le périphérique de bouclage (loopback device) est un adaptateur qui permet de considérer un fichier habituel comme un périphérique bloc. Vous pouvez alors y créer un système de fichiers et le monter dans une arborescence de fichiers. La fonction du noyau correspondante, loopback device support (prise en charge du périphérique de bouclage) est gérée par le module loop.
Linux Livre Page 420 Mardi, 23. septembre 2008 1:05 13
420
LINUX
Les périphériques de bouclage ont de nombreuses applications. Ils servent par exemple à créer un disque virtuel pour GRUB ou LILO, à mettre en place des systèmes de fichiers chiffrés, à tester des images ISO pour les CD, à accéder à des fichiers image, etc. • none. none n’est pas un système de fichiers. Il offre la possibilité, assez peu utilisée, de monter un répertoire local dans un autre emplacement de l’arborescence de fichiers. Pour cela, vous devez passer à mount ou à fstab le type de fichiers none et l’option supplémentaire bind. Le résultat est alors comparable à un lien symbolique, mais la mise en œuvre interne en est très différente. • unionfs/aufs. Le concept de unionfs et de sa variante aufs permet de créer plusieurs systèmes de fichiers quasiment les uns au-dessus des autres, où le système le plus haut a la priorité. unionfs et aufs sont utilisés sur de nombreux systèmes "live". Linux démarre directement depuis le CD ou depuis le DVD. Un système de fichiers de disque virtuel (RAM-disk) accessible en écriture surcharge celui du CD/DVD, en lecture seule. Le système de fichiers visible contient alors la structure du CD/DVD, mais permet des modifications sur le disque virtuel. • Systèmes de fichiers chiffrés. Linux sait chiffrer le contenu d’un système de fichiers de plusieurs manières différentes. Certaines méthodes se fondent directement sur leurs propres systèmes de fichiers (par exemple CryptoFS ou eCryptfs). Le fichier /proc/filesystems permet de savoir quels systèmes de fichiers sont intégrés au noyau ou chargés en tant que modules. Les modules du noyau correspondants se trouvent dans le répertoire /lib/ modules/n/kernel/fs . Si le code source du noyau est installé, vous trouverez plus d’informations dans /fs/filesystems.c et dans /Documentation/filesystems .
23.5 Gestion du système de fichiers (mount et /etc/fstab) Une fois Linux installé, généralement, vous ne devez vous occuper de la gestion du système de fichiers. Divers répertoires vous permettent d’accéder à la majorité des partitions de données du disque dur. Lorsque vous insérez un CD ou un DVD ou lorsque vous branchez un support de données externe, le système de fichiers est monté automatiquement dans l’arborescence. Tout fonctionne presque comme par magie. Cette section est un aperçu de ce qui se passe en coulisses et décrit les commandes mount et umount ainsi que le fichier /etc/fstab. • mount et umount sont exécutées lorsqu’une partition ou un support de données sont intégrés ou supprimés dans l’arborescence. Vous pouvez les lancer vous-même en tant que root si les mécanismes automatiques échouent. • Le fichier de configuration /etc/fstab contrôle quels systèmes de fichiers sont intégrés automatiquement à l’arborescence lors du démarrage et avec quelles options. /etc/ fstab est configuré pendant l’installation de Linux. Si vous n’êtes pas satisfait de cette configuration ou si vous modifiez votre environnement, vous devez modifier ce fichier avec un éditeur de texte. Cette section décrit la syntaxe du fichier.
Linux Livre Page 421 Mardi, 23. septembre 2008 1:05 13
421
ADMINISTRATION DU SYSTÈME DE FICHIERS
De manière surprenante, il n’existe que peu d’outils de configuration graphiques utilisables à la place de mount ou pour modifier /etc/fstab. Au nombre des rares exceptions, on compte le module de YaST Système, Partitionneur (SUSE) ainsi que le programme admin-disks, disponible sur certains systèmes Gnome. Cependant, l’utilisation de ces outils implique que vous connaissiez les concepts sous-jacents de mount et de /etc/fstab. Les supports de données externes comme les clés USB ou les disques durs Firewire constituent une exception : de nombreuses distributions montent automatiquement ces supports dans l’arborescence. Les mécanismes nécessaires à cela sont cependant relativement complexes et ne sont pas réalisables directement par /etc/fstab.
Déterminer l’état courant d’un système de fichiers df
Pour savoir comment votre système Linux est utilisé, le plus simple est de lancer la commande df. Celle-ci affiche l’emplacement où sont montées les partitions du disque, les supports de données, etc. et l’espace disponible dont le système de fichiers dispose. Cet exemple montre les systèmes de fichiers d’un ordinateur de tests. Il y a deux partitions Linux : la partition système / et la partition de données /vmware. Ces deux partitions utilisent le système de fichiers ext3. /win-c et /win-d donnent accès aux fichiers du Windows XP installé sur le même ordinateur. /media/dvd contient un DVD de données. Pour finir, la partition /data est une partition NFS distante sur un autre ordinateur du réseau local. /dev/shm est un système de fichiers virtuel servant à échanger des données entre processus. utilisateur$ df -T Sys. de fich. Type /dev/hdc2 ext3 /dev/hdc5 ext3 /dev/hda1 ntfs /dev/hda2 vfat mars:/data nfs tmpfs tmpfs
mount
1K-blocs 6940516 14428928 53872528 4715772 97881408 777764
Occupé 6422792 4935304 49505408 3269176 78792480 0
Disponible 159476 8760660 4367120 1446596 14116832 777764
Capacité 98% 37% 92% 70% 85% 0%
Monté sur / /vmware /win-c /win-d /data /dev/shm
La commande mount sans options supplémentaires affiche des options plus détaillées encore sur les systèmes de fichiers montés. Le résultat affiche également divers systèmes de fichiers virtuels. De plus, la commande affiche les options actives de mount. L’exemple suivant a été mis en forme en colonnes pour améliorer la lisibilité. utilisateur$ mount /dev/hdc2 on / type ext3 /dev/hda2 on /win-d type vfat /dev/hdc5 on /vmware type ext3 /dev/hda1 on /win-c type ntfs mars:/data on /data type nfs addr=192.168.0.1,user=kofler) proc on /proc type proc sysfs on /sys type sysfs devpts on /dev/pts type devpts tmpfs on /dev/shm type tmpfs
(rw) (rw,uid=501,gid=100) (rw,acl,user_xattr) (rw,uid=501,gid=100) (rw,noexec,nosuid,nodev, (rw) (rw) (rw,gid=5,mode=620) (rw)
Linux Livre Page 422 Mardi, 23. septembre 2008 1:05 13
422
LINUX
automount on /net type autofs (rw,fd=4,pgrp=1950,minproto=2, maxproto=4) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
Les fichiers /etc/mtab et /proc/mounts contiennent les mêmes informations. Ils comprennent une liste de tous les supports de données montés, associés à leurs types de systèmes de fichiers et aux options de mount utilisées. /etc/mtab est modifié chaque fois qu’un système de fichiers est monté ou démonté. La syntaxe de mtab est la même que celle de /etc/fstab. / proc/mounts contient également des options qui ne sont indiquées explicitement ni par mount ni par /etc/fstab.
Monter et démonter des systèmes de fichiers manuellement Après l’installation d’une distribution Linux récente, le système est configuré de sorte que vous n’ayez que rarement besoin de mount. Tous les systèmes Linux sont montés dans l’arborescence et une nouvelle fenêtre du gestionnaire de fichiers de KDE ou de Gnome apparaît automatiquement lors de l’insertion d’un CD/DVD ou lors de la connexion d’une clé USB. Derrière ces mécanismes automatiques se trouve toujours la commande mount. La syntaxe de mount est celle-ci : mount [options] périphérique répertoire
Les options indiquent entre autres le type de système de fichiers (-t xxx). Le nom du périphérique indique la partition ou le lecteur. Le répertoire est un répertoire du système de fichiers courant (il doit déjà exister ; vous pouvez le créer avec mkdir). mount peut généralement être exécuté uniquement par root. Cependant, le fichier /etc/ fstab permet d’indiquer des partitions individuelles pour lesquelles tous les utilisateurs peuvent exécuter mount (option user ou users). Exemples
Le plus simple pour comprendre mount est de présenter quelques exemples. Le premier permet d’accéder aux fichiers d’une partition Windows 9x/ME depuis le répertoire /windows : root# mkdir /windows root# mount -t vfat /dev/sda1 /windows
La commande suivante monte le lecteur CD-ROM qui contient un CD de données (système de fichiers ISO 9660) dans le répertoire /media/cdrom. Le périphérique /dev/scd0 indique que l’accès au lecteur se fait par le système SCSI du noyau. root# mount -t iso9660 /dev/scd0 /media/cdrom
Lorsque les paramètres du lecteur CD (type de système de fichiers, nom du périphérique, répertoire) sont enregistrés dans /etc/fstab, vous pouvez monter le CD avec la commande suivante : root# mount /media/cdrom
mount -o remount permet de remonter un système de fichiers déjà monté en modifiant ses options. La commande suivante active par exemple l’option exec pour un DVD afin de pouvoir exécuter les programmes qui s’y trouvent : root# mount /media/dvd -o remount,exec
Linux Livre Page 423 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
423
Si le montage de la partition système a rencontré un problème pendant le démarrage de l’ordinateur, la partition est montée en lecture seule. Pour corriger l’origine du problème (par exemple de mauvaises options dans /etc/fstab), il faut souvent modifier des fichiers sur le système de fichiers. Pour cela, lancez la commande suivante, qui remonte la partition système avec des droits en écriture : root# mount -o remount,rw /
Pour supprimer un système de fichiers de l’arborescence, lancez la commande umount : root# umount /win-c
Monter automatiquement des systèmes de fichiers
Exemple
Il serait très pénible de devoir monter toutes les partitions à chaque démarrage du système, de devoir lancer mount avec toutes ses options à chaque changement de CD, etc. Le travail est facilité par le fichier /etf/fstab. Il indique quels supports de données doivent être pris en compte dans le système de fichiers au démarrage. Dans tous les cas, fstab doit contenir la partition système ainsi que tous les systèmes nécessaires à la gestion interne du système. Selon la distribution, un fichier fstab minimal peut ressembler à ce qui suit : # deux lignes d’exemple de /etc/fstab /dev/sda2 / ext2 defaults 1 1 none /proc proc defaults 0 0 ... autres systèmes de fichiers virtuels (/dev/pts, /dev/shm etc.)
La première ligne indique qu’il faut utiliser la deuxième partition du premier disque IDE comme répertoire système. Selon la partition sur laquelle vous avez installé Linux, hda2 doit être remplacé par le bon nom de périphérique. La deuxième ligne monte le système de gestion des processus. Les fichiers et répertoires du répertoire /proc n’existent en fait pas sur le disque dur, il s’agit d’une représentation des données utilisées en interne par le noyau. Certaines distributions, pour la plupart anciennes, modifient automatiquement le fichier /etc/fstab dès qu’un nouveau support de données est ajouté ou supprimé dans le système. Ces modifications automatiques peuvent être gênantes : des lignes peuvent être écrasées ou supprimées.
Syntaxe de /etc/fstab
Première colonne
L’exemple ci-dessus représente le format principal de fstab. Chaque ligne décrit, en six colonnes, un support de données (une partition, un système de fichiers). La première colonne contient le nom du périphérique du support de données. Vous trouverez des informations sur la nomenclature des partitions de disque à la section 23.2. Au lieu d’utiliser le nom d’un périphérique, vous pouvez utiliser son nom ou son identifiant. La syntaxe correcte dans ces cas est alors LABEL=chaîne_de_caractères ou UUID=nnnnnn. /lib/udev/vol-id permet d’obtenir les noms et UUID d’une partition. Pour modifier
Linux Livre Page 424 Mardi, 23. septembre 2008 1:05 13
424
LINUX
ces données, il faut utiliser différents outils selon le format du système de fichiers (par exemple tune2fs ou reiserfstune). root# /lib/udev/vol_id /dev/sda9 ID_FS_USAGE=filesystem ID_FS_TYPE=ext3 ID_FS_VERSION=1.0 ID_FS_UUID=a12b639e-fafc-4a21-ad43-4852f47bd571 ID_FS_LABEL=/12 ID_FS_LABEL_SAFE=12
L’avantage des noms de partitions ou des libellés par rapport aux noms de périphériques est qu’ils restent identiques même quand le périphérique a changé de nom. Cela arrive relativement fréquemment pour les disques SCSI lorsqu’un lecteur supplémentaire est ajouté. Cette méthode présente cependant deux inconvénients. D’une part, fstab en devient plutôt moins clair (les UUID le rendent même illisible). D’autre part, si plusieurs distributions Linux sont installées en parallèle, des problèmes supplémentaires peuvent se poser. En effet, lors de l’installation, la partition d’échange et éventuellement d’autres partitions sont reformatées. Par conséquent, de nouveaux UUID sont générés. Les distributions installées ne peuvent donc plus reconnaître ces partitions. Il faut alors modifier fstab pour lui indiquer les nouveaux UUID. Deuxième colonne
La deuxième colonne indique dans quel répertoire le support de données doit être monté. Les répertoires de la deuxième colonne doivent déjà exister. Le répertoire ne doit pas nécessairement être vide, mais vous ne pourrez plus accéder aux fichiers qui s’y trouvent après avoir monté le système de fichiers.
Troisième colonne
La troisième colonne indique le système de fichiers. Le tableau suivant liste tous les systèmes de fichiers importants, en ordre alphabétique. Systèmes de fichiers pris en charge par Linux (troisième colonne de /etc/fstab) auto cifs devpts ext2 ext3 ext4 iso9660 nfs ntfs proc reiserfs reiser4 smbfs swap sysfs tmpfs udf usbfs vfat
système de fichiers à reconnaître automatiquement système de fichiers réseau de Windows (Samba) pseudo-terminaux conformément à la spécification Unix 98 ext version 2 ext version 3 ext version 4 CD-ROM, DVD système réseau Unix (NFS) système de fichiers Windows NT/2000/XP/Vista gestion des processus /proc reiser version 3.n reiser version 4.n système de fichiers réseau de Windows (Samba) partition ou fichier d’échange gestion du système (/sys) échange de données entre les programmes conformément à SystemV (mémoire partagée) Universal Disk Format (DVD, CD-RW) gestion des périphériques USB système de fichiers Windows 9x/ME
Linux Livre Page 425 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
425
On peut également indiquer plusieurs systèmes de fichiers, séparés par des virgules. Par exemple, les CD et DVD peuvent être configurés avec l’option iso9660,udf car seuls ces deux systèmes de fichiers sont généralement utilisés dans ce cas. mount choisit alors le format qu’il va utiliser. Quatrième colonne
La quatrième colonne contient des informations relatives à l’accès au support de données. Les options sont séparées par des virgules ; les espaces ne sont pas autorisées. Le tableau suivant énumère les options les plus importantes de mount. Vous en trouverez une référence complète dans man mount. Si vous ne souhaitez pas passer d’options, utilisez le mot clé defaults. Options de mount (quatrième colonne de /etc/fstab) defaults
utiliser les options par défaut
dev
prendre en compte les identificateurs des périphériques caractère ou bloc
exec
autoriser l’exécution de programmes (par exemple pour les lecteurs CD/DVD)
noauto
ne pas monter au démarrage du système
nodev
ignorer les identificateurs des périphériques caractère ou bloc
noexec
interdire l’exécution de programmes
nosuid
ne pas prendre en compte les bits d’accès sid et gid
sync
ne pas mettre en tampon les accès en écriture (plus sûr, mais plus lent)
owner
autoriser le propriétaire à exécuter (u)mount
user
autoriser tous les utilisateurs à exécuter mount ; seul l’utilisateur qui a appelé mount peut appeler umount
users
autoriser tous les utilisateurs à appeler (u)mount
Cinquième colonne
La cinquième colonne contient des informations pour le programme dump et est actuellement ignorée. Généralement, la partition système contient la valeur 1, et les autres partitions ou supports de données contiennent la valeur 0.
Sixième colonne
La sixième colonne indique si et dans quel ordre le système de fichiers doit être vérifié au démarrage. Dans la plupart des distributions, la valeur de cette colonne est 1 pour la partition système et 0 pour toutes les autres, ce qui signifie que seule la partition système est vérifiée et éventuellement réparée. Si vous souhaitez vérifier d’autres partitions automatiquement, donnez-leur la valeur 2 dans cette colonne. Les systèmes de fichiers qui ne doivent pas être vérifiés doivent avoir la valeur 0. Si les valeurs de la cinquième et de la sixième colonne ne sont pas renseignées dans /etc/ fstab, la valeur 0 est utilisée par défaut.
Linux Livre Page 426 Mardi, 23. septembre 2008 1:05 13
426
LINUX
23.6 Les systèmes de fichiers Linux Cette section traite des trois systèmes de fichiers les plus importants sous Linux, ext3, reiserfs et xfs. Avant d’en décrire la mise en œuvre et l’administration, nous allons établir ici quelques bases indépendantes du système de fichiers. Cette section de généralités explique des concepts tels que la journalisation ou LFS et est en quelque sorte un glossaire pour les sections suivantes.
Généralités Journalisation
Tous les systèmes de fichiers actuels sous Linux prennent en charge des fonctions de journalisation. Dans sa forme la plus simple, la journalisation implique qu’au début et à la fin de chaque opération sur les fichiers, celle-ci est enregistrée dans un fichier spécifique. Grâce à cet enregistrement, vous pouvez vérifier si une opération donnée a été complètement exécutée ou non. Si ce n’est pas le cas, elle peut être répétée (dans le vocabulaire des bases de données, on parle de transactions). Dans les systèmes de journalisation avancés, il est également possible d’enregistrer les modifications propres aux fichiers. Cela ralentit le fonctionnement quotidien, mais fournit plus de possibilités en ce qui concerne la reconstruction. Lorsqu’une opération ne se termine pas correctement, le fichier de journalisation entre en jeu. Lorsque la journalisation est simple, les modifications sont perdues (n’attendez pas des miracles de la journalisation), mais l’état précédent du fichier est rétabli. L’avantage des fonctions de journalisation est que le système de fichiers peut être ramené très rapidement à un état cohérent lors du démarrage de l’ordinateur et être utilisé presque immédiatement. C’est une différence majeure par rapport à ce qui se faisait précédemment : après une interruption ou une coupure de courant, le système de fichiers complet devait être parcouru à la recherche d’erreurs. Cela durait plusieurs minutes, voire des heures pour les gros disques durs. La journalisation n’offre pas de garantie en ce qui concerne la cohérence du système de fichiers après une coupure de courant. Le problème provient des disques durs. Ceux-ci utilisent, pour des raisons d’efficacité, de la mémoire tampon interne. Il peut alors arriver que, du point de vue du système de fichiers, les données soient reçues et enregistrées par le disque alors qu’elles ne sont écrites sur le disque dur que quelques secondes plus tard. Si la coupure de courant survient pendant cet intervalle de temps, les données de la mémoire tampon sont perdues. Certains disques durs permettent de désactiver ce cache. Les performances d’écriture s’en ressentent fortement, ce qui explique pourquoi on évite généralement de le faire. Indépendamment du cache d’écriture, le comportement du disque dur lors d’une coupure d’électricité soudaine est imprévisible. Pour formuler cela autrement, les systèmes de fichiers journalisés sont une belle chose, mais ils n’évitent pas les pertes de données consécutives à une coupure. Si vos données ont une certaine valeur, investissez 100 euros dans un petit onduleur qui permettra à votre ordinateur de s’arrêter proprement, même en cas de coupure d’électricité.
Linux Livre Page 427 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
Vérification automatique du système de fichiers
427
Lorsque Linux détecte, au moment du démarrage, que l’ordinateur n’a pas été éteint correctement, il lance une vérification pour la partition système et, selon la configuration, pour d’autres partitions listées dans /etc/fstab. La vérification dépend de la valeur de la sixième colonne du fichier, comme l’explique la section 23.5. Grâce à la journalisation, cette vérification ne prend normalement que quelques secondes. Indépendamment de cela, certains systèmes de fichiers (entre autres toutes les versions d’ext) vérifient régulièrement leur cohérence. Ces tests relativement longs sont lancés au démarrage de l’ordinateur au bout d’une certaine durée ou d’un certain nombre de montages de la partition. Lorsque les fonctions de journalisation ont été introduites, il a souvent été argumenté que ce type de vérification était redondant. Cela n’est malheureusement pas tout à fait vrai : un système de fichiers peut souffrir d’incohérences dues à des erreurs matérielles et la probabilité de ce type d’erreur augmente avec la taille du disque. La spécification d’un disque dur de 320 Go indique que la probabilité d’erreur (non-recoverable read errors per bits read, nombre d’erreurs de lecture non récupérables par bit lu) est de 1/1014. Cela semble négligeable. Cependant, ce disque contient 2,56 × 1013 bits. Les erreurs sont donc probables en fonctionnement normal, en dehors même de tout incident. Un test de cohérence régulier du système de fichiers ne permet pas d’éviter ces erreurs, mais il permet de détecter et de corriger les comportements d’erreur (au moins lorsque des zones critiques pour la gestion interne du système de fichiers sont touchées). Les systèmes de fichiers présentés dans cet ouvrage ne tolèrent malheureusement pas les erreurs. Les systèmes qui détectent les erreurs matérielles grâce à des sommes de contrôle ou qui peuvent corriger de telles erreurs grâce à un enregistrement redondant ne sont actuellement que des sujets de recherche. Les détails de la vérification des systèmes de fichiers au démarrage dépendent souvent de la distribution. Généralement, elle se fait sans interaction de l’utilisateur et ralentit visiblement le processus de démarrage. Cela ne devient réellement gênant que lorsque des erreurs non récupérables sont rencontrées. Dans ce cas, la partition est montée en lecture seule. Vous devez alors vous connecter en tant que root, répéter la vérification du système de fichiers et indiquer de manière interactive ce que doit faire l’outil de vérification avec les données défectueuses. Dans la plupart des cas, vous reviendrez ici à un état cohérent du système de fichiers, mais il est possible que vous n’arriviez pas à secourir tous les fichiers. Pour finir, redémarrez l’ordinateur.
Vérification manuelle du système de fichiers
Vous pouvez vérifier manuellement un système de fichiers avec la commande fsck. Cependant, la partition concernée ne peut pas être utilisée pendant ce temps et doit être démontée avec umount. Vous ne pouvez pas vérifier la partition système lorsque le système fonctionne car vous ne pouvez pas la démonter. Pour forcer la vérification, lancez en tant que root la commande touch /forcefsck et redémarrez l’ordinateur. Ce fichier est également créé lorsque vous lancez shutdown avec l’option -F.
Linux Livre Page 428 Mardi, 23. septembre 2008 1:05 13
428
LINUX
Lorsque le fichier /forcefsck existe, presque toutes les distributions lancent une vérification du système de fichiers. Si ce n’est pas le cas, utilisez un système de secours ou un live CD (Knoppix) et lancez-y fsck. Limites de taille
Auparavant, la taille maximale des fichiers était une question récurrente, dont la réponse dépendait du noyau, de l’architecture du processeur, de la bibliothèque glibc et du système de fichiers. Les distributions courantes prennent en charge l’extension LFS dans la bibliothèque glibc. La taille des fichiers est alors, du point de vue de Linux, presque illimitée : 263 octets. En pratique, il existe cependant certaines limites. Même aujourd’hui, certains programmes se heurtent à la limite de 2 Go, ce qui peut par exemple rendre le téléchargement d’images ISO de DVD pénible. Utilisez des outils adaptés, comme wget à partir de sa version 1.10. D’autre part, les systèmes de fichiers ont différentes limites pour la taille maximale des fichiers et des systèmes de fichiers. Le tableau suivant résume ces données. Ici, 1 To = 1024 Go.
Changement de système de fichiers
Système de fichiers
Taille maximale d’un fichier
Taille maximale du système
ext2 / ext3
2 To
8 To (en blocs de 4 Ko)
ext4
inconnue
1 048 576 To
reiserfs
8 To
16 To
reiser4
inconnue
inconnue
xfs
9 437 184 To
9 437 184 To
Il n’existe pas d’outil pour changer de système de fichiers (par exemple passer une partition de ext3 à reiserfs). La seule manière consiste à créer une nouvelle partition formatée dans le système souhaité et à y copier tous les fichiers.
Systèmes de fichiers ext (ext2, ext3 et ext4) Les différentes versions de ext dominent le monde des systèmes de fichiers sous Linux : • ext, la première version du système de fichiers, n’a été exploitée que brièvement aux débuts de Linux (1992). La taille maximale du système de fichiers état de 2 Go. • ext2 était le système de fichiers dominant sous Linux entre 1993 et 2001. La taille maximale du système de fichiers était de 8 To. • Les nouveautés principales de ext3 étaient les fonctions de journalisation et la prise en charge des ACL (à partir du noyau 2.6). La large adoption de ext3 est probablement due à sa compatibilité avec ext2. Les systèmes ext2 n’avaient pas besoin d’être formatés et pouvaient être transformés facilement en systèmes ext3. Un système ext3 peut même être monté en tant que système ext2. • Le développement de ext4 a commencé en 2006. ext4 fait partie du noyau officiel depuis le noyau 2.6.19, mais il a encore actuellement un statut expérimental et ne doit pas être utilisé pour des données importantes. La taille maximale du système passe à 1 Eo (1 048 576 To) et les dates des modifications de fichiers sont enregistrées plus précisément. De plus, diverses optimisations de performances sont prévues. La compatibilité est également prise en compte afin d’assurer
Linux Livre Page 429 Mardi, 23. septembre 2008 1:05 13
429
ADMINISTRATION DU SYSTÈME DE FICHIERS
/etc/fstab
des migrations sans problème de ext3 à ext4. Attention, il n’est en revanche plus possible de passer de ext4 à ext3. La compatibilité entre les différents systèmes ext est également visible du fait que divers outils d’administration ont toujours un 2 dans le nom de la commande même s’ils fonctionnent également pour les versions plus récentes (par exemple tune2fs). Les informations qui suivent sont valides pour le système ext3. Presque toutes les distributions actuelles utilisent aujourd’hui ext3 par défaut. Les systèmes ext3 sont généralement définis dans /etc/fstab de la manière suivante : /dev/sdb8 /dev/sdb9 /dev/sdb9
Création d’un système de fichiers ext3
/ /data /acl-data
ext3 ext3 ext3
defaults 1 1 defaults 0 0 acl,user_xattr 0 0
Les systèmes de fichiers ext2 et ext3 sont tous deux formatés avec la commande mke2fs. Celle-ci peut également être appelée sous la forme mkfs.ext2 ou mkfs.ext3. L’option -j sert à créer un fichier de journalisation pour le système de données ; ce fichier est la seule différence entre ext2 et ext3. Vous trouverez une référence complète de mke2fs dans man mke2fs. Dans l’exemple suivant, un système ext3 est créé sur une clé USB de 64 Mo. mke2fs choisit lui-même une taille de bloc de 1 kilooctet (Ko) et choisit également d’utiliser 256 inodes par mégaoctet (ce qui correspond à l’option -i 4096) : root# mke2fs -j /dev/sda14 mke2fs 1.40.8 (13-Mar-2008) Étiquette de système de fichiers= Type de système d’exploitation : Linux Taille de bloc=1024 (log=0) Taille de fragment=1024 (log=0) 16000 i-noeuds, 64000 blocs 3200 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=1 Nombre maximum de blocs du système de fichiers=65536000 8 groupes de blocs 8192 blocs par groupe, 8192 fragments par groupe 2000 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 8193, 24577, 40961, 57345 Écriture des tables d’i-noeuds : complété Création du journal (4096 blocs) : complété Écriture des superblocs et de l’information de comptabilité du système de fichiers : complété Le système de fichiers sera automatiquement vérifié tous les 30 montages ou après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i pour écraser la valeur.
Modes de journalisation
ext3 peut mener sa journalisation de trois manières différentes : • data=ordered. C’est le mode par défaut. Seules les métadonnées sont enregistrées dans le journal (les informations sur les fichiers et non leur contenu). Dans le journal, les
Linux Livre Page 430 Mardi, 23. septembre 2008 1:05 13
430
LINUX
fichiers ne sont indiqués comme étant validés (commited) que lorsqu’ils sont copiés entièrement sur le disque. Après un plantage, le système de fichiers peut revenir très rapidement à un état cohérent car tous les fichiers qui n’ont pas été complètement enregistrés sont identifiables immédiatement. Cependant, il est impossible de les récupérer. • data=writeback. Ce mode est comparable au mode ordered. La seule différence est que le journal et les opérations sur les fichiers ne sont pas toujours complètement synchrones (ext3 n’attend pas la fin de l’opération de l’enregistrement pour marquer le fichier comme committed). Ce mode est plus rapide que le mode ordered. Après un plantage, l’intégrité du système de fichiers est assurée dans la même mesure. Cependant, il arrive que les fichiers contiennent des anciennes données. Le résultat est le même que pour une récupération après un plantage sous ext2, mais cette correction est nettement plus rapide avec ext3. • data=journal. Au contraire des deux autres, ce mode enregistre aussi les modifications des données. Toutes les modifications sont donc enregistrées deux fois (une fois dans le journal et une fois dans le fichier). ext3 est donc nettement plus lent dans ce mode. Les fichiers dont les modifications se trouvent dans le journal (mais pas encore enregistrées dans le fichier) peuvent être récupérés après un plantage. Si vous ne passez pas d’option particulière à mount, data=ordered est utilisé. Pour utiliser un autre comportement de journalisation, passez-le à mount avec l’option -o : root# mount -t ext3 -o data=journal /dev/sda12 /test
Vous pouvez aussi régler ce comportement dans /etc/fstab : /dev/sda12 /test ext3 data=journal 1 0
En interne, c’est le démon de journalisation intégré au noyau kjournald qui s’occupe de l’actualisation régulière du fichier de journalisation. Ce processus est démarré automatiquement lorsqu’un système de fichiers ext3 est monté dans l’arborescence. kjournald est responsable du fait qu’un accès disque ait lieu toutes les cinq secondes, même lorsque l’ordinateur n’effectue apparemment aucune tâche. Conversion de ext2 à ext3
Pour convertir un système ext2 au format ext3, il suffit de lancer la commande suivante : root# tune2fs -j /dev/sda5
Vérification du système de fichiers
Les systèmes de fichiers ext sont régulièrement contrôlés lors du démarrage de l’ordinateur, après un nombre donné de commandes mount (par défaut 36) ou après une durée donnée (par défaut 6 mois), quel que soit le premier critère atteint. Certaines distributions modifient ces paramètres pour des valeurs bien plus grandes, voire désactivent (avec la valeur 0) complètement les vérifications. La plupart des distributions configurent fstab pour que seule la partition système soit vérifiée (cela correspond à la sixième colonne, voir la section 23.5). Malgré la journalisation, il est conseillé de vérifier le système de fichiers régulièrement (au moins une à deux fois par an). Ainsi, vous pouvez détecter d’éventuelles défaillances matérielles. Il arrive également que le pilote du système de fichiers contienne des erreurs encore inconnues. Plus les erreurs sont corrigées tôt, plus les dégâts potentiels sont faibles.
Linux Livre Page 431 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
431
Vous pouvez lancer manuellement une vérification avec la commande fsck.ext2 ou fsck.ext3. La partition doit être démontée lors du contrôle. root# fsck.ext3 -f /dev/sda13 Passe 1 : vérification des i-noeuds, des blocs et des tailles Passe 2 : vérification de la structure des répertoires Passe 3 : vérification de la connectivité des répertoires Passe 4 : vérification des compteurs de référence Passe 5 : vérification de l’information du sommaire de groupe (/dev/sda13): 152190/640000 files (1.0% non-contiguous), 722668/1279167 blocks Modification de l’intervalle de vérification automatique
Vous pouvez définir et modifier l’intervalle de vérification du système de fichiers avec tune2fs. Les options -c et -i permettent de modifier respectivement le nombre de montages de la partition et l’intervalle, en jours : root# tune2fs -l /dev/sda12 ... Mount count: 57 Maximum mount count: 500 Last checked: Thu Dec 4 18:10:14 2003 Check interval: 5184000 (2 months) ... root# tune2fs -c 100 -i 90 /dev/sda12 Setting maximal mount count to 100 Setting interval between check 7776000 seconds
Définition du nom de la partition
e2label permet de voir et de définir le nom interne d’une partition ext3 : root# e2label /dev/sda1 mylabel
Vous pouvez donner ces noms dans la première colonne de /etc/fstab à la place du nom du périphérique. Définition de l’UUID
Le système de fichiers reçoit automatiquement un UUID lors de sa création. Vous pouvez le connaître avec la commande vol_id ou /lib/udev/vol_id. Vous pouvez éventuellement le modifier avec tune2fs -U. Cette modification peut être faite même lorsque la partition est montée. Vous pouvez indiquer un identifiant aléatoire (random) ou prédéterminé. root# tune2fs -U random /dev/sda1 root# tune2fs -U f7c49568-8955-4ffa-9f52-9b2ba9877021 /dev/sda1
Redimensionnement d’un système de fichiers ext3
resize2fs permet de redimensionner un système de fichiers ext3. Attention, vous devez auparavant modifier la taille de la partition ! Dans l’exemple suivant, la partition de 1.5 Go /dev/sdb11 est supprimée et recréée avec une taille de 2 Go. Cela se passe sans problème : il s’agit de la dernière partition du disque et il y a encore de la place sur le disque dur. root# umount /dev/sdb11 root# fdisk /dev/sdb Commande (m pour l’aide): p 255 heads, 63 sectors/track, 2055 cylinders Units = cylindres of 16065 * 512 = 8225280 bytes
Linux Livre Page 432 Mardi, 23. septembre 2008 1:05 13
432
LINUX
Périphérique Amorce Début Fin Blocs Id Système /dev/sdb11 1334 1525 1542208+ 83 Linux Commande (m pour l’aide): d Numéro de partition (1-11): 11 Commande (m pour l’aide): n Action de commande l logique (5 ou plus) p partition primaire (1-4) l Premier cylindre (1334-2055, par défaut 1334): <Entrée> Utilisation de la valeur par défaut 1334 Dernier cylindre ou +taille ou +tailleM ou +tailleK (1334-2055, par défaut 2055): +2000M Commande (m pour l’aide): w La table de partitions a été altérée! Appel de ioctl() pour relire la table de partitions. AVERTISSEMENT: la re-lecture de la table de partitions a échoué avec l’erreur 16: Device or resource busy. La nouvelle table sera utilisée lors du prochain réamorçage.
Après un redémarrage, on peut sans problème modifier le système de fichiers de la partition /dev/hdb11. Il faut vérifier le système avec e2fsck -f avant de lancer resize2fs. root# e2fsck -f /dev/sdb11 root# resize2fs /dev/sdb11 Le système de fichiers /dev/sdb11 a maintenant une taille de 512064 blocs.
Il existe, pour le noyau 2.6, un correctif permettant d’augmenter (mais pas de diminuer) la taille d’un système ext3 sans le démonter. Sous Red Hat et Fedora, ce correctif est intégré par défaut. Pour les distributions plus anciennes, vous pouvez modifier la taille du système de fichiers avec la commande ext2online. À partir de Fedora 6 et de Red Hat Enterprise 5, cette fonction est directement intégrée à resize2fs ; ext2online n’est plus disponible en tant que commande. Ce type de modification n’est possible que lorsque le système de fichiers ext3 se trouve sur un périphérique LVM ou RAID. Vous ne pouvez pas modifier la taille d’une partition classique, le correctif du noyau n’y change rien. Vous trouverez plus d’informations dans les pages de manuel de ext2online et de resize2fs ainsi qu’à l’adresse http://ext2resize.sourceforge.net/online.html. Fragmentation du système de fichiers
La fragmentation recouvre le fait qu’un fichier ne soit pas enregistré dans des blocs contigus mais répartis sur toute la partition. La fragmentation peut ralentir les accès aux fichiers. ext3 ne nécessite généralement pas de défragmentation car le système de fichiers évite globalement la fragmentation. Cependant, vous devez éviter de remplir le système de fichiers à plus de 90 %.
Accès au système de fichiers sous Windows
Sous Windows, vous pouvez aussi accéder à vos données Linux avec différents programmes. Explore2fs (http://www.chrysocome.net/explore2fs) est, selon moi, un des meilleurs. Il s’agit d’un genre de gestionnaire de fichiers avec lequel vous pouvez lire les systèmes ext2/3. Vous ne pouvez cependant pas les modifier.
Linux Livre Page 433 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
433
À première vue, le pilote ext (http://www.fs-driver.org/) est une solution plus élégante. Une fois ce pilote installé, vous pouvez utiliser sans problème des partitions Linux avec tous les programmes Windows. Cependant, vous devez impérativement éteindre complètement le système d’exploitation (ne pas le mettre en hibernation) lorsque vous passez d’un système à l’autre. Vous risquez sinon d’endommager votre système de fichiers et de perdre des données.
Système de fichiers reiserfs Version 3
Le système de fichiers reiserfs a été développé par l’entreprise Namesys sous licence GPL. Sa version 3.0 était le premier système de fichiers Linux qui disposait de fonctionnalités de journalisation et, depuis, il fait partie de la version 2.4.1 du noyau officiel. Le système de fichiers reiserfs version 4 était largement répandu, notamment parce qu’il fut le système par défaut sous SUSE pendant de nombreuses années. SUSE est passé à ext3 dans sa version 10.2. reiserfs est plus efficace que ext pour gérer les petits fichiers. Le système reiserfs est mûr, mais se trouve dans une impasse. Le système n’est plus développé ou maintenu, à l’exception des correctifs critiques. Une mise à jour vers la version 4 est possible uniquement lorsque toutes les données sont copiées dans une nouvelle partition reiser4.
Version 4
Depuis 2004, le système de fichiers Reiser version 4.n est disponible sous le nom reiser4 en tant que correctif du noyau. Le code de cette version a été entièrement redéveloppé. Cela a pour conséquence que le système de fichiers n’est pas compatible avec les versions 3.n et qu’il est impossible de passer de l’un à l’autre facilement. D’un point de vue technique, reiser4 est le système de fichiers le plus intéressant et le plus moderne qui existe sous Linux. Grâce à une interface de greffons, on peut l’étendre par des modules. Malgré des éléments techniques impressionnants, reiser4 est pour l’instant un échec. Il n’est pas intégré au noyau officiel, à la fois en raison des différends personnels entre développeurs et d’une stabilité insuffisante. En septembre 2006, Hans Reiser (fondateur et développeur principal de l’entreprise Namesys) a fait l’objet d’une enquête pour meurtre. L’activité commerciale de Namesys s’est arrêtée. Hans Reiser a été reconnu coupable pendant l’été 2008. L’avenir de reiser4 est incertain, même si officiellement il est toujours développé.
/etc/fstab
Les systèmes reiser sont généralement définis comme suit dans /etc/fstab : /dev/sdb11 /data1 reiserfs defaults 0 0 /dev/sdb12 /data2 reiser4 defaults 0 0
Création d’un système de fichiers reiser
Pour créer un système de fichiers reiser dans une partition, utilisez mkfs.reiserfs et mkfs.reiser4. Les commandes sont également disponibles sous les noms mkreiserfs et mkreiser4. De manière générale, aucune option en dehors du nom du périphérique n’est nécessaire. Pour partitionner le disque, utilisez comme d’habitude fdisk ou un autre outil de partitionnement. Les partitions reiserfs doivent avoir le même identifiant de système de fichiers que les partitions ext3, c’est-à-dire 83.
Linux Livre Page 434 Mardi, 23. septembre 2008 1:05 13
434
LINUX
root# mkfs.reiserfs /dev/sdc1 mkfs.reiserfs 3.6.19 (2003 www.namesys.com) ... Format 3.6 with standard journal Count of blocks on the device: 2443872 Number of blocks consumed by mkreiserfs formatting process: 8286 Blocksize: 4096 Hash function used to sort names: "r5" Journal Size 8193 blocks (first block 18) Journal Max transaction length 1024 inode generation number: 0 UUID: 064c57a1-9f1f-4c35-b1db-b49559703c3e ... ReiserFS is successfully created on /dev/sdc1.
Vous devez alors exécuter la commande mount pour pouvoir utiliser le nouveau système de fichiers : root# mount -t reiserfs /dev/sdc1 /test Vérification du système de fichiers
fsck.reiserfs et fsck.reiser4 permettent de vérifier l’intégrité du système de fichiers. Par défaut, cette commande affiche un rapport d’état, mais ne modifie pas le système de fichiers. Pour effectuer des réparations, vous devez passer les options --fix-fixable ou --fix. Vous trouverez une référence complète de la syntaxe dans les pages de manuel des commandes.
Définition du nom de la partition
reiserfstune -l permet de modifier le nom d’une partition. De même, l’option -u permet d’en modifier l’UUID.
Redimensionnement du système de fichiers
La commande resize_reiserfs permet de modifier la taille d’un système reiserfs. Vous devez avant cela modifier la taille de la partition. La section précédente qui traite d’ext3 présente un exemple de procédure comparable.
Système de fichiers xfs Le système de fichiers xfs a été développé par l’entreprise SGI en 1994 pour ses stations de travail sous IRIX, un système Unix. Plus tard, le programme a été porté sous Linux et fait partie du noyau depuis les versions 2.6. xfs est un des plus anciens systèmes de fichiers journalisés. Il a été conçu comme un système de fichiers 64 bits ; la taille des fichiers et du système est presque illimitée. Il n’a été que peu modifié ces dernières années et est considéré comme mûr, stable et très efficace pour la gestion des très gros fichiers. Lorsque vous travaillez avec xfs, vous devez prendre en compte deux particularités : • Le système de fichiers utilise la partition à partir du premier octet et ne laisse pas, à la différence des autres systèmes de fichiers sous Linux, de place pour le secteur d’amorçage. L’installation de GRUB ou de LILO dans le secteur d’amorçage d’une partition xfs détruit donc une partie du système de fichiers. Vous devez l’installer dans le MBR ou dans le secteur d’amorçage d’une autre partition. • Les systèmes de fichiers xfs peuvent être agrandis avec xfs_growfs, mais ne peuvent pas être réduits.
Linux Livre Page 435 Mardi, 23. septembre 2008 1:05 13
435
ADMINISTRATION DU SYSTÈME DE FICHIERS
Vous trouverez plus d’informations sur le système de fichiers xfs aux adresses http://en.wikipedia.org/wiki/XFS et http://oss.sgi.com/projects/xfs/faq.html. Les systèmes xfs sont généralement définis comme suit dans /etc/fstab :
/etc/fstab
/dev/sdb13 /data xfs defaults 0 0 Création d’un système de fichiers xfs
Pour créer un système de fichiers xfs sur une partition, lancez simplement mkfs.xfs : root# mkfs.xfs /dev/sdc1 meta-data=/dev/sdc1 isize=256 = sectsz=512 data = bsize=4096 = sunit=0 naming =version 2 bsize=4096 log =internal log bsize=4096 = sectsz=512 realtime =none extsz=65536
agcount=16, agsize=152742 blks attr=0 blocks=2443872, imaxpct=25 swidth=0 blks, unwritten=1 blocks=2560, version=1 sunit=0 blks blocks=0, rtextents=0
Vous devez alors exécuter la commande mount pour pouvoir utiliser le nouveau système de fichiers : root# mount -t xfs /dev/sdc1 /test Vérification du système de fichiers
Redimensionnement du système de fichiers Modification des paramètres du système de fichiers
L’intégrité du système xfs est vérifiée automatiquement à chaque exécution de mount (seul le fichier de journalisation est pris en compte). Pour le vérifier manuellement, lancez xfs_check. Cela n’est possible que lorsqu’il n’est pas monté. Si la commande renvoie des erreurs, vous pouvez essayer de les corriger avec xfs_repair. Pour des raisons de compatibilité avec les autres systèmes, la commande fsck.xfs existe aussi. Cependant, elle ne remplit aucune tâche à part pointer vers les outils appropriés. xfs_growfs agrandit un système de fichiers xfs. Celui-ci doit être monté. La commande suppose que la partition sous-jacente a déjà été agrandie. xfs_admin modifie divers paramètres du système de fichiers, en particulier son nom et son UUID. Le système de fichiers considéré doit être démonté au préalable.
23.7 Systèmes de fichiers Windows De nombreux utilisateurs de Linux ont également une version de Windows installée en parallèle. De plus, les supports de données externes (clés USB, cartes mémoire d’appareils photo numériques, etc.) sont souvent formatés dans un système de fichiers Windows. Cette section traite de l’accès à ces systèmes de fichiers, qu’ils soient sur une partition du disque dur interne ou sur un support de données externe. Il existe deux systèmes de fichiers Windows : • FAT et VFAT. Ce système de fichiers de DOS et Windows 3.1/9x existe en plusieurs versions : FAT12 pour les disquettes, FAT16 pour les systèmes de fichiers jusqu’à 2 Go,
Linux Livre Page 436 Mardi, 23. septembre 2008 1:05 13
436
LINUX
FAT32 pour les systèmes de fichiers jusqu’à 8 To et les fichiers jusqu’à 4 Go (mais divers outils de formatage Windows limitent la taille du système à 32 Go). Windows 95 a introduit l’extension VFAT, dont la principale amélioration est d’autoriser des noms de fichiers de plus de 8+3 caractères. Les noms de fichiers longs sont enregistrés en tant que chaînes de caractères Unicode. Les versions récentes de Windows enregistrent tous les noms de fichiers (y compris les noms courts) en tant que chaînes de caractères Unicode, ce qui assure que la casse des noms soit conservée et qu’il ne puisse pas y avoir de problème de jeu de caractères. Une partition Windows typique d’un disque dur est une combinaison de FAT32 et de VFAT (abrégé en VFAT32). Lorsque nous parlerons de VFAT dans les sections qui suivent (ou de système de fichiers vfat), nous parlerons de toutes les combinaisons possibles de FAT12/16/32 et VFAT. • NTFS. NFTS a été introduit par Windows NT et est pris en charge par toutes les versions courantes de Windows (2000, XP, 2003, Vista). NFTS est plus sûr (droits d’accès, journalisation, etc.) et fournit plus de fonctionnalités. La taille du système de fichiers est presque illimitée (16 777 216 To).
Prise en charge de Linux
Windows Vista prévoyait un nouveau système de fichiers fondé sur une base de données, mais cela n’a pas pu être réalisé. Linux peut accéder aux systèmes de fichiers VFAT et NTFS. Le pilote VFAT est mûr depuis plusieurs années et offre des droits d’accès en lecture et en écriture. Une partition VFAT est pour cette raison la méthode la plus simple de partager des données entre Windows et Linux sur un ordinateur. (Si vous travaillez en réseau, vous pouvez utiliser les partages Windows/Samba à cette fin.) La prise en charge de NTFS fut problématique pendant de nombreuses années car il n’existait qu’un pilote en lecture seule. Cependant, la communauté de développement NTFS a remué ciel et terre pour changer cela : il existe maintenant trois pilotes libres qui se différencient principalement dans la mesure avec laquelle ils permettent l’accès en écriture.
Conversion de fichiers texte
Indépendamment du système de fichiers, le transfert de fichiers texte entre Linux et Windows pose souvent problème car les deux systèmes utilisent des jeux de caractères et des caractères de fin de ligne différents. Vous pouvez résoudre ces problèmes grâce à divers convertisseurs (voir Chapitre 15).
Droits d’accès
VFAT ne connaît pas le concept de droits d’accès. NTFS prend en charge des droits d’accès, mais ceux-ci ne sont pas gérés comme sous Unix/Linux. Un problème se pose alors : quel utilisateur Linux a le droit d’accéder à quels fichiers Windows ? Les options uid, gid et umask/fmask/dmask de mount permettent de répondre à cette question. Elles définissent le propriétaire, le groupe et les droits d’accès du système de fichiers Windows pour tous les fichiers du système de fichiers NTFS, indépendamment des éventuels droits NTFS. Les détails de ces options sont donnés dans man mount.
Formatage d’une partition Windows
Il est rare de devoir formater une partition Windows, mais cette opération est possible. • mkdosfs permet de formater une partition en VFAT16 (Windows 9x/ME). Pour formater en VFAT32, il faut utiliser la syntaxe mkdosfs -F 32. • mkntfs crée un système de fichiers NTFS. Cette commande se trouve généralement dans le paquetage ntfsprogs, qui doit souvent être installé préalablement.
Linux Livre Page 437 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
437
Si vous n’éteignez pas complètement Windows (mode hibernation ou veille) et si vous démarrez Linux et modifiez le système de fichiers Windows, vous risquez de perdre des données. Comme Windows fige également l’état du système de fichiers, il s’attend, au démarrage suivant, à trouver le même état. Si vous voulez modifier des fichiers Windows sous Linux, vous devez arrêter complètement Windows avant de passer sous Linux.
Système de fichiers VFAT Paramètres par défaut
Résumons d’abord rapidement les paramètres par défaut du pilote vfat. Il reconnaît le type FAT (FAT12/16/32). Les noms de fichiers Windows sont représentés sous Linux dans le jeu de caractères Latin-1 (ISO8859-1). L’utilisateur qui lance la commande mount peut lire et modifier tous les fichiers et répertoires ; tous les autres utilisateurs peuvent lire, mais ils ne peuvent pas modifier ces fichiers. Vous pouvez modifier tous ces paramètres par le biais d’options. Vous trouverez les options correspondantes dans man mount.
/etc/fstab
Les systèmes VFAT locaux sont généralement définis comme suit dans /etc/fstab. Cette ligne indique que l’utilisateur avec l’identifiant 501 peut modifier tous les fichiers et que les caractères spéciaux des noms de fichiers longs (plus de 8+3 caractères) sont représentés dans l’encodage UTF-8. Ce paramètre est nécessaire si votre distribution est configurée par défaut en UTF-8, ce qui est le cas dans la majorité des distributions actuelles. /dev/sda1 /media/win1 vfat noauto,users,gid=users,utf8 0 0
Système de fichier NTFS (pilote ntfs) Il existe trois pilotes libres différents pour le système de fichiers NTFS. Les utilisateurs de Red Hat et de Fedora ont longtemps dû se passer de pilote NTFS. Ces distributions n’en fournissaient pas par peur d’un éventuel procès. Le pilote NTFS devait être téléchargé depuis www.linux-nfts.org, puis installé. Depuis Fedora 6, le pilote ntfs-3g est fourni. Le pilote ntfs
Le pilote ntfs intégré au noyau est présent dans presque toutes les distributions, à part Red Hat et Fedora. Historiquement, il s’agit d’un redéveloppement du pilote pour le noyau 2.6 qui n’a rien à voir avec les pilotes ntfs des versions plus anciennes du noyau. La liste suivante résume l’état du pilote ntfs dans le noyau 2.6.24 : • opérations de lecture prises en charge : lecture des fichiers et répertoires, y compris les fichiers compressés et les liens durs ; • opérations d’écriture prises en charge : modification des fichiers, y compris en modifiant leur taille ; • opérations de lecture non prises en charge : lecture de fichiers chiffrés, de flux, liens symboliques, attributs étendus ;
Linux Livre Page 438 Mardi, 23. septembre 2008 1:05 13
438
Paramètres par défaut /etc/fstab
LINUX
• opérations d’écriture non prises en charge : modification des fichiers compressés, création ou suppression de fichiers ou de répertoires, restauration du système de fichiers grâce aux fonctions de journalisation. En résumé, le pilote ntfs est généralement suffisant uniquement pour lire des fichiers sur une partition NTFS et n’est adapté que dans des cas particuliers à la modification du système de fichiers. Vous trouverez plus d’informations sur l’état courant du pilote dans le fichier Documentation/filesystems/ntfs.txt du code source du noyau. Par défaut, seul root a accès aux fichiers. Vous trouverez une référence des options de ntfs pour mount et /etc/fstab dans man mount. Les systèmes NTFS locaux sont généralement définis comme suit dans /etc/fstab. Cette ligne indique que l’utilisateur avec l’identifiant 501 peut lire et modifier tous les fichiers. Les autres utilisateurs n’ont aucun accès aux fichiers. Les noms de fichiers sont représentés dans le codage UTF-8. /dev/sda1 /media/win ntfs nls=utf8,uid=501,gid=100 0 0
Administration
Comme les fonctionnalités d’écriture du pilote ntfs sont limitées, certaines distributions montent les partitions NTFS avec l’option ro (lecture seule). Le paquetage ntfsprogs contient diverses commandes d’administration des systèmes de fichiers NTFS. Commantes importantes du paquetage ntfsprogs mkntfs ntfsclone ntfsinfo ntfslabel ntfsresize ntfsundelete
crée un système de fichiers NTFS copie un système de fichiers NTFS affiche des informations sur un système de fichiers NTFS renomme une partition NTFS modifie la taille d’un système de fichiers NTFS essaie de récupérer des fichiers supprimés
Système de fichiers NTFS (ntfsmount) La commande ntfsmount est une alternative au module ntfs. Il ne s’agit pas d’un module du noyau, mais d’un module FUSE. FUSE signifie Filesystem in Userspace, système de fichiers en espace utilisateur. C’est un module du noyau qui communique avec des programmes externes. FUSE permet d’implémenter des pilotes de systèmes de fichiers en dehors du noyau, ce qui est le cas pour ntfsmount. Vous trouverez plus de détails à ce sujet à la page http://www.linux-ntfs.org/doku.php?id=ntfsmount. La liste suivante résume les fonctionnalités de ntfsmount version 2.0 : • opération de lecture prises en charge : lecture de fichiers et de répertoires, y compris compressés et chiffrés, liens durs et liens symboliques, flux, attributs étendus ; • opérations d’écriture prises en charge : modification, création et suppression de fichiers ; • opérations d’écriture non prises en charge : modification des fichiers compressés ou chiffrés, restauration du système de fichiers avec les fonctions de journalisation.
Linux Livre Page 439 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
Prérequis
439
Pour que ntfsmount fonctionne, certains prérequis doivent être validés : • ntfsmount doit être installé. La commande se trouve soit dans le paquetage ntfsprogs, soit dans son propre paquetage (par exemple ntfsprogs-fuse). • ntfsmount utilise les bibliothèques et commandes FUSE qui doivent être également installées (paquetages fuse, fuseutils, fuselibs ou libfuse, etc.). • Le module de noyau fuse doit être disponible, ce qui est le cas pour la plupart des distributions. Si ntfsmount affiche un message d’erreur indiquant que /dev/fuse n’existe pas, vous devez le charger manuellement (modprobe fuse). Dans certaines distributions (Red Hat, Fedora), seuls root et les utilisateurs du groupe fuse ont le droit de monter des systèmes de fichiers grâce à FUSE.
ntfsmount
Pour monter un système de fichiers NTFS avec FUSE, utilisez la commande ntfsmount ou mount -t ntfs-fuse. Par défaut, le système de fichiers n’est lisible que par root. Vous trouverez une référence des options de ntfsmount dans man ntfsmount. root# ntfsmount /dev/sda1 /media/win root# mount -t ntfs-fuse /dev/sda1 /media/win
Pour démonter le système de fichiers, utilisez comme d’habitude umount ou ntfsmount -u. /etc/fstab
Pour monter automatiquement une partition avec ntfsmount, ajoutez dans /etc/fstab une ligne selon le schéma suivant : /dev/sda1 /media/win ntfs-fuse uid=501,gid=100 0 0
Lorsque la ligne ntfs-fuse de /etc/fstab reste sans effet ou lorsque mount -t ntfs-fuse renvoie l’erreur unknown filesystem type ntfs-fuse, une cause fréquente est que le lien /sbin/mount.ntfsfuse vers ntfsmount est manquant ou défaillant. Les commandes suivantes permettent de régler cette situation : root# cd /sbin root# rm mount.ntfs-fuse root# ln -s $(which ntfsmount) mount.ntfs-fuse
Système de fichiers NTFS (ntfs-3g) ntfs-3g est techniquement une variante de ntfsmount. ntfs-3g intègre du code supplémentaire pour améliorer la prise en charge en écriture. Depuis mars 2007, les développeurs de ntfs-3g l’ont déclaré comme étant officiellement stable et l’ont exprimé en passant à des numéros de version 1.n. ntfs-3g
Pour utiliser ntfs-3g, installez d’abord le paquetage portant ce nom. La syntaxe pour monter un système de fichiers avec ntfs-3g est comparable à celle de ntfsmount. Elle se différencie seulement par le nom du système de fichiers. Vous trouverez une référence des options de montage de ntfs-3g dans man ntfs-3g.
Linux Livre Page 440 Mardi, 23. septembre 2008 1:05 13
440
LINUX
root# ntfs.3g /dev/sda1 /media/win root# mount -t ntfs-3g /dev/sda1 /media/win
/etc/fstab
umount et fusermount -u permettent de démonter le système de fichiers. La ligne fstab n’est modifiée que par le nom du système de fichiers (ntfs-3g au lieu de ntfs-fuse) : /dev/sda1
Flux
/media/win ntfs-3g uid=501,gid=100 0 0
Les flux (streams) sont une particularité du système de fichiers NTFS. Un fichier NTFS peut se composer de plusieurs flux. Chaque flux a la même fonction qu’un fichier. Lorsqu’on accède comme d’habitude à un fichier, le flux par défaut est lu et modifié. L’accès à des flux spéciaux (lorsqu’ils existent) passe pas une syntaxe spéciale. Le pilote ntfs-3g offre l’option streams_interface pour accéder à ces flux. Par défaut, l’accès est bloqué. streams_interface=windows active la syntaxe Windows typique sous la forme nom_de_fichier:nom_de_flux. streams_interface=xattr permet d’accéder aux flux via getfattr/setfattr. Pour tester cette fonctionnalité, montez le système NTFS avec l’option streams_interface=windows. Créez un nouveau fichier streamtest avec cat. Ctrl+D termine la saisie. Créez ensuite le flux streamtest:stream1. root# ntfs-3g -o streams_interface=windows /dev/sda1 /media/win root# mkdir /media/win/test root# cd /media/win/test root# cat > streamtest abc Ctrl+D root# cat > streamtest:stream1 efg Ctrl+D root# ls streamtest root# cat streamtest abc root# cat streamtest:stream1 efg
Les commandes suivantes montrent l’accès aux flux via les attributs étendus. root# cd root# umount /media/win root# ntfs-3g -o streams_interface=xattr /dev/sda1 /media/win root# cd /media/win/test root# setfattr -n user.stream2 -v "xyz" streamtest root# getfattr -d -e text streamtest # file: streamtest user.stream1="efg^012" user.stream2="xyz"
Systèmes de fichiers NTFS (Captive, Paragon) Il existe encore deux autres possibilités pour monter un système de fichiers NTFS : • Captive est un paquetage libre, mais il accède au pilote NTFS de Microsoft et nécessite donc une licence Windows. Cette solution est lente et gourmande en mémoire, mais
Linux Livre Page 441 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
441
toutes les fonctions de NTFS sont prises en charge : http://www.jankratochvil.net/project/captive/. • Paragon est un produit commercial, compatible avec la majeure partie des fonctions spéciales de NTFS : http://ntfs-linux.com/.
23.8 CD, DVD et disquettes CD et DVD de données Les lecteurs CD et DVD sont en principe gérés comme des disques durs. Cependant, on peut remarquer deux différences importantes. D’une part, on peut changer de CD/DVD dans un lecteur, alors que l’on ne change pas le disque dur traditionnel en cours de fonctionnement. D’autre part, les CD et DVD de données utilisent un autre système de fichiers, ISO 9660 ou UDF. ISO 9660 et UDF
ISO 9660 est une norme universelle pour les CD de données. Certaines extensions se sont établies pour pallier quelques restrictions. L’extension Rockridge, typique d’Unix, permet d’enregistrer des noms de fichiers longs et des droits d’accès. L’extension Joliet, typique de Windows, permet d’utiliser un jeu de caractères Unicode dans les noms de fichiers. L’extension El-Torito permet de démarrer un ordinateur directement depuis le CD. UDF (Universal Disk Format, format de disque universel) est le successeur d’ISO 9660. Il est utilisé sur de nombreux DVD (les DVD peuvent aussi utiliser le format ISO 9660). UDF permet, à la différence d’ISO 9660, les fichiers de plus de 2 Go, les noms de fichiers jusqu’à 255 caractères Unicode, une meilleure prise en charge des médias en lecture-écriture, etc.
Noms de périphériques CD/DVD
La liste suivante indique quels noms de périphériques sont utilisés pour accéder aux lecteurs CD/DVD. Le nom du périphérique dépend principalement de sa connexion au système (IDE, SCSI, SATA, USB ou Firewire). Pour les périphériques IDE, le pilote utilisé (pilote IDE ou extension libata du système SCSI) joue également un rôle. Dans le second cas, votre lecteur IDE se comporte comme un lecteur SCSI. Si vous ne savez pas quel type de lecteur vous utilisez et comment il est connecté à l’ordinateur, il est probable qu’il s’appelle /dev/hdb, /dev/hdc ou /dev/scd0. Noms de périphériques CD/DVD /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/scd0 oder /dev/sr0 /dev/scd1 oder /dev/sr1
lecteur IDE (maître du premier canal, pilote IDE) lecteur IDE (esclave du premier canal, pilote IDE) lecteur IDE (maître du second canal, pilote IDE) lecteur IDE (esclave du second canal, pilote IDE) lecteur 1 SATA/SCSI/USB/Firewire/IDE avec pilote libata lecteur 1 SATA/SCSI/USB/Firewire/IDE avec pilote libata
Linux Livre Page 442 Mardi, 23. septembre 2008 1:05 13
442
LINUX
Certaines distributions créent aussi des liens comme /dev/cdrom, /dev/dvd ou /dev/dvdrecorder vers le périphérique réel. Fonctionnement automatique
Pour la plupart des distributions, le système est configuré de manière que, lorsqu’on insère un CD ou un DVD de données dans le lecteur, une fenêtre du gestionnaire de fenêtres apparaisse et en affiche le contenu. Vous pouvez sortir le CD/DVD à tout moment en appuyant sur le bouton du lecteur ou grâce au menu contextuel de l’icône du lecteur sur le bureau. Ce comportement est dû aux démons de gestion du matériel de KDE et de Gnome.
Fonctionnement manuel
Lorsque vous travaillez en console ou sur un bureau sans automatismes liés au CD/DVD, vous devez monter manuellement les CD/DVD. Les noms de périphériques et de répertoires varient selon le matériel et la distribution. Les deux lignes suivantes illustrent le montage, respectivement, d’un support ISO 9660 et d’un support UDF. root# mount -t iso9660 -o ro /dev/scd0 /media/dvd root# mount -t udf -o ro /dev/scd0 /media/dvd
Par défaut, tous les répertoires et les fichiers sont lisibles par tous les utilisateurs. Si vous désirez exécuter des programmes qui se trouvent sur un CD ou un DVD, vous devez ajouter l’option exec lors du montage. Pour gérer correctement les noms de fichiers internationaux, utilisez l’option iocharset=utf8 ou utf8. Vous trouverez plus d’informations dans man mount. Avant de pouvoir éjecter le CD/DVD, vous devez lancer explicitement umount : root# umount /media/dvd
À la place d’umount, vous pouvez lancer la commande eject. Le CD est alors supprimé de l’arborescence et éjecté du lecteur. S’il y a plusieurs supports de données éjectables connectés à l’ordinateur, ils sont testés les uns après les autres et le premier support trouvé est éjecté. Vous pouvez aussi indiquer comme option le nom du périphérique ou le point de montage. Périphérique occupé
Lorsque la commande umount renvoie le message d’erreur "périphérique occupé", cela signifie qu’un autre programme utilise des données sur le CD-ROM. C’est entre autres le cas si un répertoire du CD-ROM est ouvert dans un terminal. Lancez-y cd pour revenir à votre répertoire personnel. Pour chercher l’origine d’un problème lié à umount, vous pouvez utiliser la commande fuser -m /media/dvd. Une autre source de problèmes peut être NFS. Si le lecteur CD est utilisé via NFS sur un autre ordinateur, umount échoue souvent, même lorsque l’ordinateur distant a rendu la main sur le lecteur CD-ROM. Dans ce cas, il faut redémarrer le serveur NFS, voire, dans de rares cas, l’ordinateur lui-même.
/etc/fstab
Dans la plupart des distributions, en raison du mécanisme automatique décrit ci-dessus, il n’y a pas de ligne pour le lecteur CD/DVD dans /etc/fstab. Si vous montez souvent des CD/DVD dans l’arborescence, une ligne comme la suivante se révèle en général plus confortable : /dev/scd0 /media/dvd udf,iso9660 users,noauto,ro 0 0
Il suffit alors de lancer la commande mount /media/dvd ou mount /dev/scd0 pour monter le CD/DVD. Tous les utilisateurs peuvent lancer ces commandes.
Linux Livre Page 443 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
443
CD audio et DVD vidéo CD audio
Les CD audio sont gérés différemment des CD de données. Ils ne sont pas montés dans le système de fichiers, mais lus directement avec des programmes spéciaux (par exemple Amarok sous KDE ou Rythmbox sous Gnome). On peut aussi lire les pistes audio pour les transformer, par exemple, en fichiers OggVorbis.
DVD vidéo
Les DVD vidéo sont généralement au format UDF. Pour lire un DVD vidéo, vous avez besoin d’un programme comme mplayer ou xine.
Disquettes Même si votre ordinateur dispose encore d’un lecteur de disquettes, les disquettes ne jouent plus un grand rôle au quotidien sous Linux. Les disquettes que vous avez le plus de chance de trouver sont des installations de LILO ou de GRUB. Cependant, si vous avez besoin de lire une disquette, cette section regroupe quelques astuces. La gestion des disquettes est analogue à celle des CD et DVD. Vous montez la disquette avec mount et accédez à ses fichiers comme d’habitude. Le nom habituel du périphérique est /dev/ fd0. Pensez à lancer umount avant d’éjecter une disquette du lecteur, sans quoi vous risquez de perdre des données. Divers systèmes de fichiers peuvent se trouver sur une disquette. Le plus souvent, les disquettes DOS/Windows sont formatées en VFAT. root# mount -t vfat /dev/fd0 /media/floppy mtools
Vous pouvez aussi lire et modifier une disquette DOS/Windows sans la monter. Pour cela, utilisez les commandes mtools, comme mcopy ou mdir. Selon la distribution, il est possible que vous deviez installer le paquetage mtools.
Formatage d’une disquette
Pour formater une disquette, utilisez la commande fdformat. Il ne s’agit cependant que d’un formatage bas niveau. Pour créer un système de fichiers, vous devez utiliser mformat ou mkfs.vfat (DOS/Windows), ou encore mke2fs (ext2).
23.9 Supports de données externes (USB, Firewire, etc.) Les clés USB, les cartes mémoire d’appareils photo numériques, les disques durs Firewire et eSATA ainsi que d’autres supports de données externes ont une particularité commune : ils sont branchés et débranchés pendant le fonctionnement de l’ordinateur. Presque tous ces lecteurs sont gérés comme des lecteurs SCSI. Nous n’avons trouvé comme exception que les adaptateurs PCMCIA/Flash, qui sont reconnus comme des périphériques IDE. Fonctionnement automatique
Les gestionnaires de bureau KDE et Gnome de presque toutes les distributions réagissent au branchement d’un support de données externe en ouvrant (éventuellement après confirmation) une nouvelle fenêtre du gestionnaire de fichiers qui offre un accès confortable au support de données. Généralement, une icône apparaît également sur le bureau. Celle-ci symbolise le support de données et permet de le démonter à partir d’un menu contextuel.
Linux Livre Page 444 Mardi, 23. septembre 2008 1:05 13
444
LINUX
Vérifiez que vous avez bien démonté toutes les partitions d’un support de données avant de le déconnecter physiquement. Dans la plupart des distributions, cliquez sur l’icône du support et choisissez Déconnecter, Éjecter ou un élément similaire du menu. De cette manière, vous vous assurerez que toutes les opérations d’écriture sont terminées avant de couper physiquement la connexion entre le lecteur et l’ordinateur. Si vous omettez cette étape, vous risquez d’endommager votre système de fichiers ou de perdre des fichiers. Si vous n’avez pas d’icône sur votre bureau KDE, saisissez dans Konqueror l’adresse media:/. Le gestionnaire de fichiers affiche alors des icônes pour tous les supports de données. Configuration
Sous Gnome, vous pouvez contrôler les périphériques externes avec le programme gnomevolume-properties (voir Figure 23.2). Ce programme se trouve généralement dans le menu Système > Préférences > Périphériques et médias amovibles.
Figure 23.2 Gestion des supports de données externes sous Gnome.
Performances
Fonctionnement interne du branchement à chaud
Certaines distributions utilisent l’option sync par défaut lorsqu’elles montent des périphériques externes. Les opérations d’écriture ne sont alors pas mises en tampon et sont effectuées immédiatement. Les performances peuvent alors chuter énormément. Pour éviter cela, montez le support de données manuellement sans l’option sync. Depuis 2006, la gestion du branchement à chaud fait appel au noyau, au système udev, au démon hald et au système de communication D-Bus. Sous KDE, kioslave media:/ attend des événements D-Bus et réagit en fonction. Sous Gnome, gnome-volume-manager effectue cette tâche. Si vous n’utilisez ni KDE ni Gnome et si vous désirez monter automatiquement des périphériques externes, le paquetage ivman (http://ivman.sourceforge.net/) peut vous être utile. L’article consultable à l’adresse http://www.linux.com/article.pl?sid=06/07/26/2129232 fournit plus d’informations à son sujet. Il arrive sous KDE et sous Gnome que plusieurs utilisateurs soient connectés en même temps. Dans ce cas, le premier utilisateur connecté obtient les droits d’accès sur les périphériques nouvellement connectés. Ce cas particulier est résolu selon la distribution et peut
Linux Livre Page 445 Mardi, 23. septembre 2008 1:05 13
445
ADMINISTRATION DU SYSTÈME DE FICHIERS
entraîner des problèmes. Le plus simple est d’éviter de changer d’utilisateur lorsque vous travaillez avec des disques externes. Avant la gestion par udev/HAL/D-Bus, il existait d’autres alternatives que vous pouvez encore rencontrer sur des installations plus anciennes : • supermount. Ce pseudo-système de fichiers monte et démonte automatiquement les disquettes, CD et DVD. • magicdev. Red Hat employait ce programme dans certaines versions plus anciennes. Il est démarré par le gestionnaire de bureau, surveille les lecteurs de disquettes et de CD/DVD et monte au besoin le système de fichiers correspondant dans l’arborescence.
Fonctionnement manuel
• subfs/submount. SUSE employait dans les versions 9.1 à 10.0 le module de noyau non officiel subfs qui, en combinaison avec les programmes submountd et net-submountd, intégrait les supports de données externes dans l’arborescence. Ce système n’a jamais été très stable. Lorsque vous travaillez en mode texte ou dans un système de bureau sans gestion automatique des supports de données, vous devez lancer vous-même les commandes mount correspondantes. Pour cela, vérifiez d’abord le nom de votre périphérique (généralement /dev/ sdx où x est la première lettre non utilisée). La commande fdisk -l fournit un aperçu de tous les supports de données (y compris les disques durs, mais à l’exception des lecteurs CD et DVD). Dans l’exemple suivant, /dev/sda est le disque SATA interne avec diverses partitions. /dev/sdb à /dev/sde sont associés à un lecteur de cartes dans lequel seule une carte CF est insérée (/dev/sdc). /dev/sdf1 est la première et seule partition d’une clé USB. root# fdisk -l Disque /dev/sda: 320.0 Go, 320072933376 octets ... Disque /dev/sdc: 32 Mo, 32112640 octets ... Disque /dev/sdf: 256 Mo, 256901120 octets 16 heads, 32 sectors/track, 980 cylinders Units = cylindres of 512 * 512 = 262144 bytes Périphérique Amorce Début Fin Blocs Id /dev/sdf1 * 1 980 250864 e
Système W95 FAT16 (LBA)
Les clés USB et les cartes Flash peuvent également être formatées en tant que super-floppy. Cela signifie qu’elles ne contiennent pas de table de partitions. Dans ce cas, le lecteur complet est désigné sous le nom /dev/sda (et non, comme d’habitude, /dev/sda1).
Lorsque vous connaissez le nom du périphérique, la suite est simple : créez un nouveau répertoire et montez-y votre support de données : root# mkdir /media/memorystick root# mount /dev/sdf1 /media/memorystick
Linux Livre Page 446 Mardi, 23. septembre 2008 1:05 13
446
LINUX
Les supports de données externes peuvent utiliser différents types de systèmes de fichiers. En pratique, VFAT est le plus fréquent sur les disques externes et sur les clés USB. C’est également le cas des cartes mémoire de divers périphériques électroniques (PDA, appareils photo numériques, etc.) utilisés par le biais d’un adaptateur USB ou PCMCIA. Sous Linux, vous pouvez modifier le partitionnement du périphérique et formater chaque partition avec un système de fichiers au choix. Lorsque vous avez terminé ce que vous aviez à faire, lancez comme d’habitude la commande umount. Ne débranchez pas le câble USB ou Firewire avant que la commande umount soit terminée : vous risqueriez de perdre des données ! root# umount /media/memorystick /etc/fstab
Seul root a le droit d’exécuter la commande mount. Si des utilisateurs sans privilèges souhaitent monter un support de données dans l’arborescence et le démonter, root doitajouter la ligne correspondante dans fstab avec l’option users. Pour une clé USB avec un système de fichiers VFAT, vous pouvez par exemple ajouter : /dev/sdf1 /media/memorystick vfat users,gid=users,utf8,noatime,noauto 0 0
Tous les utilisateurs peuvent alors monter la clé USB avec mount /media/memorystick et y lire et écrire des fichiers. Cette méthode a cependant deux inconvénients : • Selon l’ordre dans lequel le périphérique est branché, le nom du périphérique peut être modifié. Si la clé USB est branchée en tant que deuxième ou troisième périphérique, elle peut s’appeler /dev/sdg et l’accès au répertoire /media/memorystick échoue. • Inversement, la ligne ci-dessus peut être utilisée pour un autre support de données, ce qui n’est pas toujours le comportement souhaité. La meilleure solution est d’indiquer le nom du périphérique par le biais de son UUID. Pour déterminer l’UUID d’un périphérique, utilisez la commande vol_id. Si la commande n’est pas accessible directement sur votre distribution, essayez de lancer /lib/udev/vold_id. root# vol_id /dev/sdf1 ... ID_FS_UUID=4550-9BD2
La ligne fstab correspondante est ici divisée en deux pour des raisons de place : /dev/disk/by-uuid/4550-9BD2 /media/memorystick vfat \ users,gid=users,utf8,noatime,noauto 0 0
Normalement, il est également possible de commencer la ligne de fstab par UUID=4550-9BD2. La commande mount fonctionne alors comme dans la variante précédente, mais la commande umount pose problème. Malgré l’UUID, mount enregistre le nom courant du périphérique. Les lignes de /etc/ fstab et de /etc/mtab ne correspondent donc pas du point de vue de umount, ce qui peut mener à des erreurs. pmount
Les commandes pmount et pumount permettent aux utilisateurs sans privilèges de monter et de démonter des supports externes. Cependant, ces commandes ne sont disponibles que dans peu de distributions (Ubuntu en est une exception notable).
Linux Livre Page 447 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
447
utilisateur$ pmount /dev/sdf1 /media/usbdisk utilisateur$ ... utilisateur$ pumount /media/usbdisk
Avec la configuration par défaut, pmount permet à tous les utilisateurs du groupe plugdev de monter des supports de données externes. Pour des raisons de sécurité, cela fonctionne uniquement lorsque le périphérique ne se trouve pas dans /dev/fstab. Une partition est considérée comme support externe lorsqu’elle se trouve sur un lecteur USB ou Firewire pour lequel le fichier /sys/block/nom_du_périphérique/removable contient la valeur 1. De plus, pmount permet d’accéder à tous les supports de données dont le nom de périphérique se trouve dans /etc/pmount.allow. Par défaut, pmount passe à mount les options atime, async et utf8 (lorsque cette option est prise en charge par le système de fichiers). Les options qui diffèrent de ce jeu par défaut doivent être indiquées explicitement dans une syntaxe différente de celle de mount (voir man pmount).
23.10 Systèmes de fichiers réseau et virtuels Systèmes de fichiers virtuels Linux connaît de nombreux systèmes de fichiers virtuels. Il s’agit d’informations internes au fonctionnement de Linux auxquelles on peut accéder par le biais d’un système de fichiers. Ces fichiers n’existent pas sur un disque dur, ils sont mis à disposition par le noyau. Linux et les programmes exécutés par Linux gèrent ce système de fichiers. Dans la plupart des distributions, ces systèmes de fichiers sont montés directement par le processus InitV sans prendre en compte fstab – les lignes correspondantes n’apparaissent donc pas. Les systèmes virtuels actifs peuvent être consultés dans le fichier /etc/mtab ou proc/mounts.
Systèmes de fichiers réseau Unix (NFS)
Prérequis
NFS (Network File System, système de fichiers réseau) est la méthode habituelle pour exporter un répertoire d’un ordinateur vers le réseau local. Cette section se limite à NFS version 3. NFS4 n’est pas encore vraiment répandu. Vous trouverez plus d’informations à son sujet au Chapitre 30. Pour utiliser NFS, vous devez remplir quelques conditions préalables : • L’ordinateur sur lequel vous voulez lire ou modifier des données doit être accessible par le réseau (testez cela avec ping). • Il doit également avoir un serveur NFS installé et configuré pour vous permettre d’accéder aux fichiers du répertoire souhaité. Vous trouverez plus d’informations à ce sujet au Chapitre 30. • Si votre ordinateur ou le serveur NFS font fonctionner un pare-feu, les communications NFS ne doivent pas être bloquées. NFS utilise généralement le protocole UDP.
Linux Livre Page 448 Mardi, 23. septembre 2008 1:05 13
448 mount
LINUX
Une fois ces conditions remplies, l’accès à un répertoire NFS est simple. La commande suivante monte le répertoire /data de l’ordinateur mars dans le répertoire /media/nfsdata de l’arborescence. Ce répertoire doit exister avant d’exécuter la commande. Vous trouverez les options de mount spécifiques au NFS dans man mount. root# mount -t nfs mars:/data /media/nfsdata
Vous pouvez aussi utiliser l’adresse IP de l’ordinateur à la place de son nom. Pour déconnecter le répertoire NFS, utilisez comme d’habitude umount. Si la connexion réseau est interrompue, lancez umount avec l’option -f pour accélérer l’opération. root# umount /media/nfsdata /etc/fstab
Pour monter automatiquement un système de fichiers NFS au démarrage de l’ordinateur, ajoutez une ligne selon ce schéma à /etc/fstab. L’option bg, spécifique à NFS, permet d’exécuter la commande mount en tâche de fond lorsque le répertoire n’est pas immédiatement disponible. jupiter:/data /externaldata nfs user,exec,bg 0 0
Pour la plupart des distributions, tous les répertoires de /etc/fstab sont montés par le processus InitV. SUSE est une exception, il faut que le service nfs soit explicitement activé : root# insserv nfs
NFS ne se préoccupe pas du jeu de caractères des noms de fichiers et les interprète comme des suites d’octets. NFS suppose que tous les utilisateurs emploient le même jeu de caractères. Si ce n’est pas le cas, les caractères non ASCII s’affichent mal. Il n’y a pas de solution à ce problème. Assurez-vous que tous les utilisateurs emploient le même jeu de caractères ou évitez les caractères internationaux dans les noms de fichiers.
Répertoires réseau Windows (cifs, smbfs)
smbfs et cifs
mount
Le protocole SMB est le quasi équivalent Windows de NFS. On accède généralement aux répertoires Windows grâce au gestionnaire de fichiers (voir Chapitres 4 et 5 pour Gnome et KDE). Vous pouvez aussi mettre en œuvre le système de fichiers cifs ou son prédécesseur obsolète smbfs pour monter des répertoires Windows comme des répertoires NFS. Vous pouvez alors accéder à tous les fichiers comme s’ils se trouvaient dans votre système de fichiers. Cette manière de procéder est confortable et fonctionne bien tant que le répertoire est partagé sur le réseau. Linux peut utiliser deux systèmes de fichiers pour l’accès aux répertoires réseau Windows : SMBFS et CIFS. CIFS est une extension du système de fichiers réseau de Microsoft et il est préférable de l’utiliser autant que possible. Les serveurs CIFS Samba envoient des informations compatibles avec Unix/Linux à propos des droits d’accès, ce qui n’est pas le cas de SMBFS. La commande mount permet de monter des répertoires réseau Windows dans votre système de fichiers local. Vous pouvez indiquer le système de fichiers (smbfs ou cifs) avec l’option -t. En interne, mount lance les commandes smbmount et mount.cifs, respectivement.
Linux Livre Page 449 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
449
Vous trouverez une référence des options de ces deux systèmes de fichiers dans man mount.cifs pour cifs et dans man smbmount pour smbfs. root# mount -t cifs //venus/partage /media/winshare root# mount -t cifs -o username=nom //venus/partage /media/winshare
La commande vous demande un mot de passe, que vous pouvez aussi saisir directement : root# mount -t cifs -o username=nom,password=pw \ //venus/partage /media/winshare /etc/fstab
Pour monter un système de fichiers Windows lors du démarrage de l’ordinateur, ajoutez une ligne de ce type dans /etc/fstab : //venus/partage /media/winshare cifs defaults 0 0
Cela suffit dans la plupart des distributions. SUSE présente le même type d’exception que pour NFS et il faut activer le script InitV smbfs : root# insserv smbfs Partages CIFS pour les utilisateurs sans privilèges
On peut préférer préparer Linux pour qu’un utilisateur sans privilèges root puisse monter ou démonter un système de fichiers distant. La procédure est peu pratique et dépend de la distribution pour certains détails. J’ai testé ce qui suit dans Ubuntu 8.04. L’administrateur crée un nouveau répertoire et l’associe à l’utilisateur par défaut d’Ubuntu : user$ sudo -s -H Password: xxxxxx root# mkdir /media/winshare root# chown 1000:1000 /media/winshare
chmod permet de positionner le bit SUID aux commandes mount.cifs et umount.cifs. Cela induit un risque d’insécurité, mais sinon la procédure ne fonctionne pas. Pesez les avantages et les inconvénients d’une telle solution avant de la mettre en œuvre. root# chmod +s /sbin/mount.cifs root# chmod +s /sbin/umount.cifs
Créez un fichier /etc/.winshare-pw contenant l’identifiant et le mot de passe du répertoire réseau si une authentification est nécessaire : username=nom password=xxx
Modifiez les droits d’accès au fichier pour que tout le monde ne puisse pas accéder à des mots de passe en clair : root# chmod go-rw /etc/.winshare-pw
Pour finir, ajoutez à /etc/fstab une ligne de ce type (ici séparée en deux pour des raisons de place) : //venus/partage /media/winshare cifs \ users,noauto,credentials=/etc/.winshare-pw,dir_mode=777,file_mode=777 0 0
Linux Livre Page 450 Mardi, 23. septembre 2008 1:05 13
450
LINUX
23.11 Partitions et fichiers d’échange Lorsque la mémoire vive ne suffit pas pour l’exécution de tous les programmes, Linux décharge une partie de cette mémoire dans une partition ou un fichier d’échange. Linux peut ainsi utiliser plus de mémoire que de RAM disponible. La partition d’échange est normalement créée pendant l’installation. La commande free indique combien de mémoire d’échange est à disposition. Dans l’exemple suivant, l’ordinateur dispose de 1 519 Mo de RAM et de 2 000 Mo de mémoire d’échange. La RAM est utilisée à 401 Mo par des programmes et des données, le reste est utilisé comme tampon et comme cache. La mémoire d’échange est pour l’instant inutilisée. root#
free -m total used free shared buffers cached Mem: 1519 1479 39 0 67 1010 -/+ buffers/cache: 401 1117 Swap: 2000 0 2000
Lorsqu’un ordinateur fonctionne pendant longtemps, il accède généralement à l’espace d’échange même lorsque beaucoup de mémoire vive est encore disponible. En effet, le noyau utilise un cache pour les accès en lecture sur les fichiers. Si un fichier est réutilisé par la suite, il peut être lu à partir du cache. Lorsque le cache est plus grand que la mémoire disponible, Linux décharge les blocs mémoire qu’il n’a pas utilisés depuis longtemps dans la partition d’échange. Ce n’est pas un signe que la mémoire vive est insuffisante. Linux essaie d’utiliser la mémoire disponible de la manière la plus efficace possible. /etc/fstab
Les lignes suivantes montrent deux partitions d’échange dans /etc/fstab. L’option pri indique que les deux partitions sont gérées de manière identique par Linux. Cela permet d’améliorer les performances lorsque les deux partitions se trouvent sur deux disques indépendants. Si une seule partition d’échange est disponible, utilisez plutôt l’option pri=0. /dev/sda9 swap swap pri=1 0 0 /dev/sdc7 swap swap pri=1 0 0
Combien de mémoire d’échange ?
On comptait auparavant qu’un espace d’échange devait être dimensionné pour contenir deux fois la mémoire vive. Avec l’augmentation de la quantité de RAM, cette règle n’est plus que rarement de mise. Généralement, pour un ordinateur de bureau, une partition d’échange nettement plus petite suffit (par exemple 512 Mo pour 2 Go de RAM). Les ordinateurs portables sont un cas particulier lorsque vous désirez utiliser les fonctions de Suspend to Disk (mise en suspens sur le disque). La mémoire vive complète est alors enregistrée dans la partition d’échange avant que l’ordinateur ne passe en veille. Cela suppose que la partition d’échange est plus grande que la mémoire vive (par exemple d’un facteur 1,5). Lorsque vous faites fonctionner un serveur, les données sont encore différentes. Oracle conseille par exemple pour son serveur de bases de données (10.2) d’adapter le facteur multiplicatif à la taille de la mémoire vive : • jusque 2 Go
facteur 2
• 2 à 8 Go
facteur 1
• plus de 8 Go
facteur 0,75
Linux Livre Page 451 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
451
Sur les systèmes 32 bits, la partition d’échange est limitée à 2 Go. Si vous souhaitez plus d’espace d’échange, vous devez créer plusieurs partitions d’échange. Création d’une partition d’échange
Si votre partition d’échange est trop petite ou si vous souhaitez en créer une autre, créez une nouvelle partition. Donnez-lui comme type de partition Linux swap (82 dans fdisk), formatez-la avec mkswap et activez-la avec swapon. Lorsque tout cela fonctionne, ajoutez une ligne à /etc/fstab.
Fichier d’échange
On peut aussi créer, à la place d’une partition d’échange, un fichier d’échange. Cependant, ce n’est qu’une solution d’urgence car l’accès au système de fichiers en est ralenti. Suivez pour cela les étapes suivantes : root# dd bs=1024 if=/dev/zero of=/swapfile count=1000 1000+0 enregistrements lus 1000+0 enregistrements écrits 1024000 bytes (1,0 MB) copied, 0,0990064 s, 10,3 MB/s root# swap /swapfile 1000 Initialisation de la version de l’espace de swap 1, taille = 1019 kB root# sync root# swapon -v /swapfile swapon sur /swapfile
Vous pouvez ensuite ajouter le nouveau fichier comme une partition d’échange dans fstab : /swapfile none swap sw 0 0
23.12 LVM LVM (Logical Volume Manager, gestionnaire par volumes logiques) est une couche logique entre le système de fichiers et les partitions du disque dur. Elle est gérée par le module du noyau md_mod. Cette section est une courte introduction aux bases et à la configuration manuelle de LVM. Vous trouverez plus d’informations aux adresses http://fr.wikipedia.org/ wiki/Gestion_par_volumes_logiques, http://www.redhat.com/magazine/009jul05/features/lvm2/, http://www.traduc.org/docs/HOWTO/vf/LVM-HOWTO.html et http://sourceware.org/lvm2/. Avantages et inconvénients
La description de LVM peut paraître abstraite, mais ses avantages sont réels : • Vous pouvez créer et redimensionner des partitions sans redémarrer l’ordinateur en fonctionnement normal : le problème d’une partition trop petite appartient au passé. • Vous pouvez joindre plusieurs disques en une seule énorme partition virtuelle. • Vous pouvez créer un instantané d’un système de fichiers très facilement. Un tel mécanisme est idéal pour les sauvegardes d’un système en cours de fonctionnement. • LVM est très rapide. La flexibilité induite ne l’est pas au détriment des performances. Cependant, LVM présente également quelques inconvénients : • LVM doit être mis en place dès la création de la partition.
Linux Livre Page 452 Mardi, 23. septembre 2008 1:05 13
452
LINUX
• Il s’occupe uniquement des partitions et pas du système de fichiers qui s’y trouve. Lorsque vous avez modifié la taille d’une partition, vous devez modifier la taille du système de fichiers. Généralement, cela ne fonctionne que lorsqu’il n’est pas utilisé (lorsqu’il est démonté). • Lorsqu’un système de fichiers est réparti sur plusieurs disques, la probabilité d’erreur augmente. Un problème sur un seul disque dur rend toutes les données inutilisables. • La gestion des partitions est plus souple, mais aussi plus compliquée, en particulier en ce qui concerne la récupération en cas d’incident. • Vous ne pouvez pas accéder à une partition contenue dans un système LVM sous Windows.
Versions
• Les versions courantes de GRUB ne parviennent pas à démarrer depuis une partition LVM. Vous avez donc besoin d’une partition /boot à l’extérieur de LVM. Il existe deux versions de LVM : LVM1 à partir du noyau 2.4 et LVM2 à partir du noyau 2.6. Cette section traite exclusivement de LVM2. Vous pouvez connaître votre version de LVM avec lvm version. Vous devez installer les outils LVM2 et charger le module dm_mod. root# modprobe dm_mod root# lvm version LVM version: 2.02.26 (2007-06-15) Library version: 1.02.20 (2007-06-15) Driver version: 4.12.0
LVM pour la partition système
Dans cette section, je pars du principe que vous ne mettez en place LVM que pour les partitions de données et que la partition système est une partition habituelle. Si vous désirez mettre en place LVM pour la partition système, vous devez remplir les conditions suivantes : • Votre distribution doit le permettre pendant l’installation. C’est le cas pour Debian, Fedora, Red Hat, SUSE et Ubuntu. • Vous devez créer une partition d’amorçage en dehors du système LVM ou utiliser le gestionnaire d’amorçage LILO. • Le fichier initrd doit contenir le module md_mod.
Glossaire Voici un glossaire rapide des divers termes associés à LVM. • Volume physique (PV, physical volume). Un PV est un disque utilisé par une partition LVM. Il peut s’agir d’un disque ou d’un ensemble de disques monté en RAID. • Groupe de volumes (VG, volume group). Un ou plusieurs volumes physiques peuvent être rassemblés dans un groupe. On peut alors répartir des partitions sur les disques durs. • Volume logique (LV, logical volume). Un LV est une partie du VG. Pour l’utilisateur, un LV fait office de partition. Le système de fichiers y est créé. Tant qu’il reste de l’espace sur le VG, on peut créer ou agrandir des LV à volonté.
Linux Livre Page 453 Mardi, 23. septembre 2008 1:05 13
453
ADMINISTRATION DU SYSTÈME DE FICHIERS
• Périphérique physique (PD, physical device). Il s’agit d’un disque dur. LVM peut utiliser tout le disque ou plusieurs partitions de ce disque sous la forme de PV. • Extension physique (PE, physical extent). On ne peut pas gérer chaque octet d’un VG ou d’un LV indépendamment. La plus petite unité de données est une extension physique et sa taille est généralement de 4 Mo.
Mettre en place un système LVM simple
Réglage des identifiants de partitions
Pour ce qui suit, je pars du principe que vous avez installé Linux sans LVM et que vous souhaitez utiliser des partitions supplémentaires en LVM. Cette section traite du cas où vous n’avez qu’un seul disque à utiliser en LVM. Les partitions de disque dur doivent être identifiées en tant que partitions LVM. Si vous utilisez fdisk, vous pouvez leur associer l’identifiant hexadécimal 8e avec la commande T. Dans parted, la commande correspondante est set numéro_partition lvm on. Dans cet exemple, le système LVM est créé sur /dev/sdc1, puis étendu à /dev/sdc2. root# fdisk -l /dev/sdc Disque /dev/sdc: 320.0 GB, 320072933376 octets Périphérique Amorce Début Fin Blocs /dev/sdc1 1 1217 9775521 /dev/sdc2 1218 2434 9775552+
Fichier de configuration
Initialisation de LVM
Id 8e 8e
Système Linux LVM Linux LVM
Le seul fichier de configuration que vous pouvez modifier vous-même s’appelle /etc/lvm/ lvm.conf. Il contient divers paramètres de base qui n’ont que rarement besoin d’être modifiés. Tous les autres paramètres de LVM (paramètres spécifiques aux volumes) sont gérés par les outils associés. Pour initialiser LVM, lancez modprobe et vgscan. Ces opérations sont prises en charge par les distributions compatibles avec LVM2 dès le démarrage de l’ordinateur lorsque le système LVM est mis en œuvre. root# modprobe dm_mod root# vgscan Reading all physical volumes (this may take a while...) No volume groups found
Création d’un volume physique
Avant que LVM gère la partition /dev/sdc1, il faut déclarer celle-ci comme volume physique. Attention, vous perdrez toutes les données qui se trouvent sur cette partition. root# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created
Création d’un groupe de volumes
Il faut maintenant grouper tous les volumes physiques dans un groupe de volumes. Dans cet exemple, il n’y a qu’un seul PV, mais cette étape reste nécessaire. La commande vgcreate doit également contenir le nom souhaité du VG. Dans cet exemple, le VG est nommé myvg1 : root# vgcreate myvg1 /dev/sdc1 Volume group "myvg1" successfully created
Linux Livre Page 454 Mardi, 23. septembre 2008 1:05 13
454 Création d’un volume logique
LINUX
monvg1 est un espace encore inutilisé. Pour l’utiliser, vous devez créer un volume logique, c’est-à-dire une partition virtuelle. Pour cela, utilisez la commande lvcreate qui a besoin de trois informations : la taille du volume logique, son nom et le nom du groupe de volumes. root# lvcreate -L 2G -n myvol1 myvg1 Logical volume "myvol1" created
Création d’un système de fichiers dans le volume logique
Pour créer un système de fichiers dans le volume logique, utilisez simplement mkfs.ext3 ou mkfs.xfs : root# mkfs.ext3 /dev/myvg1/myvol1
mount permet de vérifier que tout a fonctionné : root# mkdir /test root# mount -t ext3 /dev/myvg1/myvol1 /test Arrêt de LVM
LVM est interrompu lors de l’arrêt de l’ordinateur. Vous pouvez aussi effectuer cette opération manuellement avec vgchange : root# umount /test root# vgchange -a n 0 logical volume(s) in volume group "myvg1" now active
Pour réutiliser LVM, relancez vgchange avec l’option -a y : root# vgchange -a y 1 logical volume(s) in volume group "myvg1" now active
Redimensionner un système de fichiers Agrandir un système de fichiers
Pour agrandir un système de fichiers, il faut d’abord agrandir le volume logique correspondant : root# lvextend -L 3G /dev/myvg1/myvol1 Extending logical volume myvol1 to 3,00 GB Logical volume myvol1 successfully resized
Il faut ensuite agrandir le système de fichiers. Si votre noyau ne contient pas le correctif ext2online, vous devez démonter la partition, la vérifier avec fsck.ext3, la redimensionner avec resize2fs et la remonter : root# umount /test root# fsck.ext3 -f /dev/myvg1/myvol1 ... root# resize2fs /dev/myvg1/myvol1 Resizing the filesystem on /dev/myvg1/myvol1 to 786432 (4k) blocks. Le système de fichiers de /dev/myvg1/myvol1 a maintenant une taille de 786432 blocs. root# mount -t ext3 /dev/myvg1/myvol1 /test Réduire un système de fichiers
Pour réduire un système de fichiers, vous devez d’abord le réduire avec resize2fs ou l’outil équivalent du système de fichiers considéré : root# umount /test root# fsck.ext3 -f /dev/myvg1/myvol1 root# resize2fs /dev/myvg1/myvol1 2560M resize2fs 1.38 (30-Jun-2005) Resizing the filesystem on /dev/myvg1/myvol1 to 655360 (4k) blocks.
Linux Livre Page 455 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
455
Vous pouvez alors réduire le volume logique avec lvreduce. Attention, vous devez indiquer la taille correcte. Dans cet exemple, la taille des blocs est d’exactement 1 Ko, il n’y a donc rien à calculer. Ce n’est pas toujours le cas. root# lvreduce --size 2560M /dev/myvg1/myvol1 WARNING: Reducing active logical volume to 2,50 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce myvol1? [y/n]: y Reducing logical volume myvol1 to 2,50 GB Logical volume myvol1 successfully resized Agrandir le groupe de volumes
Si vous n’avez plus de place sur le groupe de volumes et que vous souhaitez ajouter une partition, reportez-vous aux étapes suivantes : root# pvcreate /dev/sdc2 Physical volume "/dev/sdc2" successfully created root# vgextend myvg1 /dev/sdc2 Volume group "myvg1" successfully extended root# vgdisplay myvg1 ... VG Size 18,64 GB Alloc PE / Size 640 / 2,50 GB Free PE / Size 4132 / 16,14 GB ...
23.13 Optimiser les paramètres du disque dur hdparm
État du disque Performances du disque dur
hdparm a été développé pour configurer les disques durs IDE. Depuis la version 2.6.15 du noyau, il fonctionne aussi pour les disques SATA. Il faut que le noyau prenne en charge l’option libata passthrough. Le plus simple est de tester cela avec hdparm -i périphérique : si cette commande renvoie des données sur le fonctionnement du disque, hdparm fonctionne. Notez cependant que de nombreuses options de hdparm sont redondantes pour les disques durs : par exemple les disques SATA ont toujours le mode DMA activé. La commande hdparm -I affiche des informations sur le disque dur. hdparm -tT affiche les performances de transfert de données entre le disque dur et l’ordinateur. Cette commande renvoie deux résultats : les performances pour les données dans le cache du disque dur et les performances pour les données qui doivent être lues sur le disque dur. J’ai obtenu les résultats suivants sur mon disque dur SATA. Cependant, les performances ne sont que théoriques. root# hdparm -tT /dev/sda Timing cached reads: 15172 MB in 2.00 seconds = 7592.33 MB/sec Timing buffered disk reads: 224 MB in 3.00 seconds = 74.54 MB/sec
Cache d’écriture
La plupart des disques durs utilisent une mémoire tampon pour les opérations d’écriture. Dès que les données s’y trouvent, le disque dur indique au système d’exploitation que les
Linux Livre Page 456 Mardi, 23. septembre 2008 1:05 13
456
Économie d’énergie
LINUX
données sont écrites, mais elles ne le sont physiquement qu’un peu plus tard. Ce cache accélère les opérations d’écriture, mais représente un risque d’insécurité des données. Lors d’une coupure de courant, des données peuvent ne pas être complètement enregistrées et même un système de fichiers journalisé n’y fera rien. Pour désactiver le cache – ce qui diminue les performances mais augmente la sécurité –, utilisez la commande hdparm -W0. hdparm -W1 réactive le cache. Les disques durs de portables modernes peuvent être éteints après une certaine période d’inactivité pour économiser l’énergie. À l’accès suivant, il faut compter quelques secondes avant que le disque dur ne soit prêt à l’utilisation. L’option -S permet de régler la valeur avant que le disque ne soit désactivé. La valeur de cette option va de 0 à 255 et son interprétation est détaillée dans man hdparm. Évitez les valeurs très faibles : cela économise certes de l’énergie, mais réduit énormément la durée de vie du disque dur, qui n’est prévue que pour 10 000 cycles de désactivation/réactivation. La commande suivante désactive le disque au bout de dix minutes sans activité : root# hdparm -S 120 /dev/hda
SMART
Prérequis
État du disque
SMART signifie Self-Monitoring, Analysis and Reporting Technology (technologie d’autosurveillance, d’analyse et de rapport) et est utilisable par presque tous les disques IDE, SATA et SCSI courants. SMART permet d’enregistrer divers paramètres du disque dur à intervalles réguliers. Ces paramètres donnent un avertissement sur d’éventuels défauts du disque et sur sa durée de vie. La surveillance de ces paramètres par le système d’exploitation est un système d’alerte précoce. Vous trouverez plus d’informations au sujet de SMART dans les pages http://fr.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology, http://smartmontools.sourceforge.net/ et http://www.linuxjournal.com/article/6983. Pour que SMART puisse être utilisé, quelques conditions doivent être remplies : • Le disque dur doit prendre en charge SMART. Vous pouvez par exemple savoir cela avec hdparm -I. • Il doit s’agir d’un disque dur interne. SMART ne peut pas être utilisé sur les disques USB et Firewire. • Les disques durs connectés par un contrôleur RAID matériel ne peuvent utiliser SMART que dans certains cas particuliers. • Le paquetage smartmontools doit être installé. • Le noyau a besoin, pour les disques SATA, de l’option libata passthrough. C’est généralement le cas pour les noyaux à partir de la version 2.6.15. Pour lire les données SMART et pour effectuer les tests SMART, on utilise la commande smartctl. Lancez smartctl -i pour voir si le disque prend en charge SMART. Si, pour un disque SATA, le message d’erreur Device does not support SMART s’affiche, vous devez indiquer le type de disque avec -d ata. Cette option est nécessaire uniquement pour les versions anciennes de smartctl.
Linux Livre Page 457 Mardi, 23. septembre 2008 1:05 13
ADMINISTRATION DU SYSTÈME DE FICHIERS
457
Lorsque smartctl -i affiche dans la dernière ligne SMART support is Disabled, activez SMART avec smartctl -s on. smartctl -H indique si un disque dur est dans un état correct et s’il est probable qu’il fonctionne encore dans les prochaines vingt-quatre heures. Si smartctl ne renvoie pas PASSED comme résultat, il est urgent de faire une sauvegarde complète du disque concerné. root# smartctl -H /dev/hda === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED
Exécution d’un test
Surveillance automatique
smartctl -A affiche une liste des attributs du disque dur. Pour interpréter les résultats, il faut prendre en compte deux valeurs. La colonne VALUE est la valeur actuelle et TRESH est le seuil au-dessous duquel il faut s’attendre à des problèmes. Les valeurs sont normalisées à 100. Par exemple, la valeur Power_On_Hour (indiquant le nombre d’heures pendant lesquelles le disque a fonctionné) est à 100 pour un nouveau disque dur et chute au fur et à mesure vers 0. La colonne RAW_VALUE indique la valeur brute de la donnée, en l’occurrence le nombre d’heures de fonctionnement. smartctl -l error affiche des informations sur les cinq dernières erreurs rencontrées. Les erreurs isolées qui ne se répètent pas ne sont généralement pas pertinentes. SMART permet d’établir encore plus précisément l’état d’un disque avec des tests poussés. Il existe deux tests : un test court (smartctl -t short) et un test long (smartctl -t long). Le test est effectué en tâche de fond et vous pouvez continuer à travailler normalement. Une fois le test terminé, vous pouvez en voir le résultat avec smartctl -l selftest. Il existe également des outils de surveillance automatique pour collecter des informations régulièrement sur le disque et pour prévenir l’utilisateur en cas de défaillance. Vous pouvez par exemple utiliser le démon smartd (voir man smartd).
Linux Livre Page 458 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 459 Mardi, 23. septembre 2008 1:05 13
24
Démarrage du système Ce chapitre traite du démarrage d’un système Linux, qui est assuré par trois composants : • GRUB sert à démarrer le noyau Linux. Pour cela, il faut l’installer sur une disquette ou sur le secteur d’amorçage d’un disque dur. Il existe des alternatives à GRUB, comme LILO, mais leur usage est de plus en plus restreint. • Lorsque le noyau fonctionne, le système est initialisé (détection du matériel, accès au disque dur, etc.). Si cela pose problème, vous pouvez passer des options d’amorçage. • Pour finir, le noyau démarre le programme init du processus InitV. init effectue diverses tâches d’initialisation, comme le montage des systèmes de fichiers et le démarrage des services réseau. Des connaissances de base sur ce processus s’avèrent utiles lorsqu’on configure des services.
24.1 GRUB Pour être précis, nous ne parlons pas ici simplement de GRUB, mais de GNU GRUB 0.9.n legacy. legacy indique que cette version n’est plus développée activement. Depuis 2005, les développeurs travaillent sur une nouvelle implémentation de GRUB, nommée GRUB 2. Mi2008, celle-ci n’était toujours pas utilisée en pratique. La plupart des distributions fournissent pour l’instant GRUB 0.9.n, auquel ce chapitre est consacré. GRUB signifie GRand Unified Bootloader (grand chargeur d’amorçage unifié). La documentation officielle est accessible avec info grub. Vous trouverez plus d’informations sur GRUB, y compris GRUB 2, à la page http://www.gnu.org/software/grub/.
Détails du démarrage du système Avant de traiter de l’installation et de la configuration de GRUB, voici un aperçu des opérations effectuées à l’amorçage. Lorsque vous allumez votre ordinateur, le BIOS est initialisé. Certains messages apparaissent à l’écran, comme par exemple la quantité de mémoire de votre ordinateur. Le BIOS charge le contenu du premier secteur du premier disque dur ou de la disquette en mémoire et exécute son code. Ce secteur spécial du disque dur s’appelle le MBR (Master Boot Record, enregistrement d’amorçage maître). Si seul Windows est installé sur votre ordinateur, le petit programme qui se trouve dans le MBR le lance. Pour Windows NT/2000/XP/Vista, le système d’exploitation n’est pas démarré directement ; le processus de démarrage passe par le chargeur d’amorçage. Vous pouvez, dans ce menu, choisir entre plusieurs versions de Windows. Chargeur d’amorçage de Linux
Si Linux est également installé sur votre ordinateur, le MBR doit contenir le programme qui le démarre. Il existe plusieurs chargeurs d’amorçage pour Linux, dont le plus populaire est GRUB.
Linux Livre Page 460 Mardi, 23. septembre 2008 1:05 13
460
LINUX
Le MBR ne peut contenir que 512 octets de données. C’est pourquoi le chargeur d’amorçage ne se trouve pas complètement dans le MBR. Pour contourner cette limite de place, celui-ci ne contient que le code qui permet de charger le reste du chargeur d’amorçage depuis le disque dur. Le code de GRUB est divisé en deux ou trois parties. stage1 se trouve dans le MBR et n’a comme tâche que de charger les premiers secteurs de stage1_5 ou stage2. stage1_5 contient le code supplémentaire pour accéder aux fichiers dans divers systèmes de fichiers et stage2 le gestionnaire d’amorçage réel. Dès que le gestionnaire d’amorçage est lancé, un menu apparaît. Celui-ci permet de choisir entre tous les systèmes d’exploitation définis dans la configuration de GRUB. Vous pouvez naviguer dans ce menu à l’aide des touches de direction et démarrer le système souhaité avec Entrée. Le gestionnaire d’amorçage est souvent configuré pour démarrer un système donné au bout d’un certain temps. Il n’existe qu’un seul MBR, mais il peut y avoir plusieurs systèmes d’exploitation sur votre disque dur. Cela risque évidemment de mener à des conflits ! Lorsque vous réinstallez Windows, le MBR est écrasé et vous ne pouvez plus démarrer Linux directement. Si votre ordinateur dispose d’un lecteur CD, vous pouvez créer dans ce cas une disquette d’amorçage GRUB. Si vous n’avez pas de lecteur de disquette, vous devez lancer pour réparer GRUB un système live (par exemple Knoppix) ou un système d’urgence (fourni sur le CD ou DVD d’installation de nombreuses distributions). Inversement, GRUB écrase également, lorsqu’il est installé, le code présent sur le MBR. Cela n’est normalement pas un problème, car GRUB peut démarrer Windows. Malheureusement, l’installation de GRUB peut échouer. Si cela vous arrive, vous ne pouvez plus démarrer aucun système. Démarrage de Linux
Lorsque vous décidez de lancer Windows, le chargeur d’amorçage doit charger et démarrer le fichier du noyau sur le disque dur. Ce fichier s’appelle généralement /boot/vmlinuz (z indique que le noyau est compressé). Le chargeur d’amorçage doit donc pouvoir charger un fichier depuis le système de fichiers Linux.
Paramètres du noyau
En général, on passe peu de paramètres au noyau, mais il en faut au moins un : le nom du périphérique contenant la partition système (par exemple root=/dev/sdb13). Ainsi, le noyau connaît la partition système. Dès que le noyau est lancé, il passe le contrôle au programme /sbin/init. Ce programme sert à initialiser le système Linux ; il démarre par exemple tous les services réseau.
Accès aux modules du noyau
Il faut encore prendre en compte une particularité : le noyau Linux est modulaire. Cela signifie qu’il ne contient que des fonctions relativement élémentaires. Les fonctionnalités supplémentaires, par exemple pour accéder à divers composants matériels ou lire et écrire différents systèmes de fichiers, se trouvent dans des modules qui sont chargés depuis le système de fichiers et qui étendent le noyau. Pour que le processus de démarrage fonctionne, le noyau doit pouvoir accéder à la partition système. Si celle-ci est formatée dans un système de fichiers que le noyau ne prend pas en charge ou si elle se trouve sur un disque SCSI pour lequel le noyau n’a pas de pilote matériel, survient le classique problème du paradoxe de l’œuf et de la poule : le noyau ne peut pas
Linux Livre Page 461 Mardi, 23. septembre 2008 1:05 13
DÉMARRAGE DU SYSTÈME
Fichier initrd
Installation et configuration de GRUB
LILO
461
accéder au système de fichiers et ne peut donc pas charger le module nécessaire pour lire des fichiers sur le système de fichiers. La solution à ce problème est de charger, en plus du noyau, un fichier initrd. Il s’agit d’un fichier spécial qui contient tous les modules du noyau nécessaires au démarrage du système. Ce fichier est géré par le noyau comme un disque en mémoire vive − le noyau peut alors lancer les modules nécessaires une fois le disque virtuel chargé. Le fichier initrd s’appelle souvent /boot/initrd ou /boot/initrd.gz. La plupart des distributions fournissent des outils pour créer un fichier initrd qui correspond au matériel et au système de fichiers de la partition système (commande mkinitrd). Lorsque nous parlons d’installation de logiciels dans cet ouvrage, cela implique souvent l’installation d’un paquetage depuis un CD ou Internet. Dans ce chapitre, une autre signification s’applique. "Installer GRUB" décrit le processus d’écriture du code de démarrage de GRUB sur le secteur d’amorçage d’un disque dur ou d’une disquette. Nous supposerons que le paquetage logiciel GRUB est installé. La configuration de GRUB consiste à modifier /boot/grub/menu.lst de manière que tous les systèmes puissent être démarrés. GRUB accède par défaut à ce fichier. Dans GRUB 2, le fichier de configuration s’appelle grub.conf. Fedora et Red Hat utilisent déjà ce nom de fichier. Dans ce chapitre, nous ne parlerons pas de LILO, qui n’est plus utilisé que dans de rares cas (distribution Slackware et certains serveurs dédiés, par exemple). Dans le cas où LILO serait installé par défaut, vous pouvez généralement installer GRUB pour le remplacer. Vous trouverez des informations sur LILO aux adresses http://lilo.go.dyndns.org/, http:// doc.ubuntu-fr.org/lilo et http://fr.wikipedia.org/wiki/Linux_loader.
24.2 GRUB – Utilisation Lorsque GRUB est bien installé, un menu permet de choisir le système d’exploitation souhaité lors du démarrage de l’ordinateur (voir Figure 24.1). Dans certaines distributions, ce menu s’affiche en mode graphique. Pour utiliser les fonctions supplémentaires de GRUB, il faut quitter ce mode avec Échap.
Figure 24.1 Menu GRUB.
Linux Livre Page 462 Mardi, 23. septembre 2008 1:05 13
462
LINUX
Vous pouvez alors modifier une ligne du menu de GRUB avec E (edit). C (command line) permet de quitter ce menu. Vous vous trouvez alors dans un interpréteur de commandes. help fournit un aperçu des commandes valides, dont certaines seront décrites dans cette section. help commande permet d’en savoir plus sur une commande donnée et Échap, de revenir au menu d’amorçage. GRUB peut être sécurisé avec un mot de passe. Dans ce cas, vous ne pouvez accéder aux fonctions interactives de GRUB que lorsque vous avez saisi P et le mot de passe. GRUB fonctionne normalement en clavier QWERTY US. Passer des options au noyau Linux
La fonction de modification de GRUB sert avant tout à passer des options du noyau au démarrage de Linux (par exemple, pour régler des problèmes matériels). Pour cela, choisissez la ligne de menu souhaitée et passez en mode d’édition avec E. Quelques lignes s’affichent, semblables à celles-ci : root (hd1,12) kernel /boot/vmlinuz root=/dev/sdb13 initrd /boot/initrd
Exécuter des commandes interactives
Choisissez avec les touches de direction la ligne qui commence par kernel, tapez E pour la modifier, puis ajoutez les options du noyau à la fin de la ligne. Entrée permet de valider les modifications. Échap retourne au menu, d’où vous pouvez démarrer Linux. La modification des options d’amorçage n’est utilisée qu’une seule fois ; ces options ne sont pas enregistrées. Depuis le menu GRUB, vous pouvez passer dans un mode de commandes interactives avec C. Vous pouvez y lancer diverses commandes GRUB. Cela permet de démarrer un système Linux lorsque le menu GRUB ne dispose pas de ligne explicite pour ce système. Vous devez pour cela savoir sur quelle partition se trouve Linux et quelles sont les commandes GRUB correspondantes. Les commandes suivantes démarrent par exemple la distribution qui se trouve sur la partition /dev/sdb13 : grub> grub> grub> grub>
Modifier le menu de manière persistante
root (hd1,12) kernel /boot/vmlinuz root=/dev/sdb13 initrd /boot/initrd boot
Lorsque vous saisissez des noms de fichiers, GRUB sait compléter avec Tab les noms de fichiers de root ou d’une partition donnée (voir Figure 24.2). cat permet d’afficher un fichier texte. Le mode de commandes interactives fournit de nombreuses autres commandes, que nous ne détaillerons pas ici pour des raisons de place. GRUB lit le menu d’amorçage dans le fichier /boot/grub/menu.lst. Celui-ci contient des commandes telles que title, root, kernel, chainloader, etc. Pour modifier le menu de manière persistante, vous devez lancer Linux, chercher le fichier de menu de GRUB et le modifier. GRUB prend en compte vos modifications dès le démarrage suivant. La section suivante traite des modifications de ce fichier.
Linux Livre Page 463 Mardi, 23. septembre 2008 1:05 13
DÉMARRAGE DU SYSTÈME
463
Figure 24.2 Utiliser GRUB de manière interactive.
24.3 GRUB – Configuration Cette section décrit les éléments importants du fichier de menu de GRUB, souvent situé dans /boot/grub/menu.lst. À partir de la version 2, ce fichier de configuration s’appelle grub.conf. Red Hat et Fedora l’utilisent déjà. Les liens symboliques /boot/grub/menu.lst et /etc/grub.conf pointent vers ce fichier, afin de ne pas faire d’erreur lorsque vous chargez et modifiez menu.lst dans un éditeur. Notez que toutes les commandes présentées ici peuvent également être lancées de manière interactive dans l’interpréteur de commandes de GRUB. Les modifications de menu.lst ne sont prises en compte que lorsque GRUB se trouve déjà sur le secteur d’amorçage de votre disque dur ou lorsqu’un autre support de données est installé. L’installation de GRUB sera détaillée à la section suivante. Le caractère # introduit un commentaire. Il existe également des outils spécifiques aux distributions pour modifier GRUB, par exemple dans SUSE le module YaST Système, Configuration du chargeur d’amorçage. La plupart des distributions actualisent automatiquement le fichier de menu de GRUB lorsque vous mettez à jour le noyau. Vous êtes ainsi assuré que le nouveau noyau est amorcé au démarrage suivant. Il arrive cependant que cette reconfiguration automatique écrase vos propres modifications. Sous les systèmes Debian et Ubuntu, le script update-grub reconfigure GRUB. Tous les noms de fichiers et de partitions de cette section ont valeur d’exemple. Vous devez remplacer le nom du disque par votre propre partition système ou partition d’amorçage. Si Linux fonctionne, la commande df permet de connaître le nom de ces partitions. Il arrive également que le fichier du noyau ou le fichier initrd aient d’autres noms que ceux des exemples de cet ouvrage.
Linux Livre Page 464 Mardi, 23. septembre 2008 1:05 13
464
LINUX
Descriptions des disques durs et partitions GRUB a sa propre nomenclature pour désigner les disques durs et les partitions. La règle de base est que la numérotation commence toujours par 0. Noms de partitions de GRUB (hd0) (hd0,0) (hd2,7) (fd0)
premier disque dur (correspond à /dev/hda ou /dev/sda) première partition du premier disque dur (correspond à /dev/hda1 ou /dev/sda1) huitième partition du troisième disque dur lecteur de disquette
Selon la manière dont le disque est partitionné, le schéma des noms GRUB peut, comme celui du nommage des partitions, contenir des trous. Un disque dur doté d’une partition primaire, d’une partition étendue et de deux partitions logiques aura pour noms de périphériques /dev/sda1, /dev/sda2, /dev/sda5 et /dev/sda6. Les noms GRUB correspondants sont (hd0,0), (hd0,1), (hd0,4) et (hd0,5).
Les disques SATA et SCSI sont décrits de la même façon que les disques IDE. Lorsque plusieurs systèmes de disques (par exemple, IDE et SCSI) sont utilisés sur l’ordinateur, l’ordre numérique des disques durs dépend du BIOS. Les lecteurs CD et DVD ne sont pas pris en compte par la numérotation. devices.map
Le fichier /boot/grub/devices.map sert à faire correspondre les noms des périphériques et les noms GRUB. Il est créé lorsque GRUB est lancé pour la première fois. Cependant, il n’est pas automatiquement actualisé lors de l’ajout d’un disque. Vous pouvez, en revanche, le supprimer et exécuter à nouveau grub. Le fichier est alors recréé, ce qui peut prendre jusqu’à une minute. Dans les cas tenaces, vous pouvez aussi modifier vous-même le fichier. Veillez cependant à ce que vos modifications s’accordent avec celles que GRUB récupère du BIOS lors du démarrage de l’ordinateur. Ce fichier ressemble à ceci : (hd0) /dev/sda (hd1) /dev/sdb (fd0) /dev/fd0
Paramètres globaux de menu.lst Le fichier de menu de GRUB se compose d’une section globale, qui contient divers paramètres de base, et de plusieurs éléments de menu, qui commencent tous par title. Voici des exemples de paramètres globaux de menu.lst : default 2 timeout 30 color yellow/blue red/white
# # # # #
le troisième élément du menu est le choix par défaut attendre 30 secondes avant de démarrer le choix par défaut couleurs du menu
Les paragraphes suivants définissent les mots clés utilisables dans la section globale de menu.lst.
Linux Livre Page 465 Mardi, 23. septembre 2008 1:05 13
DÉMARRAGE DU SYSTÈME
465
• default. Cette option indique le numéro de l’élément du menu qui fait office de choix par défaut. La numérotation commence à 0 ! À la place d’un numéro, vous pouvez aussi trouver default saved. Dans ce cas, l’élément par défaut est celui sélectionné lors du dernier amorçage. Pour que cela fonctionne, il faut cependant que l’élément contienne le mot clé savedefault, dont nous parlerons à la section suivante. S’il n’y a pas d’option default, le premier élément du menu est le choix par défaut. • fallback. Cette option donne le numéro du menu utilisé lorsque le choix par défaut ne fonctionne pas. Lorsque fallback n’est pas défini, si l’élément par défaut ne fonctionne pas, GRUB passe en mode interactif. • timeout. Cette option indique le nombre de secondes pendant lesquelles GRUB attend un choix dans le menu. Une fois cette durée écoulée, le système par défaut est démarré. • hiddenmenu. Cette option cache le menu. Une fois le temps défini par timeout écoulé, le système par défaut est démarré. L’utilisateur peut, pendant ce temps, appuyer sur Échap pour afficher le menu. • password --md5 mot_de_passe. Cette option protège GRUB avec un mot de passe. Les commandes du menu ne peuvent pas être utilisées sans mot de passe. Les fonctions interactives de GRUB se limitent à la saisie d’un mot de passe. • color avant-plan/arrière-plan avant-plan du menu/arrière-plan du menu. Cette option définit les couleurs du menu. La première est la couleur du texte. La deuxième est la couleur du fond de l’écran. Les deux couleurs suivantes définissent celle du texte et du fond pour l’élément en surbrillance du menu. S’il n’y a pas d’option color, le menu s’affiche en noir et blanc. • splashimage. Cette option n’est pas disponible dans toutes les distributions, car il ne s’agit pas d’une option officielle de GRUB. Ce mot clé permet d’ajouter une image de fond au menu. Celle-ci doit faire 640x480 pixels, être au format XPM (8 bits par pixel) et compressée avec gzip. La ligne suivante illustre l’utilisation de splashimage : splashimage=(hd1,1)/boot/grub/splash.xpm.gz
Vous trouverez également plus de détails à l’adresse http://ruslug.rutgers.edu/~mcgrof/grub-images/. • gfxmenu. Il s’agit d’une autre extension non officielle de GRUB, utilisée entre autres par les distributions SUSE et Novell. Le fichier d’image doit être créé avec mkbootmsg. Ces commandes, ainsi que le fichier de documentation gfxboot.html se trouvent dans le paquetage gfxboot. Protection par mot de passe
La grande flexibilité de GRUB pose évidemment des problèmes de sécurité. Un utilisateur de GRUB peut lire tous les fichiers du disque qui se trouvent sur une partition ext2, ext3, reiserfs ou vfat avec cat. Il est donc sensé de protéger GRUB par un mot de passe. Pour cela, lancez la commande grub, puis md5crypt. Vous pouvez alors saisir un mot de passe. GRUB renvoie une clé chiffrée : root# grub grub> md5crypt Password: ****** Encrypted: $1$FWk/60$QfckeBVBoaWNBm274USHO0
Linux Livre Page 466 Mardi, 23. septembre 2008 1:05 13
466
LINUX
Ajoutez simplement cette clé au champ password du fichier de menu de GRUB : password --md5 $1$FWk/60$QfckeBVBoaWNBm274USHO0
Tous les utilisateurs peuvent alors choisir n’importe quel élément du menu, mais ils ne peuvent pas utiliser les fonctions interactives de GRUB tant qu’ils n’ont pas saisi le mot de passe. Pour ce faire, l’utilisateur doit taper P, puis le mot de passe. Pour protéger un élément donné du menu, ajoutez le mot clé lock après la ligne title de l’élément en question.
Éléments du menu dans menu.lst Après la configuration globale, menu.lst contient différents éléments de menu pour différents systèmes d’exploitation. Chaque élément commence par title. Le titre indiqué après title est le contenu affiché dans le menu. Mes tests montrent que seuls les caractères du jeu US ASCII sont autorisés, à l’exception des caractères accentués. Je n’ai cependant trouvé aucune documentation confirmant ce fait. Les lignes suivantes (jusqu’à la section title suivante ou la fin du fichier) sont les commandes GRUB lancées à la suite les unes des autres. Lorsque vous testez des commandes interactives, vous devez ajouter une commande boot. Celle-ci n’est pas nécessaire dans le fichier du menu. Démarrer Linux
Pour démarrer Linux, vous devez indiquer la partition root sur laquelle se trouvent le noyau et le fichier initrd (si nécessaire). Elle est considérée comme partition active pour GRUB. Les options kernel et initrd indiquent l’emplacement exact des fichiers, ainsi que d’éventuelles options d’amorçage du noyau. Pour les options du noyau, et en particulier pour la saisie du système de fichiers root, la nomenclature Linux est utilisée. Il faut donc taper root=/dev/sdb13 pour indiquer le système de fichiers à utiliser. Vous pouvez aussi utiliser les notations root=LABEL=libellé ou root=UUID=n et dans ce cas, le libellé ou le numéro d’identification du disque (voir Chapitre 23). Attention, les noms de fichiers vmlinuz et initrd peuvent différer sur votre système. title Linux root (hd1,12) kernel /boot/vmlinuz root=/dev/sdb13 initrd /boot/initrd
Vous pouvez aussi omettre la commande root. Vous devez cependant alors indiquer, pour chaque fichier, la partition à considérer. title Linux kernel (hd1,12)/boot/vmlinuz root=/dev/sdb13 initrd (hd1,12)/boot/initrd
Si /boot ne se trouve pas sur la partition système, mais sur une partition d’amorçage séparée, vous devez modifier la commande root en conséquence. Comme la partition boot devient alors le point d’entrée de tous les fichiers, /boot ne doit pas être ajouté aux commandes indiquant les fichiers du noyau et du disque virtuel. Les lignes suivantes supposent que la partition /dev/sda2 est la partition /boot : title Linux root (hd0,1)
Linux Livre Page 467 Mardi, 23. septembre 2008 1:05 13
467
DÉMARRAGE DU SYSTÈME
kernel /vmlinuz root=/dev/sdb13 initrd /initrd Passer des options au noyau
Selon le matériel et la distribution, il peut être nécessaire de passer des options d’amorçage au noyau Linux. Ces options gèrent, entre autres, l’affichage des messages du processus InitV. Elles doivent simplement être ajoutées à la fin de la ligne kernel. Les lignes suivantes sont un premier exemple : title Linux root (hd1,12) kernel /boot/vmlinuz root=/dev/sdb13 vga=normal initrd /boot/initrd
Pour connaître les options nécessaires à votre distribution ou votre matériel, le plus simple est de consulter le fichier GRUB créé pendant l’installation. Voici quelques exemples : • • • • Démarrer Windows
Debian 4 Fedora 9, RHEL 5 Ubuntu 8.04 SUSE 11
root=/dev/xxx ro root=LABEL=xxx ro rhgb quiet root=UUID=xxx ro quiet splash root=/dev/xxx vga=xxx resume=/dev/xxx splash=silent showopts vga=317
Pour démarrer Windows, vous devez indiquer la partition active avec rootnoverify, plutôt qu’avec root. La commande chainloader +1 assure que le premier secteur de cette partition est lu et exécuté. Sous Windows 9x/ME, cela revient à démarrer directement Windows. Sous Windows NT/2000/XP/Vista, cela lance le gestionnaire d’amorçage de Windows qui s’occupe lui-même de démarrer Windows − GRUB ne sait pas démarrer lui-même Windows NT/2000/XP/Vista. title Windows rootnoverify (hd0,0) chainloader +1
Windows n’arrive à démarrer que lorsqu’il se trouve sur le premier disque dur. Si ce n’est pas le cas, il faut échanger virtuellement les disques avec les lignes suivantes : title Windows rootnoverify (hd1,0) map (hd0) (hd1) map (hd1) (hd0) chainloader +1 Enregistrer le dernier choix
Lorsque menu.lst contient de nombreux éléments, le fait que GRUB enregistre le dernier élément choisi peut s’avérer pratique. Pour cela, ajoutez l’option default saved à la section globale de menu.lst, puis le mot clé savedefault dans tous les éléments du menu : title Linux root (hd1,12) kernel /boot/vmlinuz root=/dev/sdb13 initrd /boot/initrd savedefault
Linux Livre Page 468 Mardi, 23. septembre 2008 1:05 13
468
LINUX
N’utilisez savedefault en aucun cas sur un ordinateur pour lequel le BIOS lie deux ou plusieurs disques en RAID (RAID logiciel au niveau du BIOS). Vous risquez de perdre des données et de mettre en danger la synchronisation des disques du RAID.
Tester la configuration de GRUB Pour tester rapidement et sans redémarrer la syntaxe d’un élément du menu de GRUB, lancez d’abord grub et passez-lui la commande suivante : root# grub grub> configfile (hd1,12)/boot/grub/menu.lst
(hd1,12) doit être remplacé par le nom GRUB du disque dur sur lequel se trouve le fichier de menu. Lorsque tout fonctionne, GRUB affiche le menu. Cependant, vous ne pouvez pas choisir de système d’exploitation, puisque Linux est déjà démarré.
24.4 GRUB – Installation L’installation de GRUB s’effectue normalement pendant l’installation de Linux. Il n’est donc pas nécessaire de le réinstaller. Pour le configurer, il suffit de modifier /boot/grub/menu.lst (voir section 24.3). Cette section couvre les cas particuliers suivants : • la réinstallation de GRUB après son écrasement sur le MBR ; • l’installation de GRUB sur une disquette ; • l’installation de GRUB sur un support USB.
Réinstallation de GRUB Lorsque l’installation de GRUB échoue ou lorsqu’elle est écrasée (par exemple, par l’installation de Windows), vous ne pouvez plus accéder directement au système Linux. Knoppix est un outil pratique pour réparer une installation de Linux, et en particulier le chargeur d’amorçage. Vous le trouverez à l’adresse http://knoppix-fr.org/. Vous pouvez aussi télécharger la version francisée, Kaella, à l’adresse http://kaella.linux-azur.org/. Knoppix se grave sur un CD ou un DVD. Il suffit alors d’amorcer l’ordinateur pour démarrer Knoppix. Celui-ci devient cependant de moins en moins utile à mesure que les distributions fournissent un CD d’installation "live". Les manipulations ci-après peuvent peut-être fonctionner avec le CD d’installation de votre distribution. Une fois Knoppix démarré, lancez un shell en root. Dans l’idéal, vous savez sur quelle partition se trouve votre distribution Linux et en particulier, le répertoire /boot. Si ce n’est pas le cas, cliquez sur les différentes icônes de disque dur du bureau Knoppix. Vous reconnaîtrez la partition souhaitée à son répertoire /boot qui contient les fichiers du noyau Linux (vmlinuz par exemple), le sous-répertoire /boot/grub et le fichier de menu GRUB /boot/grub/menu.lst. Si vous avez une partition d’amorçage séparée, celle-ci ne
Linux Livre Page 469 Mardi, 23. septembre 2008 1:05 13
DÉMARRAGE DU SYSTÈME
469
contient pas de répertoire boot : vmlinuz et le sous-répertoire grub se trouvent directement à la racine de cette partition. Lorsque vous avez trouvé cette partition − nous supposons dans la suite de cette section qu’il s’agit de /dev/sda3 −, cliquez du bouton droit sur l’icône de la partition et activez les droits en écriture. Il faut ensuite installer GRUB sur le secteur d’amorçage du disque dur, afin qu’il puisse lire tous les fichiers nécessaires à l’amorçage sur /dev/sda3. La notation GRUB de cette partition est (hd0,2) et celle du premier disque, dont le secteur d’amorçage doit être modifié, est (hd0). root# grub> grub> grub>
grub root (hd0,2) setup (hd0) quit
Installation sur une disquette Si votre ordinateur dispose encore d’un lecteur de disquette, vous pouvez installer GRUB sur une disquette vierge. Linux ne démarre que lorsque le secteur d’amorçage de la disquette est lu − cela implique généralement une modification des paramètres du BIOS. Variantes
Installation minimale
Il existe deux variantes d’installation de GRUB sur une disquette : • Installation minimale. Vous n’installez que le fichier stage1 dans le secteur d’amorçage de la disquette de manière que tous les autres fichiers (stage2, le fichier de menu de GRUB, etc.) soient chargés depuis le disque dur. L’amorçage est donc plus rapide, car un seul secteur est lu sur la disquette. Il est cependant nécessaire que tous les autres fichiers se trouvent effectivement sur le disque. Cette disquette ne peut donc servir que de disquette d’urgence pour démarrer Linux lorsque le MBR est défectueux, par exemple après une réinstallation de Windows. • Installation complète. Vous copiez ici tous les fichiers GRUB sur la disquette (stage1, stage-1_5 et stage2, ainsi que les fichiers du menu). L’avantage est que l’ordinateur démarre même lorsque les fichiers GRUB ne sont pas lisibles sur l’ordinateur. L’inconvénient est que l’amorçage est plus long, car tous ces fichiers doivent être lus depuis la disquette. L’exemple suivant suppose que tous les fichiers GRUB se trouvent sur la partition /dev/ sdb13 de l’ordinateur. Pour installer GRUB sur le secteur d’amorçage de la disquette, lancez les commandes suivantes : root# grub> grub> grub>
Installation complète
grub root (hd1,12) setup (fd0) quit
Pour installer complètement GRUB sur une disquette, il faut modifier, en plus de son secteur d’amorçage, le contenu de la disquette. Les commandes suivantes créent un système de fichiers ext2 sur la disquette, le montent sur /disquette, créent le répertoire /disquette/
Linux Livre Page 470 Mardi, 23. septembre 2008 1:05 13
470
LINUX
boot et y copient tous les fichiers stage. Selon la distribution, il se peut que ces fichiers ne soient pas dans /usr/lib/grub, mais dans un autre répertoire. root# root# root# root# root#
mke2fs /dev/fd0 mkdir /floppy mount -t ext2 /dev/fd0 /floppy mkdir /floppy/boot cp -a /usr/lib/grub/ /floppy/boot/
Vous devez aussi copier le fichier de menu de GRUB : root# cp /boot/grub/menu.lst /floppy/boot/
Ensuite, vous devez installer GRUB dans le chargeur d’amorçage de la disquette : root# grub grub> root (fd0) grub> setup (fd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (fd0)"... failed (this is not fatal) Running "embed /boot/grub/e2fs_stage1_5 (fd0)"... failed (this is not fatal) Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded grub> quit
Pour finir, démontez le système de fichiers de la disquette. Pour modifier le menu ultérieurement, il suffit de modifier le fichier menu.lst sans avoir à réinstaller GRUB.
Installation sur un support USB Le BIOS de la plupart des ordinateurs modernes permet d’amorcer l’ordinateur depuis un support USB (disque dur externe, clé USB). En théorie, il n’est donc pas difficile d’installer GRUB sur le secteur d’amorçage d’une clé USB et de lancer avec cette clé Windows, Linux, etc. Mais dans la pratique, on se heurte souvent à des problèmes, dont les deux sources principales sont les suivantes : • La carte mère doit reconnaître le support USB dès l’amorçage et l’accepter comme média d’amorçage. Les clés USB peuvent être formatées avec ou sans table de partition ; le format accepté dépend du BIOS. De plus, vous devez activer la prise en charge de l’USB dans le BIOS (le plus souvent, grâce à une option spéciale). À l’inverse de Linux, GRUB dépend du BIOS pour accéder à un support USB ! • Lorsque le BIOS accepte un support USB en tant que périphérique d’amorçage, l’ordre des lecteurs est modifié dans GRUB. (hd0) devient alors le support USB et les disques déjà présents sont nommés (hd1), (hd2), etc.
Linux Livre Page 471 Mardi, 23. septembre 2008 1:05 13
DÉMARRAGE DU SYSTÈME
471
La meilleure stratégie est d’installer une première fois GRUB sur une clé USB pour voir ce qu’il se passe. Lorsque le système est lancé, GRUB reconnaît la clé sous le nom (hdn+1), où n est le dernier disque interne. Si votre système se trouve sur /dev/sdb13 et si votre ordinateur dispose de deux disques durs, la clé a pour identifiant (hd2). Pour installer GRUB dans le MBR de la clé USB, utilisez les commandes suivantes : root# grub> grub> grub>
Installation sur un disque dur USB
grub root (hd1,12) setup (hd2) quitv
Si tout se passe bien, l’ordinateur reconnaît GRUB au démarrage suivant, démarre depuis la clé USB et affiche le menu. Si cela ne fonctionne pas, passez en mode interactif avec C et cherchez sous quel nom GRUB reconnaît le disque dur. Vous pouvez alors modifier la ligne correspondante avec E. Nous avons pour l’instant supposé que la seule utilité de la clé USB était l’amorçage. L’opération est encore plus difficile lorsqu’il s’agit de démarrer Linux sur une grosse clé USB ou un disque dur USB. La procédure est identique à ce qui précède, mais le fichier initrd doit contenir tous les modules USB nécessaires à l’utilisation du disque dur. Seules quelques distributions font cela automatiquement. Nous parlerons de la création de fichiers initrd au Chapitre 27.
24.5 GRUB – Résolution de problèmes
Les éléments du menu de GRUB ne fonctionnent pas GRUB n’affiche pas de menu
GRUB plante
Que faire lorsque GRUB ne fonctionne pas ? Dans le pire des cas, vous ne pouvez plus démarrer de système d’exploitation sur votre ordinateur. Cette section résume quelques astuces qui peuvent vous tirer d’affaire. GRUB démarre, mais si vous choisissez un élément du menu, l’ordinateur plante. Il est possible que le fichier de menu de GRUB contienne des informations erronées. Dans ce cas, essayez de saisir les commandes d’amorçage manuellement. Lorsque vous arrivez à démarrer Linux de cette manière, vous pouvez modifier le fichier de menu. Après le démarrage, GRUB n’affiche pas de menu, mais une invite de commande. Il ne peut visiblement pas trouver le fichier de menu. Vous pouvez dans ce cas démarrer Linux manuellement avec des commandes GRUB et réinstaller ce dernier depuis Linux. Ce problème vient probablement d’une erreur entre l’installation des fichiers stage1 et stage2. Il est peu probable que vous réussissiez à démarrer votre ordinateur de la manière ordinaire. Vous avez cependant le choix entre les opérations suivantes : • démarrer Linux avec une disquette d’amorçage GRUB ; • démarrer le système d’urgence de votre CD d’installation Linux et réinstaller GRUB ; • utiliser un système "live", comme Knoppix, pour démarrer un système et réinstaller GRUB ; • restaurer le secteur d’amorçage avec une disquette d’urgence Windows ou un CD d’installation de Windows pour pouvoir au moins utiliser Windows.
Linux Livre Page 472 Mardi, 23. septembre 2008 1:05 13
472
LINUX
24.6 Options d’amorçage du noyau Vous pouvez ajouter des options d’amorçage au noyau lorsque vous configurez GRUB. Elles peuvent également être saisies au démarrage de l’installation ou du gestionnaire d’amorçage. La syntaxe générale de ces options ressemble à ceci : optionA=parametre optionB=parametre1,parametre2
Les paramètres doivent être saisis sans espace. Lorsque plusieurs options sont ajoutées, elles doivent être séparées les unes des autres par des espaces. Les adresses hexadécimales doivent être saisies au format 0x1234. Les nombres sans préfixe 0x sont considérés comme des nombres décimaux. Notez que les paramètres passés au noyau n’ont une influence que sur les pilotes directement intégrés au noyau. Les paramètres des modules du noyau doivent être ajoutés au format /etc/modprobe.conf (voir section 25.1). Cette section ne définit que les options d’amorçage importantes. Vous trouverez plus de détails dans man bootparam et dans la documentation du noyau, si celle-ci est installée : /usr/src/linux/Documentation/kernel-parameters.txt , /usr/src/linux/Documentation/ide.txt et /usr/src/ linux/Documentation/* . Cette documentation peut, selon la distribution, se trouver à un autre endroit. Sous Fedora, elle se trouve par exemple dans /usr/share/doc/kernel-doc-n.n .
Options d’amorçage importantes • root=/dev/sdb13. Cette option indique la partition système de l’ordinateur. Si la partition est décrite avec un libellé, elle peut être donnée sous la forme root=LABEL=xxx. On peut aussi l’indiquer sous la forme root=UUID=n, où n est l’UUID de la partition. • ro. Cette option indique que le système de fichiers doit être monté en lecture seule. • init. Le programme /sbin/init est automatiquement lancé après le démarrage du noyau. Si ce n’est pas ce que vous voulez, vous pouvez lancer un autre programme avec l’option init. Par exemple, init=/bin/sh permet de lancer un interpréteur de commandes. Attention, le système de fichiers racine est alors monté en lecture seule, le clavier est disposé en QWERTY et la variable PATH n’est pas initialisée. • single ou emergency. L’ordinateur démarre en mode mono-utilisateur. Pour être précis, ces options ne sont pas gérées directement par le noyau mais, comme toute option inconnue du noyau, passées au premier programme lancé par le noyau (en l’occurrence /sbin/init). • initrd= ou noinitrd. Ces deux options s’assurent que le disque virtuel n’est pas chargé. Cela peut servir lorsque vous désirez éviter une erreur présente dans ce fichier ou que vous lancez un système déjà installé à partir du CD-ROM d’installation. • pci=bios|nobios. Cette option définit si les composants PCI reconnus par le BIOS doivent être utilisés ou non. Si la reconnaissance automatique du matériel par le noyau échoue, pci=bios peut être utile dans certains cas.
Linux Livre Page 473 Mardi, 23. septembre 2008 1:05 13
DÉMARRAGE DU SYSTÈME
473
• pci=nommconf. Cette option désactive MMCONFIG pour la configuration du PCI. Cela résout des problèmes pour certains systèmes PCI Express. • quiet. Grâce à cette option, aucun message ne s’affiche à l’écran lors du démarrage du noyau.
Options SMP SMP (Symmetric Multi Processing) décrit la capacité du noyau à utiliser plusieurs processeurs ou cœurs de processeurs en même temps. Si vous rencontrez des problèmes, vous pouvez utiliser les options suivantes : • maxcpus=1. Cette option limite le nombre de processeurs utilisés à 1. La valeur 0 correspond à l’option nosmp. • nosmp. Cette option désactive les fonctions SMP ; le noyau n’utilise qu’un seul processeur. • noht. Cette option désactive les fonctions HyperThreading des processeurs Pentium 4. • nolapic. APIC (Advanced Programmable Interrupt Controller) décrit un schéma pour transmettre les interruptions matérielles au processeur. Sur certains noyaux plus anciens, il ne pouvait être activé que sur les ordinateurs avec un seul processeur. Si vous avez des problèmes avec APIC, utilisez nolapic pour que le noyau ne l’active pas et ne l’utilise pas. • noapic. Cette option est un peu moins forte que nolapic ; elle ne désactive que la partie entrées/sorties d’APIC. • lapic. Cette option active explicitement APIC. Elle est nécessaire lorsque le BIOS désactive APIC, alors que celui-ci doit être utilisé.
Options APM et ACPI APM (Advanced Power Management, gestion avancée de l’énergie) et ACPI (Advanced Configuration and Power Interface, interface avancée de configuration et d’énergie) sont les principales sources de problèmes sur le matériel actuel. Ces systèmes sont utilisés pour l’allumage et l’extinction de l’ordinateur, mais aussi pour les économies d’énergie sur les ordinateurs portables, la gestion des différents modes d’hibernation, etc. Voici les options qui permettent de gérer APM et ACPI dans le noyau : • apm=off|on. Cette option désactive ou active les fonctions APM du noyau. • acpi=off|on. Cette option désactive ou active les fonctions ACPI du noyau. • reboot=bios|hard,warm|cold. Cette option indique comment le redémarrage de l’ordinateur doit être effectué. Elle attend deux paramètres. Le premier indique si le redémarrage doit être effectué par une fonction du BIOS ou non. Le second indique s’il faut redémarrer la machine normalement ou la réinitialiser complètement. Dans ce dernier cas, le BIOS est réinitialisé, la mémoire testée, etc.
Linux Livre Page 474 Mardi, 23. septembre 2008 1:05 13
474
LINUX
• noresume. Lorsque le noyau prend en charge la fonction d’hibernation logicielle, cette option permet d’ignorer le fichier d’hibernation lors du redémarrage. Elle s’avère utile lorsque l’ordinateur n’arrive plus à sortir d’hibernation, par exemple quand le fichier d’hibernation est corrompu. • resume=fichier. Cette option utilise le fichier indiqué pour sortir d’hibernation.
24.7 InitV Cette section est consacrée à InitV et couvre le déroulement des opérations entre le démarrage du noyau et l’affichage de l’invite de connexion.
Aperçu d’InitV Le démarrage de Linux suit généralement le processus suivant : 1. GRUB charge et démarre le noyau. 2. Le noyau démarre le programme /sbin/init. 3. init lit le fichier de configuration /etc/inittab. 4. init démarre un script pour initialiser le système. 5. init démarre le script /etc/rc.d/rc ou /etc/init.d/rc. Le script rc dépend de la distribution. Il sert à démarrer les fichiers de scripts qui se trouvent dans /etc/rcn.d ou /etc/ init.d/rcn.d (n est le niveau d’exécution, voir ci-après). Il actualise également, sur la plupart des distributions, une barre de progression qui indique la progression du démarrage. 6. Les scripts de /etc/rcn.d et /etc/init.d/rcn.d lancent divers services du système, en particulier les fonctions réseau.
Niveau d’exécution Le noyau démarre comme premier programme /sbin/init. Les options qui ne sont pas prises en compte par le noyau lui sont transmises. C’est ainsi que Linux est démarré en mode mono-utilisateur. Tous les processus sont démarrés directement ou indirectement par init. Celui-ci est également le dernier processus lancé sur l’ordinateur ; il s’occupe de la terminaison correcte de tous les autres processus. Niveau d’exécution sous Fedora, Red Hat et SUSE
Le niveau d’exécution décrit différents états que le système d’exploitation peut prendre. Malheureusement, ces niveaux ne sont pas unifiés au sein des diverses distributions. Leur signification est généralement documentée dans /etc/inittab. Les niveaux d’exécution suivants sont valables pour la plupart des distributions, à l’exception de Debian et Ubuntu : • Niveau 0. Extinction du système et arrêt de l’ordinateur. • Niveau 1 et S. Mode mono-utilisateur. • Niveau 2. Mode multi-utilisateur sans réseau et sans NFS.
Linux Livre Page 475 Mardi, 23. septembre 2008 1:05 13
DÉMARRAGE DU SYSTÈME
475
• Niveau 3. Mode multi-utilisateur avec réseau, mais sans démarrage automatique de X. • Niveau 4. Ce niveau n’est généralement pas utilisé. • Niveau 5. Mode multi-utilisateur avec réseau et démarrage de X. Il s’agit généralement du niveau d’exécution par défaut. Niveaux d’exécution sous Debian et Ubuntu
• Niveau 6. Extinction du système et réamorçage de l’ordinateur. Sur les systèmes dérivés de Debian, les niveaux d’exécution 2 à 5 sont identiques et lancent un système multi-utilisateur avec le réseau et X. Le niveau d’exécution par défaut est 2. Le détail des niveaux d’exécution est indiqué dans la liste qui suit : • Niveau S. Initialisation du système directement après le démarrage. • Niveau 0. Extinction du système et arrêt de l’ordinateur. • Niveau 1. Mode mono-utilisateur avec réseau. • Niveaux 2-5. Mode multi-utilisateur avec réseau et démarrage automatique de X. • Niveau 6. Extinction du système et réamorçage de l’ordinateur.
Modifier le niveau d’exécution root peut modifier le niveau d’exécution avec init x lorsque le système fonctionne. shutdown et Ctrl+Alt+Suppr permettent également de le modifier. Niveau d’exécution par défaut
Le niveau d’exécution par défaut est généralement défini par la ligne initdefault dans /etc/ inittab. Dans la plupart des distributions actuelles, le niveau par défaut est 5 ; sous Debian et Ubuntu, il s’agit du niveau 2. Sous Ubuntu, depuis la version 6.10, ce niveau est défini dans /etc/event.d/rc-default.
Démarrer l’ordinateur en mode texte ou en mode graphique
Dans la plupart des distributions, pour démarrer l’ordinateur en mode texte, vous devez modifier le niveau d’exécution par défaut dans la ligne id:n:initdefault : 3 est le mode texte, 5 le mode avec X. Sous Debian ou Ubuntu, il faut activer ou désactiver le démarrage du gestionnaire d’affichage de X (gdm, xdm ou kdm). Pour cela, lancez les commandes suivantes : root# update-rc.d -f gdm remove root# update-rc.d gdm stop 1 0 1 2 3 4 5 6 .
Pour démarrer X à nouveau automatiquement, utilisez ces lignes : root# update-rc.d -f gdm remove root# update-rc.d gdm defaults 30 1
inittab Le démarrage du système est contrôlé par le fichier /etc/inittab. La syntaxe des lignes de inittab est la suivante : identifiant:niveau:action:commande
Linux Livre Page 476 Mardi, 23. septembre 2008 1:05 13
476
LINUX
identifiant est un champ de deux caractères qui identifie la ligne de manière unique. niveau indique les niveaux d’exécution valides pour la ligne. action contient une instruction pour init. command indique quelle commande doit être lancée. La liste suivante recense les mots clés action importants et leur signification. man inittab fournit une liste complète de ces mots clés. Mots clés de inittab ctrlaltdel initdefault once respawn sysinit wait bootwait
indique le comportement d’init à l’appui des touches Ctrl+Alt+Suppr définit le niveau d’exécution par défaut d’init démarre la commande indiquée à chaque changement de niveau d’exécution redémarre la commande lorsqu’elle est terminée démarre la commande une fois pendant le processus d’amorçage attend la fin de la commande indiquée démarre le processus pendant l’amorçage et attend la fin de la commande
Initialisation du système Avant de lancer les services spécifiques au niveau d’exécution, un script d’initialisation du système est lancé juste après le démarrage de l’ordinateur. Ce script dépend de la distribution : Debian, Ubuntu
/etc/init.d/rcS
Red Hat, Fedora
/etc/rc.d/rc.sysinit
SUSE
/etc/init.d/boot
L’initialisation du système effectue les opérations suivantes : • initialiser diverses variables système (y compris le nom d’hôte et de domaine) ; • activer le système de fichiers /proc ; • configurer la date et l’heure ; • configurer la disposition du clavier pour la console texte ; • démarrer le système udev ; • éventuellement activer les systèmes RAID et LVM ; • vérifier les systèmes de fichiers ; • remonter la partition système en mode lecture/écriture ; • monter les partitions ; • initialiser les fonctions de base du réseau (uniquement sous Debian et Ubuntu).
Scripts InitV Une fois le système activé, le niveau d’exécution par défaut indiqué par /etc/inittab est démarré. Chaque niveau d’exécution a ses propres scripts. Ceux-ci se trouvent, selon la distribution, dans /etc/init.d ou /etc/rc.d/init.d.
Linux Livre Page 477 Mardi, 23. septembre 2008 1:05 13
477
DÉMARRAGE DU SYSTÈME
Nomenclature
Lancer et arrêter manuellement des démons Paramètres des scripts InitV
init démarre le script /etc/rc.d/rc ou /etc/init.d/rc. Le niveau d’exécution est passé à rc. Ce dernier lance quelques tâches d’initialisation, puis les scripts rcn.d/K* pour terminer tous les processus courants. Enfin, les scripts rcn.d/S* permettant de démarrer les nouveaux processus pour le niveau d’exécution souhaité sont lancés. Il est donc très facile d’ajouter des processus système à InitV : il suffit de copier les scripts de démarrage et d’arrêt dans les bons répertoires. En pratique, les répertoires rcn.d ne contiennent pas directement des scripts, mais des liens vers ces derniers. Chaque fichier de script est donc unique, mais peut être utilisé dans plusieurs niveaux d’exécution et modifié de manière centralisée. Les liens des répertoires rcn.d commencent par S ou K. Ces liens pointent vers le même script. Cependant, le script prendra le paramètre start ou stop selon la lettre par laquelle il commence. Le numéro qui suit indique l’ordre dans lequel les scripts sont lancés. Par exemple, les démons réseau supposent généralement qu’une connexion réseau soit présente ; le script network doit donc être lancé avant ces démons. Vous pouvez lancer les scripts du niveau d’exécution manuellement. Par exemple, cette commande arrête le serveur Apache : root# /etc/init.d/httpd stop
La plupart des scripts comprennent les paramètres suivants : • start démarre le programme. • stop termine le programme. • status affiche l’état du programme (actif ou non). • reload est utilisé lorsque le fichier de configuration doit être relu sans redémarrer complètement le démon. • restart redémarre le programme.
Processus InitV sous Debian Le tableau suivant présente les répertoires et fichiers de configuration d’InitV sous Debian. Fichiers et répertoires de configuration sous Debian Initialisation du système Scripts d’Init Liens du niveau d’exécution Fichiers de configuration Démarrer un script InitV
/etc/init.d/rcS, /etc/rcS.d/* /etc/init.d/* /etc/rcn.d/* /etc/default/*
La commande invoke-rc.d permet de lancer manuellement un script InitV : root# invoke-rc.d samba start root# invoke-rc.d samba stop
Linux Livre Page 478 Mardi, 23. septembre 2008 1:05 13
478 Gérer les liens InitV
LINUX
La commande update-rc.d permet de gérer les liens InitV. update-rc.d nom remove supprime tous les liens de démarrage et d’arrêt du service concerné. update-rc.d nom defaults ajoute des liens de démarrage aux niveaux d’exécution 2 à 5 et des liens d’arrêt aux niveaux d’exécution 0, 1 et 6. Reportez-vous à man update-rc.d pour plus d’informations à ce sujet.
Processus InitV sous Red Hat et Fedora Le tableau suivant présente les répertoires et fichiers de configuration d’InitV sous Red Hat et Fedora. Fichiers et répertoires de configuration sous Red Hat et Fedora Initialisation du système Scripts d’Init Liens du niveau d’exécution Fichiers de configuration Démarrer un script InitV
/etc/rc.d/rcsysconfig /etc/rc.d/init/* /etc/rc.d/rcn.d/* /etc/sysconfig/*
La commande service permet de lancer manuellement un script InitV : root# service httpd start root# service httpd stop
Gérer les liens InitV
La commande chkconfig permet de gérer les liens des niveaux d’exécution. chkconfig --list affiche tous les scripts, ainsi que les niveaux auxquels ils sont lancés ou arrêtés. chkconfig --del nom permet de supprimer un script de tous les niveaux d’exécution. chkconfig --add ajoute des liens pour un nouveau service à tous les niveaux prévus. Cette option ne fonctionne que lorsque le script InitV contient des informations sur ces niveaux. chkconfig --level n nom on|off permet d’ajouter des scripts de démarrage ou d’arrêt à un niveau donné. man chkconfig est une référence de cette commande contenant toutes les informations nécessaires à son utilisation.
Processus InitV sous SUSE Le tableau suivant présente les répertoires et fichiers de configuration d’InitV sous SUSE. Fichiers et répertoires de configuration sous SUSE Initialisation du système Scripts d’Init Liens du niveau d’exécution Fichiers de configuration Démarrer un script InitV
/etc/init.d/boot, /etc/init.d/boot.d/* /etc/rc.d/init/* /etc/rc.d/rcn.d/* /etc/sysconfig/*
Sous SUSE, les scripts lancés normalement par /etc/init.d/nom peuvent également l’être sous la forme rcnom. Par exemple, rcsmb permet de lancer ou d’arrêter le serveur Samba.
Linux Livre Page 479 Mardi, 23. septembre 2008 1:05 13
DÉMARRAGE DU SYSTÈME
Gérer les liens InitV
479
La commande insserv permet d’ajouter de nouveaux liens vers les scripts InitV. insserv nom lit les commentaires Default-Start et Default-Stop du script qui indiquent à quels niveaux d’exécution le script doit être ajouté. Pour supprimer ces liens, passez l’option -r. man insserv offre une référence complète de insserv. De plus, SUSE fournit, pour des raisons de compatibilité, la commande chkconfig. Les commandes -add, -del et -list fonctionnent comme sous Red Hat, mais certaines divergences subsistent sur les autres options. chkconfig appelle insserv.
Linux Livre Page 480 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 481 Mardi, 23. septembre 2008 1:05 13
25
Noyau et modules Ce chapitre traite du noyau Linux et de ses modules. Ces derniers sont des parties du noyau qui peuvent être chargées lorsqu’elles sont nécessaires, par exemple lorsqu’un périphérique est utilisé pour la première fois. La section 25.1 explique le fonctionnement et la gestion des modules du noyau Linux. Rares sont les cas où vous devez impérativement recompiler le noyau. Vous n’aurez probablement qu’un module à compiler. La section 25.2 traite de la compilation des modules et du noyau, et la section 25.3 de la création d’un fichier initrd. Les options d’amorçage du noyau sont quant à elles décrites au Chapitre 24. Ce chapitre s’adresse aux utilisateurs avancés de Linux. Les débutants ont généralement intérêt à utiliser le noyau de leur distribution et à n’installer que des paquetages fournis par cette dernière. Nous traiterons ici des noyaux 2.6.
25.1 Modules du noyau
Charger automatiquement des modules
Le noyau gère les fonctions élémentaires du système, comme la gestion de la mémoire et des processus, l’accès aux disques durs et aux cartes réseau, etc. Il est de plus modulaire : le noyau lancé à l’amorçage ne contient que les fonctions nécessaires au démarrage de l’ordinateur. Lorsqu’une fonction supplémentaire est requise (par exemple, pour du matériel spécial), le code nécessaire est lié au noyau en tant que module. Lorsque cette fonction n’est plus utilisée pendant quelque temps, le module peut être supprimé du noyau. Ce concept modulaire présente plusieurs avantages : • Les modules peuvent être liés à la demande. Lorsqu’un module est peu utilisé, la mémoire correspondante peut être économisée ; le noyau n’est pas plus gros que nécessaire et adapté au matériel de l’utilisateur. • Lorsque le matériel présent est modifié (ajout d’une nouvelle carte réseau, par exemple), le noyau ne doit pas être recompilé ; il suffit d’ajouter le module nécessaire. Toutes les distributions courantes sont basées sur ce concept. • Lorsqu’un nouveau module du noyau est développé, il ne faut pas forcément redémarrer l’ordinateur à chaque modification. Il suffit de recompiler le module, qui peut être testé directement. • Les fabricants de matériel peuvent fournir des modules binaires pour leurs périphériques sans fournir le code. Cela entraîne un certain nombre d’inconvénients (voir Chapitre 22). Le composant kmod du noyau fait en sorte que les modules du noyau soient chargés automatiquement dès qu’ils sont nécessaires. Il est contrôlé par /etc/modprobe.conf. Nous parlerons plus en détail de ce fichier dans ce qui suit.
Linux Livre Page 482 Mardi, 23. septembre 2008 1:05 13
482 Le noyau et les modules doivent correspondre
Versionnage de modules
LINUX
Jusqu’au noyau 2.6.15, les versions du noyau et de ses modules doivent être identiques. On ne peut pas charger un module compilé pour une autre version du noyau. C’est pourquoi chaque version a son propre répertoire de modules, /lib/modules/version_du_noyau. En ce qui concerne les modules qui ne sont pas fournis avec la distribution (module NTFS de Fedora/Red Hat, modules pour les cartes graphiques ATI ou NVIDIA, etc.), la dépendance de versions pose souvent problème. Depuis le noyau 2.6.16, le mécanisme de module versioning (versionnage de modules) est une amélioration significative. Le module enregistre des informations supplémentaires qui indiquent s’il peut fonctionner avec une version différente du noyau. Cela permet également d’utiliser des modules qui ne correspondent pas à la version du noyau. Cependant, ce mécanisme ne fonctionne que lorsque l’option module versioning a été activée lors de la compilation du noyau et que l’interface du noyau n’a pas été modifiée entre la version du noyau et celle du module. Le mécanisme de module versioning peut également être décrit sous les noms kernel symbol versions ou modversions.
Commandes de gestion des modules
Connaître la version de son noyau Charger des fichiers de modules
Toutes les distributions courantes sont configurées de manière à charger automatiquement les modules nécessaires. Par exemple, si vous montez avec mount une partition Windows de votre système, le module ntfs ou vfat, qui sert à lire ce système de fichiers, est chargé. Par conséquent, la gestion des modules est en général automatique et transparente, sans que vous ayez à utiliser les commandes que nous allons décrire. Celles-ci sont cependant utiles pour charger un module manuellement si le besoin s’en fait sentir. Tous les modules se trouvent dans le répertoire /lib/modules/n. n est la version du noyau en cours de fonctionnement. Les modules ont l’extension *.ko. La commande uname -r affiche le numéro de version du noyau courant : utilisateur$ uname -r 2.6.24-16-generic
insmod intègre le module indiqué dans le noyau. Cette commande prend pour argument le nom complet du fichier. Vous pouvez aussi passer des options au module. Si vous indiquez des valeurs hexadécimales, vous devez les préfixer de 0x. root# insmod /lib/modules/2.6.24-16-generic/kernel/fs/fuse/fuse.ko
insmod -f tente de charger le module même lorsqu’il ne correspond pas à la version courante du noyau. Le fonctionnement effectif de cette opération dépend de la compatibilité intrinsèque entre le noyau et le module. Généralement, on ne charge pas les modules avec insmod, mais avec modprobe. Cette commande présente deux avantages. D’une part, elle cherche elle-même le module à insérer ; il suffit d’indiquer le nom du module. D’autre part, elle charge également tous les modules utilisés par le module souhaité. De plus, toutes les options du module indiquées dans /etc/ modprobe.conf sont prises en compte. modprobe demande cependant une configuration correcte des modules (modprobe.conf et modules.dep). root# modprobe fuse
Linux Livre Page 483 Mardi, 23. septembre 2008 1:05 13
483
NOYAU ET MODULES
Liste des modules chargés
La commande lsmod affiche une liste (normalement assez longue) de tous les modules intégrés dans le noyau au moment où elle est exécutée. root# lsmod | sort ac acpi_cpufreq aes_i586 af_packet agpgart ... fuse ...
Supprimer un module
6916 10796 33536 23812 34760
0 1 0 12 3 drm,intel_agp
50580
3
rmmod supprime le module indiqué du noyau et libère la mémoire correspondante. Cette commande ne fonctionne que lorsque le module n’est plus utilisé. rmmod -a supprime tous les modules non utilisés du noyau. root# rmmod fuse
Afficher des informations sur un module
modinfo affiche des informations sur un module. Celui-ci ne doit pas nécessairement se trouver dans le noyau. L’exemple suivant affiche les données pour le module e1000, qui est un pilote pour les cartes réseau Intel Pro/1000. root# modinfo e1000 filename: /lib/modules/2.6.24-16-generic/kernel/drivers/net/e1000/ e1000.ko version: 7.3.20-k2-NAPI license: GPL description: Intel(R) PRO/1000 Network Driver author: Intel Corporation, srcversion: AD899B6372523BED5266B06 alias: pci:v00008086d000010DAsv*sd*bc*sc*i* ... depends: vermagic: 2.6.24-16-generic SMP mod_unload 586 parm: TxDescriptors:Number of transmit descriptors (array of int) ... parm: debug:Debug level (0=none,...,16=all) (int)
Configuration des modules La gestion des modules fonctionne presque comme par magie. Lorsque vous désirez monter une partition dans le système de fichiers et que cela implique l’utilisation d’un format de système de fichiers jusqu’alors inutilisé, le module de ce système est automatiquement chargé. Lorsque la partition se trouve sur un disque SCSI, le module SCSI est également activé et le module du pilote de la carte réseau est automatiquement chargé pendant l’initialisation des fonctions réseau.
Linux Livre Page 484 Mardi, 23. septembre 2008 1:05 13
484
LINUX
Pour que tout cela fonctionne, divers mécanismes de configuration sont mis en œuvre : • Modules au démarrage de l’ordinateur. Certains modules sont utilisés dès le démarrage de l’ordinateur (par exemple, ceux qui servent à accéder aux systèmes de fichiers). Lorsqu’ils ne font pas partie intégrante du noyau, ils doivent être fournis au noyau sous la forme d’un disque virtuel initrd par le chargeur d’amorçage dès le démarrage. • Modules de base. Les modules de gestion de base des composants USB, Firewire ou PCMCI sont directement chargés par divers scripts du processus InitV grâce à modprobe − grep modprobe /etc/init.d/* donne un aperçu rapide des modules chargés de cette manière. • Modules d’interface. Différents modules sont ensuite chargés lorsqu’une interface donnée est utilisée pour la première fois. Cela peut poser des problèmes, car certaines interfaces correspondent à plusieurs modules. Par exemple, lorsque vous utilisez l’interface eth0 pour la première fois, il faut charger le module correspondant à la carte réseau. Comme le noyau ne peut pas le deviner, il faut ajouter cette information au fichier de configuration de modules /etc/modprobe.conf. Nous parlerons plus en détail de ce fichier de configuration à la prochaine section. Ce fichier est particulièrement important, car c’est l’un des rares endroits où la configuration doit être adaptée à votre matériel. Dans la plupart des cas, cette adaptation est gérée par les outils de configuration de votre distribution. Pour les composants très récents ou exotiques, il arrive cependant que vous deviez modifier ce fichier manuellement. La gestion des périphériques par le système udev charge également les modules lorsqu’ils sont nécessaires. Vous trouverez les règles correspondantes dans /etc/udev/rules.d. • Modules pour les cartes PCMCIA, les périphériques USB et Firewire, etc. Ces périphériques ont un rôle particulier. Plusieurs fichiers *.map dans /lib/modules/version_du_noyau différencient ces composants en fonction d’un identifiant et chargent le module correct. Modules non GPL (Ubuntu)
La plupart des distributions ne fournissent que des modules dont le code source est conforme à la GPL. Ubuntu fait exception et fournit des modules de différents pilotes matériels qui contiennent du code binaire de divers fabricants (ATI, AVM et NVIDIA, par exemple). Ces modules sont regroupés dans le paquetage linux-restricted-modules-arch et installés dans le répertoire /lib/linux-restricted-modules. Le script InitV linux-restricted-modules-common appelle le script lrm-manager pendant le démarrage de l’ordinateur. Ce script crée un système de fichiers temporaire dans le répertoire /lib/modules/version_du_noyau/volatile. Ce système contient des copies de tous les modules qui ne se conforment pas à la FPL et depmod est lancé sur ce répertoire. Ces étapes assurent une utilisation sans problème des modules. Pour désactiver certains modules du paquetage, indiquez leur nom dans la variable DISABLED_MODULES de /etc/default/linuxrestricted-modules-common.
Dépendances entre modules (modules.dep, modules*.map) Certains modules dépendent les uns des autres. Par exemple, le module nfs du système de fichiers NFS ne fonctionne que lorsque les modules lockd, nfs_acl et sunrpc sont chargés. De telles dépendances sont enregistrées de manière centrale dans le fichier /lib/modules/n/ modules.dep.
Linux Livre Page 485 Mardi, 23. septembre 2008 1:05 13
NOYAU ET MODULES
depmod
485
Si ce fichier n’existe pas encore ou s’il est incomplet (par exemple, après la compilation d’un nouveau module), vous devez le créer ou l’actualiser avec la commande depmod. Celle-ci examine les symboles définis et utilisés dans les modules. Elle crée quelques fichiers *.map pour faire la correspondance entre différents composants matériels et les modules nécessaires. Les fichiers *.map sont nécessaires pour le branchement à chaud des périphériques. Par exemple, lorsque vous branchez un nouveau périphérique USB, le module nécessaire à sa prise en charge peut être détecté automatiquement grâce à un code d’identification. Les fichiers modules.dep et *.map sont normalement créés pendant l’installation des modules. Il est donc rarement nécessaire de lancer depmod manuellement.
Paramètres des modules et ordre des périphériques
Debian, Ubuntu Red Hat, Fedora
SUSE
Pour que le module correct soit chargé la première fois qu’une interface est activée, le noyau prend en compte de nombreux paramètres définis dans les modules et le paquetage modutils pour depmod, et enregistrés dans modules.dep et modules*.map. Les paramètres correspondants sont en général enregistrés dans le fichier /etc/modprobe.conf et les fichiers du répertoire /etc/modprobe.d. Les différentes distributions ont chacune leurs particularités. modprobe.conf n’existe pas. Les paramètres sont enregistrés dans les fichiers du répertoire modprobe.d. modprobe.conf ne contient que quelques paramètres spécifiques à l’ordinateur. Le fichier / etc/modprobe.d/modprobe.conf.dist contient une liste plus longue avec les paramètres par défaut de la distribution. modprobe.conf contient une liste interminable de paramètres, dont la plupart sont valides par défaut. Les modifications doivent être effectuées dans modprobe.conf.local.
Syntaxe de modprobe.conf
alias
Cette section décrit les mots clés importants de modprobe.conf et des fichiers de modprobe.d/. Vous trouverez plus de détails dans man modprobe.conf. Les instructions alias indiquent quel module du noyau doit être utilisé pour quel périphérique. Par exemple, le périphérique /dev/eth0 est associé au module 8139too : alias eth0 8139too
On accède généralement à des composants matériels grâce aux périphériques bloc et caractère /dev/xxx. Du point de vue du noyau, ces fichiers ne sont pas caractérisés par leur nom, mais par leurs numéros de périphériques majeur et mineur. De nombreuses instructions alias font la correspondance entre les numéros de périphériques et les modules. Les deux exemples suivants montrent que les périphériques bloc ayant le numéro majeur 2 doivent charger le module floppy. De même, les périphériques caractère ayant le numéro majeur 6 doivent charger le module lp. alias block-major-2 floppy alias char-major-6 lp
Linux Livre Page 486 Mardi, 23. septembre 2008 1:05 13
486
LINUX
La définition des protocoles réseau est similaire. Pour utiliser un protocole donné, le noyau cherche une famille de protocoles nommée net-pf-n. Dans l’exemple suivant, le module AppleTalk est utilisé pour la famille de protocoles 5 : alias net-pf-5 appletalk
Lorsque vous n’avez pas besoin de ce protocole (ou si vous n’avez pas installé le module correspondant), l’instruction suivante supprime des messages d’erreur : alias net-pf-5 off options
Les instructions options indiquent avec quelles options doit être chargé un module donné. La ligne suivante indique que le module ne (pour les cartes Ethernet compatibles NE2000) doit être chargé avec l’option io=0x300 : options ne io=0x300
include
Les instructions include chargent des fichiers de configuration supplémentaires.
install
Les instructions install permettent de lancer des commandes, plutôt que de charger simplement le module. L’exemple suivant est partagé en deux lignes pour des raisons de place. Lorsque le module ALSA snd est utilisé, ces commandes doivent être lancées : install snd modprobe --ignore-install snd $CMDLINE_OPTS && \ { modprobe -Qb snd-ioctl32 ; : ; }
remove
remove permet de lancer des commandes lorsqu’un module doit être supprimé.
blacklist
Les instructions blacklist indiquent que les définitions de modules ne doivent pas être utilisées et se trouvent généralement dans le fichier /etc/modprobe.d/blacklist. Celui-ci contient la liste des modules qui ne doivent pas être chargés, pour des raisons de compatibilité ou parce qu’une meilleure alternative existe. Dans cet exemple, usbmouse n’est pas chargé ; en général, hid est utilisé à la place. blacklist usbmouse
Exemple de fichier modprobe .conf
Le fichier modprobe.conf diffère largement d’une distribution à une autre. Des fichiers de configuration courts s’appuient souvent sur les paramètres de base de /lib/modules/n.n/ module.alias et modules.symbols. Ce fichier reflète la configuration matérielle individuelle et est modifié par la distribution. Il est généralement minimal. Les lignes suivantes montrent la configuration de l’une de mes machines de test sous Fedora 7. Elles correspondent à deux cartes réseau (Ethernet et Wi-Fi), au contrôleur IDE et à une carte son. alias eth0 e1000 alias eth1 ipw2100 alias scsi_hostadapter ata_piix alias scsi_hostadapter1 usb-storage alias snd-card-0 snd-intel8x0 options snd-card-0 index=0 options snd-intel8x0 index=0
Linux Livre Page 487 Mardi, 23. septembre 2008 1:05 13
NOYAU ET MODULES
487
Compiler un module supplémentaire Pour utiliser VMware, pour exploiter les pilotes binaires d’ATI ou de NVIDIA, ou si vous avez besoin d’un module spécifique à votre matériel qui n’est pas présent dans votre distribution, vous devez compiler un module qui correspond au noyau courant. En général, un script (par exemple, vmware-config.pl ou le script d’installation de vos pilotes) mène à bien cette tâche. Cependant, certains prérequis doivent être remplis, comme pour compiler un noyau complet. Vous devez tout d’abord installer les outils de développement (en particulier, le compilateur C gcc, ainsi que make) dans une version suffisamment actuelle.
Outils de développement Fichiers d’en-tête du noyau
Vous avez également besoin des fichiers d’en-tête du noyau courant. Ces derniers font partie du code du noyau. Pour de nombreuses distributions, les fichiers d’en-tête et le reste du code se trouvent dans deux paquetages séparés. Cela permet de ne pas avoir à installer l’ensemble du code lorsque vous n’avez besoin que des fichiers d’en-tête. Les paquetages de fichiers d’en-tête ont les noms suivants et sont installés dans les répertoires indiqués : • Debian, Ubuntu linux-headers-generic /usr/include/linux • Red Hat, Fedora kernel-devel-n.n /lib/modules/n.n/build/include • SUSE kernel-source /usr/src/linux-n.n/include Lorsque vous compilez vous-même votre noyau, les fichiers d’en-tête sont installés dans le répertoire /lib/modules/n.n/build/include.
25.2 Configurer et compiler son propre noyau Un utilisateur classique ne doit généralement pas compiler son noyau. Toutes les distributions actuelles fournissent par défaut un noyau utilisable et de nombreux modules. Voici cependant quelques raisons qui peuvent vous amener à recompiler un noyau : • Vous voulez apprendre à mieux connaître votre système. • Vous avez besoin de fonctionnalités qui ne sont pas intégrées au noyau et qui ne sont pas fournies en tant que module (par exemple, les fonctions réseau). • Vous désirez utiliser une version plus récente du noyau que celle fournie par votre distribution. • Vous souhaitez ajouter un correctif à votre noyau. Les correctifs servent à prendre en charge du matériel très récent ou à utiliser de nouvelles fonctions, sans pour autant utiliser un noyau en cours de développement. • Vous aimeriez prendre part au développement du noyau et expérimenter les noyaux en cours de développement. • Vous avez envie de pouvoir dire à votre entourage que vous avez compilé vous-même le dernier noyau Linux !
Linux Livre Page 488 Mardi, 23. septembre 2008 1:05 13
488 Obstacles à la compilation du noyau
LINUX
Il existe cependant des arguments à l’encontre de la compilation d’un noyau personnalisé : • La plupart des distributions n’utilisent pas le noyau original tel que fourni par Linus Torvalds et la communauté, mais une version modifiée avec diverses fonctions supplémentaires − chaque distribution utilise évidemment ses propres correctifs. En soi, c’est plutôt une bonne chose pour les utilisateurs : ils peuvent ainsi bénéficier des fonctions supplémentaires que le mainteneur de la distribution considère comme stables. Cependant, les noyaux originaux du serveur FTP de kernel.org ne disposent pas de ces correctifs. Certains éléments de votre distribution peuvent alors ne plus fonctionner ou poser certains problèmes. • La compilation d’un noyau n’est pas difficile. En revanche, la configuration de cette compilation l’est. Le noyau a plus de 100 options. Celles-ci influent sur les fonctions intégrées au noyau, sur les modules compilés et sur les options qui ne doivent pas être mises à disposition. Si vous prenez de mauvaises décisions pour certaines de ces options, les fonctions correspondantes peuvent refuser de vous obéir et il peut être difficile de trouver l’origine du problème. Il est cependant pratiquement impossible pour un débutant sous Linux de deviner toutes les options correctement.
Installer les paquetages nécessaires Outils de développement
Vous pouvez installer les outils de développement (gcc, make, etc.) paquetage par paquetage, mais la plupart des distributions effectuent une section de paquetages ou fournissent un métapaquetage qui installe tous les paquetages nécessaires. En voici un résumé : Debian, Ubuntu
métapaquetage build-essential
Red Hat, Fedora
groupe Développement
SUSE
groupe Développement
Pour faciliter et automatiser la compilation de noyaux ou de modules sous Debian ou Ubuntu, vous pouvez considérer les paquetages kernel-package et module-assistant . Ils fournissent des scripts qui facilitent certaines opérations. Code du noyau
Jusqu’à la version 2.6, il existait des versions "stables" du noyau (2.0.n, 2.2.n, 2.4.n) et des versions "développeurs" (2.3.n, 2.5.n). Ce schéma a changé avec le noyau 2.6. Il n’existe plus de branche 2.7.n de développement ; tous les développements sont effectués directement dans la branche 2.6. Le code du noyau se trouve généralement dans le répertoire /usr/src/linux. Vous pouvez choisir d’installer le code de votre distribution ou le code officiel. Pour le code du noyau de votre distribution, installez les paquetages suivants : Debian, Ubuntu
linux-source-n.n
Red Hat, Fedora
paquetage de code source de kernel-n.n
SUSE
kernel-source
Linux Livre Page 489 Mardi, 23. septembre 2008 1:05 13
NOYAU ET MODULES
489
Pour récupérer une version du noyau qui n’est pas fournie par votre distribution (par exemple, la version la plus récente), vous devez vous rendre sur le site www.kernel.org, qui indique quelle est la dernière version stable du noyau et où la télécharger.
Configurer le noyau Le noyau se compose de milliers de fonctions. Avant la compilation, vous pouvez décider du devenir de chacune d’elles : doivent-elles être intégrées directement au noyau, compilées en tant que modules ou ne pas être mises à disposition ? Cette opération s’appelle configurer le noyau. Noyau monolithique ou modulaire
Vous devez principalement choisir entre un noyau monolithique ou modulaire. Les noyaux monolithiques contiennent tous les pilotes nécessaires directement dans le noyau et ne prennent pas en charge les modules. Les noyaux modulaires peuvent prendre en compte des modules et sont, dans presque tous les cas, le bon choix.
Choix des composants
Pour la plupart des composants, vous avez le choix entre trois options : Yes, Module et No. Yes signifie que le composant est intégré directement au noyau, Module qu’il est compilé en tant que module, et No qu’il ne sera pas compilé.
Outils de configuration
La configuration du noyau se trouve dans le fichier .config à la racine des sources du noyau. Il s’agit d’un fichier texte assez long qui contient une liste de composants et le choix effectué précédemment pour chacun d’eux (y, m ou n). Il n’est généralement pas modifié manuellement, mais à l’aide des outils suivants : • make config fonctionne toujours, mais est très pénible à utiliser et n’est pas conseillé. Vous devez en effet passer toutes les options, y compris lorsque vous souhaitez n’en modifier que quelques-unes. • make menuconfig nécessite que ncurses-devel soit installé. Il s’agit d’une interface en mode texte, mais les différentes options sont structurées dans des menus et non listées les unes à la suite des autres. • make xconfig nécessite que X soit lancé et que le paquetage qt3-devel ou qt4-devel soit installé. make compile l’interface graphique et la lance. • make gconfig est le pendant GTK de make xconfig. Diverses bibliothèques de développement de Gnome doivent être installées (entre autres, libgtk2-devel et libglade2devel). Tous ces outils de configuration permettent d’afficher une aide en ligne pour savoir à quoi correspondent les différentes options.
Reprendre une configuration existante
Vous pouvez souvent reprendre la configuration d’un noyau existant et l’utiliser comme base pour votre nouveau noyau. Pour cela, copiez le fichier .config de l’ancien noyau dans l’arborescence du nouveau et lancez la commande make oldconfig. Les options du nouveau noyau qui n’étaient pas présentes dans la configuration existante seront alors proposées, de manière comparable à make config. Le succès de cette opération n’est pas garanti (surtout si les deux versions sont très différentes), mais le temps nécessaire à la configuration du noyau est si faible que cela vaut généralement la peine d’essayer.
Linux Livre Page 490 Mardi, 23. septembre 2008 1:05 13
490
LINUX
Si votre noyau a été compilé avec les bonnes options, le fichier /proc/config.gz contient le fichier .config du noyau courant. Certaines distributions installent également le fichier de configuration du noyau dans /boot parallèlement au noyau.
Compiler et installer le noyau Une fois la configuration du noyau achevée, il est temps de passer à la compilation. Attention, c’est une opération assez longue et coûteuse en place disque. root# cd /usr/src/linux-n.n root# make all root# make modules_install
Installer le noyau
Le résultat de ces commandes est une image bzImage dans le répertoire /usr/src/linuxn.n/arch/i386/boot. La taille du fichier varie entre 1 et 2 Mo, selon le nombre de fonctions que vous avez intégrées au noyau. make modules_install copie les modules à l’endroit où insmod les attend. Le noyau fraîchement compilé n’est pas encore actif ! Vous devez le copier dans un endroit accessible à GRUB et ajouter un élément au menu : root# mv /usr/src/linux-n.n/arch/i386/boot/bzImage /boot/vmlinuz-n.n
Pour modifier GRUB, le plus simple est généralement de copier l’élément existant et de modifier cette copie pour l’adapter au nouveau noyau. Ne remplacez pas le noyau courant, ni sa configuration : il se peut que votre noyau ne fonctionne pas du premier coup. Il est alors intéressant de pouvoir revenir à l’ancienne version.
25.3 Créer un fichier initrd Dans le menu GRUB, la plupart des éléments indiquent deux fichiers : le noyau Linux et le fichier initrd qui lui correspond. Ces deux fichiers se trouvent généralement dans le répertoire /boot, mais leur nom varie selon la distribution. initrd contient tous les modules dont le noyau a besoin pour accéder au système de fichiers. GRUB crée un disque virtuel pour mettre ce fichier à disposition du noyau. En général, initrd contient un module pour le pilote du système de fichiers de la partition système. Si votre partition se trouve sur un disque SCSI, initrd doit également contenir le pilote de votre carte SCSI. Si votre partition racine est installée dans un système LVM ou RAID, des pilotes supplémentaires sont à prévoir. Le fichier initrd n’est pas obligatoire. Si votre noyau contient tous les composants nécessaires au processus d’amorçage, le démarrage fonctionne sans initrd. Le noyau doit cependant être compilé de cette manière.
Le fichier initrd doit correspondre exactement à la version du noyau. Il faut donc recréer un fichier initrd chaque fois que l’on compile un noyau.
Linux Livre Page 491 Mardi, 23. septembre 2008 1:05 13
491
NOYAU ET MODULES
mkinitramfs
Sous Debian et Ubuntu, le script mkinitramfs sert à créer le fichier initrd. La configuration de base se trouve dans /etc/initramfs-tools/initramfs.conf, ainsi que dans les fichiers du répertoire /etc/initramfs-tools/conf.d. initrd contient tous les modules du fichier /etc/ initramfs-tools/modules (un module par ligne). Vous pouvez ensuite générer initrd : root# mkinitramfs -o myinitrd 2.16.13-10-i686
mkinitrd (Red Hat, Fedora)
Pour plus d’informations à ce sujet, reportez-vous à man mkinitramfs. Sous Fedora et Red Hat, c’est le script mkinitrd qui permet de créer le fichier initrd, qui contient tous les modules nécessaires pour accéder à la partition système. Les modules qui ne sont pas automatiquement reconnus par le programme doivent être ajoutés avec l’option --with=nom_du_module. Vous trouverez plus d’options pour la commande mkinitrd dans man mkinitrd. Cette commande crée un disque virtuel qui permet d’accéder à un système de fichiers reiserfs : root# mkinitrd --with=reiserfs /boot/initrd-2.6.16-1.2111_FC5.img \ 2.6.16-1.2111_FC5
mkinitrd (SUSE)
La commande mkinitrd fonctionne différemment sous SUSE et Red Hat. Normalement, vous ne devez passer aucun paramètre à mkinitrd sous SUSE. mkinitrd crée automatiquement un fichier initrd pour tous les noyaux qu’il trouve dans le répertoire /boot. Les nouveaux fichiers sont nommés /boot/initrd-nnn, où nnn est la version du noyau. mkinitrd examine la variable INITRD_MODULES du fichier /etc/sysconfig/kernel. Celle-ci contient tous les modules à lancer dès l’amorçage et ressemble à ceci : INITRD_MODULES="via82cxxx processor thermal fan jbd ext3"
Voir le contenu d’un fichier initrd
Pour examiner le contenu d’un fichier initrd, lancez les commandes suivantes : root# root# root# root# root# root# root#
cd /boot cp initrd-n.n initrd-test.gz gunzip initrd-test mkdir test cd test cpio -i < ../initrd-test.gz ls -lR
Linux Livre Page 492 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 493 Mardi, 23. septembre 2008 1:05 13
PARTIE 5 – CONFIGURATION RÉSEAU ET SERVEUR
26
Configurer l’accès réseau (réseau local, Wi-Fi) Ce chapitre décrit comment connecter un ordinateur Linux à un routeur (ADSL), à un réseau local (LAN ou Local Area Network) ou à un réseau sans fil (Wi-Fi), et ce qui se passe en coulisse de cette procédure. Lorsque tout fonctionne, la configuration du réseau local ou sans fil ne prend qu’une à deux minutes. Bien souvent, la configuration a lieu (avec succès) lors de l’installation. Ce chapitre se focalise donc davantage sur les bases : à quoi servent les adresses IP ? Comment tester les fonctionnalités réseau ? De quels moyens dispose-t-on pour identifier les erreurs ? Dans le cadre d’un réseau sans fil, l’intégration au réseau n’est pas tout : la connexion doit également être sûre. Le meilleur chemin vers une sécurité accrue consiste à mettre en place un réseau privé virtuel (VPN ou Virtual Private Network). Ce chapitre part du principe que vous souhaitez connecter votre ordinateur Linux à un réseau local préexistant. Si vous devez configurer vous-même la connexion à Internet, le prochain chapitre vous fournira les informations nécessaires (PPP, modem, ADSL). Si vous envisagez d’utiliser votre ordinateur non pas en tant que client, mais en tant que serveur au sein d’un réseau local, vous trouverez des informations détaillées sur ce sujet au Chapitre 28.
26.1 Bases réseau Dans cette section, nous aborderons les bases et les rouages internes de la configuration réseau. Les informations données ici valent non seulement pour la connexion à un réseau local, mais également pour la configuration Wi-Fi, ADSL ou modem téléphonique.
Glossaire TCP/IP
Tous les systèmes d’exploitation existants prennent en charge TCP/IP en tant que protocole réseau. Celui-ci régit les communications entre ordinateurs, aussi bien sur un réseau local (LAN, intranet) que sur Internet. Pour cette raison, de nombreux services réseau n’ont aucun besoin de savoir si l’ordinateur cible se trouve à cinq mètres du serveur et sur le même réseau local, ou s’il se trouve au Japon. Dans le second cas, la vitesse de transfert sera simplement moins élevée. Le protocole IP (Internet Protocol) constitue la base pour le protocole TCP (Transmission Control Protocol). TCP/IP gère donc conjointement deux tâches : il identifie chaque ordinateur par le biais d’un numéro unique (adresse IP) et se charge de vérifier que les données devant être émises à l’attention d’une adresse particulière lui parviennent effectivement. Ces données sont transmises sous la forme de petits paquets.
Linux Livre Page 494 Mardi, 23. septembre 2008 1:05 13
494
LINUX
Même si votre ordinateur ne fait pas partie d’un réseau et que vous ne possédez ni connexion réseau ni modem, vous aurez quand même besoin des fonctionnalités TCP/IP ! De nombreux programmes Linux utilisent en effet ce protocole pour leurs communications internes. Pour cette raison, l’interface loopback doit dans tous les cas être installée (voir plus bas). C’est le cas par défaut sur toutes les distributions. UDP et ICMP
Ports
PPP
Nom d’hôte et nom de domaine
Outre TCP, il existe deux autres protocoles jouant un rôle important sur Internet : UDP et ICMP. UDP est l’acronyme d’User Datagram Protocol. Il permet de transmettre les paquets de façon non fiable. "Non fiable" signifie dans ce contexte que l’émetteur et le destinataire ne sont pas connectés en permanence l’un à l’autre pour échanger des informations sur les paquets transmis. Avec UDP, il est donc possible que des paquets n’arrivent pas du tout à destination, ou dans le désordre par rapport à leur ordre d’envoi. C’est le rôle du destinataire (et non du protocole) de vérifier l’intégrité des données. UDP possède l’avantage, par rapport à TCP, d’être plus efficace pour certaines applications du fait de la faible charge qu’il occasionne et qu’il permet des temps de réaction plus courts. Il est par exemple utilisé pour les services DNS et NFS. ICMP est l’acronyme d’Internet Control Message Protocol. Il est conçu non seulement pour l’échange de données entre programmes mais également pour la transmission de codes de contrôle et d’erreur pour TCP/IP. ICMP est par exemple utilisé par l’outil ping. Chaque paquet IP est classé suivant un numéro de port. Ceci permet d’ordonnancer plus facilement les paquets au niveau du destinataire. La plupart des applications Internet (WWW, FTP, E-mail, etc.) se voient attribuer un numéro de port propre. Lorsque la connexion à Internet intervient, non pas à travers l’infrastructure d’un réseau local mais directement par le biais d’un modem ou d’une carte RNIS, c’est le protocole PPP (Point-to-Point Protocol) qui entre en jeu. Il permet de transmettre les données TCP/IP sur une ligne téléphonique, par RNIS ou par ADSL. PPP peut également être utilisé pour la mise en place des réseaux privés virtuels (VPN). Les adresses IP (voir ci-après) sont certes pratiques pour les ordinateurs, mais elles sont peu commodes pour les êtres humains. Pour cette raison, l’ordinateur peut aussi être identifié par la combinaison de son nom d’hôte et du nom de domaine. Le nom d’hôte est le nom effectivement attribué à l’ordinateur. Le nom de domaine décrit la portion de réseau dans laquelle on peut accéder à l’ordinateur. Le nom de domaine peut également comprendre plusieurs sections. Au sein d’un réseau local, les noms d’hôte et de domaine servent principalement d’aidemémoire pour les utilisateurs. Ainsi, mes ordinateurs de test sont nommés suivant les planètes de notre système solaire (par exemple jupiter), tandis que le domaine associé est sol. Le nom complet résultant est donc jupiter.sol. Il faut éviter d’utiliser comme nom d’hôte le fabricant de l’ordinateur, son propriétaire, le nom d’un projet, etc. car cela peut conduire à une certaine confusion. Utilisez des noms courts et faciles à retenir, correspondant à des animaux, des plantes, des rivières ou tout autre domaine de votre choix. Les caractères spéciaux ne sont pas autorisés. N’utilisez jamais localhost en tant que nom d’hôte ! Ce nom possède une signification particulière : il sert de nom pleinement qualifié (fully qualified). Il est toujours affecté à l’adresse 127.0.0.1 de l’interface loopback, indépendamment de tout autre paramètre de la configuration réseau.
Linux Livre Page 495 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
Adresses IP
Adresse MAC
Interface
Nom d’interface
Interface loopback
Masques de sous-réseau, adresse réseau, adresse de broadcast
495
Vous avez moins de marge de manœuvre sur le choix du nom de domaine. Celui-ci doit correspondre aux noms de domaines déjà utilisés au sein du réseau. Ce n’est que lorsque vous mettez en place un nouveau réseau local que vous pouvez librement choisir votre nom de domaine. Lorsque votre ordinateur Linux doit être visible sur Internet en tant que serveur web, e-mail ou pour tout autre service, vous devez enregistrer le nom de domaine souhaité auprès d’un fournisseur d’accès Internet ou d’un bureau d’enregistrement NIC (Network Information Center), par exemple auprès de l’AFNIC (http://www.afnic.fr) pour les noms de domaines en .fr ou de CORE (http://www.corenic.org) pour les noms de domaines en .com, .net et .org. Les adresses IP servent à identifier de façon univoque un ordinateur au sein d’un réseau. 192.168.0.75 est par exemple une adresse IP typique pour un ordinateur du réseau local. Vous trouverez davantage d’informations sur les adresses IP un peu plus loin dans ce chapitre. L’adresse MAC (Media Access Control) est un numéro d’identifiant univoque que possède chaque contrôleur Ethernet. L’adresse MAC permet d’identifier le contrôleur réseau avant même que lui soit affectée une adresse IP. L’adresse MAC est en particulier utilisée par le protocole DHCP (voir Chapitre 28). L’adresse IP décrit non pas un ordinateur mais une interface IP. Un ordinateur possède souvent plusieurs interfaces, chacune dotée d’une adresse IP différente. Sur un ordinateur, on retrouve généralement l’interface loopback (127.0.0.1, voir ci-après), une ou plusieurs interfaces Ethernet, ainsi qu’une éventuelle interface PPP pour l’accès Internet par modem, RNIS ou ADSL. Lorsque l’on parle de l’adresse IP (comme s’il n’en existait qu’une), on fait alors généralement référence à l’adresse permettant d’accéder à l’ordinateur au sein du réseau local ou d’Internet. En règle générale, il s’agit de l’adresse IP de l’interface Ethernet à laquelle sont affectés les noms d’hôte et de domaine, et qui est unique au sein du réseau local. En interne à Linux, toutes les interfaces réseau se voient attribuer un nom. Des noms typiques sont par exemple lo pour l’interface loopback, eth0, eth1, etc. pour les interfaces Ethernet et pppn pour les interfaces PPP. L’interface loopback joue un rôle particulier : elle permet d’utiliser le protocole réseau pour les services locaux et donc pour la communication interne à l’ordinateur. Cela peut sembler absurde, mais c’est obligatoire pour de nombreuses commandes élémentaires de Linux. En effet, celles-ci basent leurs communications sur le protocole réseau, et ce que les données restent sur l’ordinateur local ou qu’elles soient transmises à destination d’un ordinateur distant sur le réseau. Un exemple de ce fonctionnement est le système d’impression CUPS, qui traite les tâches d’impression aussi bien locales qu’en provenance d’autres ordinateurs sur le réseau. L’adresse IP réservée pour l’interface loopback est 127.0.0.1. Toutes les distributions gèrent automatiquement la configuration de l’interface loopback, même si aucune configuration réseau n’est effectuée par ailleurs. L’étendue d’un réseau local est exprimée par deux ou trois masques. Il s’agit pour chaque masque de quatre groupes de chiffres, utilisés en interne comme motif binaire pour les adresses IP. Lorsque le réseau local comprend toutes les adresses 192.168.0.n, le masque de sous-réseau correspondant est 255.255.255.0, l’adresse réseau, 192.168.0.0 et l’adresse de broadcast (ou adresse de diffusion), 192.168.0.255. Dans de nombreux outils de configuration,
Linux Livre Page 496 Mardi, 23. septembre 2008 1:05 13
496
LINUX
vous n’avez pas besoin de renseigner l’adresse de broadcast dans la mesure où celle-ci est calculée à partir des deux autres adresses fournies. Le réseau résultant est alors décrit comme 192.168.0.0/255.255.255.0 ou, plus brièvement, 192.168.0.0/24 (cette seconde notation fournit le nombre de valeurs binaires à 1 dans le masque de sous-réseau). Deux ordinateurs d’adresses IP 192.168.0.71 et 192.168.0.72 peuvent donc communiquer directement l’un avec l’autre sur ce réseau (parce que les adresses IP correspondent au domaine défini par le masque de sous-réseau). Le nombre maximal d’ordinateurs pouvant communiquer entre eux dans ce réseau est de 254 (correspondant aux adresses .1 à .254, les adresses .0 et .255 étant réservées). Passerelle
Une passerelle (gateway) est un ordinateur constituant une interface entre deux réseaux (bien souvent, entre le réseau local et Internet). Pour que votre ordinateur Linux, situé sur le réseau local, puisse accéder à Internet, vous devez fournir l’adresse de la passerelle à la configuration. L’adresse de la passerelle décrit donc un ordinateur du réseau local (par exemple 192.168.0.1). Cet ordinateur possède une position particulière dans la mesure où il est également connecté (par exemple par une liaison ADSL) à Internet. Le trafic Internet de l’ensemble du réseau local transite donc par la passerelle.
Serveur de noms
Un serveur de noms est un programme traduisant les noms des ordinateurs ou les adresses Internet (par exemple www.yahoo.fr) en adresses IP. Sur les petits réseaux, la correspondance entre nom et adresse s’effectue bien souvent par le biais d’un tableau (le fichier /etc/ hosts). Sur Internet, ce sont des ordinateurs dotés des bases de données appropriées qui gèrent cette tâche. Pour décrire un serveur de noms, on utilise également l’abréviation DNS (pour Domain Name Server). Lorsque vous souhaitez consulter la page www.yahoo.fr dans un navigateur web, un contact est établi en premier lieu avec le serveur de noms pour en obtenir l’adresse IP du serveur web correspondant. Ce n’est qu’après la réussite de cette opération qu’une connexion peut être établie avec l’adresse IP en question.
DHCP
Le protocole DHCP (Dynamic Host Configuration Protocol) est fréquemment utilisé au sein des réseaux locaux pour centraliser l’administration du réseau. Plutôt que configurer individuellement, sur chaque ordinateur, l’adresse IP, la passerelle, le serveur de noms, etc., un ordinateur est configuré comme serveur DHCP (voir Chapitre 28). Tous les autres postes du réseau local prennent contact, à l’amorçage, avec le serveur DHCP pour en obtenir les paramètres à utiliser pour le réseau. La configuration des clients est donc réduite à sa plus simple expression.
Adresses IP Nous avons déjà mentionné que les adresses IP servent à l’identification des ordinateurs au sein d’un réseau. Cela vaut aussi bien pour le réseau local que pour Internet. Cette section fournit des informations de base sur l’utilisation des adresses IP. En théorie, il existe 2564 adresses IP (environ 4 milliards). Toutefois, le nombre d’adresses disponibles de fait est très inférieur car, d’une part, un certain nombre de ces adresses sont réservées (par exemple toutes celles finissant par .0 et .255) et, d’autre part, parce que les adresses IP ont par le passé été attribuées de façon assez libérale. Du fait de la croissance exponentielle d’Internet, le besoin en adresses IP univoques pour chaque ordinateur présent sur Internet est devenu un problème grandissant. Jusqu’à l’adoption
Linux Livre Page 497 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
497
complète d’IPv6 (une nouvelle version du protocole Internet qui, outre de nombreuses améliorations, offrira également un espace d’adresses considérablement plus grand), les adresses IP resteront un bien rare. Adresses IP sur Internet
Si vous souhaitez connecter votre propre serveur web à Internet, vous aurez besoin non seulement d’un nom de domaine valable mondialement (par exemple "masociete.fr"), mais également d’une adresse IP propre. Le plus simple pour obtenir ces deux paramètres consiste à passer par votre FAI ou par l’organisme NIC de votre pays. Pour les utilisateurs privés ou les petites organisations, ceci n’est toutefois que rarement nécessaire. Pour le réseau local, ce sont les adresses IP de l’espace d’adresses privé qui sont utilisées (voir un peu plus loin pour les détails). La connexion à Internet s’effectue par le biais d’un FAI qui, pour la durée de la connexion, met à votre disposition une adresse IP valable mondialement. Si, toutefois, vous souhaitez être présent sur Internet avec votre propre site web, vous devrez en général faire appel à un fournisseur de services. L’ordinateur hébergeant le serveur web et vos documents HTML se trouve chez le fournisseur (et non à votre domicile) et c’est le prestataire qui est responsable de l’adresse IP. Ce fonctionnement présente un avantage supplémentaire dans la mesure où vous n’avez pas à être connecté en permanence à Internet pour que votre site web soit, lui, accessible. Pour résumer : vous n’aurez besoin d’une adresse IP personnelle et univoque que si votre ordinateur doit être en permanence accessible sur Internet et que vous possédiez à cet effet une connexion directe à Internet (par exemple par une ligne dédiée). Cela ne concerne en général que les grosses sociétés et les universités.
Adresses IP sur le réseau local
Les ordinateurs du réseau local sont en règle générale invisibles depuis Internet. Cela signifie que les ordinateurs peuvent certes utiliser les fonctionnalités Internet par le biais d’une configuration appropriée, mais qu’ils sont protégés contre les accès non autorisés réalisés depuis Internet. En conséquence, les adresses IP du réseau local n’ont besoin d’être univoques qu’au sein de ce réseau et non au niveau mondial. Les adresses IP étant un bien rare, ceci offre des possibilités intéressantes d’économies. Trois plages d’adresses parmi l’espace d’adresses IP disponibles ont donc été réservées aux réseaux locaux : 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 Le premier domaine permet de mettre en place un réseau local très important (comprenant en théorie 16 millions d’ordinateurs, ce qui suffit déjà pour de très grosses entreprises). Le deuxième domaine compte de fait 16 plages d’adresses d’environ 65 000 adresses chacune (par exemple 172.23.0.0 à 172.23.255.255). Le troisième domaine est constitué de 256 petites plages d’adresses (par exemple 192.168.75.0 à 192.168.75.255. La plage d’adresses dans laquelle vous choisissez de configurer votre réseau local n’a pas d’importance : ce système garantit qu’il n’y aura aucun conflit d’adresse avec les "vraies" adresses IP d’Internet.
Linux Livre Page 498 Mardi, 23. septembre 2008 1:05 13
498
LINUX
La plupart du temps, vous souhaiterez pouvoir utiliser librement les fonctionnalités Internet au sein du réseau local (par exemple consulter des pages web). Pour ce faire, vous devrez configurer un ordinateur du réseau local en tant que passerelle vers Internet. Cet ordinateur établit la connexion à Internet (qu’il s’agisse d’une connexion ADSL, RNIS, modem ou autre) et redirige toutes les requêtes Internet du réseau local. La passerelle a en outre la responsabilité de traduire les adresses IP locales en une adresse IP valable à l’extérieur : cette fonction porte le nom de mascarade et est décrite au Chapitre 28. Adresses IP dynamiques
Le fait qu’une adresse IP est obligatoire pour identifier un ordinateur sur le réseau devrait maintenant être clair. Mais d’où l’ordinateur peut-il savoir quelle adresse utiliser ? La solution la plus simple consiste à renseigner explicitement l’adresse IP à la configuration. Sur les petits réseaux locaux, c’est la procédure la plus courante. Le premier ordinateur du réseau se voit par exemple attribuer l’adresse 192.168.0.1, le second 192.168.0.2, etc. L’adresse est enregistrée dans le fichier /etc/hosts. Plus la taille du réseau augmente, et plus cette configuration décentralisée devient problématique. Pour éviter la surcharge de travail afférente, on utilise fréquemment des adresses IP dynamiques. Pour cela, un ordinateur du réseau local doit être configuré en tant que serveur DHCP (Dynamic Host Configuration Protocol). Tous les autres postes du réseau, au lancement de leurs fonctions réseau, prennent contact avec le serveur DHCP et se voient attribuer une adresse IP. Il n’est pas rare de voir un routeur ADSL jouer ce rôle de serveur DHCP. Ceci présente avant tout deux avantages : tout d’abord, l’ensemble du réseau peut être géré de manière centralisée (plutôt que devoir configurer des paramètres sur chaque poste) ; ensuite, la charge de travail d’administration par client tend alors vers zéro. Pour connecter un client au réseau, il n’y a plus besoin que de fournir le nom de machine et d’activer l’option DHCP. Toutes les autres données (adresse IP propre, adresses IP de la passerelle et du DNS, etc.) sont transmises par DHCP. Il existe en outre un troisième avantage qui est toutefois plus intéressant pour les FAI : du fait que les adresses IP sont attribuées de manière dynamique et que tous les ordinateurs ne sont pas connectés simultanément au réseau, le nombre d’adresses IP nécessaires pour répondre aux besoins d’un grand nombre d’utilisateurs est donc inférieur au nombre total de postes. Chaque fois qu’un utilisateur s’identifie auprès de son FAI par modem ou ADSL, il obtient la première adresse disponible à ce moment précis.
Un ordinateur, plusieurs adresses IP
Un ordinateur possède, en règle générale, plusieurs adresses IP ! Si nous n’avons jusqu’à présent parlé que de l’adresse IP, nous impliquions qu’il s’agissait de l’adresse affectée à l’interface du contrôleur Ethernet. C’est donc l’adresse identifiant l’ordinateur au sein du réseau. Cela signifie également, plus précisément, que l’adresse IP est non pas celle de l’ordinateur à proprement parler mais celle de l’interface associée au contrôleur réseau présent dans cet ordinateur. Chaque ordinateur Linux/Unix est par ailleurs accessible par le biais de l’adresse 127.0.0.1 ou du nom localhost. Cette interface loopback, que nous avons déjà mentionnée, est réservée au trafic réseau local. Vous pouvez tester très simplement son bon fonctionnement à l’aide de ping : utilisateur$ ping localhost PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.040 ms
Linux Livre Page 499 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
499
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.041 ms --- localhost ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.040/0.043/0.049/0.006 ms
ping transmet des paquets de données à l’adresse fournie en paramètre et mesure la durée écoulée jusqu’à confirmation de la bonne réception des paquets. ping localhost devrait même fonctionner si votre ordinateur ne possède aucun contrôleur Ethernet ! Enfin, un ordinateur peut également être pourvu de plusieurs contrôleurs réseau. Chaque contrôleur fonctionne alors comme une interface individuelle et possède donc sa propre adresse IP. Les connexions PPP établies par le biais d’un modem ou d’une carte RNIS constituent également des interfaces. Celles-ci se voient attribuer une adresse IP, généralement déterminée par le FAI (il s’agit d’une adresse IP dynamique). Un ordinateur peut être équipé de plusieurs contrôleurs réseau si, par exemple, il doit relier deux portions de réseau situées dans des plages d’adresses différentes. L’ordinateur est alors désigné par le terme de routeur. Un exemple en est la passerelle Internet d’un réseau. Tant que la connexion Internet est établie, la passerelle possède au moins trois adresses IP : l’adresse loopback 127.0.0.1, une adresse au sein du réseau local et enfin une adresse Internet globale attribuée par un FAI (pour être tout à fait exact, une passerelle assure les fonctionnalités non pas de routage mais uniquement de mascarade ; cette différence subtile est décrite plus précisément au Chapitre 28). Configuration statique de l’adresse IP
Lorsqu’il n’y a pas de serveur DHCP sur un réseau local, vous devez paramétrer de façon statique l’adresse IP de l’interface lors de la configuration réseau. Mais quelle adresse IP devez-vous utiliser ? • Si votre ordinateur ne fait pas partie d’un réseau local : en dehors de l’adresse 127.0.0.1 pour l’interface loopback, vous n’avez pas besoin de la moindre adresse IP (ceci vaut même si cet ordinateur doit être ultérieurement connecté à Internet par une liaison modem/ RNIS/ADSL). Votre seule tâche de configuration consiste donc à fournir les noms d’hôte et de domaine. • Si votre ordinateur fait partie d’un réseau local existant : l’adresse IP doit se trouver dans la plage d’adresses valides pour ce réseau (par exemple 192.168.0.*) et doit y être unique. • Si votre ordinateur doit être le premier d’un nouveau réseau local : choisissez une plage d’adresses privée (par exemple 192.168.0.*) et affectez à l’ordinateur une adresse IP de cette plage.
IPv6 Jusqu’à présent, je n’ai fondé mes explications que sur le protocole IP dans sa version 4 (IPv4). Internet, dans sa forme actuelle et dans son ensemble, est également basé sur cette version du protocole IP. Toutefois, depuis plusieurs années déjà se dessine une pénurie d’adresses IP. De surcroît, ce protocole présente quelques lacunes fonctionnelles qui le
Linux Livre Page 500 Mardi, 23. septembre 2008 1:05 13
500
LINUX
rendent peu adapté à de nombreuses applications actuelles et à venir (par exemple la téléphonie sur IP, le streaming audio et vidéo). Adresses IPv6
La version 6 du protocole IP (IPv6), lorsqu’elle sera mise en place, devrait combler ces lacunes. Le changement le plus marquant et le plus visible pour les administrateurs est sans doute la longueur des adresses, qui de 32 bits avec IPv4 passera à 128 bits avec IPv6. Les adresses IPv6 devraient donc être rédigées sur le modèle suivant : 121.57.242.17.122.58.243.18.19.123.59.20.244.124.60.245
Il est toutefois manifeste que cette écriture n’est pas utilisable. Pour économiser de la place, les adresses IPv6 sont donc présentées sous la forme de groupes (jusqu’à huit) de chiffres hexadécimaux, séparés par un caractère deux-points ":", comme dans l’exemple suivant : abcd:17:2ff:12aa:2222:783:dd:1234
Pour gagner encore en lisibilité, on abrège une succession de plusieurs groupes de valeur nulle en un double caractère deux-points "::" : abcd:17:0:0:0:0:dd:1234 -> abcd:17::dd:1234 0:0:0:0:0:783:dd:1234 -> ::783:dd:1234
Pour localhost, il existe une écriture encore plus compacte : ::1. Lorsque l’on convertit des adresses IPv4 en adresses IPv6, les six premiers groupes sont constitués de zéros. Les deux derniers groupes peuvent également être écrits sous la forme décimale bien connue : Adresse IPv4 : ::110.111.112.113 Dans le cadre de l’adoption d’IPv6, il sera nécessaire pendant plusieurs années d’utiliser conjointement IPv4 et IPv6. Il existe plusieurs méthodes pour faire transiter des paquets IPv6 sur des réseaux IPv4 (et vice versa). IPv6 et Linux
Le noyau Linux gère en principe IPv6 depuis la version 2.2 ; en pratique, la prise en charge d’IPv6 n’est mûre que depuis le noyau 2.6. Une majorité des applications réseau sont également devenues compatibles IPv6 entre-temps. Du fait qu’IPv6 ne s’est pas encore couramment établi dans l’espace européen, les informations de cet ouvrage ne s’appliquent pour le moment qu’à IPv4. Les pages suivantes constituent un bon point de départ pour rechercher des informations supplémentaires sur IPv6 et sur les particularités de Linux : http://www.ipv6.org/ ; http://www.ipv6forum.com/ ; http://www.faqs.org/rfcs/rfc1752.html
http://fr.wikipedia.org/wiki/IPv6 ;
26.2 Activer manuellement un contrôleur LAN Le contrôleur réseau ou LAN est en règle générale une puce sur la carte mère de votre ordinateur qui gère les fonctionnalités Ethernet. Le contrôleur peut également se trouver sur une carte réseau propre (PCI, ISA, PCMCIA). Les cartes réseau sont pratiques pour doter un vieil ordinateur de fonctionnalités réseau ou étendre les capacités d’un ordinateur moderne en lui ajoutant une interface réseau supplémentaire.
Linux Livre Page 501 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
501
Indépendamment de la façon dont les fonctionnalités réseau sont physiquement mises en œuvre, je ne parlerai dans la suite que de contrôleur réseau. Si vous avez déjà configuré le contrôleur réseau, c’est votre distribution qui se charge, à l’amorçage, de sa mise en service. Cette section vous montre comment se déroule l’initialisation d’un contrôleur réseau et comment vous pouvez activer manuellement l’interface réseau. L’objectif de cette section est non pas de vous faire configurer à l’avenir vos interfaces réseau à la main, mais de vous faire maîtriser les bases du fonctionnement. Reconnaissance du matériel
La première étape consiste à vérifier que le module noyau correspondant à votre contrôleur réseau est bien chargé. Fréquemment, le noyau y parvient automatiquement. Dans ce cas, la commande ifconfig eth0 up ne doit renvoyer aucun message d’erreur (voir ci-après). Si vous rencontrez des problèmes à ce stade, vous devez identifier quel contrôleur réseau est utilisé dans votre ordinateur et quel module noyau en est responsable. Dans de tels cas, lspci vous renvoie les premières informations utiles : root# lspci | grep -i net 02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03) ...
Ce portable utilise donc le contrôleur Ethernet Gigabit 82540EP d’Intel. La seconde étape consiste alors à affecter un pilote approprié au contrôleur (c’est-à-dire un module noyau issu du répertoire /lib/modules/n.n/net/*). Une recherche Internet sur les termes linux kernel module 82540EP conduit rapidement au module noyau approprié, e1000. root# modinfo e1000 filename: /lib/modules/2.6.17-10-generic/kernel/drivers/net/e1000/ e1000.ko author: Intel Corporation, description: Intel(R) PRO/1000 Network Driver license: GPL version: 7.1.9-k4 ...
La commande modprobe vous permet de charger le module correspondant : root# modprobe e1000
dmesg montre si des erreurs surviennent au chargement du module (ce qui n’est pas le cas ici). L’avertissement link is not ready indique uniquement que l’interface n’est pour le moment pas active faute de configuration adéquate. root# dmesg -c ... Intel(R) PRO/1000 Network Driver - version 7.1.9-k4 Copyright (c) 1999-2006 Intel Corporation. ACPI: PCI Interrupt 0000:02:01.0[A] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11 e1000: 0000:02:01.0: e1000_probe: (PCI:33MHz:32-bit) 00:11:25:32:4f:5d e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection ADDRCONF(NETDEV_UP): eth0: link is not ready
Linux Livre Page 502 Mardi, 23. septembre 2008 1:05 13
502
LINUX
Pour que ce module soit, à l’avenir, automatiquement chargé, enregistrez dans le fichier de configuration des modules (voir Chapitre 25) la correspondance entre l’interface eth0 et le module noyau 8139too : # Fichier de configuration des modules /etc/modprobe.conf ou /etc/modprobe.d/aliases alias eth0 e1000 Configuration des paramètres de contrôleur
Activation de l’interface
Dans tous les cas, le contrôleur réseau identifie lui-même les paramètres obligatoires pour communiquer au sein du réseau. Ce n’est que dans de très rares cas qu’il devient nécessaire de configurer explicitement des paramètres tels que la vitesse, le mode duplex, etc. Dans de tels cas, la commande ethtool pourra vous être utile (voir man ethtool). Vous pouvez enfin activer l’interface réseau à l’aide d’ifconfig : root# ifconfig eth0 up
Si aucun module n’est chargé ou que ce ne soit pas le bon, le message d’erreur suivant apparaît alors : eth0: unknown interface: No such device. dmesg vous donne plus de détails sur la réussite ou l’échec de l’opération : root# dmesg -c e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready eth0: no IPv6 routers present Cartes réseau ISA
Avec les cartes ISA, qui commencent à dater, il peut y avoir une complication supplémentaire dans certaines circonstances : le module n’est, en règle générale, pas en mesure d’identifier le domaine d’entrées/sorties de la carte ou la bonne interruption. Cette information doit être saisie manuellement dans modprobe.conf ou dans un fichier du répertoire /etc/ modprobe.d/, et ce sous la forme d’une ligne alias. Pour une carte ISA compatible NE-2000, les lignes correspondantes ont l’allure suivante : alias eth0 ne options ne io=0x300
Linux peut aussi gérer plusieurs cartes réseau simultanément (tant que cela ne génère pas de conflit entre domaines d’adresses d’entrées/sorties ou entre interruptions). Voici là encore un exemple : alias eth0 ne alias eth1 ne options ne io=0x300,0x320 irq=5,7
Vous trouverez plus d’informations sur ce sujet dans les HOW-TO dédiés au matériel et à Ethernet, ainsi que sur le site web : http://www.scyld.com/network/ Configuration de l’interface
Pour configurer l’interface réseau, fournissez son nom (eth0), ainsi que l’adresse IP souhaitée, à la commande ifconfig. Si vous exécutez une seconde fois la commande sans fournir cette fois d’adresse IP, vous obtenez toutes les informations connues relatives à l’interface réseau : root# ifconfig eth0 192.168.0.2 root# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:11:25:32:4F:5D
Linux Livre Page 503 Mardi, 23. septembre 2008 1:05 13
503
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
inet adr:192.168.0.2 Bcast:192.168.0.255 Masque:255.255.255.0 adr inet6: fe80::211:25ff:fe32:4f5d/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:82 errors:0 dropped:0 overruns:0 frame:0 TX packets:49 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 file transmission:100 RX bytes:9252 (9.0 KiB) TX bytes:7732 (7.5 KiB) Interruption:17 Adresse de base:0x8000
Vous pouvez alors vérifier avec la commande ping si vous parvenez à contacter d’autres ordinateurs du réseau local. L’option -c 2 vous permet d’envoyer exactement deux paquets ping : root# ping -c 2 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=2.95 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.169 ms --- 192.168.0.1 ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.169/1.560/2.952/1.392 ms Configuration du serveur de noms
La commande ping ne fonctionne pour le moment que si vous lui fournissez directement une adresse IP. Pour pouvoir lui passer aussi des noms de machine, le fichier /etc/ resolv.conf doit contenir l’adresse IP d’un serveur de noms. L’exemple qui suit part du principe que le réseau local dispose de son propre serveur de noms, d’adresse IP 192.168.0.1. Le serveur de noms peut toutefois être extérieur au réseau et, par exemple, être mis à disposition par le FAI (vous trouverez un peu plus loin dans ce chapitre des informations sur ce fichier de configuration). # /etc/resolv.conv nameserver 192.168.0.1
Passerelle par défaut
À l’heure actuelle, vous ne pouvez envoyer des paquets qu’à destination du réseau local. Pour permettre également des contacts avec l’extérieur (en particulier avec Internet), l’ordinateur doit savoir où envoyer ces paquets. Vous devez pour cela fournir l’adresse de la passerelle Internet de votre réseau, à l’aide de la commande route. Dans l’exemple qui suit, l’adresse IP de la passerelle est 192.168.0.1 : root# route add default gw 192.168.0.1 root# route -n Kernel IP routing table Destination Gateway Genmask 192.168.0.0 0.0.0.0 255.255.255.0 0.0.0.0 192.168.0.1 0.0.0.0
Flags Metric Ref Use Iface U 0 0 0 eth0 UG 0 0 0 eth0
Il devrait maintenant être possible d’envoyer des paquets vers toute adresse située sur Internet : root# ping -c 2 yahoo.com PING yahoo.com (216.109.112.135) 56(84) bytes of data.
Linux Livre Page 504 Mardi, 23. septembre 2008 1:05 13
504
LINUX
64 bytes time=116 64 bytes time=115
from w2.rc.vip.dcn.yahoo.com (216.109.112.135): icmp_seq=1 ttl=52 ms from w2.rc.vip.dcn.yahoo.com (216.109.112.135): icmp_seq=2 ttl=52 ms
--- yahoo.com ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 115.397/115.807/116.217/0.410 ms Récupérer les informations par DHCP
S’il y a sur le réseau un serveur DHCP, vous pouvez vous appuyer dessus pour la configuration. Une fois l’interface réseau activée (ifconfig eth0 up sans autre paramètre), exécutez sous Debian et Ubuntu la commande dhclient3 : root# dhclient3 eth0 ... Listening on LPF/eth0/00:11:25:32:4f:5d Sending on LPF/eth0/00:11:25:32:4f:5d Sending on Socket/fallback DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 DHCPOFFER from 192.168.0.1 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.1 bound to 192.168.0.15 -- renewal in 36624 seconds.
Sur SUSE, vous parviendrez au même résultat avec la commande dhcpd : root# dhcpcd eth0
Désactivation de l’interface
Red Hat ou Fedora reposent, comme Debian et Ubuntu, sur dhclient pour la configuration du client DHCP. Toutefois, la commande y est préconfigurée de telle sorte qu’un appel manuel ne fonctionne pas. dhclient ne peut être utilisé sur ces distributions que dans le cadre des scripts Init-V, pour une initialisation automatisée du réseau. Pour la configuration DHCP, Knoppix utilise le programme pump, piloté par le biais du fichier /etc/pump.conf. Il est possible de l’appeler manuellement sous la forme pump -i eth0. pump -s renvoie les informations d’état relatives aux interfaces configurées par DHCP. Pour désactiver une interface réseau, utilisez la commande ifconfig avec l’option down : root# ifconfig eth0 down
Gestion de plusieurs contrôleurs
Il n’est maintenant pas rare de rencontrer des ordinateurs dotés de plusieurs contrôleurs réseau. La quasi-totalité des portables actuels possède un contrôleur Ethernet ainsi qu’un contrôleur Wi-Fi (dont l’interface est gérée, en interne à Linux, de façon strictement semblable à une interface Ethernet ; plus de détails sur ce sujet un peu plus loin dans ce chapitre). Les serveurs réseau nécessitent également plusieurs contrôleurs : c’est à travers un premier contrôleur qu’a lieu la connexion à Internet, un deuxième gère la connexion au réseau local, un troisième peut également gérer le Wi-Fi, etc. Linux n’a, en principe, aucun problème à gérer plusieurs contrôleurs et à les intégrer dans la configuration réseau. Le système udev est chargé de générer une correspondance cohérente entre le matériel (les contrôleurs) et les noms des interfaces associées (eth0, eth1, etc.), de sorte que chaque contrôleur se voie systématiquement affecter le même nom d’interface (voir un peu plus loin).
Linux Livre Page 505 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
505
26.3 Fichiers de configuration du réseau local En règle générale, il vaut mieux éviter de modifier directement les fichiers de configuration du réseau local et faire appel aux outils de configuration de votre distribution (ou ceux de Gnome ou KDE, si votre distribution ne prévoit aucun outil de configuration de ce type). Après avoir modifié la configuration réseau, vous devrez fermer votre session Gnome ou KDE et en ouvrir une nouvelle ! Gnome
network-admin
KDE
Centre de configuration > Internet et Réseau > Paramètres réseau
Debian
Outils Gnome ou KDE
Red Hat, Fedora
system-config-network = neat
SUSE
YaST (Périphériques réseau > Carte réseau)
Ubuntu/Kubuntu
Outils Gnome ou KDE
Cette section décrit les principaux fichiers de configuration pour connecter un ordinateur à un réseau local. Malheureusement, il n’existe de règles unifiées pour les principales distributions que pour une partie de ces fichiers. Pour les autres fichiers, qui concernent principalement les interfaces et le contrôleur, je présenterai ici les variantes Debian/Ubuntu, Red Hat/Fedora et SUSE (testé avec Ubuntu 7.04, Fedora 7 et OpenSUSE 10.2). Voici quelques éléments valables pour tous les exemples de cette section : l’ordinateur à configurer s’appelle uranus, son domaine, sol. Les autres ordinateurs du réseau local s’appellent jupiter, saturne, etc. Le réseau local utilise des adresses de la plage 192.168.0.*. L’ordinateur local possède l’adresse IP 192.168.0.2. La passerelle du réseau local a l’IP 192.168.0.1 et elle héberge également un serveur de noms. Les noms et adresses ne sont bien entendu que des exemples.
Configuration de base /etc/hosts
Le fichier /etc/hosts contient une liste d’adresses IP connues et des noms de machine associés. Le fichier doit, dans tous les cas, contenir les données relatives à l’interface loopback, dont l’entrée correspondante a en général l’allure suivante : # /etc/hosts 127.0.0.1 ...
localhost
# Interface loopback de l’ordinateur
Sur la plupart des distributions Linux, au lieu de l’écriture 127.0.0.1, on trouve également l’écriture IPv6 ::1. Sur Red Hat et Fedora, la ligne localhost comprend en outre l’entrée localhost.localdomain. Cette ligne ne doit pas être modifiée : # /etc/hosts sur Red Hat und Fedora ::1 localhost.localdomain localhost ...
Linux Livre Page 506 Mardi, 23. septembre 2008 1:05 13
506
LINUX
Suivant la distribution, le fichier hosts présente également une entrée pour l’ordinateur local. Lorsque son contrôleur réseau est configuré avec une adresse IP statique, celle-ci est renseignée. Lorsque le contrôleur réseau obtient son adresse dynamiquement par DHCP, c’est la pseudo-adresse 127.0.0.1 qui est alors renseignée (par exemple sur Debian et Ubuntu), ou l’entrée n’apparaît pas du tout (sur Red Hat et Fedora). # /etc/hosts (suite) ... 192.168.0.2 uranus.sol uranus
# adresse IP statique de l’ordinateur local
Si vous souhaitez pouvoir dialoguer avec d’autres ordinateurs du réseau en utilisant leurs noms, en l’absence d’un serveur de noms sur le réseau local (voir chapitre suivant), vous devrez renseigner leurs noms dans /etc/hosts. Vous pourrez alors exécuter la commande ping saturne au lieu de ping 192.168.0.13 pour tester votre connexion à l’ordinateur saturne : # /etc/hosts (suite) ... 192.168.0.1 mars.sol 192.168.0.2 uranus.sol 192.168.0.13 saturne.sol
mars uranus saturne
# Adresses IP et noms des autres # ordinateurs sur le réseau
Des informations similaires doivent être saisies dans les fichiers /etc/hosts de tous les ordinateurs du réseau local. Plus celui-ci compte de postes, plus la gestion de ces nombreux fichiers /etc/hosts devient fastidieuse. Pour cette raison, il est conseillé, sur les réseaux les plus étendus, de mettre en place un serveur de noms sur un ordinateur (voir chapitre suivant). Cet ordinateur (et donc le serveur de noms) connaît les noms de tous les ordinateurs du réseau. Les ordinateurs du réseau local peuvent contacter le serveur de noms pour en obtenir ces informations. /etc/hosts peut alors être réduit à sa plus simple expression, ne comprenant que quelques lignes pour localhost. Toutefois, cela nécessite de configurer correctement le fichier /etc/resolv.conf (voir un peu plus loin dans ce chapitre). Sur de nombreuses distributions, /etc/hosts contient en outre quelques adresses IPv6 particulières comme fe00::0. Ces adresses n’ont toutefois de sens que si vous utilisez le nouveau protocole IPv6. /etc/host.conf
Le fichier /etc/host.conf indique comment TCP/IP doit identifier les adresses IP inconnues. Suivant le fichier d’exemple ci-après, on commence par analyser le fichier /etc/hosts (motclé hosts) avant d’interroger le serveur de noms renseigné dans /etc/resolv.conf (mot-clé bind). La seconde ligne autorise l’affectation de plusieurs adresses IP à un même nom d’hôte renseigné dans /etc/hosts. Ce fichier existe dans la quasi-totalité des distributions sous la forme présentée ici et il ne doit pas être modifié. # /etc/host.conf order hosts, bind multi on
/etc/ resolv.conf
Le fichier /etc/resolv.conf pilote la façon dont sont identifiées les adresses IP correspondant à des noms de réseau ou d’hôtes inconnus (inconnus signifiant ici que les noms ne sont pas définis dans hosts.conf). Les mots-clés domain et search permettent de compléter les noms d’hôtes (par exemple jupiter) avec le nom de domaine (pour obtenir par exemple jupiter.sol). Ceci améliore le confort
Linux Livre Page 507 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
507
d’utilisation car les noms d’hôtes peuvent alors être fournis sous forme abrégée. search permet de renseigner plusieurs noms de domaines (avec domain, un seul peut être fourni) : pour cette raison, le nom domain a la préséance sur les noms search et il est testé en priorité. Si, comme ici, un seul nom de domaine est renseigné, la ligne domain peut être totalement ignorée. Les entrées les plus importantes de /etc/resolv.conf sont précédées du mot-clé nameserver : ceci permet de renseigner jusqu’à trois adresses IP de serveurs de noms. On interroge toujours ces serveurs pour identifier l’adresse IP correspondant à un nom de machine inconnu (par exemple www.yahoo.com). Il est donc absolument indispensable de renseigner un serveur de noms pour pouvoir résoudre les adresses IP d’URL Internet. En tant que particulier, vous obtenez les adresses IP d’un serveur DNS de votre FAI. Dans les réseaux locaux de plus grande envergure, il y a au moins un serveur de noms propre (voir plus haut) directement connecté au réseau : demandez-en l’adresse IP à votre administrateur système ! # /etc/resolv.conf domain sol search sol nameserver 192.92.138.35 nameserver 195.3.96.67
# # # #
Les Les DNS DNS
noms d’hôtes s’appliquent à .sol noms d’hôtes s’appliquent à .sol primaire secondaire (en cas de panne du primaire)
Si votre réseau comprend un serveur de noms local, renseignez-en l’adresse IP : # /etc/resolv.conf domain sol search sol nameserver 192.168.0.1
# Les noms d’hôtes s’appliquent à .sol # Les noms d’hôtes s’appliquent à .sol # Adresse IP d’un serveur de noms local
Suivant la configuration réseau, le fichier resolv.conf est généré dynamiquement :
Protéger resolv.conf de toute modification
• À l’établissement d’une connexion Internet par PPP (modem, ADSL ou RNIS), le script gérant la connexion insère automatiquement l’adresse du serveur de noms nameserver de votre FAI dans le fichier /etc/resolv.conf. • Lorsque votre connexion au réseau local (LAN, Wi-Fi) est configurée par DHCP, le script gérant la connexion insère les adresses des serveurs de noms transmises par le serveur DHCP. L’adaptation automatique du fichier resolv.conf est, dans la plupart des cas, la solution la plus pratique. Si toutefois vous ne souhaitez pas l’utiliser, vous pouvez empêcher les modifications automatiques dans la plupart des cas. Sur Debian et Ubuntu, pour les connexions PPP, vous devez supprimer du fichier /etc/ppp/ peers/nom le mot-clé usepeerdns. Pour les interfaces réseau configurées par DHCP, cela dépend du client DHCP installé. S’il s’agit de pump, insérez les lignes suivantes dans le fichier pump.conf : # /etc/pump.conf # empêcher les modifications du fichier /etc/resolv.conf # à la configuration d’eth0 par DHCP (Debian) device eth0 { nodns }
Linux Livre Page 508 Mardi, 23. septembre 2008 1:05 13
508
LINUX
Si c’est dhcp3-client qui est installé, vous devez modifier son fichier de configuration dhclient.conf : # /etc/dhcp3/dhclient.conf ... supersede domain-name "sol"; prepend domain-name-servers 192.168.0.1;
Sur Red Hat ou Fedora, vous devrez modifier le fichier ifcfg-xxx correspondant à l’interface réseau souhaitée : # /etc/sysconfig/network-scripts/ifcfg-xxxx (Red Hat, Fedora) PEERDNS=no
Sur SUSE, deux fichiers de configuration sont concernés : # /etc/sysconfig/network/config pour Modem, ISDN, ADSL (SUSE) MODIFY_RESOLV_CONF_DYNAMICALLY="no" # /etc/sysconfig/network/dhcp für DHCP-Clients (SUSE) DHCLIENT_MODIFY_RESOLV_CONF="no" Configuration de la passerelle
Il n’existe pas une unique manière ou un seul fichier pour configurer une passerelle. Sur un réseau local, l’adresse de la passerelle est en général fournie par DHCP. Dans le cadre d’une configuration statique, les fichiers concernés dépendent de la distribution. Sur Debian et Ubuntu, le fichier /etc/network/interfaces décrit toutes les interfaces réseau. Dans le cadre d’interfaces configurées de façon statique, la passerelle est indiquée par le mot-clé gateway : # /etc/network/interfaces (Debian, Ubuntu) ... iface eth0 inet static address 192.168.0.2 netmask 255.255.255.0 gateway 192.168.0.1
Sur Red Hat et Fedora, le fichier de configuration de l’interface réseau contient la variable GATEWAY : # /etc/sysconfig/network-scripts/ifcfg-xxxx (Red Hat, Fedora) GATEWAY=192.168.0.1
Sur SUSE, la configuration s’effectue de façon centralisée dans le fichier suivant : # /etc/sysconfig/network/routes (SUSE) default 192.168.0.1 - -
Le paramétrage effectif de la passerelle s’effectue de la même manière sur toutes les distributions, par le biais de la commande route. Les deux commandes qui suivent vous montrent comment insérer manuellement la passerelle 192.168.0.1 dans la table de routage puis comment l’en supprimer : root# route add default gw 192.168.0.1 root# route del default gw 192.168.0.1 Configuration du nom d’hôte
Vous pouvez afficher le nom d’hôte courant par le biais de la commande hostname. Si ce nom d’hôte n’est pas paramétré par DHCP, la configuration s’effectue sur Debian et Ubuntu par
Linux Livre Page 509 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
509
le biais du fichier /etc/hostname, sur SUSE par /etc/HOSTNAME. Sur Red Hat et Fedora, le nom d’hôte est paramétré par la variable hostname dans le fichier /etc/sysconfig/network. Veillez à bien assurer la cohérence avec /etc/hosts, au cas où ce fichier contienne une ligne indiquant le nom d’hôte de l’ordinateur.
Correspondance entre contrôleur et interface réseau
Fedora 7
Tant qu’il n’y a qu’un seul contrôleur Ethernet, les choses sont vraiment simples : ce contrôleur reçoit le nom d’interface eth0. S’il y a plusieurs contrôleurs, il est essentiel que ceux-ci reçoivent toujours le même nom d’interface, indépendamment de leur ordre d’activation. Par le passé, cela a fréquemment occasionné des problèmes. En règle générale, les noms d’interfaces étaient attribués dans l’ordre d’activation : suivant l’ordre dans lequel étaient chargés les modules noyau pour les contrôleurs réseau, il n’était pas rare de finir dans un état de chaos. Sur la plupart des distributions Linux actuelles, c’est le système udev qui est chargé de la correspondance entre contrôleurs réseau et noms d’interface (voir également Chapitre 13). Toutefois, la configuration d’udev varie d’une distribution à l’autre. Du fait qu’aucun standard commun ne s’est pour le moment établi, j’ai choisi de décrire ici trois distributions particulières. Sur Fedora 7, le système udev ne présente pas encore de règles pour la correspondance des interfaces réseau. Au lieu de cela, /etc/modprobe.conf pilote l’affectation des modules noyau aux interfaces. Cette méthode est certes simple, mais également moins fiable que les variantes udev d’autres distributions. # /etc/modprobe.conf (Fedora) alias eth0 skge alias eth1 sky2 ...
OpenSUSE 10.2
Sur OpenSUSE 10.2, c’est la règle udev 30-net_persistent_names.rules qui gère le nommage des interfaces réseau. Ce fichier peut, par exemple, avoir l’allure suivante : # /udev/rules.d/30-net_persistent_names.rules (SUSE) SUBSYSTEM=="net", ACTION=="add", SYSFS{address}=="00:16:17:cd:c3:81", \ IMPORT="/lib/udev/rename_netiface %k eth0" SUBSYSTEM=="net", ACTION=="add", SYSFS{address}=="00:4f:4e:0f:8e:a0", \ IMPORT="/lib/udev/rename_netiface %k eth1" SUBSYSTEM=="net", ACTION=="add", SYSFS{address}=="00:14:6c:8e:d9:71", \ IMPORT="/lib/udev/rename_netiface %k eth2"
Lorsque le système udev identifie un nouveau contrôleur réseau, une nouvelle règle lui correspondant est insérée dans le fichier, ce dont le fichier de règles udev 31-network.rules est responsable : il délègue ensuite cette tâche au script /lib/udev/rename_netiface. Si vous souhaitez désactiver le mécanisme de nommage des interfaces, modifiez le contenu du fichier de configuration suivant : # /etc/sysconfig/network/config ... FORCE_PERSISTENT_NAMES=no
Linux Livre Page 510 Mardi, 23. septembre 2008 1:05 13
510 Ubuntu 7.04
LINUX
Sur Ubuntu, c’est le fichier /etc/iftab qui pilote la correspondance entre contrôleur réseau et nom d’interface. iftab est analysé par le fichier de règles udev 25-iftab.rules. Pour identifier un contrôleur dans iftab, on utilise l’adresse MAC. Le fichier peut avoir l’allure suivante : # /etc/iftab eth0 mac 00:0c:f1:58:f9:93 arp 1 eth1 mac 00:11:25:32:4f:5d arp 1
Configuration et initialisation des interfaces réseau (Debian et Ubuntu) Cette section décrit dans quels fichiers sont configurées les interfaces réseau et quels scripts sont responsables de l’initialisation automatique de ces interfaces à l’amorçage. Comme ces détails dépendent fortement de la configuration, nous nous focaliserons ici sur Debian et Ubuntu. Les deux sections suivantes fourniront les renseignements correspondant à Red Hat/Fedora et à SUSE. /etc/network/ interfaces
Sur Debian et Ubuntu, c’est le fichier /etc/network/interfaces qui contient l’ensemble des paramètres courants pour toutes les interfaces réseau actives (loopback, LAN, Wi-Fi, etc.). La ligne auto indique quelles interfaces doivent être activées à l’amorçage. La ligne iface introduit la description d’une interface. Vous obtiendrez plus de détails sur la structure du fichier à l’aide de la commande man interfaces. L’exemple suivant décrit un ordinateur doté de deux interfaces réseau locales : eth0 est configuré par DHCP, tandis qu’eth1 est configuré de façon statique. Les options d’interface ont été indentées pour donner plus de lisibilité au fichier : # /etc/network/interfaces auto lo eth0 eth1 eth2 iface lo inet loopback iface eth0 inet dhcp iface eth1 inet static address 172.16.0.1 netmask 255.255.255.0
Initialisation
Le script InitV /etc/init.d/networking, exécuté dès l’initialisation du système (lien /etc/ rcS.d/S40networking), gère l’initialisation automatique des interfaces réseau à l’amorçage de l’ordinateur. C’est la commande spécifique à Debian ifup (paquetage ifupdown) qui assure le travail effectif. ifup -a analyse /etc/network/interfaces et active toutes les interfaces auto. Si les interfaces sont configurées par DHCP, ifup fait appel à la commande dhclient pour transmettre et analyser les données DHCP. C’est le fichier /etc/dhcp3/dhclient.conf qui est responsable de la configuration. Si vous possédez les droits d’administration, vous pouvez aussi utiliser manuellement ifup : ifup nom active l’interface souhaitée, ifdown nom la désactive.
Linux Livre Page 511 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
511
Configuration et initialisation des interfaces réseau (Red Hat, Fedora) /etc/sysconfig/ networkscripts/ifcfgxxx
Chaque interface réseau est configurée par le biais de son propre fichier ifcfg-nom (où nom désigne l’interface), hébergé dans le répertoire /etc/sysconfig/network-scripts. Les lignes qui suivent sont extraites d’un fichier de configuration typique pour un contrôleur Ethernet configuré par DHCP. # /etc/sysconfig/network-scripts/ifcfg-eth0 # Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller DEVICE=eth0 BOOTPROTO=dhcp HWADDR=00:17:31:67:BA:40 ONBOOT=yes TYPE=Ethernet USERCTL=yes IPV6INIT=no PEERDNS=yes
Le fichier suivant contient une description exhaustive de la plupart des fichiers de configuration réseau et des variables qu’ils contiennent : /usr/share/doc/initscripts-n.n/sysconfig.txt
Après avoir modifié la configuration réseau, il est fréquemment recommandé de redémarrer complètement les fonctionnalités réseau : root# /etc/init.d/network restart Initialisation
Le script InitV /etc/init.d/network gère l’initialisation de toutes les interfaces réseau configurées. Le script network appelle, pour chaque interface, le script spécifique à Red Hat ifup. Celui-ci fait appel à différentes fonctions shell définies dans le fichier network-functions. En outre, des fichiers additionnels sont appelés suivant le type d’interface (ifup-eth, ifup-ppp, ifup-wireless). Tous ces fichiers se trouvent dans le répertoire /etc/sysconfig/networkscripts. Si les interfaces réseau doivent accéder à un serveur DHCP (BOOTPROTO=dhcp dans le fichier de configuration), la commande dhclient est appelée à cet effet. De façon analogue aux scripts ifup, il existe également des scripts ifdown pour désactiver les interfaces réseau.
usernetctl
L’utilisateur root peut activer et désactiver confortablement une interface réseau à l’aide de la commande spécifique à Red Hat usernetctl : root# usernetctl eth0 up root# usernetctl eth0 down
Les utilisateurs usuels peuvent également utiliser cette commande s’ils en fournissent le chemin complet (/usr/sbin/usernetctl). C’est le paramètre USERCTL=yes/no, du fichier de configuration ifcfg-interface, qui détermine s’ils sont autorisés à modifier l’état d’une connexion réseau.
Linux Livre Page 512 Mardi, 23. septembre 2008 1:05 13
512
LINUX
Configuration et initialisation des interfaces réseau (SUSE) /etc/sysconfig/ network/ifcfgxxx
Pour chaque interface réseau, le répertoire /etc/sysconfig/network présente un fichier de configuration dont le nom est formé à partir du type d’interface et, pour les contrôleurs Ethernet, de l’adresse MAC. Les lignes qui suivent illustrent un fichier de configuration typique : # /etc/sysconfig/network/ifcfg-eth-id-00:14:6c:8e:d9:71 BOOTPROTO=’static’ BROADCAST=’’ ETHTOOL_OPTIONS=’’ IPADDR=’192.168.0.1’ MTU=’’ NAME=’Netgear RTL-8169 Gigabit Ethernet’ NETMASK=’255.255.255.0’ NETWORK=’’ REMOTE_IPADDR=’’ STARTMODE=’auto’ ...
Les fichiers config, dhcp et routes du répertoire /etc/sysconfig/network contiennent divers paramètres réseau généraux. La page de manuel d’ifup, ainsi que le fichier suivant, vous donneront des informations détaillées quant à la configuration réseau sur SUSE : /usr/share/doc/packages/sysconfig/Network Initialisation
Le script InitV /etc/init.d/network est également sur SUSE le point d’entrée pour l’initialisation des interfaces réseau. network démarre aussi bien l’interface loopback pour localhost que toutes les interfaces réseau configurées. Le script spécifique à SUSE /sbin/ifup est prévu pour l’activation d’interfaces individuelles. Même si le nom de ce script est identique sur Debian, Fedora, Red Hat, Ubuntu et SUSE, le code sous-jacent est différent dans chaque cas ! De manière analogue à ifup, il existe également des scripts ifstatus et ifdown permettant respectivement d’obtenir l’état d’une interface réseau ou de la désactiver. Pour les interfaces configurées par DHCP, ifrenew permet de relire les données DHCP. Suivant le type d’interface, ifup appelle l’un des scripts additionnels ifup-ppp, ifup-wireless, etc. Diverses fonctions communes sont hébergées dans le fichier functions. Tous ces fichiers se trouvent dans le répertoire /etc/sysconfig/network/scripts. Si l’interface réseau doit faire appel à un serveur DHCP (BOOTPROTO=dhcp dans le fichier de configuration), dhcpd se charge de transmettre et d’analyser les données DHCP.
26.4 Bases sur le Wi-Fi Pour décrire les réseaux sans fil, on utilise des abréviations diverses. La plus courante en français est sans conteste Wi-Fi (Wireless Fidelity). On trouve également l’acronyme WLAN (Wireless Local Area Network), essentiellement dans les documents anglophones.
Linux Livre Page 513 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
513
Standards, glossaire
Standards
Brut/net
Cette section vise à présenter brièvement la terminologie Wi-Fi. Si vous vous êtes déjà familiarisé avec les bases des réseaux sans fil, vous pouvez passer aux sections suivantes, qui abordent de plus près les détails spécifiques à Linux concernant le Wi-Fi. Les standards Wi-Fi sont nombreux : ils sont définis par l’IEEE (Institute of Electrical and Electronics Engineers) et commencent tous par le nombre 802.11. La lettre qui vient compléter cette référence indique la succession chronologique des nouvelles versions ou variantes du standard. La liste qui suit énumère quelques-uns des standards Wi-Fi : • 802.11. Le premier standard 802.11 définissait la fréquence d’émission à 2,4 GHz. Le débit brut maximal n’était toutefois que de 2 Mbits/s. Ce standard n’a aujourd’hui plus cours du fait de cette vitesse très limitée. • 802.11a. Avec ce standard, la fréquence d’émission est définie à 5,2 GHz et le débit brut peut atteindre 54 Mbits/s. Toutefois, il n’a été jusqu’à présent adopté qu’aux États-Unis. En Europe, le standard 802.11a n’est autorisé qu’avec une puissance d’émission beaucoup plus réduite qu’aux États-Unis (dans plusieurs pays, l’utilisation de matériel 802.11a est même totalement interdite). Il présente en outre l’inconvénient d’être incompatible avec les standards 802.11b et 802.11g, beaucoup plus répandus, ainsi que d’avoir une portée limitée. • 802.11b. Ce standard, défini depuis 1999, est jusqu’à maintenant le dénominateur commun du monde Wi-Fi. Des millions de composants Wi-Fi sont basés sur ce standard ou sont compatibles avec. Le matériel 802.11b émet à une fréquence de 2,4 GHz. Le débit brut n’atteint toutefois que 11 MBits/s, ce qui suffit pour surfer sur le Web. • 802.11g. Ce standard est le successeur du 802.11b et est compatible avec ce dernier. Le matériel 802.11g est disponible depuis 2003. La fréquence d’émission est, comme pour le 802.11b, de 2,4 GHz, le débit brut est toutefois meilleur (54 MBits/s). • 802.11i. Il s’agit d’une extension de 802.11a/b/g/h pour améliorer la sécurité de ces standards. 802.11i définit la méthode de chiffrement et d’authentification WPA2. • 802.11n. Successeur de 802.11a, b et g, le standard 802.11n améliore quelque peu la portée et notablement le débit brut (qui atteint désormais 540 MBits/s). Ces deux améliorations sont permises par l’utilisation simultanée de plus d’antennes, plus de récepteurs et plus d’émetteurs (MIMO ou Multiple-in, Multiple-out). 802.11n est certes compatible avec les variantes a, b et g, mais un seul élément Wi-Fi non compatible 802.11n peut affecter la vitesse de l’ensemble du réseau. Le matériel compatible 802.11n ou prévu pour l’être (pre-n, draft-n) existe depuis mi2006. La certification définitive du standard n’est toutefois prévue que pour l’automne 2008. Le débit brut (par exemple 54 MBits/s pour 802.11g) peut sembler très prometteur. Toutefois, si l’on tient compte de la surcharge importante liée au protocole, le débit net restant est nettement plus faible et n’atteint pas la moitié de la valeur brute (même lorsqu’il ne s’agit de faire communiquer que deux participants entre eux, que la liaison physique radio est bonne et qu’aucun participant au réseau n’utilise un standard antérieur).
Linux Livre Page 514 Mardi, 23. septembre 2008 1:05 13
514 Adaptateurs Wi-Fi
Ponts, points d’accès et routeurs sans fil
LINUX
Tous les ordinateurs portables modernes intègrent un contrôleur Wi-Fi. Les portables plus anciens ou les ordinateurs de bureau pourront au besoin voir leurs capacités étendues par le biais de cartes PCMCIA, d’adaptateurs Wi-Fi USB ou de cartes PCI. Les ponts, points d’accès et routeurs Wi-Fi sont des périphériques autonomes connectés au réseau local ou à un modem ADSL par le biais d’un câble Ethernet : • Un pont sans fil connecte un périphérique LAN isolé à un réseau sans fil. Le pont assure la même fonctionnalité qu’une carte Wi-Fi mais la connexion à l’ordinateur est différente : elle est assurée par Ethernet plutôt que par PCI, PCMCIA ou USB. • Un point d’accès (access point) représente la méthode la plus simple pour connecter plusieurs clients sans fil. Un point d’accès est, comme un pont, connecté à un serveur ou à un hub réseau par un câble Ethernet. Il émet plusieurs fois par seconde un signal (beacon) permettant aux autres périphériques Wi-Fi de déterminer la portée du point d’accès. Contrairement au pont, le point d’accès prend en charge plusieurs modes Wi-Fi et peut communiquer avec plusieurs clients sans fil à la fois (les différences entre pont et point d’accès concernent donc avant tout le logiciel de pilotage plutôt que le matériel). • Un routeur Wi-Fi connecte un réseau entier (LAN et Wi-Fi) à Internet. Le point de sortie est, le plus souvent, un modem ADSL équipé d’une sortie Ethernet ou un serveur réseau local. Il existe également des routeurs Wi-Fi intégrés à un modem ADSL : on décrit de fait des périphériques de ce type comme des passerelles. Le routeur est généralement constitué d’un point d’accès et d’un petit hub pour, au maximum, quatre périphériques Ethernet. Le logiciel interne du routeur pilote l’accès à Internet et la gestion du réseau local. Un routeur héberge en général des fonctionnalités de traduction d’adresses (NAT), un serveur DHCP, un pare-feu élémentaire, etc. Ces fonctionnalités sont décrites en détail au Chapitre 28. Les ponts, points d’accès et routeurs Wi-Fi présentent deux avantages par rapport à la majorité des cartes et adaptateurs Wi-Fi : tout d’abord, ils comprennent une ou même deux antennes relativement grandes qui permettent une meilleure connectivité que les antennes souvent trop petites des cartes d’extension Wi-Fi. Par ailleurs, il s’agit de périphériques autonomes fonctionnant sans pilotes Linux (la connexion à un ordinateur sous Linux peut donc être assurée par un câble Ethernet tout ce qu’il y a de plus ordinaire). La configuration de périphériques Wi-Fi s’effectue en règle générale par le biais d’un navigateur Internet. Pour ce faire, les périphériques mettent à disposition leurs propres pages de configuration sur une adresse IP définie (par exemple http://192.168.0.1). Attention, toutefois, au fait qu’il existe des périphériques Wi-Fi ne pouvant être configurés que par le biais d’un logiciel disponible uniquement sous Windows ! Cela concerne principalement les ponts Wi-Fi : de tels périphériques sont naturellement peu utilisables avec Linux. La terminologie utilisée ici n’est pas uniforme chez tous les fabricants. Vous pourrez trouver des explications relativement exhaustives sur les concepts réseau du type pont, hub, routeur, passerelle, etc. sur Wikipedia ainsi que sur le site suivant : http://whatis.techtarget.com/ Le site web suivant est également intéressant sur le sujet du Wi-Fi et non spécifique à Linux : http://www.wi-fiplanet.com/
Linux Livre Page 515 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
Centrino
515
Le nom de marque Centrino, déposé par Intel, décrit les ordinateurs portables dotés d’un processeur mobile Intel, d’un chipset Intel ainsi que d’un module Wi-Fi Intel. Les premières générations de Centrino, compatibles avec les standards Wi-Fi 802.11a, b et g, sont désormais très bien prises en charge par Linux.
Paramètres de connexion Wi-Fi Lorsque vous établissez une connexion entre deux périphériques Wi-Fi, divers paramètres doivent être configurés. La liste qui suit explique rapidement le rôle de chacun d’eux. Mode réseau
Les composants Wi-Fi peuvent communiquer entre eux de différentes manières. Nous ne décrivons ici brièvement que les trois modes principaux : • Le mode infrastructure (également appelé mode géré) permet de communiquer avec un point d’accès centralisé. Le réseau est donc structuré en forme d’étoile. La plupart du temps, la connexion s’établit avec un point d’accès ou un routeur Wi-Fi, mais ce peut également être un ordinateur spécialement configuré pour jouer ce rôle. • Le périphérique Wi-Fi du point d’accès fonctionne en mode maître (le mode infrastructure ne vaut donc que pour les clients, tandis que le mode maître est utilisé au niveau du serveur d’un réseau Wi-Fi).
SSID et ESSID
• En mode ad-hoc, chaque périphérique Wi-Fi communique directement avec tous ceux qui sont à sa portée. Les abréviations SSID (Service Set Identification) et ESSID (Extended SSID) désignent tout simplement une chaîne de caractères décrivant le nom d’un réseau Wi-Fi. Les périphériques Wi-Fi ne peuvent communiquer entre eux que si leurs SSID se correspondent. Des SSID différents permettent également de distinguer plusieurs réseaux Wi-Fi actifs dans la même zone. Le nom du fabricant est fréquemment prédéfini en tant que chaîne de caractères SSID. Pour cette raison, des périphériques issus du même fabricant peuvent souvent communiquer l’un avec l’autre directement, tandis que des appareils d’origines différentes nécessiteront tout d’abord de paramétrer une chaîne SSID commune. De nombreuses cartes Wi-Fi prévoient une configuration automatique pour la chaîne SSID (valeur any). Attention : pour la chaîne de caractères SSID, on différencie les majuscules et les minuscules !
NWID
Au sein d’un même réseau Wi-Fi (un unique SSID), il peut y avoir plusieurs cellules (cells) différenciées par leurs identifiants NWID (Network ID). En pratique, ceci n’est plus que rarement utilisé car de nombreux programmes de configuration renoncent tout simplement à utiliser le paramètre NWID. Parfois, au lieu de l’identifiant NWID, on parle de domaine, ce qui peut conduire à une certaine confusion : l’identifiant NWID n’a rien à voir avec les noms de domaine des adresses IP.
Canal
À l’intérieur des bandes de fréquence prévues par chacun des standards 802.11x, il existe plusieurs canaux sur lesquels on peut émettre en parallèle. En mode infrastructure, les adaptateurs Wi-Fi identifient par eux-mêmes le canal utilisé par le point d’accès. Par conséquent,
Linux Livre Page 516 Mardi, 23. septembre 2008 1:05 13
516
LINUX
il ne devient nécessaire de configurer explicitement le canal qu’en cas d’interférences entre plusieurs réseaux Wi-Fi. Clé WEP/WPA
Pour des raisons évidentes, il est nécessaire de sécuriser les réseaux Wi-Fi. Suivant le standard pris en charge par votre matériel Wi-Fi, vous aurez le choix entre les méthodes WEP, WPA ou, idéalement, WPA2 (plus de détails sur ce sujet à la prochaine section). Vous devez fournir la clé lors de la configuration de votre contrôleur Wi-Fi. Suivant le système employé, vous devez fournir la clé sous forme de code hexadécimal ou sous forme de texte. Attention au fait que de nombreux programmes de configuration nécessitent de faire précéder la clé hexadécimale du code 0x !
Sécurité d’un réseau Wi-Fi Il est fondamentalement possible de faire fonctionner un réseau Wi-Fi sans le moindre chiffrement. Toutefois, n’importe qui situé à portée du réseau peut alors l’utiliser et écouter toutes les communications qui y ont lieu ! Un fonctionnement non chiffré est donc à proscrire ! WEP
Pour chiffrer le flux de données, les premières générations de réseaux Wi-Fi ont utilisé le système WEP (Wired Equivalent Privacy). Les données étaient dans ce cadre chiffrées à l’aide d’une clé à 40 ou 104 bits (on parle souvent de clés à 64 ou 128 bits, mais les 24 bits restants ne servent pas au chiffrement à proprement parler). La clé WEP est en règle générale fournie sous la forme d’un nombre hexadécimal (10 ou 26 chiffres suivant la taille de la clé). Comme la saisie d’un nombre à 26 chiffres est sujette à erreur, de nombreux outils de configuration permettent de générer la clé à partir d’une "phrase de passe" (c’est-à-dire un texte de votre choix, qui peut être constitué de plusieurs mots). Toutefois, la génération de la clé dépend du fabricant du matériel. La même phrase de passe peut donc aboutir à des clés différentes sur des matériels différents. En cas de doute, il ne reste donc qu’une seule solution, saisir exactement la clé. À la configuration WEP, vous pouvez saisir jusqu’à quatre clés. Dans les faits, une seule clé est utilisée à la fois. La gestion de quatre clés présente néanmoins un avantage : lorsque vous changez de réseau Wi-Fi, vous n’avez pas à saisir intégralement la nouvelle clé, mais vous pouvez tout simplement changer de clé active. Du fait de sérieuses lacunes de conception, WEP s’est révélé insuffisamment sûr. Même une clé sur 104 bits peut être identifiée en un temps relativement court (au pire quelques heures mais bien souvent beaucoup moins) par simple écoute du trafic réseau. Des programmes permettant de "craquer" les clés WEP sont à disposition librement sur Internet. En d’autres termes, une protection WEP est mieux que rien, mais pas de beaucoup. Si votre matériel le permet, vous devriez utiliser WPA ou, mieux, WPA2 (voir plus bas). Si ce n’est pas possible, vous devez protéger votre réseau sans fil par d’autres mesures supplémentaires, idéalement par la mise en place d’un VPN.
WPA, WPA2
À la suite de WEP, les méthodes de protection WPA (Wi-Fi Protected Access) ainsi que sa version améliorée WPA2 ont vu le jour. La spécification exacte de WPA2 est inscrite dans le standard 802.11i. La différence principale entre WPA et WPA2 réside dans l’algorithme de chiffrement (RC4 pour WPA et AES pour WPA2).
Linux Livre Page 517 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
517
WPA a été conçu comme une solution de contournement jusqu’à la finalisation du standard 802.11i. Comme il existe toutefois du matériel Wi-Fi qui ne prend en charge que WPA et pas encore WPA2, les deux variantes devraient rester en usage pendant encore un certain temps. L’avantage essentiel de WPA réside dans le fait que la clé ne sert qu’à l’établissement de la connexion. Une fois celle-ci établie, les clés sont régulièrement changées suivant un algorithme sophistiqué. WPA et WPA2 peuvent, en l’état actuel des techniques, être considérés comme sûrs tant que l’on utilise une phrase de passe suffisamment longue (et donc une clé constituée de plusieurs mots et caractères). Ce livre ne traite que la variante PSK (Pre-Shared Key) de WPA/WPA2 : tous les utilisateurs du Wi-Fi se connectent au réseau à l’aide de la même clé. La version Managed Key, encore plus sûre, attribue à chaque utilisateur sa propre clé (mais cela nécessite de gérer les clés sur un serveur centralisé). Attention au fait que vous devez configurer sur la plupart des routeurs et points d’accès Wi-Fi une méthode de chiffrement. Il n’est donc pas possible qu’un ordinateur établisse une connexion avec WPA2 tandis qu’un autre utiliserait WEP. Ainsi, le niveau de sécurité de vos périphériques les plus anciens détermine le niveau de sécurité global de votre réseau. Protection de base
Indépendamment de la technique de chiffrement choisie, vous devriez également mettre en place une protection de base de votre réseau Wi-Fi : • La configuration d’un point d’accès s’effectue normalement par un navigateur web. L’accès web est protégé par un mot de passe que vous devez impérativement changer. Vous devriez limiter autant que possible les possibilités de gestion distante de l’appareil et surtout l’autoriser uniquement à travers une connexion par câble (et non sans fil). • De nombreux points d’accès permettent de n’autoriser l’accès au réseau Wi-Fi que pour des adresses MAC données. Une adresse MAC (Media Access Control) est un numéro univoque identifiant le contrôleur Wi-Fi. Cette mesure de protection n’a toutefois qu’une efficacité limitée, car un pirate peut travailler avec une fausse adresse MAC. • Éteignez le point d’accès lorsque vous ne l’utilisez pas.
Pare-feu
VPN
• Utilisez autant que possible des clés et mots de passe longs, qui ne peuvent être "craqués" par des essais multiples. Un pare-feu vous permet de restreindre le trafic Wi-Fi à certains protocoles, segments de réseau, etc. Vous trouverez au Chapitre 29 des indications pour la sécurisation d’un client Wi-Fi par le biais d’un pare-feu. Si votre point d’accès Wi-Fi est branché à un serveur Linux, ce chapitre vous fournira également des astuces intéressantes. Une autre solution pour augmenter la sécurité consiste à considérer le réseau Wi-Fi comme non sûr, malgré toutes les protections possibles. Pour communiquer de façon sécurisée, vous devez chiffrer votre trafic réseau vous-même. La solution la plus populaire consiste à utiliser un réseau privé virtuel (VPN).
Linux Livre Page 518 Mardi, 23. septembre 2008 1:05 13
518
LINUX
Prise en charge du Wi-Fi par Linux Wireless-Tools
Pour utiliser un contrôleur Wi-Fi sous Linux, on fait appel aux outils Wireless-Tools (qu’il s’agisse d’un composant Wi-Fi intégré, d’une carte PCI ou PCMCIA ou encore d’un périphérique USB externe). Les Wireless-Tools sont une collection de commandes relativement restreinte (iwconfig, iwstatus, etc.) permettant de configurer l’adaptateur Wi-Fi. La page web ci-après présente quelques-unes de ces commandes plus en détail. Les outils Wireless-Tools sont livrés avec toutes les distributions courantes. http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
Pilotes matériels
Les outils Wireless-Tools ne contiennent que des commandes de contrôle. Les pilotes matériels se trouvent quant à eux dans les modules du noyau. Si, dans les éditions précédentes de cet ouvrage, je me suis plaint de la mauvaise prise en charge du Wi-Fi, la situation a entre-temps bien évolué : de nombreux contrôleurs Wi-Fi populaires pour les standards 802.11a, b et g sont bien pris en charge. Cela inclut en particulier les contrôleurs Intel PRO Wireless 2100, 2200 et 2915, que vous pourrez trouver dans les portables Centrino. Le Wi-Fi fonctionne de façon particulièrement confortable sur Ubuntu : de nombreux contrôleurs Wi-Fi sont reconnus et configurés automatiquement dès l’installation. Néanmoins, au niveau du noyau, le secteur du Wi-Fi demeure comme auparavant un certain chantier : tous les pilotes Wi-Fi possèdent, depuis le noyau 2.6.22, une nouvelle base commune (mac80211, lui-même basé sur la pile WLAN!Stack de Devicescape). Parallèlement doit être introduite une interface de communication avec les outils réseau (cfg80211). Enfin, de nouveaux pilotes ou des améliorations des pilotes existants sont livrés avec chaque nouvelle version du noyau. Tout ceci conduit régulièrement à des incompatibilités et autres problèmes. Les articles suivants donnent une vision assez synthétique de la situation courant 2007 : http://lwn.net/Articles/219102/ ; http://www.linux-watch.com/news/NS9956020927.html Un certain nombre de contrôleurs Wi-Fi ne sont pas encore pris en charge par Linux ou exigent une installation manuelle et complexe de pilotes non encore intégrés officiellement au noyau. Il est encore trop tôt pour le moment pour établir un pronostic sur la prise en charge des contrôleurs 802.11n ; d’expérience, il faut au minimum un an pour que le pilote d’un nouveau contrôleur Wi-Fi fasse son apparition au sein d’une distribution. Ne vous attendez donc pas à ce que votre portable dernière génération flambant neuf fonctionne immédiatement sous Linux. Avant l’achat d’un nouveau portable, renseignez-vous impérativement pour savoir si le contrôleur qu’il intègre est pris en charge. C’est malheureusement plus simple à dire qu’à faire : courant 2007, je n’ai pu trouver aucune référence à jour sur Internet indiquant quels contrôleurs Wi-Fi sont pris en charge sous Linux. Les deux sites suivants, sur lesquels vous pourrez trouver des retours d’expérience sur la majorité des portables disponibles sur le marché, se révèlent déjà très utiles : http://www.linux-on-laptops.com/ ; http://tuxmobil.org/
Problèmes de firmware
La plupart des contrôleurs Wi-Fi sont programmables. Pour qu’ils fonctionnent correctement, un firmware (programme interne au contrôleur) doit être transmis au contrôleur lors de son initialisation. Le firmware provient du fabricant et peut être librement distribué sous réserve de respecter les termes de licence. C’est en général le module noyau ou le système
Linux Livre Page 519 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
519
udev qui se charge de la transmission du code vers le contrôleur. Le code se trouve dans des fichiers binaires (blobs), généralement dans le répertoire /lib/firmware. Toutefois, les fabricants de puces ne mettent à disposition le firmware que sous forme binaire et non sous forme de code source. Cette situation ainsi que les termes de licence jusqu’à présent complexes et restrictifs des fabricants n’étaient pas compatibles avec les idéaux open-source de nombreux développeurs. Pour cette raison, le firmware est absent de nombreuses distributions Linux. Pour utiliser votre contrôleur Wi-Fi, vous devez rechercher et installer le paquetage correspondant au firmware. C’est un peu pesant, mais guère compliqué : pour la plupart des distributions populaires, il existe des sources spéciales pour de tels paquetages (par exemple livnia pour Fedora). SUSE et Ubuntu comptent parmi les exceptions positives : sur Ubuntu, le paquetage restricted contient les firmwares de très nombreux composants matériels tandis que, sur SUSE, ce sont les paquetages Non-OSS (pour lesquels il existe une source propre). Personnellement, je ne vois pas le problème des licences de firmwares de façon aussi dramatique : autrefois, le contrôleur Wi-Fi aurait compris un EPROM et personne ne se serait plaint de l’absence de code open-source. La solution actuelle est plus souple et moins coûteuse (car elle permet des mises à jour). Naturellement, il serait souhaitable que le code source soit disponible pour les programmes exécutés dans le contrôleur, mais cette espérance n’est pas réaliste. Tant que les fabricants de contrôleurs Wi-Fi permettent de redistribuer leur firmware, je ne vois pas d’argument qui s’oppose à la politique d’Ubuntu. L’article qui suit offre d’ailleurs une perspective intéressante sur les discussions des développeurs Debian sur la gestion des firmwares : http://lwn.net/Articles/195820/ Problèmes avec la GPL
Comme si les problèmes de firmware déjà évoqués n’étaient pas suffisants, de nombreux pilotes Wi-Fi sont totalement incompatibles avec la GPL. Cela concerne en particulier le pilote MadWi-Fi pour de nombreux contrôleurs Atheros. Ces pilotes contiennent un bloc de code binaire (Hardware Abstraction Layer ou HAL) qui est toutefois directement exécuté depuis le noyau (il ne s’agit donc pas du firmware exécuté sur le contrôleur). Leur statut est comparable à celui des pilotes des fabricants pour les cartes ATI et NVidia. Ubuntu est distribuée avec ces pilotes mais, sur la plupart des autres distributions, vous devrez les installer vous-même depuis des sources externes.
Utiliser des pilotes Windows
Lorsqu’il n’existe aucun pilote Linux, pourquoi ne pas utiliser le pilote Windows ? Ce qui peut sembler totalement impossible au premier abord n’est finalement pas si compliqué à mettre en pratique : l’interface d’intégration des pilotes Wi-Fi sous Windows est relativement compacte. Plusieurs projets commerciaux et open-source ont implémenté cette interface (NDIS) sous Linux. Vous pourrez trouver des informations sur l’utilisation de pilotes binaires Windows sous Linux sur les pages suivantes : http://www.linuxant.com/driverloader/wlan/ (commercial) http://ndiswrapper.sourceforge.net/ (open-source) Naturellement, il est contraire à l’esprit open-source d’utiliser des pilotes binaires, dont le code sous-jacent n’est pas contrôlé par la communauté open-source. Cela vaut toutefois
Linux Livre Page 520 Mardi, 23. septembre 2008 1:05 13
520
LINUX
également pour les pilotes binaires de nombreuses cartes graphiques, auxquelles bon nombre d’utilisateurs Linux se sont habitués. Un autre inconvénient est le fait que les pilotes Windows ne sont disponibles que pour les systèmes compatibles Intel/AMD.
26.5 Activer manuellement le contrôleur Wi-Fi Cette section décrit l’initialisation manuelle d’un contrôleur Wi-Fi. La procédure est comparable à celle employée pour un contrôleur réseau usuel (voir un peu plus haut dans ce chapitre). L’objectif principal de cette section est de vous donner un aperçu de ce qui se passe en coulisse des outils de configuration modernes. Parallèlement, elle doit également vous servir d’aide lorsque vous rencontrez des difficultés à configurer et à activer automatiquement votre contrôleur Wi-Fi. Reconnaissance du matériel
La première étape consiste à charger le module approprié pour votre contrôleur Wi-Fi. Idéalement, ce module est chargé automatiquement lorsque vous amorcez votre ordinateur. La commande iwconfig vous permet de constater si la reconnaissance automatique a réussi. Elle vous fournit des informations sur l’ensemble des adaptateurs Wi-Fi disponibles. Les lignes d’exemple qui suivent proviennent d’un portable Centrino déjà peu récent utilisant un contrôleur Intel Pro Wireless 2100. Le contrôleur a été reconnu automatiquement. root# iwconfig lo no wireless extensions. irda0
no wireless extensions.
eth0
unassociated ESSID:off/any Nickname:"ipw2100" Mode:Managed Channel=0 Access Point: Not-Associated Bit Rate=0 kb/s Tx-Power:16 dBm Retry min limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
eth1
no wireless extensions.
Si iwconfig ne renvoie aucune information, vous devrez charger vous-même le module noyau nécessaire à l’aide de la commande modprobe. La commande dmesg ou un coup d’œil à /var/log/messages devraient vous indiquer si le chargement du module s’est bien déroulé. Pour le module ipw2100, les messages du noyau ont l’allure suivante : root# dmesg -c | less ... ipw2100: Intel(R) PRO/Wireless 2100 Network Driver, git-1.2.2 ipw2100: Copyright(c) 2003-2006 Intel Corporation ... ipw2100: Detected Intel PRO/Wireless 2100 Network Connection ...
Linux Livre Page 521 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
521
Si vous ne savez pas de quel contrôleur Wi-Fi vous disposez, exécutez la commande lspci (ou lspcmcia s’il s’agit d’une carte PCMCIA) : root# lspci ... 02:02.0 Network controller: Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)
Il est souvent plus difficile d’identifier le module noyau correspondant à votre contrôleur. La meilleure solution consiste ici à effectuer une recherche sur Internet (par exemple sur http:// groups.google.com). Suivant le contrôleur, il est également possible que vous deviez préalablement installer le module noyau nécessaire et/ou le firmware (voir la section précédente). Cela dépend non pas seulement du matériel mais également de la distribution que vous utilisez. Pour les installations aussi bien que pour vos recherches Internet, vous aurez besoin d’une connexion réseau. Il est donc recommandé de réaliser la mise en service de votre contrôleur Wi-Fi lorsque vous pouvez connecter votre ordinateur par un câble réseau ou, a minima, par un modem téléphonique. Nom d’interface
Configuration Wi-Fi
De nombreux modules noyau Wi-Fi désignent l’interface Wi-Fi non pas par le nom ethn, mais par wlann ou athn (par exemple le pilote MadWifi pour le contrôleur Atheros). Cela limite le risque de désordre dans la numérotation des interfaces réseau au branchement d’un adaptateur Wi-Fi. Cette nomenclature différente n’est toutefois pas très éloignée sur le fond : dans toutes les commandes qui suivent, il vous suffit de remplacer eth0 par wlan0 ou ath0. Afin que la carte Wi-Fi puisse communiquer avec le point d’accès, vous devrez en général configurer trois paramètres : le mode, l’identifiant SSID et la clé. Vous pouvez configurer le mode et l’identifiant SSID à l’aide de la commande iwconfig : root# iwconfig eth0 mode managed root# iwconfig eth0 essid wlan-sol
La suite des opérations dépend de la sécurisation du réseau Wi-Fi. Les choses sont simples (mais pas particulièrement sûres) avec WEP : fournissez la clé hexadécimale à iwconfig. root# iwconfig eth0 key c8192b13adf4ee58309953eebe
Si tout se passe bien, dmesg -c renvoie quelques nouveaux messages du noyau, qui devraient avoir une allure proche de ceci : root# dmesg -c ieee80211_crypt: registered algorithm ’WEP’ ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready eth0: no IPv6 routers present WPA
Les choses sont légèrement plus compliquées lorsque vous utilisez WPA ou WPA2. Dans ce cas, le programme wpa_supplicant (issu du paquetage éponyme) est responsable de l’initialisation de la connexion et des échanges ultérieurs des clés en mutation permanente. Une fois celui-ci installé, vous devez mettre en place un fichier de configuration, que vous pouvez par exemple nommer /etc/wpa_supplicant.conf.
Linux Livre Page 522 Mardi, 23. septembre 2008 1:05 13
522
LINUX
Le fichier contient tout d’abord quelques paramètres globaux, puis des paramètres spécifiques pour divers réseaux Wi-Fi. L’exemple suivant vous montre une variante minimaliste, suffisante pour la connexion à un routeur ou à un point d’accès Wi-Fi avec chiffrement personnel WPA ou WPA2. Les deux paramètres décisifs ici sont ssid (identification du réseau) et psk (contenant la clé, chiffrée pour des raisons de sécurité, mais que l’on peut également renseigner sous forme de texte en clair, entre guillemets). # /etc/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant network={ ssid="sol" psk=00a38f42e6681596e1a5a4c5ede9a15250fb2a01c21028c6d490bb3458b8ea00 } network={ ssid="wlan-sol2" psk=053633deb59038da9e9168e015fef97d3d54ae3794d4a12d31ee75a830cccec2 }
wpa_passphrase peut vous être utile pour chiffrer votre mot de passe WPA. Vous pouvez copier directement le résultat de cette commande dans wpa_supplicant.conf et y supprimer la ligne contenant votre mot de passe en clair : root# wpa_passphrase sol ’Mon mot de passe très secret’ network={ ssid="sol" #psk="Mon mot de passe très secret" psk=18555b0f9e0fc28cd0aa9ee19575a9790de1f46050b5bb932682febf824699c4 }
Vous pouvez maintenant lancer wpa_supplicant. La commande s’exécute jusqu’à ce que vous l’interrompiez par la combinaison de touches Ctrl+C. Elle se charge d’établir la connexion Wi-Fi et, par la suite, de renouveler régulièrement la clé sécurisant la connexion. En d’autres termes, ce programme doit s’exécuter tant que vous utilisez la connexion Wi-Fi. Vous devez donc à partir de maintenant travailler dans une autre console. Quelques remarques complémentaires quant aux options de cette commande : -i renseigne l’interface réseau, -c le fichier de configuration (dont vous pouvez librement choisir le nom). Avec -D, vous indiquez le pilote Wi-Fi à utiliser. Commencez par essayer wext (il s’agit d’une interface Wi-Fi générique prise en charge par de nombreux pilotes). Si cela ne fonctionne pas, vous pouvez alors essayer d’indiquer explicitement votre pilote, par exemple -D madwifi. man wpa_supplicant vous renvoie une liste de tous les pilotes pris en charge. root# wpa_supplicant -i eth0 -D wext -c /etc/wpa_supplicant.conf Trying to associate with 00:13:46:b5:25:6e (SSID=’sol’ freq=0 MHz) Associated with 00:13:46:b5:25:6e WPA: Key negotiation completed with 00:13:46:b5:25:6e [PTK=TKIP GTK=TKIP] CTRL-EVENT-CONNECTED - Connection to 00:13:46:b5:25:6e completed (auth) [id=0 id_str=] ...
Vous obtiendrez une documentation exhaustive dans les pages de manuel de wpa_supplicant et wpa_supplicant.conf, dans le fichier README livré avec le paquetage (suivant
Linux Livre Page 523 Mardi, 23. septembre 2008 1:05 13
523
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
les distributions, il peut par exemple se trouver dans /usr/share/doc/wpasupplicant/) ainsi que sur le site web suivant : http://hostap.epitest.fi/wpa_supplicant/ La page suivante, spécifique à Ubuntu, est également une source intéressante : http://wiki.ubuntuusers.de/WLAN/wpa_supplicant Configuration du réseau
Vous n’avez maintenant plus qu’à connecter votre interface Wi-Fi à votre réseau. Pour cela, faites appel comme pour une interface filaire à la commande ifconfig. Lorsque l’ordinateur doit être inséré au réseau avec l’adresse IP 192.168.0.12, la commande a donc l’allure suivante : root# ifconfig eth0 up 192.168.0.12
La commande ping vous permet de tester si la connexion vers le routeur ou le point d’accès fonctionne (vous devez pour cela connaître l’adresse IP de l’appareil). Pour pouvoir également accéder à Internet, vous devrez paramétrer l’adresse de la passerelle et d’un serveur de noms, comme nous l’avons décrit à la section correspondante de configuration manuelle d’un réseau Ethernet (voir plus haut). Lors de mes tests, j’ai rencontré des problèmes avec un routeur ADSL : celui-ci répondait correctement aux requêtes DHCP de clients Ethernet, ainsi que des clients Wi-Fi non chiffrés ou chiffrés par WEP. Toutefois, il ignorait les requêtes DHCP des clients Wi-Fi chiffrés par WPA. Sur Internet, je n’ai trouvé que des références isolées à des problèmes WPA/DHCP comparables, sans pour autant que ces références ne me permettent d’identifier des points communs avec le matériel et les logiciels que j’utilisais. DHCP a par ailleurs fonctionné sans le moindre problème avec un autre routeur Wi-Fi : Linux n’était donc (probablement) pas en cause. En résumé : si WPA et DHCP ne parviennent pas à fonctionner ensemble, ne doutez pas de vous mais configurez votre client en adresse IP statique. Récupérer le statut Wi-Fi
La commande iwconfig renvoie une synthèse des paramètres principaux de toutes les interfaces Wi-Fi : root# iwconfig eth0 eth0 IEEE 802.11b ESSID:"wlan-sol" Nickname:"ipw2100" Mode:Managed Frequency:2.457 GHz Access Point: 00:09:5B:52:CC:28 Bit Rate=11 Mb/s Tx-Power:16 dBm Retry min limit:7 RTS thr:off Fragment thr:off Encryption key:8C19-2B13-ADF4-EE58-3099-53EE-BE Security mode:open Power Management:off Link Quality=100/100 Signal level=-42 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Le pseudo-fichier /proc/net/wireless fournit également une synthèse de la qualité courante de la connexion Wi-Fi : root# cat /proc/net/wireless Inter-| sta-| Quality | face | tus | link level noise | eth0: 0004 100. 212. 0.
Discarded packets nwid crypt frag 0 0 0
retry 0
| Missed | WE misc | beacon | 20 0 0
Linux Livre Page 524 Mardi, 23. septembre 2008 1:05 13
524
LINUX
La commande iwlist est également parfois utile : elle fournit les choix disponibles pour différents paramètres et indique également l’option active parmi celles disponibles. Les deux exemples suivants illustrent son utilisation pour le canal et pour le réseau Wi-Fi actifs parmi ceux disponibles : root# iwlist eth0 channel eth0 14 channels in total; available frequencies: Channel 01 : 2.412 GHz Channel 02 : 2.417 GHz ... Channel 12 : 2.467 GHz Channel 13 : 2.472 GHz Current Channel=10 root# iwlist eth0 scan eth0 Scan completed : Cell 01 - Address: 00:13:46:B5:25:6E ESSID:"sol" Protocol:IEEE 802.11bg Mode:Master Channel:6 Encryption key:on ... Cell 02 - Address: 00:16:B6:9D:FF:4B ESSID:"wlan-sol2" ...
26.6 Fichiers de configuration Wi-Fi Pour configurer votre client Wi-Fi, vous disposez en général des mêmes outils que pour la configuration d’un client Ethernet (voir un peu plus haut dans ce chapitre). Une alternative est le gestionnaire de réseaux NetworkManager, particulièrement adapté si vous utilisez fréquemment votre connexion Wi-Fi (voir un peu plus loin dans ce chapitre). Dans cette section, j’aborderai brièvement les principaux fichiers de configuration spécifiques au Wi-Fi. Je pars ici du principe que vous connaissez les fichiers de configuration Ethernet de votre distribution. En matière de Wi-Fi, il existe de grosses différences d’une distribution à l’autre ! De nombreux contrôleurs Wi-Fi fonctionnant immédiatement sur Ubuntu ne sont même pas reconnus sur Fedora. SUSE se situe quelque part entre les deux. Naturellement, il est possible de faire fonctionner sur toute distribution un contrôleur Wi-Fi géré par une distribution en particulier ; la question est seulement de savoir combien de temps vous êtes prêt à y passer... Debian, Ubuntu
La configuration centrale s’effectue, comme pour les interfaces réseau filaire, dans le fichier /etc/network/interfaces. Deux options supplémentaires permettent de saisir la chaîne ESSID et la clé WEP.
Linux Livre Page 525 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
525
# /etc/network/interfaces ... # Interface Wifi avec WEP auto eth2 iface eth2 inet dhcp wireless-essid sol wireless-key xxxxxxxx
network-admin n’est pour le moment pas en mesure d’établir des connexions Wi-Fi chiffrées par WPA. Préférez-lui donc autant que possible le gestionnaire NetworkManager (voir un peu plus loin). Dans le cas contraire, vous devrez plonger les mains dans le cambouis : commencez par créer un fichier /etc/wpa_supplicant.conf (comme mentionné précédemment) puis remplacez le mot-clé wireless par wpa : # /etc/network/interfaces ... # Interface Wifi avec WPA auto eth2 iface eth2 inet dhcp wpa-driver wext wpa-conf /etc/wpa_supplicant.conf
Les versions anciennes de Debian et d’Ubuntu ne connaissent pas le mot-clé wpa. Vous pouvez alors vous aider des termes pre-up et post-down. Ces mots-clés indiquent quelles commandes doivent être exécutées avant l’établissement et après la fermeture de la connexion. L’instruction pre-up apparaît ici sur plusieurs lignes pour des raisons de lisibilité (il a donc fallu la couper par un caractère \) : # /etc/network/interfaces ... # Interface Wifi avec WPA auto eth2 iface eth2 inet dhcp pre-up /sbin/wpa_supplicant -d wext -i eth2 \ -c /etc/wpa_supplicant.conf -Bw; sleep 2; post-down killall -q wpa_supplicant Red Hat, Fedora
Sur Red Hat et Fedora, les interfaces Wi-Fi sont traitées comme des interfaces LAN. Les lignes qui suivent présentent un fichier de configuration typique : # /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Wireless HWADDR=00:0c:f1:58:f9:93 IPADDR=192.168.1.16 GATEWAY=192.168.1.254 MODE=Managed ...
La ou les clés WEP sont enregistrées dans un fichier propre keys-interface : # /etc/sysconfig/network-scripts/keys-eth1 KEY=8C192B13ADF4EE58309953EEBE
Linux Livre Page 526 Mardi, 23. septembre 2008 1:05 13
526
LINUX
Dans la dernière version testée (Fedora 7), system-config-network ne prenait pas encore en charge WPA. Pour utiliser WPA, vous devez soit configurer manuellement wpa_supplicant, soit faire appel au NetworkManager. Les versions actuelles de SUSE prennent en charge deux variantes très différentes de configuration Wi-Fi : la configuration classique (que nous présentons ici) par Yast ainsi que la configuration dynamique à l’aide du NetworkManager (voir la section suivante). Vous pouvez choisir la variante à utiliser dans la première boîte de dialogue du module YaST Périphériques réseau > Carte réseau. La configuration est enregistrée dans la variable NETWORKMANAGER dans le fichier /etc/sysconfig/network/config. Si vous avez opté pour la variante classique, chaque interface Wi-Fi possède son propre fichier de configuration dans /etc/sysconfig/network. Les lignes qui suivent (fortement élaguées) visent à montrer la structure d’un tel fichier pour une connexion Wi-Fi chiffrée par WPA.
SUSE
# Exemple pour /etc/sysconfig/network/ifcfg-eth-pcmcia # /etc/sysconfig/network/ifcfg-wlan-bus-pci-0000:05:04.1 BOOTPROTO=’dhcp’ STARTMODE=’auto’ WIRELESS_AUTH_MODE=’psk’ WIRELESS_BITRATE=’auto’ WIRELESS_ESSID=’wlan-sol2’ WIRELESS_MODE=’Managed’ WIRELESS_POWER=’yes’ WIRELESS_WPA_PSK=’Jag aelskar dig, Heidi!’ ...
26.7 NetworkManager Les outils classiques de configuration réseau sont bien souvent inadaptés au quotidien des utilisateurs de portables : lorsque l’on doit, plusieurs fois par jour, changer d’emplacement avec son ordinateur et à chaque fois configurer une nouvelle connexion au réseau sans fil local, l’énervement n’est pas loin. C’est précisément pour des cas comme celui-ci que le NetworkManager a été développé. Une appliquette montre, dans le tableau de bord KDE ou Gnome, l’état du réseau. Un menu vous permet de choisir parmi les réseaux sans fil ou filaires actuellement disponibles. Lorsque vous utilisez pour la première fois un réseau sans fil, le NetworkManager vous demande le mot de passe ; il reconnaît lui-même la technologie de chiffrement employée (WEP, WPA, WPA2). Si le réseau est à nouveau utilisé ultérieurement, les données déjà connues sont réutilisées automatiquement. http://www.gnome.org/projects/NetworkManager http://live.gnome.org/DarrenAlbers/NetworkManagerFAQ Problèmes, inconvénients
Si vous pensez toutefois que le NetworkManager soit la solution à tous les problèmes de Wi-Fi, je me dois malheureusement de vous décevoir : • Le NetworkManager ne peut être utilisé que sur un réseau géré par DHCP : il n’est pas possible de configurer les paramètres de façon statique.
Linux Livre Page 527 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
527
• Le NetworkManager est inadapté pour configurer plusieurs interfaces LAN (comme c’est le cas, par exemple, sur un serveur). • Courant 2007, le NetworkManager rencontrait encore des problèmes de compatibilité avec certains contrôleurs Wi-Fi. Il fonctionne bien avec, entre autres, les contrôleurs Intel 2100, 2200 et 2915 ainsi qu’avec le pilote MadWifi. La page suivante vous donnera plus de détails sur ce sujet : http://live.gnome.org/NetworkManagerHardware • Du fait que le NetworkManager est piloté par une interface graphique, vous ne pouvez établir une connexion réseau qu’après avoir ouvert une session. Pour de nombreuses fonctionnalités, il serait souhaitable de disposer d’une connexion réseau dès l’amorçage de l’ordinateur. Il existe par ailleurs une complication supplémentaire : le NetworkManager ne peut gérer que les interfaces non utilisées. En d’autres termes, l’utilisation simultanée d’outils de configuration classiques avec le NetworkManager conduit à des conflits. Fin 2006, OpenSUSE 10.2 a été la première distribution à en tirer des conséquences et à demander à la configuration réseau quel outil (parmi YaST ou le NetworkManager) utiliser. Démarrage
Le NetworkManager est, sur la plupart des distributions, partagé entre plusieurs paquets : network-manager contient le programme NetworkManager à proprement parler ainsi que NetworkManagerDispatcher, qui effectuent tout le travail en tâche de fond. Vérifiez bien que ces services sont effectivement lancés par le système Init-V. Sur certaines distributions (par exemple Fedora), ce n’est pas le cas par défaut. Les interfaces graphiques pour Gnome et KDE se trouvent dans les paquetages networkmanager-gnome et knetworkmanager. Avant de lancer le NetworkManager, vérifiez que les interfaces réseau ne sont pas gérées par le programme de configuration de votre distribution. Effacez-y toute interface existante ! Sur Debian et Ubuntu, vous pouvez aussi, tout simplement, effacer les lignes correspondantes dans le fichier /etc/network/interfaces (faites-en toutefois éventuellement une copie de sauvegarde). Les interfaces réseau devraient maintenant être inutilisées, ce dont vous pouvez vous convaincre à l’aide de la commande ifconfig. Au besoin, désactivez vous-même les interfaces : root# ifconfig eth0 down root# ifconfig eth1 down
Pour lancer le NetworkManager, exécutez l’une des deux commandes suivantes selon votre environnement de bureau. Le programme (Applet) apparaît alors sous la forme d’une icône dans le tableau de bord. Au besoin, les services NetworkManager requis sont lancés automatiquement. Par la suite, Gnome et KDE se chargeront de lancer automatiquement l’appliquette. utilisateur$ nm-applet &
Gnome
utilisateur$ knetworkmanager & KDE Un clic sur l’appliquette vous montre tous les réseaux à portée desquels vous vous trouvez, ainsi que leur nom. Une fois que vous avez choisi un réseau, apparaît une boîte de dialogue pour saisir votre mot de passe. Pour vous éviter d’avoir à saisir systématiquement le mot de
Linux Livre Page 528 Mardi, 23. septembre 2008 1:05 13
528
LINUX
passe, le NetworkManager enregistre ce dernier dans la base de données centrale de Gnome ou KDE (dont vous devez fournir le mot de passe maître à la première tentative d’utilisation).
26.8 Zeroconf et Avahi Zeroconf
Jusqu’à présent, je suis parti du principe que la configuration réseau de votre ordinateur était effectuée soit par vous-même, soit par le biais d’un serveur DHCP (voir Chapitre 28). Il existe toutefois une troisième voie : la configuration automatique par Zeroconf. Dans ce cadre, tous les ordinateurs présents sur le réseau partagent leurs informations de connexion. Un nouvel ordinateur ou périphérique connecté au réseau peut donc se configurer automatiquement à l’aide de ces informations, de manière à pouvoir communiquer sans conflit avec les autres périphériques. Les ordinateurs configurés par ce biais utilisent des adresses IP de la plage 169.254.*.* ainsi que des noms d’hôtes se terminant par .local. Les communications Zeroconf interviennent sur le port UDP 5454. Pour que Zeroconf fonctionne, ce port ne doit donc pas être bloqué par un pare-feu ! Zeroconf et DHCP ne sont pas mutuellement exclusifs : lorsque les ordinateurs Zeroconf obtiennent leurs adresses IP par DHCP, Zeroconf ne modifie pas les valeurs de celles-ci. Cela devient toutefois problématique lorsque certaines adresses IP sont attribuées par DHCP et d’autres par Zeroconf : les ordinateurs se trouvent alors sur deux segments de réseau distincts qui ne peuvent communiquer entre eux.
Un explorateur compatible Zeroconf montre tous les ordinateurs Zeroconf visibles sur le réseau ainsi que leurs ressources (par exemple les partages réseau, serveurs HTTP ou FTP). Ainsi, il est possible d’intégrer plusieurs ordinateurs à un réseau et de partager des données, sans pour autant exiger un gros travail de configuration. Il reste à voir si le concept de Zeroconf peut s’imposer : le développement des routeurs (ADSL) intégrant des serveurs DHCP facilite l’intégration d’ordinateurs Linux au sein d’un réseau, même sans faire appel à Zeroconf. Pour les réseaux statiques, dont la structure ne change que rarement, Zeroconf présente peu d’intérêt. Même pour les réseaux hétérogènes comprenant des ordinateurs sous Windows, Zeroconf n’est pas d’une grande assistance car il est peu usité sous Windows. Avahi
Zeroconf fut initialement implémenté par Apple sous le nom Rendezvous. Ce projet, ultérieurement baptisé Bonjour, est également disponible pour Windows. Cette implémentation, bien que disponible sous forme de code open-source, n’est toutefois pas compatible avec la licence GPL. Pour cette raison, un projet Zeroconf (indépendant de Bonjour) a vu le jour pour Linux, sous le nom d’Avahi. Sa licence de distribution est la LGPL. http://avahi.org Le service avahi-daemon est responsable des communications entre ordinateurs Avahi. La quasi-totalité des grandes distributions propose un paquetage Avahi dans lequel vous trouverez ce programme ainsi que divers outils et bibliothèques. Il n’est toutefois que rarement installé et activé.
Linux Livre Page 529 Mardi, 23. septembre 2008 1:05 13
CONFIGURER L’ACCÈS RÉSEAU (RÉSEAU LOCAL, WI-FI)
529
Il existe également des lacunes au niveau de l’intégration avec les outils de configuration réseau. L’outil Gnome network-admin est toutefois une exception positive : vous pouvez y activer le lancement automatique du démon Avahi par le biais du système Init-V. À l’heure actuelle, mes tests ont montré que l’utilisation d’Avahi n’est pas aussi simple qu’on pourrait s’y attendre. Ces problèmes ne sont pas forcément liés à la technique en soi ou à l’implémentation d’Avahi. L’adoption de Zeroconf est encore très limitée et, par ailleurs, il existe un certain scepticisme quant à la sûreté de l’outil. Aucune distribution n’a donc pour le moment franchi le pas de mettre en place Avahi dès l’installation d’un ordinateur : cela contribuerait pourtant à donner ses lettres de noblesse à cet outil.
Linux Livre Page 530 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 531 Mardi, 23. septembre 2008 1:05 13
27
Accès à Internet Dans les chapitres précédents, nous avons supposé que l’ordinateur était connecté à un réseau local et accédait de cette manière à Internet. La situation actuelle en France y correspond souvent. Du fait de la prépondérance des "box" sur le marché de l’ADSL, peu de personnes se soucient aujourd’hui de l’accès à Internet : l’ordinateur est souvent branché via Ethernet à la box et celle-ci se charge de tout. Si vous utilisez ce type de "box" ou un routeur ADSL, ce chapitre ne vous concerne pas. La configuration est gérée par le routeur et est équivalente à la connexion d’un ordinateur au réseau local. Les informations pertinentes à ce sujet se trouvent au Chapitre 26. Cependant, il existe d’autres méthodes d’accès à Internet : • Modem analogique. Dans certaines zones non desservies par l’ADSL ou pour des raisons d’économies, le modem analogique est une alternative souvent peu coûteuse bien que lente. Toutes les distributions Linux fournissent des outils de configuration pour les modems. Les modems plus anciens connectés à une interface série présentent peu de problèmes. Les modems internes (sur un ordinateur portable), les cartes PCI modem et les modems USB ont souvent besoin de pilotes qui manquent fréquemment sous Linux. • RNIS. Le RNIS est largement passé de mode en France. De plus, peu de distributions fournissent les outils de configuration. Pour de nombreuses cartes, il faut télécharger les pilotes du fabricant (ce qui est difficile sans accès à Internet). Nous n’en parlerons que brièvement dans cette section. • ADSL. Si vous disposez d’un routeur ADSL (ce que sont la plupart des "box" des fournisseurs d’accès), il suffit de brancher votre ordinateur au routeur. Techniquement, cette configuration est équivalente à un réseau local. La configuration est un jeu d’enfant grâce à DHCP et tout peut être prêt en moins d’une minute. En revanche, si vous utilisez un modem ADSL non routeur, la configuration est généralement plus compliquée et dépend de nombreux facteurs comme votre fournisseur d’accès et l’interface du modem. C’est de cette situation que nous traiterons dans ce chapitre.
27.1 Outils de configuration Configuration d’un modem analogique Outils de configuration
Selon la distribution et votre environnement de bureau, les diverses interfaces utilisateur suivantes sont à votre disposition pour configurer votre modem. Vous pouvez aussi lancer la connexion avec l’outil network-admin. Cependant, cet outil est peu pratique au quotidien. Le problème principal est que cet outil ne renvoie aucune information sur l’état de la connexion et sur les différents problèmes rencontrés. Pour les utilisateurs de Gnome, gnome-ppp est le meilleur choix.
Linux Livre Page 532 Mardi, 23. septembre 2008 1:05 13
532
LINUX
Gnome KDE Debian, Ubuntu Red Hat, Fedora SUSE
gnome-ppp kppp (voir Figure 27.1) outils Gnome/KDE system-config-network = neat module YaST Périphériques réseau > Modem
L’aspect de ces différents programmes varie, mais il se ramène toujours aux quatre informations principales que sont le numéro de téléphone de votre fournisseur d’accès, votre identifiant et votre mot de passe chez ce fournisseur ainsi que l’interface physique de votre modem. Certains programmes séparent la configuration matérielle de la configuration du fournisseur d’accès. Les problèmes de configuration ne sont généralement liés qu’au matériel. Il existe différents types de modems analogiques : • Modems externes. Les modems externes sont des périphériques à relier à l’interface série de l’ordinateur. Ils ne présentent généralement que peu de problèmes. On accède à l’interface série sous Linux avec /dev/ttySn, où n est, selon toute probabilité, 0 ou 1. • Modems USB. Ces modems sont connectés à l’ordinateur via USB. L’interface correspondante est souvent /dev/ACMn ou /dev/input/ttyACMn. Généralement, ce type de modem est également pris en charge, mais certains modèles peuvent poser problème. Vous trouverez une liste de compatibilité à l’adresse http://www.linux-usb.org/. • Modems internes. Les modems internes consistent en une carte additionnelle ou sont intégrés directement à la carte mère de l’ordinateur. Sous Linux, on accède généralement à ces modems comme à des modems externes par /dev/ttySn. Malheureusement, il s’agit souvent de "winmodems", qui sont peu ou mal pris en charge sous Linux.
Figure 27.1 Configuration d’un modem avec KPPP.
Linux Livre Page 533 Mardi, 23. septembre 2008 1:05 13
533
ACCÈS À INTERNET
Configuration RNIS Outils de configuration
Traditionnellement, SUSE était la meilleure distribution pour les utilisateurs de RNIS. Le marché allemand avait de nombreux utilisateurs RNIS et beaucoup de matériels RNIS sont allemands (AVM, Siemens). Depuis, SUSE fait partie de l’entreprise américaine Novell et ne fournit plus les pilotes binaires AVM, ce qui est sensé du point de vue de la philosophie libre, mais nettement moins pratique pour les utilisateurs de RNIS. Selon votre distribution, il existe différentes interfaces utilisateur pour configurer votre carte RNIS. Debian, Ubuntu Red Hat, Fedora SUSE
network-admin (suppose que le matériel CAPI est configuré) system-config-network = neat (uniquement ISDN4Linux) module YaST Périphériques Réseau, ISDN (RNIS) (ISDN4Linux, CAPI)
Nous ne traiterons pas plus du RNIS dans le cadre de cet ouvrage. La configuration et les difficultés que vous pouvez rencontrer dépendent largement du matériel et de la distribution. Vous pouvez par exemple lire la page http://forum.ubuntu-fr.org/viewtopic.php?pid=1775181 pour avoir des informations sur une configuration RNIS sous Ubuntu 8.04.
Configuration ADSL La méthode d’accès à Internet la plus simple consiste à utiliser un routeur ADSL. Si vous disposez uniquement d’un modem ADSL, sa configuration dépend de son type, de la variante de PPP utilisée et de votre distribution. • Type de modem. On distingue les modems Ethernet des modems USB. Si vous le pouvez, évitez les modems USB, qui manquent généralement cruellement de pilotes. • Variante de PPP. Les informations TCP/IP peuvent être transmises par PPPoA, PPPoE ou PPTP. Vous trouverez des informations à ce sujet à la section suivante. Si vous ne savez pas quel protocole utiliser, demandez à votre fournisseur d’accès. Outils de configuration
Le tableau suivant résume les outils de configuration ADSL utilisables dans chaque distribution et les protocoles qu’ils prennent en charge. Debian, Ubuntu Red Hat, Fedora SUSE
pppoeconf (uniquement PPPOE) system-config-network = neat (uniquement PPPOE) module YaST Périphériques réseau, DSL (PPPOE, PPPOA, PPTP, CAPI pour ADSL).
Si votre distribution ne fournit pas d’outils pour votre modem ADSL ou pour le protocole pris en charge par votre fournisseur d’accès, vous pouvez vous procurer un routeur ADSL ou configurer manuellement votre modem.
Linux Livre Page 534 Mardi, 23. septembre 2008 1:05 13
534 pppoeconf
LINUX
Les distributions basées sur Debian fournissent l’outil en ligne de commande pppoeconf. Démarrez pppoeconf en tant que root dans une fenêtre de terminal. La commande cherche un modem ADSL sur toutes les interfaces réseau. Une fois le modem trouvé, indiquez votre identifiant et votre mot de passe. Vous pouvez simplement confirmer les questions suivantes à propos de la configuration du DNS et des paramètres MSS. Pour finir, le programme vous demande si la connexion ADSL doit être lancée automatiquement au démarrage de l’ordinateur ou bien manuellement. La première variante est sensée lorsque votre accès ADSL est illimité (ce qui est le cas pour l’immense majorité des forfaits en France) et lorsque vous voulez rester en ligne en permanence. Dans la seconde variante, vous devez activer et désactiver manuellement l’accès à Internet avec les commandes suivantes : root# pon dsl-provider ... root# poff dsl-provider
27.2 Configuration manuelle d’un modem Cette section traite du problème des winmodems et de la configuration manuelle d’une connexion avec un modem via pppd. Il ne s’agit que d’une section minimale ; en cas de problème ou pour plus de détails, reportez-vous au Modem HOWTO (http://tldp.org/ HOWTO/Modem-HOWTO.html).
Winmodems
scanModem
Les modems internes sont souvent des winmodems (ou softmodems). Les fonctions diverses du modem ne sont pas gérées par le matériel, mais émulées par du logiciel. Ce logiciel n’est souvent disponible que sous Windows. Peu de winmodems fonctionnent sous Linux. La plupart des entreprises ne fournissent pas les spécifications nécessaires au développement de pilotes pour les projets libres. Vous trouverez plus d’informations à ce sujet aux adresses http://linmodems.org/ et http://walbran.org/sean/ linux/linmodem-howto.html. Ce genre de modem est le plus souvent rencontré sur des ordinateurs portables. Le site web http://www.linux-laptop.net présente de nombreux modèles, leur compatibilité avec Linux et éventuellement décrit leur fonctionnement. La première étape consiste à déterminer le type exact de modem dont vous disposez. Téléchargez pour cela la commande scanModem et lancez-la : user$ wget http://linmodems.technion.ac.il/packages/scanModem.gz user$ gunzip scanModem.gz user$ chmod u+x scanModem user$ ./scanModem Identifying PCI bus slots with candidate modems. === Finished modem firmware and bootup diagnostics section. === === Next deducing cogent software === Analysing card in PCI bus 00:1f.6, writing to scanout.00:1f.6
Linux Livre Page 535 Mardi, 23. septembre 2008 1:05 13
ACCÈS À INTERNET
535
Modem with PCI ID 8086:24c6 is in the software modem category. The modem driver snd-intel8x0m is Not loaded. ... Unload and reload the modem driver: sudo modprobe -r snd-intel8x0m sudo modprobe snd-intel8x0m and rerun ./scanModem
Sur mon ordinateur portable, scanModem indique que la fonction du modem est gérée par une puce son Intel. La commande indique que je dois charger le module du noyau sndintel8x0m et relancer scanModem : root# modprobe snd-intel8x0m user$ ./scanModem ... Checking for match with Archived softmodem information. IDENT=hsfmodem Using scanout.00:1f.6 data, and writing guidance to ModemData.txt Writing Intel.txt Writing Conexant.txt Writing residual guidance customized to your System. A subfolder Modem/ has been written, containing these files with more detailed Information: -------------------------------------------------------------------1stRead.txt Bootup.txt Conexant.txt dmesg.txt DriverCompiling.txt InfoGeneral.txt Intel.txt ModemData.txt Rational.txt scanout.00:1f.6 SoftModem.txt Testing.txt UNSUBSCRIBE.txt wvdial.txt YourSystem.txt
scanModem a créé divers fichiers dans le répertoire Modem. Ceux-ci fournissent des informations supplémentaires sur le modem et sur les étapes suivantes. On y trouve en particulier : user$ less Modem/ModemData.txt ... Formal support for Conexant chipset modems are available ONLY through http://www.linuxant.com/drivers. Read Conexant.txt for details. and Modem/YourSystem.txt for follow through guidance. Driver speed is limited to 14,400 until a key is purchased. There is NO freeware alternative. ...
Suivez les instructions de scanModem. Notez que, si vous avez besoin de pilotes binaires, ceux-ci doivent être actualisés à chaque mise à jour du noyau. Cela en fait une solution à limiter aux cas d’urgence.
Configuration manuelle de pppd La connexion s’établit en deux étapes. Le modem doit d’abord composer le bon numéro de téléphone, ce que fait le programme chat. Lorsque la connexion téléphonique est établie,
Linux Livre Page 536 Mardi, 23. septembre 2008 1:05 13
536
LINUX
pppd est démarré. Il prend le contrôle du modem et commence à communiquer avec le fournisseur d’accès. Une fois l’authentification réussie, votre ordinateur est connecté à Internet. chat
chat définit l’établissement de la communication entre le modem et le fournisseur d’accès. Le fichier suivant est un exemple de configuration de chat. # /etc/chatscripts/mychat # paramètres TIMEOUT 60 ABORT ERROR ABORT BUSY ABORT VOICE ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "NO DIAL TONE" ABORT "NO ANSWER" # la communication elle-même "" "+++ATZ" "OK" "ATDT1234567890" CONNECT
La première section indique quelles erreurs sont rédhibitoires pour la connexion. La seconde section est la communication du modem. La première ligne remet à 0 le modem, la deuxième ligne lance la numérotation (1234567890 est ici à remplacer par le numéro de téléphone de votre fournisseur d’accès) et la troisième ligne établit la connexion – si aucune des erreurs précédentes n’a été rencontrée. Options de pppd
Le fichier suivant, à placer dans le répertoire /etc/ppp/peers (par exemple /etc/ppp/peers/ myconnection), contient les options de pppd pour établir la connexion. L’interface du modem doit être indiquée dans la première ligne (à l’exception des commentaires). Le mot clé connect appelle le bon fichier de configuration pour chat. Vous trouverez une description de toutes les autres options de ce fichier dans man pppd. /dev/ttyS0 # spécifique aux modems analogiques crtscts connect '/usr/sbin/chat -f /etc/chatscripts/mychat' # options classiques de pppd lock noauth usepeerdns noipdefault defaultroute name "hofer" idle 300 # pour Red Hat / Fedora ipparam "modem"
Authentification
Les fichiers de configuration pour PAP et pour CHAP doivent tous les deux être composés d’une ligne qui contient l’identifiant et le mot de passe chez votre fournisseur d’accès : # login name "identifiant"
password (secret) * "mot_de_passe"
Linux Livre Page 537 Mardi, 23. septembre 2008 1:05 13
ACCÈS À INTERNET
537
Red Hat et Fedora
Il existe une étape supplémentaire sous Red Hat et Fedora. Vous devez modifier le fichier /etc/sysconfig/network-scripts/ifcfg-myconnection pour y ajouter le paramètre PEERDNS=yes.
Démarrage et arrêt de la configuration
La connexion est démarrée avec : root# pppd call myconnection
pppd est lancé en tâche de fond. Il faut généralement compter une trentaine de secondes pour que la connexion soit établie. Vous pouvez alors vérifier avec ifconfig, route -n et ping si la connexion fonctionne bien. Pour couper la connexion, lancez : root# killall pppd
27.3 Configuration matérielle de l’ADSL Variantes de configuration
Il existe plusieurs possibilités de configuration en fonction du type de modem ADSL (Ethernet ou USB) ou du protocole (PPPoE, PPPoA, PPTP). Dans cette section, nous traiterons de PPPoE et de PPTP. Nous ne visons cependant pas à l’exhaustivité, qui dépend en grande partie du matériel et du fournisseur d’accès. Vous trouverez des informations sur certains modèles courants en France à l’adresse http://doc.ubuntu-fr.org/modem_adsl. Nous n’évoquerons donc pas PPPoA. Nous vous conseillons d’éviter ces modems sous Linux. L’installation en est complexe et l’utilisation trop sujette à erreur. Si vous devez passer par PPPoA, il est préférable d’acquérir un routeur ADSL compatible avec PPPoA. La page http://www.linux-usb.org/SpeedTouch/ parle plus précisément des modems Speedtouch.
Configuration manuelle de PPPoE Configuration de la carte réseau
Le modem ADSL est connecté à la carte réseau par un câble Ethernet. Cependant, le protocole TCP/IP n’est pas utilisé. L’adresse IP et le masque de sous-réseau de l’interface ne sont pas pris en compte. Il n’est donc pas nécessaire de configurer la carte. En particulier, l’interface réseau ne doit pas être configurée en tant que passerelle.
Configuration de pppd
PPPoE est géré par un module du noyau. Pour que pppd puisse utiliser l’interface réseau pour PPPoE, il faut installer le module de pppd, rp-pppoe.so. Ce fichier est généralement installé avec pppd. Pour configurer pppd, vous avez besoin d’un fichier de configuration dans /etc/ppp/peers (par exemple /etc/ppp/peers/adsl) analogue à celui-ci : # options spécifiques à PPPoE plugin rp-pppoe.so mru 1492 mtu 1492 # le modem ADSL est branché à cette interface eth0 # options habituelles
Linux Livre Page 538 Mardi, 23. septembre 2008 1:05 13
538
LINUX
lock noauth noipdefault defaultroute usepeerdns # identifiant pour /etc/ppp/pap-secrets et chap-secrets name "hofer" # attendre 4 secondes lors d'une déconnexion avant d'essayer de # reconnecter persist holdoff 4 maxfail 25 # pour Red Hat/Fedora ipparam "adsl" Démarrage et arrêt de pppd
pppd est démarré comme un modem analogique avec la commande : root# pppd call adsl
Pour fermer la connexion, arrêtez pppd avec killall. root# killall pppd
Configuration manuelle de PPTP
Configuration de la carte réseau
Configuration de pppd
Le protocole PPTP est pris en charge par le programme pptp. La plupart des distributions courantes fournissent ce paquet dans un seul paquet du même nom, qui n’est cependant pas toujours installé automatiquement. Vous trouverez plus d’informations sur PPTP et sur son programme de configuration graphique pptpconfig à l’adresse http://pptpclient.sourceforge.net/. Le modem ADSL est connecté à l’ordinateur via Ethernet, mais il faut cette fois configurer la connexion. Vous devez choisir l’adresse IP et le masque de sous-réseau de manière que le modem soit accessible. Si l’adresse IP de votre modem est 10.0.0.138 (ce qui est le cas de certains modems Alcatel), choisissez pour votre interface une IP de type 10.0.0.n et un masque 255.255.255.0. N’indiquez pas d’adresse de passerelle. Pour vérifier que la connexion fonctionne, utilisez simplement ping et vérifiez que le modem répond à son adresse. Pour configurer pppd, vous avez besoin d’un fichier dans /etc/ppp/peers, par exemple / etc/ppp/peers/adsl. Les lignes qui suivent sont un exemple de ce type de fichier. # /etc/ppp/peers/adsl # options spécifiques à pptp pty "/usr/sbin/pptp 10.0.0.138 --nolaunchpppd" # pas de compression nobsdcomp nodeflate # identifiant pour les fichiers /etc/ppp/pap-secrets et chap-secrets name "hofer" # options habituelles lock noauth noipdefault
Linux Livre Page 539 Mardi, 23. septembre 2008 1:05 13
ACCÈS À INTERNET
defaultroute usepeerdns # attendre 4 secondes lors d'une déconnexion avant d'essayer de # reconnecter persist holdoff 4 maxfail 25 # pour Red Hat/Fedora ipparam "adsl" Démarrage et arrêt de pppd
Pour démarrer et arrêter pppd, utilisez les commandes habituelles : root# pppd call adsl root# killall pppd
539
Linux Livre Page 540 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 541 Mardi, 23. septembre 2008 1:05 13
28
Passerelle Internet (mascarade et DHCP) Ce chapitre traite de la configuration d’un serveur. Il s’adresse à tous ceux qui gèrent de petits réseaux locaux, dans lesquels se trouvent éventuellement des clients Windows. Il décrit la mise en place d’une passerelle Internet pour le réseau local. Il s’agit d’un ordinateur qui met à disposition l’accès à Internet pour d’autres ordinateurs. Le plus simple est généralement d’activer la mascarade sur cet ordinateur. Pour faciliter la gestion du réseau local, l’installation d’un serveur DHCP est également conseillée. Les clients qui s’y connectent peuvent alors être configurés presque entièrement automatiquement. Une passerelle devrait toujours être protégée par un pare-feu (voir Chapitre 29). Les informations de ce chapitre ont été testées uniquement sous Ubuntu, openSUSE et Fedora, mais la configuration des distributions Debian, SUSE Enterprise et Red Hat diffère généralement peu.
28.1 Introduction Ce chapitre décrit l’installation des composants suivants :
Installation des paquetages
Aides à la configuration
• Mascarade/NAT. La mascarade permet de connecter tous les clients d’un réseau local à Internet. Un ordinateur est connecté à Internet via ISDN ou ADSL, tandis que tous les autres sont connectés à cette machine et peuvent utiliser Internet de cette manière. Il n’est donc pas nécessaire que tous aient leur propre modem ! • DHCP et DNS. Le DHCP permet de gérer automatiquement les adresses IP et d’autres paramètres réseau sur tous les clients. Il existe deux possibilités pour mettre en place ce type de serveur. Dans le cas d’un petit réseau simple, on peut utiliser dnsmasq, qui gère à la fois le DHCP et le service de noms (DNS) du réseau. Pour des tâches plus importantes, on utilise plutôt dhcpd. Celui-ci ne fait pas office de serveur de noms ; il est généralement couplé avec Bind. La configuration de ce dernier, plutôt complexe, sort du cadre de cet ouvrage. Pour des raisons de sécurité, les paquetages présentés ici ne sont généralement pas installés par défaut. Il existe parfois des paquetages avec des noms similaires pour les services clients associés, mais ils ne suffisent pas. Une fois le paquetage serveur installé, le programme doit être activé explicitement. Ce chapitre s’adresse à des utilisateurs avancés de Linux. Les divers fichiers de configuration seront décrits, ce qui ne sera pas le cas des interfaces utilisateur mises à disposition par les différentes distributions. L’approche suivie ici (modification manuelle des fichiers de configuration) peut sembler démodée, mais elle a fait ses preuves. Vous ne savez où se trouvent les fichiers que lorsque vous les modifiez manuellement. Et seule cette méthode permet de modifier ou de transférer
Linux Livre Page 542 Mardi, 23. septembre 2008 1:05 13
542
LINUX
une configuration sur un autre serveur, par exemple après une réinstallation ou un changement de distribution. Sécurité
Si vous désirez utiliser Linux en tant que serveur réseau, vous devez vous préoccuper de la sécurité (voir Chapitre 29).
IPv6
Toutes les commandes utilisées ici sont compatibles avec IPv6. Les tests n’ont cependant été effectués que sur une base IPv4 et les spécificités d’IPv6 ne seront pas traitées.
Topologie du réseau utilisé comme exemple Pour faciliter l’orientation dans ce chapitre et les suivants, nous utilisons un réseau fixe (voir Figure 28.1). Nom de domaine sol (192.168.0.*)
Le réseau local utilise la plage d’adresses 192.168.0.* et le domaine sol. Les adresses IP sont obtenues de la manière suivante. Lorsque vous planifiez un réseau, le serveur obtient généralement l’adresse *.*.*.1 et tous les clients, des adresses *.*.*.n, où n est une suite de nombres séquentielle.
Figure 28.1 Topologie du réseau.
Passerelle mars (192.168.0.1)
mars est la passerelle. Elle sécurise aussi le réseau contre les accès extérieurs par un pare-feu. Divers services réseau fonctionnent dessus (DHCP, DNS, Apache, MySQL, Samba, NFS, SSH, etc.).
Linux Livre Page 543 Mardi, 23. septembre 2008 1:05 13
PASSERELLE INTERNET (MASCARADE ET DHCP)
543
L’accès à Internet est assuré par un modem ADSL, branché via un câble réseau (eth1). L’accès au réseau local passe par un concentrateur (hub) via eth2. L’ordinateur dispose également d’une imprimante USB, partagée par tout le réseau. Autres éléments du réseau
uranus et saturne sont des ordinateurs fixes, avec pour adresses IP 192.168.0.2 et 192.168.0.13. mercure est un ordinateur portable, avec pour IP 192.168.0.15. pluton est une imprimante laser réseau. Pour des raisons de sécurité, il serait préférable que mars ne serve qu’à l’accès à Internet et au pare-feu. Un vieil ordinateur peut alors suffire. Tous les autres services du réseau peuvent être gérés par un second ordinateur derrière le pare-feu. Le problème de cette configuration est que chaque programme serveur sur mars présente le danger qu’un intrus l’utilise pour accéder à l’ordinateur (malgré le pare-feu). Dans les grandes entreprises, l’architecture réseau sépare généralement l’ordinateur pare-feu et les serveurs. Pour mon environnement de test privé, c’est néanmoins nettement moins pratique.
Installation d’une passerelle Internet Pour installer une passerelle Internet, on passe généralement par les étapes suivantes : • Installation de la distribution. Installez d’abord la distribution souhaitée, de la manière la plus réduite possible. Plus le nombre de paquetages est élevé, plus le risque d’une faille de sécurité est grand. • Configuration du réseau. Pour configurer le réseau, utilisez des adresses statiques. La passerelle dispose généralement de deux cartes Ethernet : l’une d’elles assure la connexion à Internet (par exemple, via un modem ADSL), la seconde sert de connexion au réseau local. • Configuration d’Internet. Configurez Internet. Si votre connexion n’est pas permanente ou illimitée, il faut généralement la configurer de sorte qu’elle soit mise en place automatiquement et coupée lorsqu’elle n’est plus utilisée. Si votre accès est permanent et illimité, rien ne s’oppose à ce que la connexion soit établie dès le démarrage de l’ordinateur et arrêtée en même temps que ce dernier. • Mascarade. Pour que les autres ordinateurs du réseau accèdent à Internet, il faut activer la mascarade. Pour que les ordinateurs clients puissent utiliser cette fonction, les prérequis suivants sont nécessaires. Ils doivent être connectés au serveur via le réseau local, indiquer l’adresse du serveur en tant que passerelle et comme serveur de noms celui du fournisseur d’accès à Internet. Pour les premiers tests, vous pouvez paramétrer les clients de manière statique. • DHCP. Pour faciliter la configuration des clients, il est conseillé d’installer un serveur DHCP qui attribue à tous les clients leur adresse IP, ainsi que la passerelle et l’adresse du serveur de noms. Le client ne doit alors être configuré qu’en tant que client DHCP, ce que permettent toutes les distributions Linux et Windows en quelques clics.
Linux Livre Page 544 Mardi, 23. septembre 2008 1:05 13
544
LINUX
• Serveurs de noms. Pour que les clients connaissent les noms des ordinateurs du réseau, l’installation d’un serveur de noms s’impose souvent dans les réseaux importants. Ce service est utile pour la communication interne et se place entre le DNS du fournisseur d’accès et l’ordinateur client. Il réduit le trafic Internet vers le fournisseur d’accès et les requêtes peuvent être traitées plus vite.
Ajout de nouveaux clients
• Pare-feu. Pour sécuriser les ordinateurs du réseau local contre un accès indésirable, il faut absolument installer un pare-feu sur l’ordinateur (voir Chapitre 29). Lorsque votre réseau local est configuré, vous pouvez rapidement ajouter un client. Si votre DHCP est géré par dnsmasq, il suffit d’ajouter une ligne hostname à /etc/dnsmasq.conf. Ici, 00:11:22:33:44:55 est l’identifiant MAC de la carte réseau (numéro unique), terre le nom d’hôte du nouvel ordinateur et 192.168.0.21 l’adresse IP souhaitée. dhcp-host=00:11:22:33:44:55,terre,192.168.0.21
Si vous utilisez dhcpd et bind, ajoutez un élément selon le motif suivant : host terre { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.0.12;}
Sur le client, l’installation est encore plus simple : il suffit d’indiquer que la configuration réseau est assurée par DHCP.
Comparaison entre un routeur matériel et une passerelle Linux De nombreuses fonctions de ce chapitre peuvent également être remplies par un routeur ADSL matériel. Il s’agit d’un appareil qui fait office de modem ADSL, de commutateur Ethernet et éventuellement de point d’accès sans fil. C’est le cas de la plupart des "box" prêtées ou louées par de nombreux fournisseurs d’accès français. En général, ce type d’appareil sert également de serveur DHCP et de pare-feu. Il est configuré via un navigateur web. Il faudrait d’ailleurs plutôt parler de passerelle, mais le terme routeur s’est imposé.
Figure 28.2 Routeur ADSL.
Le principal avantage d’un routeur matériel est que la configuration est très simple et qu’il est, à l’achat, moins cher qu’un ordinateur sous Linux et un commutateur (auxquels il faut parfois ajouter un modem ADSL et une carte sans fil). Si vous souhaitez rapidement mettre en place un accès à Internet, ce type de solution vous économisera du temps et de la fatigue.
Linux Livre Page 545 Mardi, 23. septembre 2008 1:05 13
PASSERELLE INTERNET (MASCARADE ET DHCP)
545
Il suffit alors généralement de connecter les ordinateurs au routeur, comme l’illustre la Figure 28.2. Cette solution présente l’avantage de la simplicité. Vous pouvez, par exemple, intégrer un serveur web local ou des serveurs d’authentification ou de fichiers (LDAP, Samba, etc.). De plus, vous comprendrez vraiment comment fonctionne votre réseau et quels services sont à votre disposition. Pour finir, il est possible de combiner ces deux stratégies : utiliser un routeur ADSL pour les fonctions routeur et DHCP, et un serveur Linux pour les autres fonctions.
28.2 Mascarade (NAT) Notions de base Le point de départ de la mascarade est toujours le même : un ordinateur est connecté à Internet et doit fournir un accès à Internet à d’autres ordinateurs du réseau local. Le problème est qu’en général, les clients du réseau local utilisent des adresses IP privées : celles-ci se trouvent dans des plages d’adresses réservées pour les réseaux locaux. Elles ne sont valides que sur le réseau local et pas sur Internet. Seul le serveur dispose (en plus de son IP sur le réseau local) d’une seconde adresse IP unique sur le réseau mondial, attribuée par le fournisseur d’accès à Internet. Cette adresse n’est souvent pas fixe ; elle peut changer à intervalles réguliers ou à chaque déconnexion. Pour éviter les conflits d’adresses, le serveur ne peut pas se contenter de transmettre les requêtes Internet des clients sans les modifier. On parlerait dans ce cas d’un routeur. Les termes de mascarade et de routage sont souvent intervertis, mais recouvrent deux concepts différents. Le routage sur Internet n’est possible que lorsque les clients disposent d’une IP valide sur Internet, ce qui est rarement le cas dans un réseau local. Dans ce qui suit, l’ordinateur doté de l’accès à Internet est désigné comme serveur et tous les autres sont appelés clients, indépendamment de leurs fonctions réelles. Dans le cas de la mascarade, le serveur est souvent appelé passerelle Internet ou routeur (ce qui est un abus de langage). Mascarade
Selon le concept de mascarade, les paquets de données provenant des clients à destination d’Internet sont acceptés par le serveur, puis transformés comme s’ils en provenaient. Pour formuler cela de manière plus concrète, l’adresse d’expédition du paquet du client (par exemple 192.168.0.17) est transformée en l’adresse du serveur (par exemple 175.118.190.232). Cette modification est désignée par le terme NAT (Network Address Translation, traduction d’adresses réseau). Le NAT est un concept plus avancé que celui de mascarade. En effet, il existe plusieurs manières de mettre en place un NAT, la mascarade étant la plus simple. Le paquet peut alors être envoyé sur Internet, qui renvoie généralement une réponse après un certain temps. Par exemple, si le paquet de données de départ est une requête vers un site web, la réponse est le document HTML demandé sous la forme de paquets IP.
Linux Livre Page 546 Mardi, 23. septembre 2008 1:05 13
546
LINUX
Le problème pour le serveur est alors d’adresser la réponse au bon ordinateur (en l’occurrence, 192.168.0.17). Comment connaît-il la bonne adresse ? Vu que le paquet de requête provient du serveur, la réponse lui est également adressée. Pour résoudre ce problème, le serveur modifie non seulement l’adresse d’expédition, mais aussi le port d’expédition. Chaque adresse IP du réseau local est associée à un port donné. Les communications TCP/IP sont réparties sur différents ports. Les ports sont des informations supplémentaires qui identifient le service. Par exemple, FTP utilise normalement les ports 20 et 21, HTTP 80, etc. Il existe aussi de nombreux ports auxquels aucun service n’est associé. Ces numéros sont, entre autres, utilisés pour la mascarade. Celle-ci est mise en place grâce à diverses commandes selon la version du noyau. Le noyau 2.0 utilisait ipfwadm, le noyau 2.2 ipchains et, depuis la version 2.4, le noyau utilise iptables. Cette section se limite à iptables. Mascarade et pare-feu
Les fonctions de mascarade et de pare-feu sont étroitement liées. Cette section suppose que l’ordinateur n’est pas encore configuré en tant que pare-feu. Si c’est le cas, vous devrez d’abord désactiver le pare-feu avant de pouvoir activer la mascarade (voir Chapitre 29 ).
Mascarade avec iptables Configuration manuelle
Après cette description de la mascarade, vous vous attendez probablement à une configuration extrêmement compliquée. Vous ne pourriez pas vous tromper d’avantage. Deux commandes suffisent à l’activer : root# echo 1 > /proc/sys/net/ipv4/ip_forward root# iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE
echo active la fonction de transfert d’IP du noyau, qui est par défaut désactivée. Dans de nombreuses distributions, vous pouvez utiliser à la place la commande sysctl, plus élégante : root# sysctl -w net.ipv4.ip_forward=1
La commande iptables définit une règle selon laquelle un paquet qui doit quitter le réseau local est transmis à l’interface eth1 et manipulé avec les règles du NAT. Selon la configuration de votre accès à Internet, vous devez utiliser, à la place de eth1, une autre interface, comme ppp0 ou ipp0 ! MSS clamping
Si le serveur accède à l’ADSL via le protocole PPPoE (ce qui est rarement le cas en France), cela peut poser problème pour les gros paquets IP. Pour éviter cela, on utilise une commande iptables supplémentaire. Cette règle, appelée MSS clamping, évite que de trop gros paquets ne soient envoyés : root# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN \ -j TCPMSS --clamp-mss-to-pmtu
Sécurité minimale
Il est préférable de mettre en place une sécurité minimale contre les abus. Après tout, une fois la mascarade activée, tous les ordinateurs du réseau local sont connectés à Internet. Les trois commandes suivantes s’assurent que tous les paquets du réseau local passent, mais que seuls les paquets entrants envoyés en réponse à une requête sont transmis au réseau local. Nous supposons ici que le réseau local est connecté au serveur via eth2 et que l’accès à
Linux Livre Page 547 Mardi, 23. septembre 2008 1:05 13
PASSERELLE INTERNET (MASCARADE ET DHCP)
547
Internet passe par eth1. Vous devez modifier ces valeurs en fonction de votre propre configuration. root# root# root# root#
/proc/sys/net/ipv4/ip_forward -P FORWARD DROP -A FORWARD -i eth2 -o eth1 -j ACCEPT -A FORWARD -i eth1 -o eth2 -m state \ --state ESTABLISHED,RELATED -j ACCEPT root# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE Désactiver la mascarade
echo 1 > iptables iptables iptables
Pour désactiver la mascarade, lancez les commandes suivantes : root# iptables -t nat -D POSTROUTING -o eth1 -j MASQUERADE root# echo 0 > /proc/sys/net/ipv4/ip_forward
Modules iptables
Si votre système est bien configuré, la commande iptables charge automatiquement les modules nécessaires dans le noyau. Dans le cas contraire, vous devez les activer manuellement. Les principaux modules sont ip_tables, iptable_nat, ip_conntrack, ipt_MASQUERADE, iptable_filter, ip_conntrack_ftp et ip_nat_ftp.
Activation et désactivation automatique de la mascarade Il ne faut évidemment pas activer manuellement la mascarade à chaque démarrage du serveur. La procédure habituelle est de l’activer en même temps que le pare-feu. De nombreuses distributions et programmes de pare-feu fournissent des assistants de configuration à ces fins. Si vous activez le pare-feu manuellement, activez-le, y compris la mascarade, par un script lancé lors du processus InitV. Si vous n’avez pas de pare-feu ou si vous désirez contrôler ces opérations indépendamment, vous pouvez lancer ou arrêter la mascarade par le biais de son propre script InitV. Si vous accédez à Internet par PPP (modem ADSL ou RNIS), vous pouvez intégrer les commandes de mascarade dans les scripts ip-up ou ip-down de /etc/ppp. La mascarade est alors activée dès que vous êtes connecté à Internet et désactivée lorsque la connexion est coupée. Cette méthode n’est pas compatible avec une gestion des connexions à la demande.
Problèmes La mascarade est une solution élégante pour fournir un accès à Internet à des ordinateurs qui ne disposent pas d’adresse IP valable sur le réseau mondial. Elle pose cependant parfois quelques problèmes, dont seuls les plus fréquents sont détaillés ici. • Un certain nombre de protocoles Internet ont des mécanismes de protection qui vérifient l’association de l’adresse IP. Le fait que la mascarade empêche une correspondance unique entre une adresse IP et un ordinateur peut être à la source de certaines difficultés. • Certains protocoles envoient l’adresse non seulement dans le paquet IP, mais aussi dans le contenu de données du paquet (en tant que texte ASCII ou de manière protégée). FTP est un exemple connu de ce type de comportement. Pour que ce dernier fonctionne
Linux Livre Page 548 Mardi, 23. septembre 2008 1:05 13
548
LINUX
malgré la mascarade, le serveur de mascarade doit modifier, en plus du paquet, le contenu de ce paquet. Linux fournit divers modules pour faire cohabiter la mascarade et les services Internet, par exemple ip_masq_ftp. Ils doivent être activés au besoin : root# modprobe ip_nat_ftp root# modprobe ip_conntrack_ftp
Si les clients FTP rencontrent toujours des difficultés, le plus simple est de les faire fonctionner en mode passif. La plupart activent ce mode automatiquement ou permettent au moins de le faire. • Si le serveur de mascarade est connecté via ADSL/PPPoE à Internet, la taille maximale (MTU) des paquets peut poser problème. Pour éviter cela, il faut la modifier sur tous les clients ou mettre en place un MSS clamping sur le serveur.
Configuration des clients Pour qu’un client puisse utiliser la passerelle pour accéder à Internet, sa configuration réseau doit être la suivante : • L’adresse de la passerelle doit contenir l’adresse IP de la passerelle Linux. • L’adresse du serveur de noms doit être celle du fournisseur d’accès à Internet.
28.3 Serveur DHCP et serveur de noms intégré (dnsmasq) Introduction à DHCP Divers fichiers permettent de régler les différents paramètres réseau : l’adresse IP et celle des autres ordinateurs du réseau (/etc/hosts), l’adresse de la passerelle et du serveur de noms, etc. (voir Chapitre 26). Tous ces paramètres peuvent être configurés statiquement sur l’ensemble des machines. Pour un petit réseau de trois ou quatre ordinateurs, cette procédure est acceptable. Configuration centrale par DHCP
Pour les gros réseaux, il est plus sensé qu’un seul ordinateur s’occupe de transmettre les adresses IP à toutes les autres machines. C’est à cela que sert DHCP (Dynamic Host Configuration Protocol, protocole de configuration dynamique d’hôtes). L’ordinateur qui contrôle le tout est appelé serveur DHCP ; les autres sont les clients DHCP. DHCP présente divers avantages par rapport à une configuration manuelle : • L’administration est centralisée, et donc facilitée. • La configuration des clients est limitée au minimum ; vous devez indiquer le nom de l’ordinateur et du domaine, puis activer DHCP. • L’ajout d’un ordinateur dans le réseau se fait sans problème et ne demande que des modifications mineures sur le fichier de configuration. C’est particulièrement intéressant pour les ordinateurs portables qui ne sont connectés qu’épisodiquement au réseau.
Linux Livre Page 549 Mardi, 23. septembre 2008 1:05 13
PASSERELLE INTERNET (MASCARADE ET DHCP)
549
• Seuls les ordinateurs effectivement en service ont besoin d’une adresse IP. Cela ne présente un avantage que lorsque le nombre d’adresses IP est faible, ce qui n’est généralement pas le cas dans un réseau local. Il compte cependant également quelques inconvénients : • Le fonctionnement de tout le réseau dépend de l’ordinateur sur lequel fonctionne le serveur DHCP. Si ce dernier tombe en panne, les clients actifs utilisent simplement leur dernière adresse. Les clients nouvellement connectés n’ont cependant pas d’adresse réseau. La dépendance à un seul ordinateur peut être diminuée si plusieurs ordinateurs sont configurés comme serveurs DHCP. • Un système DHCP dynamique peut représenter un risque de sécurité. Quiconque entre dans votre bureau peut se connecter au réseau avec un ordinateur. L’accès effectif aux données dépend largement du reste de la configuration du réseau, mais la première étape en devient triviale. DHCP et noms d’hôte des clients
DHCP peut également gérer les noms d’hôte des ordinateurs. Il existe deux variantes de configuration : • Configuration centrale du nom d’hôte par DHCP. Chaque client reçoit du serveur DHCP son nom d’hôte. DHCP est souvent configuré pour associer une IP et le nom d’hôte correspondant à une adresse MAC donnée. Cette adresse est un identifiant unique de la carte réseau. • Gestion locale des noms d’hôte sur les clients. Les clients locaux ont un nom d’hôte fixe. Le serveur DHCP ne sert qu’au reste de la configuration. Ces deux solutions ont chacune leurs arguments et aucune n’est meilleure en soi. Si vous utilisez la seconde, il faut cependant veiller lors de la configuration du client à ce que celuici envoie son nom d’hôte au serveur DHCP, ce qui sert à actualiser le serveur de noms.
Fonctionnement interne de DHCP
Lorsqu’un ordinateur (client DHCP) est démarré, il envoie une requête à l’adresse 255.255.255.255 (soit à tous les ordinateurs du réseau local). Seul le serveur DHCP réagit à cette requête et renvoie comme réponse une adresse IP qui provient de la liste des adresses IP valides. Vous vous demandez peut-être où le serveur envoie sa réponse : le client n’a en effet pas encore d’adresse IP. L’adressage passe par une adresse MAC, qui est connue grâce à la requête DHCP. Le serveur DHCP assigne les adresses IP pour une durée donnée (lease time). Celle-ci est généralement d’une journée, mais elle peut être paramétrée différemment. Avant que cette durée ne soit écoulée, le client doit renouveler l’adresse auprès du serveur DHCP ou demander une nouvelle adresse IP.
Paramétrage du serveur de noms Un serveur de noms de domaine (abrégé en serveur de noms, voire en DNS) établit la correspondance entre les noms d’ordinateurs et les adresses IP. Tous les fournisseurs d’accès à Internet mettent à disposition un serveur DNS. Plutôt que d’accéder à ce serveur, vous pouvez mettre en place un serveur DNS pour votre propre réseau local. Cela a deux avantages :
Linux Livre Page 550 Mardi, 23. septembre 2008 1:05 13
550
LINUX
• Rapidité. Le DNS gère un cache des adresses récemment utilisées. Si vous accédez deux fois à www.yahoo.com sur une journée, le serveur DNS n’a pas à réinterroger le serveur DNS de votre fournisseur d’accès − le DNS local a déjà enregistré l’adresse. • Résolution locale. Le DNS gère les noms et adresses IP des ordinateurs du réseau local. Vous pouvez ainsi accéder à tous les ordinateurs du réseau via un nom et, par exemple, lancer depuis l’ordinateur mercure la commande ping saturne. mercure ne contacte que le serveur de noms local, qui renvoie l’adresse IP de saturne. La résolution de noms locaux est un élément de base pour utiliser confortablement des services réseau comme NFS, FTP, SSH, etc. Les DNS du monde entier sont connectés les uns aux autres. Lorsqu’un DNS ne connaît pas un nom donné, il transmet la requête à un autre DNS. Les DNS sont organisés de manière hiérarchique.
Configuration de dnsmasq Cette section décrit le programme dnsmasq, qui intègre les fonctions de serveur DHCP et de serveur de noms. La section suivante traite de dhcpd, qui ne sert que de serveur DHCP. Prérequis
Nous supposons ici que le paquet dnsmasq est installé et que dhcpd ne l’est pas (sans quoi, les deux programmes peuvent entrer en conflit). Un autre prérequis important est la configuration correcte du fichier /etc/hosts sur la passerelle. Celui-ci est étonnamment incomplet ou mal configuré sur de nombreuses configurations. Pensez à le vérifier lorsque vous modifiez la configuration réseau de votre passerelle. L’élément décisif est l’association entre l’ordinateur local (ici, mars et mars.sol) et l’adresse IP locale (192.168.0.1). Diverses lignes suivent généralement. Elles concernent la configuration IPv6, que nous ne traitons pas dans cet ouvrage. # /etc/hosts sur la passerelle 127.0.0.1 localhost 192.168.0.1 mars mars.sol
Si vous rencontrez des problèmes, pensez à regarder la configuration de votre pare-feu. L’interface du réseau local ne doit pas être bloquée par le pare-feu ! dnsmasq.conf
dnsmasq est configuré dans le fichier /etc/dnsmasq.conf. Le fichier de configuration par défaut fait office de documentation et se compose de presque 400 lignes de commentaires. Renommez-le en dnsmasq.conf.orig et créez un nouveau fichier sans ces commentaires avec grep : root# cd /etc root# cp dnsmasq.conf dnsmasq.conf.orig root# grep -v '^#' /etc/dnsmasq.conf.orig | cat -s > dnsmasq.conf
La configuration de dnsmasq réclame, en plus de /etc/dnsmasq, des fichiers /etc/hosts et /etc/ resolv.conf fonctionnels. Si vous modifiez ces fichiers, il faut relancer dnsmasq.
Linux Livre Page 551 Mardi, 23. septembre 2008 1:05 13
PASSERELLE INTERNET (MASCARADE ET DHCP)
Démarrer et arrêter dnsmasq
551
dnsmasq est un démon. Certaines distributions le démarrent tout de suite après son installation. Dans le cas contraire, vous devez le lancer manuellement. Lorsque vous en modifiez la configuration, vous devez également le relancer : root# /etc/init.d/dnsmasq restart
Vous pouvez aussi avoir à configurer son démarrage automatique. Vous trouverez plus d’informations à ce sujet à la section 24.7. Configuration minimale
La configuration minimale ci-après permet à dnsmasq de fonctionner sans problème. Il sert ici de cache de serveur de noms pour Internet et fournit aux clients des adresses IP comprises entre 192.168.0.2 et 192.168.0.254 : # /etc/dnsmasq.conf - configuration minimale domain-needed bogus-priv interface=eth2 dhcp-range=192.168.0.2,192.168.0.254,24h
Expliquons rapidement les mots clés du fichier. domain-needed et bogus-priv empêchent que dnsmasq envoie des noms d’hôte locaux ou des adresses IP locales au serveur de noms de votre fournisseur d’accès à Internet − le serveur de noms de votre fournisseur ne résout que les adresses Internet et non les adresses locales. interface indique que dnsmasq ne doit répondre qu’aux requêtes provenant de eth2. dhcprange précise la plage d’adresses accessible au serveur DHCP pour répondre aux requêtes DHCP. Les adresses transmises sont valides 24 heures et doivent ensuite être renouvelées par le client. Le serveur de noms et la passerelle n’ont pas à être configurés. dnsmasq lit le fichier /etc/ resolv.conf et renvoie l’adresse du serveur de noms qui s’y trouve. Les clients DHCP reçoivent comme passerelle et serveur de noms l’adresse IP locale. Mise en place d’un serveur de noms local
La configuration minimale ci-dessus ne permet à dnsmasq de résoudre les noms d’hôte locaux que lorsque le fichier /etc/hosts contient les informations correspondantes. Les adresses attribuées dynamiquement par DHCP sont donc inaccessibles par ce biais. Pour que dnsmasq fonctionne également comme serveur de noms pour les adresses locales du réseau local sol, il faut ajouter les lignes suivantes à dnsmasq.conf et redémarrer dnsmasq : # /etc/dnsmasq.conf - serveur de noms pour les adresses locales local=/sol/ domain=sol expand-hosts
Le mot clé local indique que les requêtes d’adresses sur ce domaine doivent être gérées directement par dnsmasq (et non par le serveur de noms du fournisseur d’accès). Si vous n’avez pas de meilleur nom de domaine, utilisez simplement localnet ou localdomain. domain indique à dnsmasq le nom de domaine à transmettre aux clients DHCP. Ce nom doit correspondre à celui indiqué dans le paramètre local.
Linux Livre Page 552 Mardi, 23. septembre 2008 1:05 13
552
LINUX
expand-hosts fait en sorte que les requêtes au serveur de noms qui n’indiquent pas de nom de domaine soient suffixées du nom de domaine indiqué dans domain. Ainsi, lorsque vous lancez ping uranus, dnsmasq étend l’adresse à uranus.sol. Dans la configuration courante, dnsmasq ne s’occupe pas du nom d’hôte des clients. Celui-ci doit donc être géré individuellement par les clients. Pour que la résolution de noms fonctionne localement, les clients doivent envoyer leur nom d’hôte au serveur DHCP (dnsmaq). Noms d’hôte et adresses statiques
dnsmasq peut également être configuré pour fournir aux clients des noms d’hôte. L’association statique des noms et adresses IP se fait grâce à l’adresse MAC des clients. C’est la méthode de configuration que je préfère : un fichier unique contrôle sous quels noms et adresses IP sont accessibles les ordinateurs de mon réseau. Lorsqu’un nouvel ordinateur est branché, il suffit d’ajouter une ligne à dnsmasq. Le mot clé dhcp-host permet une telle configuration. Les lignes suivantes illustrent la configuration de l’ordinateur mercure et de l’imprimante pluton. La plage 192.168.2-127 est réservée aux adresses statiques et 192.168.0.128-254, aux adresses dynamiques (par exemple, lorsqu’un ami désire se connecter rapidement à Internet avec son ordinateur portable). # /etc/dnsmasq.conf - ajout d'adresses statiques # associations statiques pour les clients dont l'adresse MAC est connue dhcp-host=00:11:25:32:4f:5d,mercure,192.168.0.15 dhcp-host=00:c0:ee:51:39:9f,pluton,192.168.0.127 # plage d'adresses dynamiques pour les clients ayant une adresse MAC # inconnue : 192.168.0.128-254 dhcp-range=192.168.0.128,192.168.0.254,24h
man dnsmasq et /etc/dnsmasq.conf.orig décrivent de nombreuses variantes de syntaxe pour dhcp-host. Vous pouvez, par exemple, établir une correspondance entre des noms d’hôte et des adresses IP, bloquer complètement certaines adresses MAC, etc. DNS pour l’ordinateur local
Par défaut, dnsmasq ne fonctionne comme serveur de noms que pour les autres ordinateurs du réseau. En effet, c’est le DNS indiqué dans /etc/resolv.conf qui est utilisé. Généralement, ce fichier contient le serveur de noms de votre fournisseur d’accès à Internet. Pour que dnsmasq assure également la résolution de noms locale, vous devez ajouter à /etc/ resolv.conf la ligne nameserver 127.0.0.1. Si l’ordinateur récupère lui-même sa configuration via DHCP, cela ne sert à rien : après chaque redémarrage, resolv.conf sera écrasé. Il faut pour cela utiliser une configuration réseau statique. # /etc/resolv.conf - pour que dnsmasq fonctionne pour l’ordinateur local nameserver 127.0.0.1 ...
La deuxième modification concerne dnsmasq. Comme il ne peut plus obtenir l’adresse du serveur DNS externe via resolv.conf, il faut indiquer explicitement cette adresse et lui dire d’ignorer resolv.conf. Ajoutez pour cela les deux lignes ci-après à dnsmasq.conf − dans l’exemple suivant, 192.168.1.1 est l’adresse du routeur ADSL qui fait aussi office de DNS. # /etc/dnsmasq.conf - ajouts pour que le DNS fonctionne sur la machine #locale # ignorer /etc/resolv.conf no-resolv # accéder au DNS externe server=192.168.1.1
Linux Livre Page 553 Mardi, 23. septembre 2008 1:05 13
PASSERELLE INTERNET (MASCARADE ET DHCP)
Journalisation
553
dnsmasq enregistre toutes les adresses IP dynamiques dans le fichier /var/lib/misc/dnsmasq.leases. Les adresses statiques ne sont, en revanche, pas prises en compte. Chaque ligne contient aussi l’adresse MAC et, lorsqu’il est connu, le nom d’hôte du client. Ce fichier est pratique pour connaître l’adresse MAC des nouveaux clients. Lorsque dnsmasq ne fonctionne pas comme souhaité, ajoutez le mot clé log-queries à dnsmasq.conf. Le programme journalise alors toutes les requêtes au serveur de noms dans /var/ log/syslog ou /var/log/messages.
Configuration des clients La configuration correcte d’un ordinateur pour qu’il puisse récupérer son IP est très simple. Les distributions Linux et les versions actuelles de Windows fournissent toutes une option dans la boîte de dialogue de configuration du réseau ; en principe tout fonctionne ! Le point critique est la configuration du nom d’hôte. Celui-ci doit-il être géré par DHCP ou le client doit-il renvoyer son nom d’hôte au serveur DHCP ? Cette configuration diffère selon la distribution Linux. Debian, Ubuntu
Pour modifier le nom d’hôte sous Debian et Ubuntu, vous pouvez utiliser le programme network-admin, dans l’onglet Général. Les données statiques ont priorité sur celles envoyées par le serveur DHCP ! Si vous désirez que le nom d’hôte soit transmis par le serveur DHCP, vous devez laisser le champ vide. Pour finir, vous devez redémarrer l’ordinateur. Les noms d’hôte statiques ne sont pas transmis au serveur DHCP. network-admin n’offre pas d’option sur ce point. En interne, c’est le programme dhclient qui s’en occupe. Dans son fichier de configuration /etc/dhcp3/dhclient.conf, vous pouvez indiquer le nom envoyé au serveur DHCP : # /etc/dhclient.conf send host-name "mercure.sol"
Red Hat, Fedora
Sous Red Hat et Fedora, vous pouvez modifier le nom d’hôte et de domaine dans le champ texte Nom d’hôte de l’onglet DNS du programme system-config-network. Lorsque le serveur DHCP transmet un nom d’hôte, celui-ci a priorité sur le nom de la configuration statique. Par défaut, le nom d’hôte n’est pas transmis au serveur DHCP. Si vous désirez ce comportement, ouvrez avec Modifier la fenêtre de propriétés de l’interface réseau (généralement eth0) et indiquez le nom d’hôte dans les paramètres DHCP. Le programme dhclient évalue les informations DHCP. Il est, entre autres, appelé par le script /etc/sysconfig/network-scripts/ifup-eth et peut être contrôlé par le système de communication DBUS. Fedora utilise pour cela le paquetage dhcdbd, qui est installé par défaut, mais qui n’est généralement pas actif. dhcdbd est en particulier utilisé par NetworkManager. Vous trouverez plus d’informations sur dhcdbd dans le fichier /usr/share/doc/ dhcdbd-n/README.
SUSE
Dans SUSE, le nom d’hôte est défini dans l’onglet Nom d’hôte/DNS module Périphériques réseau, Paramètres réseau de YaST. Si le serveur DHCP transmet un nom d’hôte, ce nom a
Linux Livre Page 554 Mardi, 23. septembre 2008 1:05 13
554
LINUX
par défaut priorité sur la configuration statique. Ce comportement peut être modifié grâce à l’option Modifier le nom d’hôte via DHCP. SUSE transmet par défaut le nom d’hôte au serveur DHCP. Si ce n’est pas le comportement souhaité ou si un autre nom doit être envoyé, modifiez le paramétrage dans l’onglet Options globales du même module. Au contraire de Debian et Red Hat, SUSE utilise la commande dhcpcd pour exploiter les informations DHCP. Celle-ci est, entre autres, lancée dans /etc/init.d./network. dhcpcd peut également communiquer sur le système DBUS via dhcdbd. Recharger les données DHCP
Lorsque vous testez le serveur DHCP, vous devez redémarrer les clients à chaque fois. Un redémarrage du réseau suffit parfaitement et récupère à nouveau les informations DHCP. Sous Fedora, Red Hat et SUSE, lancez la commande root# /etc/init.d/network restart
Sous Debian et Ubuntu, lancez root# /etc/init.d/networking restart
Vous pouvez vous assurer avec ifconfig et un examen du fichier /etc/resolv.conf que tout a fonctionné. Si vous travaillez sous KDE ou Gnome, vous devez vous reconnecter lorsque le nom d’hôte ou un autre paramètre réseau essentiel a été modifié. Vous pouvez aussi recharger les données DHCP sous Windows sans le redémarrer. Ouvrez une fenêtre de commande et lancez > ipconfig /renew
28.4 Serveur DHCP (dhcpcd) dhcpd est le serveur DHCP classique. Il fonctionne sur presque tous les serveurs Linux qui doivent gérer un réseau important. Ses possibilités de configuration sont bien plus grandes que celles de dnsmasq. Prérequis
Dans cette section, nous supposons que dhcpd est utilisé au moins en version 3. Le nom du paquetage diffère selon la distribution : dhcpd3-server sous Debian et Ubuntu, dhcp sous Fedora et Red Hat, et dhcp-server sous SUSE. dnsmasq ne peut pas être installé en parallèle, sans quoi les deux programmes entrent en conflit. Nous supposons également que vous avez lu l’introduction à DHCP et que votre fichier /etc/ hosts est correctement configuré. La configuration des clients est identique à celle de dnsmasq. Vous trouverez plus d’informations sur la configuration et le serveur lui-même dans les pages de manuel dhcpd, dhcpd.conf et dhcp-options, ainsi que sur le site web http://www.isc.org/sw/dhcp/.
Démarrage et arrêt
Le serveur DHCP est un démon. Les commandes pour son démarrage (automatique) dépendent de la distribution. Le nom du script InitV est dhcp3-server sous Debian et Ubuntu, et dhcpd sous Fedora, Red Hat et SUSE. Lorsque vous modifiez la configuration du serveur, il faut le relancer : root# /etc/init.d/dhcp3-server restart
Linux Livre Page 555 Mardi, 23. septembre 2008 1:05 13
PASSERELLE INTERNET (MASCARADE ET DHCP)
Configuration minimale
555
dhcpd est configuré dans le fichier /etc/dhcp3/dhcpd.conf. Les lignes suivantes illustrent une configuration minimale qui attribue des adresses IP dynamiquement entre 192.168.0.128 et 192.168.0.265. Les IP 192.168.0.0 et 192.168.0.255 sont réservées et ne peuvent donc pas être attribuées. La plage 192.168.0.1 à 192.168.0.127 est réservée pour attribuer des adresses statiques. # /etc/dhcpd.conf # options globales authoritative; default-lease-time 86400; max-lease-time 86400; # informations clés du réseau local option broadcast-address 192.168.0.255; option subnet-mask 255.255.255.0; option routers 192.168.0.1; option domain-name-servers 199.85.37.2; # plage d'adresses dynamiques subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.254; }
authoritative indique que ce serveur est le serveur DHCP officiel du réseau local. defaultlease-time et max-lease-time indiquent combien de temps les adresses IP sont valides (une journée, soit 86 400 secondes). Une fois cette durée écoulée, les clients doivent renouveler leurs données de configuration (cela est automatique). Les options broadcast-address et subnet-mask décrivent le segment de réseau géré par le serveur DHCP. routers indique l’adresse de l’ordinateur qui sert de routeur ou de passerelle pour le réseau local. Dans l’exemple ci-dessus, il s’agit de l’ordinateur qui fait office de serveur DHCP. domain-name-servers est une liste de serveurs DNS (au maximum trois, séparés par des virgules). Si vous utilisez un serveur DNS local, donnez-en l’adresse. Ces adresses sont transmises aux clients pour qu’ils puissent aussi se passer de configurer eux-mêmes le DNS. Vous pouvez récupérer l’adresse du serveur de noms dans /etc/resolv.conf . Si vous utilisez aussi un serveur de noms local, indiquez dans domain-name-server l’adresse de la passerelle locale. Dans notre exemple, il s’agit de 192.168.0.1. Si un serveur WINS fonctionne sur votre réseau, vous pouvez indiquer son adresse avec l’option netbiosname-server. WINS est l’équivalent d’un DNS pour le monde Windows. Un serveur Samba sous Linux peut également faire office de serveur WINS. Adresses statiques
Si votre seul but est de fournir des adresses IP à votre réseau local, vous avez terminé. Cependant, on désire généralement attribuer des adresses statiques à quelques ordinateurs du réseau local. Les lignes suivantes en sont un exemple.
Linux Livre Page 556 Mardi, 23. septembre 2008 1:05 13
556
LINUX
L’ordinateur ayant l’adresse MAC 00:11:25:32:4f:5d est associé à l’adresse IP 192.168.0.15. Si vous désirez transmettre le nom d’hôte aux clients, utilisez l’option use-host-decl-names on. La saisie des noms d’hôte permet, de toute façon, de rendre le fichier plus lisible. # /etc/dhcpd.conf, suite group { # envoyer les noms d'hôte aux clients use-host-decl-names on; # adresses statiques host mercure { hardware ethernet 00:11:25:32:4f:5d; fixed-address 192.168.0.15; } host pluton { hardware ethernet 00:c0:ee:51:39:9f; fixed-address 192.168.0.127; } ... }
Journalisation
DNS dynamique
dhcpd permet d’exploiter plusieurs sous-réseaux et groupes. Vous pouvez ajouter des options au début du fichier ou à l’intérieur d’un groupe entre accolades ; les options correspondantes s’appliquent globalement ou à un seul groupe. Le fichier dhcpd.conf comprend d’innombrables options supplémentaires. Vous en trouverez les détails dans les pages de manuel. dhcpd enregistre toutes les adresses IP dynamiques dans le fichier /var/lib/dhcp3/ dhcpd.leases. Ce dernier permet de déterminer facilement les adresses MAC des nouveaux clients. Les messages de journalisation supplémentaires sont enregistrés dans /var/log/ messages ou syslog. Divers mots clés ddns permettent de configurer le serveur DHCP de manière qu’il transmette les noms et adresses IP des nouveaux clients du réseau local à un serveur de noms. Ce dernier connaît alors automatiquement les noms et adresses des ordinateurs du réseau local.
Linux Livre Page 557 Mardi, 23. septembre 2008 1:05 13
29
Sécurité du réseau Ce chapitre décrit quelques mesures pour sécuriser votre ordinateur et votre réseau local : • sécurisation des services Internet actifs grâce à xinetd et à TCP Wrapper ; • sécurisation du trafic TCP/IP grâce à un filtre de paquets basé sur iptables (pare-feu) ; • sécurisation de votre accès web ("filtrage parental") grâce à un filtre (Squid). Les solutions présentées ici ne sont ni parfaites ni complètes. En particulier, nous ne parlons pas des mécanismes SELinux ou AppArmor, ni des réseaux privés virtuels (VPN). Le but est principalement d’éveiller votre vigilance et de vous fournir quelques clés pour bien démarrer. Je tiens cependant à attirer votre attention sur ces deux points : • Les informations de ce chapitre ne sont pas suffisantes pour éviter tout accès malicieux à un système Linux ou à votre réseau. Si vous mettez en place un réseau d’entreprise ou si vous effectuez des tâches dont la sécurité est primordiale, vous avez besoin d’ouvrages spécialisés. • Un système que l’on croit sûr est plus dangereux qu’un système non sûr !
29.1 Types de sécurité Le champ de la sécurité est très large. Il englobe entre autres les éléments suivants : • Se prémunir des pertes de données. Un disque dur défectueux ou un ordinateur portable volé sont à l’origine de nombreuses pertes de données. On prévient ce type de risque par une stratégie de sauvegardes régulières. • Éviter le vol physique des données. Un ordinateur portable, un disque dur ou une clé USB volés contiennent souvent des données de valeur. Pour éviter que le voleur ne puisse les lire, vous devez les chiffrer. Le plus sûr est de chiffrer une partition entière ou un répertoire. Linux fournit divers outils pour cela (par exemple CryptoFS, DM-Crypt, eCryptfs, EncFS, Loop-AES et TrueCrypt), qui ne sont cependant pas traités dans cet ouvrage. • Se protéger contre les programmes malicieux et les virus. Ce problème est moindre sous Linux. D’une part, les programmeurs de virus visent surtout les systèmes Windows. D’autre part, il est comparativement plus difficile de faire des dégâts sous Linux/Unix dans le cadre d’une utilisation raisonnable. "Utilisation raisonnable" signifie en particulier de ne pas lancer de programmes inconnus en tant que root et de travailler en tant que root uniquement lorsque c’est nécessaire. • Filtrer le contenu indésirable. Lorsqu’on met en place un accès Internet pour une école ou pour un environnement comparable, un point du cahier des charges est souvent de filtrer des contenus spécifiques (par exemple la pornographie). Ce point est plus facile à promettre qu’à mettre en place. On peut certes filtrer des sites donnés avec un serveur
Linux Livre Page 558 Mardi, 23. septembre 2008 1:05 13
558
LINUX
mandataire web, mais, en raison de la nature dynamique d’Internet et des nombreuses autres possibilités de communication (Usenet, discussion en ligne, etc.), de telles solutions sont forcément incomplètes. Cependant, une protection incomplète est préférable à une absence totale de protection (ce qui s’applique à tous les aspects de la sécurité). • Sécuriser les données privées dans le réseau local. Tous les utilisateurs du réseau local ne doivent pas avoir accès à tous les fichiers et encore moins pouvoir les modifier. Ce point recouvre avant tout les droits d’accès (y compris sur NFS, Samba, FTP, etc.) et l’utilisation de mots de passe non triviaux. • Se prémunir des accès étrangers (pare-feu). Un accès à Internet n’est pas à sens unique. Un attaquant externe au réseau (pirate) peut essayer d’accéder à vos données ou à celles de votre réseau, voire de les modifier. • Éviter les écoutes de transmissions Wi-Fi (VPN). Lorsqu’un réseau est câblé, un pirate doit accéder à la passerelle Internet ou au réseau interne physiquement. Du point de vue du pirate, un réseau sans-fil est bien plus confortable. À l’heure actuelle, seul le chiffrage WPA2 associé à un mot de passe correct est considéré comme sûr. Les anciennes techniques toujours utilisées (WEP, WPA) sont bien plus simples à forcer. Indépendamment du chiffrage Wi-Fi, il est conseillé d’encapsuler le trafic dans un VPN (Virtual Private Network, réseau privé virtuel). • Sécuriser les services réseau contre les accès malicieux (SELinux, AppArmor). Des failles de sécurité dans les services réseau courants (Samba, Sendmail, Apache, etc.) sont souvent découvertes. Elles permettent à un pirate, sous certaines conditions, de faire planter un service réseau ou même d’exécuter des commandes. Les mesures préventives sont de lancer aussi peu de services qu’il est nécessaire, de les faire fonctionner avec les droits les plus restreints possible (ne pas les faire fonctionner en tant que root) et de protéger ces services par un pare-feu. Ces mesures ont cependant des limites. Certains services doivent être accessibles depuis Internet et ils doivent lire et écrire des fichiers sur l’ordinateur local. Pour assurer une sécurité optimale, vous pouvez définir des règles avec SELinux ou avec AppArmor. Vous pouvez par exemple limiter les opérations d’écriture d’un programme à un certain répertoire ou en limiter les fonctions réseau. Si le service sort du cadre défini par ces règles, il est arrêté automatiquement. Mises à jour et journalisation
La sécurisation d’un ordinateur n’est pas une tâche unique, mais un processus continu. Vous devez mettre à jour régulièrement vos logiciels vers la version actualisée. Aucun programme n’est infaillible, et cela est valable également pour les programmes sous Linux. Lorsqu’un problème de sécurité est découvert, les mises à jour sont généralement disponibles en quelques jours. Cependant, il vous revient de les installer. Il est également conseillé de surveiller régulièrement les fichiers de journalisation de votre ordinateur. Un signe d’alarme très clair est par exemple l’augmentation des lignes du type Failed login (connexion échouée).
Lectures conseillées
Nous ne pouvons pas traiter dans cet ouvrage de tous les aspects susmentionnés, et nous en avons probablement omis certains. Vous trouverez sur Internet d’innombrables ressources sur le thème de la sécurité. Les adresses http://linuxsecurity.com/, http://www.cert.org/ et http://lwn.net/security sont de bons points de départ.
Linux Livre Page 559 Mardi, 23. septembre 2008 1:05 13
559
SÉCURITÉ DU RÉSEAU
Intéressez-vous régulièrement aux informations de sécurité de votre distribution. Vous y trouverez entre autres les mises à jour relevant de la sécurité des applications. Indépendamment de la distribution, le Red Hat Enterprise Linux Security Guide est une lecture intéressante et se trouve à l’adresse : http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/Security_Guide/.
29.2 Bases de l’analyse réseau Avant de pouvoir sécuriser votre ordinateur, vous devez savoir comment les services réseau fonctionnent, lesquels fonctionnent, quels ports sont ouverts, etc. Cette section pose les bases de TCP/IP et décrit quelques programmes pour analyser l’état courant de votre réseau, par exemple pour afficher toutes les connexions réseau actives. Le tableau suivant récapitule les acronymes les plus importants. Glossaire réseau DNS HTTP ICMP IP NFS TCP UDP IP
Adresses et ports IP
Domain Name Service, service de noms de domaines HyperText Transfer Protocole, protocole de transfert hypertexte Internet Control Message Protocol, protocole de messages de contrôle Internet Internet Protocol, protocole Internet Network File System, système de fichiers réseau Transmission Control Protocol, protocole de contrôle des transmissions User Datagram Protocol, protocole de datagrammes utilisateur
Presque tous les services réseau courants sont fondés sur des paquets IP. Par exemple, lorsqu’un utilisateur souhaite accéder à votre ordinateur par FTP, il démarre sur son ordinateur un client FTP. Celui-ci envoie des paquets IP spéciaux à votre ordinateur. Si un serveur FTP est installé sur votre ordinateur, il intercepte le paquet et réagit à la requête en renvoyant des paquets IP. En plus des données, un paquet IP contient quatre informations importantes : l’adresse IP de l’expéditeur, le port de l’expéditeur, l’adresse du destinataire et son port. Ces données indiquent d’où vient le paquet et où il va. Le sens d’une adresse IP devrait être clair (voir le Chapitre 26). Les ports sont utilisés pour identifier les différents services. Par exemple, pour demander un document WWW, on utilise généralement le port 80. Le numéro de port est un nombre de 16 bits. Les ports de 1 à 1 024 sont considérés comme privilégiés et sont réservés pour les serveurs (par exemple le serveur HTTP). Les ports restants peuvent être utilisés par les clients, mais il existe d’autres numéros de ports déjà réservés pour des buts précis. Le fichier /etc/services définit des alias pour les ports IP. Reportez-vous à ce fichier pour savoir à quel protocole est associé un port donné.
Linux Livre Page 560 Mardi, 23. septembre 2008 1:05 13
560
LINUX
Protocoles IP
Il existe différents protocoles pour les paquets IP. La plupart des services Internet utilisent TCP. Ce protocole attend des accusés de réception. Il existe aussi des protocoles qui n’attendent pas de telles confirmations, comme ICMP (qui est par exemple utilisé par ping) et UDP (utilisé par exemple par DNS et NFS).
Filtres de paquets IP
Les paquets IP peuvent être créés par les programmes locaux ou arriver depuis l’extérieur, c’est-à-dire depuis une interface réseau ou PPP. C’est le noyau qui décide quoi faire de ces paquets. Il peut les rejeter ou les transmettre à un programme ou à une autre interface. Les critères de décision regroupent les caractéristiques que nous venons de détailler. Pour mettre en œuvre un filtre de paquets, vous devez aussi disposer d’un moyen d’ajouter des règles au noyau pour qu’il gère les paquets individuels. La commande iptables est fournie à cet effet depuis le noyau 2.4 – nous en parlerons dans sa section dédiée.
Déterminer les ports actifs
Le principe de la plupart des services réseau est de surveiller un port donné. Si un paquet arrive sur ce port, le service s’occupe de le traiter et d’y répondre. Les paquets qui ne sont pas envoyés à un port surveillé sont simplement ignorés et ne posent donc pas de risques. Pour protéger un ordinateur d’éventuelles menaces, il est donc nécessaire de disposer d’une liste des ports surveillés (à l’inverse, un pirate essaiera d’abord de déterminer les ports actifs). La commande netstat est très utile pour examiner l’activité réseau de l’ordinateur local. Selon les options avec lesquelles elle est lancée, elle affiche une énorme quantité d’informations différentes. Par exemple, a affiche les ports qui ne sont pas actifs, tu limite la sortie aux protocoles TCP et UDP et pe affiche le numéro du processus et le compte sous lesquels le programme a été lancé. Pour savoir quel programme utilise quels ports TCP ou UDP, la commande lsof est également utilisable. lsof -i [protocole]@hôte:port affiche une liste des processus qui utilisent la ressource réseau indiquée. Par exemple, lsof -i udp affiche les programmes qui utilisent le port UDP et lsof -i :22 affiche ceux qui utilisent le port 22. netstat et lsof ne s’appliquent qu’aux ordinateurs locaux et ne sont généralement pas à disposition d’un éventuel pirate. Celui-ci peut en revanche utiliser un scanneur de ports. De tels programmes envoient des paquets aux ports importants d’un ordinateur et, en fonction de la réponse, ils déterminent quel service fonctionne avec quelle version de quel programme. La commande nmap en est l’exemple le plus connu, mais il existe de nombreux autres programmes de ce type. Un balayage des ports d’une machine avec nmap est considéré par de nombreux administrateurs comme une tentative d’intrusion. N’utilisez pas un outil comme nmap sur un ordinateur inconnu ! Cependant, c’est un outil pratique pour reconnaître des faiblesses dans votre propre réseau.
nmap n’est que rarement installé par défaut, mais il est généralement disponible en tant que paquetage. Vous pouvez aussi trouver son code source à l’adresse http://nmap.org/. nmap dispose également d’une interface graphique, que vous pouvez généralement installer grâce au paquetage nmap-frontend.
Linux Livre Page 561 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
561
29.3 Sécuriser les services réseau La section précédente a montré comment connaître rapidement les services réseau qui fonctionnent sur l’ordinateur. L’étape suivante consiste à éteindre les services non utilisés et à sécuriser autant que possible tous les autres services : • Désinstallez tous les services dont vous n’avez pas besoin. Ce qui n’est pas installé ne peut pas être exécuté et ne pose donc aucun risque. Il arrive que le nom du paquetage ne dérive pas directement du nom du programme. Dans ce cas, déterminez l’emplacement exact du fichier exécutable et lancez, selon votre système de paquetages, rpm -qf /chemin/nom ou dpkg -S /chemin/nom. • Au lieu de les désinstaller, vous pouvez aussi empêcher les services de démarrer (si vous envisagez par exemple de les utiliser plus tard). Le système InitV est généralement responsable du démarrage des services. Selon la distribution, la méthode pour empêcher le démarrage des scripts InitV diffère, par exemple chkconfig --del pour Fedora et Red Hat ou insserv -r sous SUSE. Vous trouverez plus d’informations sur InitV au Chapitre 24. Les services réseau lancés par xinetd sont un cas particulier dont nous parlerons dans cette section. • Il est rarement utile de partager des répertoires ou des imprimantes sur Internet. Vous ne pouvez certes que rarement vous passer de tels services, mais vous pouvez au moins en restreindre l’utilisation à votre réseau local. Pour de nombreux services (par exemple xinetd, SSH et NFS), on utilise à cette fin la bibliothèque TCP Wrapper et ses fichiers de configuration /etc/hosts.allow et /etc/ hosts.deny. Les autres services (par exemple Apache, MySQL et Samba) utilisent généralement leurs propres fichiers de configuration. • Comme niveau de protection supplémentaire, un pare-feu filtre de paquets est conseillé : grâce à des règles, celui-ci peut bloquer les paquets provenant d’Internet à destination de services divers. Cependant, ne partez pas du principe qu’un pare-feu est suffisant et que les autres points sont superflus ! Aucun pare-feu n’est parfait et il est toujours possible d’omettre un détail critique pour votre réseau.
Bases de xinetd Les programmes qui mettent à disposition des services réseau peuvent être divisés en deux catégories : • Les démons. Ils surveillent un port donné et, lorsqu’un paquet y est adressé, le traitent et y répondent. Ils sont gérés par InitV. • Les programmes démarrés à la demande. Seul le programme xinetd est démarré. Il surveille plusieurs ports et démarre au besoin les services correspondants. xinetd est au cœur de cette section.
Linux Livre Page 562 Mardi, 23. septembre 2008 1:05 13
562
LINUX
xinetd signifie Extended Internet Service Daemon (démon de services Internet étendu). Il est le successeur du programme inetd. Vous trouverez de la documentation sur xinetd à l’adresse http://www.xinetd.org/. Démarrage et arrêt
xinetd est un démon. Il est installé par défaut sur de nombreuses distributions, mais il n’est pas toujours démarré, pour des raisons de sécurité (vérifiez cela avec ps ax |grep xinetd). xinetd se lance ensuite comme tout autre service (voir la section 14.4).
/etc/services
xinetd est contrôlé par plusieurs fichiers que nous décrirons dans ce qui suit. Les services réseau se différencient les uns des autres par le port et le protocole qu’ils utilisent. Par exemple, telnet utilise le port 23 et les protocoles tcp et udp. Pour que les fichiers de configuration de xinetd restent lisibles, il existe un fichier, /etc/services, qui associe les noms de divers services Internet (par exemple ftp, telnet, etc.) au protocole et au numéro de port utilisés.
/etc/ xinetd.conf
/etc/xinetd.conf contient quelques paramètres de base, concernant par exemple la journalisation ou les adresses IP définies par défaut. En général, vous pouvez laisser ces paramètres tels qu’ils ont été définis par défaut. L’option includedir indique le répertoire contenant les fichiers de configuration supplémentaires (généralement /etc/xinetd.d).
/etc/xinetd.d
Le répertoire /etc/xinetd.d contient, pour chaque service enregistré dans xinetd, un fichier de configuration spécifique. Le nom de ces fichiers ne joue pas de rôle particulier : xinetd lit tous les fichiers de ce répertoire et les prend en compte (les fichiers dont le nom se termine par ~ ou contenant un point ne sont pas pris en compte). Ces fichiers ont une structure uniformisée. L’exemple suivant est un fichier de configuration pour un serveur rsync : service rsync { disable = yes socket_type wait user server server_args log_on_failure }
= stream = no = root = /usr/bin/rsync = --daemon += USERID
Voici une courte explication des mots clés que vous pouvez rencontrer dans le fichier de configuration de xinetd : • service est le nom du service (correspondant à /etc/services). • socket_type et protocol indiquent comment les données sont transférées entre le client et le serveur. • type = INTERNAL indique qu’il s’agit d’un service mis directement à disposition par xinetd. • server est le nom du programme (s’il ne s’agit pas d’un service interne de xinetd). • server_args fournit des paramètres qui sont transmis au démarrage du service. • user est le nom du compte sous lequel le programme est lancé (souvent root, mais cela peut aussi être news, mail, etc.). • disable = Yes / No indique si le service est actif ou bloqué (Yes pour les services bloqués).
Linux Livre Page 563 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
Sécurisation de xinetd
563
• log_* définit les niveaux de journalisation du service. • man xinetd.conf fournit une référence complète de tous ces mots clés. Dans la plupart des cas, vous pouvez laisser les fichiers tels qu’ils ont été créés à l’installation. Pour des raisons de sécurité, il serait optimal de ne pas lancer du tout xinetd et son prédécesseur inetd sur un pare-feu ou sur une passerelle Internet. Si vous ne pouvez pas vous passer des programmes contrôlés par xinetd, vous devriez au moins considérer les éléments suivants : • Désinstallez ou désactivez tous les services que vous n’utilisez pas qui sont démarrés par xinetd. Pour les désactiver, ajoutez une ligne disable=Yes dans le fichier /etc/ xinetd.d/nom_du_service. Sous Red Hat et Fedora, vous pouvez aussi désactiver ou réactiver un service avec chkconfig -del nom ou chkconfig -add nom. Ces commandes modifient la ligne disable. • Évitez telnet, utilisez ssh. sshd n’est pas contrôlé par xinetd. • Configurez l’accès aux services restants de manière aussi restrictive que possible. Utilisez pour cela les fichiers /etc/hosts.deny et /etc/hosts.allow (voir ci-après). Les modifications de la configuration sont prises en compte uniquement lorsque xinetd a relu les fichiers de configuration. xinetd vérifie si des services fonctionnent alors qu’ils ne sont plus censés le faire dans le cadre de la nouvelle configuration : ceux-ci sont alors terminés. root# /etc/init.d/xinetd reload
hosts.allow et hosts.deny Les fichiers /etc/hosts.allow et /etc/hosts.deny contrôlent quels ordinateurs ont accès à quels services. Ces paramètres sont valides aussi bien pour les services contrôlés par xinetd que pour divers services réseau qui utilisent la bibliothèque TCP Wrapper pour les contrôles d’accès. Lorsqu’un client du réseau souhaite utiliser un service contrôlé par hosts.allow et hosts.deny, le fichier hosts.allow est pris en compte en premier. Si l’accès y est explicitement autorisé, le service réseau est démarré. Sinon, le fichier hosts.deny est lu : si l’accès s’y trouve, alors il est explicitement interdit et le client reçoit un message d’erreur. Si le client ne se trouve ni dans hosts.allow ni dans hosts.deny, l’accès est autorisé. hosts.deny
La configuration la plus sûre est d’interdire tous les accès à tous les clients à tous les services réseau. L’instruction spawn journalise toutes les tentatives d’accès dans le fichier /var/log/ deny.log. #/etc/hosts.deny ALL : ALL : spawn (echo Attempt from %h %a to %d at $(date) \ >> /var/log/deny.log)
hosts.allow
Dans un second temps, vous pouvez autoriser l’utilisation de certains services. La configuration suivante autorise : • des accès locaux (localhost) à tous les services ; • un accès à SSH pour tous les ordinateurs (y compris depuis Internet) ; • l’utilisation de NFS et FTP dans le réseau local.
Linux Livre Page 564 Mardi, 23. septembre 2008 1:05 13
564
LINUX
# /etc/hosts.allow ALL : localhost mars mars.sol sshd : ALL vsftpd : 192.168.0.0/255.255.255.0 *.sol portmap : 192.168.0.0/255.255.255.0 *.sol mountd : 192.168.0.0/255.255.255.0 *.sol Prise en charge de TCP Wrapper
: : : : :
ALLOW ALLOW ALLOW ALLOW ALLOW
Vous pouvez déterminer avec ldd si un programme spécifique utilise TCP Wrapper (libwrap) : utilisateur$ ldd /usr/sbin/sshd |grep wrap libwrap.so.0 => /lib/libwrap.so.0 (0xb7ef2000)
Notez que, sous SUSE, cupsd (service d’impression) utilise TCP Wrapper, ce qui n’est généralement pas le cas pour les autres distributions. Vous devez donc penser à en autoriser l’accès sur le réseau pour partager une imprimante.
29.4 Introduction aux pare-feu Le concept de pare-feu est très souvent évoqué, mais il n’existe pas de définition universellement acceptée. Un pare-feu peut être matériel : il s’agit alors généralement d’un ordinateur qui fournit une interface entre le réseau local et Internet. Si l’accès à Internet se fait via modem/RNIS/ADSL, le pare-feu fait également souvent office de contrôle d’accès à Internet. Inversement, de nombreux routeurs (RNIS ou ADSL) fournissent également des fonctions élémentaires de pare-feu. Souvent, le terme de pare-feu désigne également un paquetage logiciel installé sur l’ordinateur et qui, lorsqu’il est bien configuré, améliore la configuration de l’ordinateur. Vous pouvez mettre en place un pare-feu manuellement, comme cela est décrit dans ce chapitre. Dans de nombreuses distributions, vous pouvez aussi utiliser des outils de configuration graphiques (dont nous ne parlerons pas ici). Une troisième possibilité est d’installer un paquetage de pare-feu commercial. Nous aborderons dans cette section un pare-feu qui sécurise le trafic TCP/IP via un filtre de paquets. Ce type de filtre analyse les paquets réseau qui arrivent ou qui sortent de l’ordinateur. Selon les règles définies, les paquets sont transmis ou bloqués. La section suivante présente les détails de mise en œuvre d’un filtre de paquets. Cette section vise avant tout à éclaircir le vocabulaire.
Pare-feu pour un ordinateur personnel Jusqu’à relativement récemment, il semblait absurde de protéger un ordinateur personnel par un pare-feu. Les ordinateurs personnels n’étaient connectés à Internet que de façon irrégulière et avec peu de débit via un modem ou une carte RNIS. Ces ordinateurs n’étaient de ce fait qu’une cible peu attractive et la nature même de la connexion à Internet en rendait l’accès plutôt difficile.
Linux Livre Page 565 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
565
Entre-temps, la situation a changé : de plus en plus de foyers disposent d’une connexion permanente par ADSL ou par câble. Votre ordinateur est donc accessible à tout instant depuis l’extérieur par l’adresse IP définie par votre fournisseur d’accès à Internet. Risques de sécurité
Cela ne signifie évidemment pas qu’un pirate peut entrer facilement. Il peut cependant envoyer des paquets IP à votre ordinateur (par exemple avec ping) et celui-ci, selon sa configuration, lui répond (jusqu’ici aucun problème). Si votre ordinateur fait fonctionner un serveur SSH, un pirate peut tenter de se connecter. Il doit pour cela fournir un nom d’utilisateur et un mot de passe – si vous utilisez des mots de passe triviaux, quelques essais peuvent suffire. De telles attaques peuvent être automatisées : des dictionnaires de mots sont essayés les uns à la suite des autres. Si vous avez un réseau Windows avec des partages sans mot de passe, les répertoires Windows peuvent être lus depuis Internet sans mot de passe également ! Une source supplémentaire d’insécurité est le Wi-Fi. Si la connexion entre votre ordinateur et le point d’accès Wi-Fi est protégée par une clé WEP de 104 bits, un pirate peut trouver cette clé en quelques jours. Les utilisateurs privés n’ont généralement aucune notion de sécurité. Leurs ordinateurs sont souvent ouverts à tous les vents. Inversement, il existe des outils professionnels et gratuits à la disposition des pirates, qui servent par exemple à trouver automatiquement les trous de sécurité d’un ordinateur. L’utilisation de tels outils ne demande que peu de connaissances. Vous vous dites peut-être que votre ordinateur ne contient aucune donnée susceptible d’intéresser qui que ce soit. Mais une attaque n’a pas nécessairement pour but d’espionner ou de manipuler des données. Il s’agit souvent d’un "jeu" pour des adolescents désœuvrés. Le but peut aussi être d’installer un petit programme sur votre ordinateur, qui peut être préprogrammé pour se lancer à une date définie ou qui peut être contrôlé à distance par le pirate. Mais que vos données soient perdues en raison d’une attaque ciblée ou en raison d’une expérience idiote, le résultat est le même.
Pare-feu pour le réseau local Dans un réseau local (d’entreprise), le cahier des charges de la sécurité est bien plus important que pour un ordinateur privé. Les conditions sont généralement meilleures en termes d’infrastructure. En pratique, cela signifie qu’au moins un ordinateur est dédié à l’accès à Internet et à sa protection. Les services réseau fonctionnent sur d’autres ordinateurs. La Figure 29.1 est un exemple de cela. Distributions pare-feu
Un PC dédié en tant que pare-feu peut sembler onéreux, mais ce n’est pas nécessairement le cas. Un ancien PC à processeur Pentium avec deux cartes réseau suffit amplement. Cependant, il est souvent difficile, voire impossible, d’installer une distribution Linux habituelle sur ce type de matériel. Une alternative attractive consiste à utiliser un live CD pare-feu. Linux est démarré directement depuis le CD et n’a pas besoin de disque dur (si un disque dur est disponible, il peut cependant être utilisé pour la journalisation). Vous trouverez de telles distributions aux adresses http://www.devil-linux.org/ et http://distrowatch.com/ dwres.php?resource=firewalls. Il existe aussi des distributions installables prévues pour un pare-feu ou un routeur, comme http://www.ipcop.org/.
Linux Livre Page 566 Mardi, 23. septembre 2008 1:05 13
566
LINUX
Figure 29.1 Pare-feu pour un réseau local.
Vous pouvez également vous servir d’une distribution standard comme Ubuntu ou SUSE et la configurer pour l’utiliser sur un pare-feu. Vous devez cependant effectuer une installation minimale et vérifier que seuls les services et programmes vraiment nécessaires sont lancés. Variantes
Pour les très petits réseaux, un ordinateur peut faire office de pare-feu et de serveur réseau (voir la Figure 28.1). Cela n’est pas optimal car les services qui fonctionnent sur cet ordinateur représentent tous un risque de sécurité éventuel. Cependant, une architecture de ce type est toujours meilleure qu’une absence totale de pare-feu. Dans les gros réseaux d’entreprises, il existe souvent, à l’inverse, deux pare-feu. Le premier pare-feu n’est qu’une sécurité de base, mais laisse passer les protocoles Internet habituels comme HTTP ou FTP. La zone réseau qui se trouve derrière ce premier pare-feu s’appelle la DMZ pour Demilitarized Zone (zone démilitarisée) : la sécurité de cette zone n’est que limitée. Elle héberge généralement le serveur web ainsi que d’autres serveurs réseau qui doivent être accessibles publiquement (depuis Internet). La DMZ est séparée du réseau local par un second pare-feu. Les services supplémentaires qui ne sont accessibles qu’au réseau local se trouvent sur ce second réseau et ne sont absolument pas accessibles depuis l’extérieur. La configuration d’un pare-feu multiple dépasse cependant le cadre de cet ouvrage ; vous trouverez plus d’informations à ce sujet dans des ouvrages spécialisés.
Pare-feu pour les ordinateurs clients d’un réseau local
En plus de la sécurisation du réseau par un pare-feu central, on peut aussi sécuriser chaque PC d’un réseau local individuellement. Ce procédé offre plusieurs avantages : il peut vous protéger d’accès depuis l’intérieur du réseau, il fournit une protection supplémentaire au cas où le pare-feu extérieur tomberait ou serait mal configuré et il protège les ordinateurs lorsqu’ils sont utilisés à l’extérieur de l’entreprise (par exemple les ordinateurs portables).
Linux Livre Page 567 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
567
Cependant, cela présente également des inconvénients : cela augmente la charge d’administration et peut bloquer des services utiles à l’intérieur du réseau. Les ordinateurs connectés au réseau local par un réseau sans-fil représentent un cas particulier. D’un point de vue technique, la sécurité est optimale lorsque la connexion est établie avec un VPN (Virtual Private Network, réseau privé virtuel). Le trafic réseau devrait (y compris sur le client) être limité sur un réseau Wi-Fi non sûr à l’établissement du VPN, ce qui se fait facilement avec un pare-feu.
29.5 Pare-feu avec iptables Cette section montre comment mettre en place un pare-feu filtre de paquets. Le filtre de paquets analyse tout le trafic (tous les paquets IP) et refuse ou transmet les paquets individuellement. Un pare-feu peut ainsi éviter qu’un paquet servant à initialiser une connexion FTP depuis Internet vers votre ordinateur ne soit transmis. Cependant, vous pouvez établir une connexion FTP vers l’extérieur.
Introduction Pour configurer votre filtre de paquets, vous devez vous familiariser avec la commande iptables. Elle est disponible depuis le noyau 2.4 et fait partie du système netfilter. man iptables est une référence de la syntaxe de cette commande. La Figure 29.2 résume, de manière très simplifiée, les chemins que peut prendre un paquet IP dans un système de filtres. Vous en trouverez une description détaillée à l’adresse http://open-source.arkoon.net/kernel/kernel_net.png.
Figure 29.2 Représentation simplifiée du système iptables/ netfilter.
La liste suivante décrit rapidement les différentes étapes d’un paquet IP dans le noyau : • Routage. En fonction de l’adresse IP et du port, le noyau décide si le paquet doit être traité localement ou s’il doit être transmis à une autre interface réseau et à un autre ordinateur (que ce soit sur le réseau local ou sur Internet).
Linux Livre Page 568 Mardi, 23. septembre 2008 1:05 13
568
LINUX
• Filtrage des entrées. En fonction d’un ensemble de règles, on teste si le paquet doit être accepté et transféré aux programmes locaux (par exemple les démons réseau) ou non. • Traitement local. Cette boîte représente tous les programmes qui traitent les paquets IP sur l’ordinateur local ou qui créent des paquets IP (c’est-à-dire les services réseau, comme ftpd, httpd, etc.). • Filtrage des sorties. En fonction d’un ensemble de règles, on teste si le paquet peut quitter le noyau. • Filtrage des transferts. Ce filtre décide quels paquets, parmi ceux qui doivent être transférés (mais non traités), peuvent effectivement passer par le noyau. • Postroutage NAT. Si l’ordinateur local fournit un accès à Internet à d’autres ordinateurs par le biais d’une mascarade, cette étape effectue les manipulations nécessaires sur les paquets IP. À la Figure 29.2, vous pouvez voir que seules les boîtes Filtrage des entrées, Filtrage des sorties, Filtrage des transferts et éventuellement Postroutage NAT sont associées à un filtre de paquets. Toutes les autres parties du schéma décrivent des fonctions réseau du noyau qui sont gérées par le noyau ou par des services réseau courants fonctionnant sur le système local et n’ayant pas de rapport avec le filtre de paquets. Dans de nombreuses illustrations de pare-feu, vous pouvez voir à gauche Internet (dangereux), puis le pare-feu, puis le réseau local (plus sûr). La Figure 29.2 ne fait pas cette distinction. Les paquets qui arrivent à l’ordinateur proviennent aussi bien du réseau local que d’Internet. Cela s’applique également aux paquets qui quittent le pare-feu à droite.
Le noyau s’occupe de transférer les paquets, qu’ils proviennent d’une interface réseau ou d’un programme local. Trois comportements sont alors possibles : • Deny (refusé). Le paquet est refusé sans information supplémentaire. Le paquet est perdu, il n’existe plus. L’expéditeur ne sait pas ce qui lui est arrivé. • Reject (rejeté). Le paquet est refusé avec un message de retour. En ce qui concerne le paquet, le résultat est le même, mais l’expéditeur sait, grâce à un autre paquet ICMP, que son paquet a été refusé. • Accept (accepté). Le paquet est transmis. Vous trouverez plus d’informations sur le fonctionnement et l’utilisation de iptables aux adresses suivantes : • http://www.unixgarden.com/index.php/administration-systeme/netfilter-firewallingsous-linux ; http://www.unixgarden.com/index.php/securite/mise-en-oeuvre-d’unepasserelle-Internet-sous-linux ; http://www.netfilter.org/ ; http://people.netfilter.org/ rusty/unreliable-guides/.
Tables et chaînes de règles iptables L’idée de base d’un filtre de paquets iptables est la suivante. Chaque paquet IP traverse différents points dans le noyau et ces points vérifient si le paquet y est autorisé. Si oui, il est transmis au point suivant, sinon il est détruit ou renvoyé à l’expéditeur.
Linux Livre Page 569 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
569
Le système iptables se compose de trois tables : • Table filter. Cette table contient généralement le système de règles du filtre de paquets (pare-feu) lui-même. • Table NAT. Cette table n’est active que lorsque la fonction de mascarade du noyau est elle-même active. Elle permet diverses transformations d’adresses pour les paquets qui entrent dans le noyau ou qui en sortent. • Table mangle. Cette table manipule également les paquets IP. Elle effectue des tâches spéciales dont nous ne parlerons pas dans cet ouvrage. Chacune de ces tables se compose de plusieurs chaînes de règles (chains) : • Table filter : input (entrée), forward (transfert) et output (sortie) ; • Table NAT : prerouting (préroutage), output (sortie) et postrouting (postroutage) ; • Table mangle : prerouting (préroutage) et output (sortie). La Figure 29.2 représente les quatre chaînes de règles les plus importantes de cet ensemble de huit chaînes. Les chaînes sont indépendantes les unes des autres ! Il existe donc deux chaînes prerouting et trois chaînes output différentes. Il arrive cependant que les documentations parlent de chaîne output sans indiquer de laquelle il s’agit. Dans ce cas, il s’agit de la chaîne de la table filter, qui est de loin la plus importante. La même convention est utilisée par la commande iptables. On peut y indiquer la table souhaitée avec l’option -t. Si cette option n’est pas indiquée, la commande s’applique à la table filter.
Lorsqu’un paquet rencontre une chaîne de règles, le noyau vérifie toutes les règles. Lorsqu’une règle s’applique au paquet, l’action prévue est exécutée (par exemple transmettre, supprimer ou renvoyer le paquet). Lorsque aucune règle ne correspond, le comportement par défaut du filtre s’applique (ce comportement dépend de la configuration). De base, dans le noyau, seules la table filter et ses trois chaînes input, forward et output sont actives. Ces chaînes ne contiennent aucune règle et leur comportement par défaut est de transmettre les paquets. Tout l’art de la mise en place d’un filtre de paquets est donc de définir le comportement par défaut et le jeu de règles des chaînes de filtres. C’est à cela que sert la commande iptables.
Remettre à zéro le pare-feu Dans ce qui suit, je pars du principe que vous vous êtes familiarisé avec la syntaxe élémentaire de la commande iptables (voir man iptables). La commande iptables n’est généralement pas lancée manuellement, mais par un script. Sur mon ordinateur, ce script et divers autres scripts de ce type se trouvent dans un répertoire que j’ai créé pour cela, /etc/maconfig. Cela me permet de voir d’un seul coup d’œil quels scripts sont les miens et lesquels font partie de la distribution.
Linux Livre Page 570 Mardi, 23. septembre 2008 1:05 13
570
LINUX
L’ordre des commandes iptables est important car la première règle rencontrée termine le traitement. Lorsque vous énoncez des règles de pare-feu, il existe deux stratégies : vous pouvez autoriser certains paquets individuels et bloquer tous les autres paquets ou vous pouvez autoriser tous les paquets et n’interdire que certains paquets particulièrement dangereux. Cette seconde possibilité correspond au comportement par défaut de iptables, qui consiste à tout accepter tant qu’aucune règle ne l’interdit explicitement.
Un des problèmes rencontrés par les scripts de pare-feu est qu’ils sont parfois lancés par d’autres scripts dans lesquels la variable PATH n’est pas définie ou ne l’est que partiellement. Exécuter directement iptables peut alors échouer car la commande n’est pas trouvée. Cependant, les distributions ne sont pas cohérentes entre elles sur l’emplacement de la commande. La première étape d’un tel script est donc généralement de chercher la commande iptables, que nous enregistrons dans la variable IPT. Le script suivant sert à remettre à zéro iptables : il supprime toutes les règles de filtrage définies préalablement. Puis, tout le trafic IP est autorisé (ce script n’offre donc absolument aucune protection). Vous devez lancer ce type de script avant d’essayer de mettre en place vos propres règles. Sinon, les règles définies dans les essais précédents peuvent rester actives et interférer avec ce que vous essayez de faire. #!/bin/sh # /etc/maconfig/iptables-reset IPT=$(which iptables) if [ -z $IPT ]; then [ -x /sbin/iptables ] && IPT=/sbin/iptables [ -x /usr/sbin/iptables ] && IPT=/usr/sbin/iptables fi [ -z $IPT ] && (echo "Impossible de trouver iptables !"; exit) # par défaut on accepte tout $IPT -P INPUT ACCEPT $IPT -P OUTPUT ACCEPT $IPT -P FORWARD ACCEPT $IPT -P POSTROUTING ACCEPT -t nat $IPT -P PREROUTING ACCEPT -t nat $IPT -P OUTPUT ACCEPT -t nat # supprime toutes les règles $IPT -F $IPT -F -t nat # supprime toutes les règles définies par les utilisateurs $IPT -X # supprime le transfert IP (pas de mascarade) echo 0 > /proc/sys/net/ipv4/ip_forward
Sécuriser l’accès à Internet Interface Internet
Le script suivant définit un pare-feu minimal pour un seul ordinateur connecté à Internet. L’interface est définie par la variable INET. Dans l’exemple suivant, je suppose que l’accès à Internet se fait par le biais de l’interface eth1. Vous devez bien sûr adapter INET
Linux Livre Page 571 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
571
à votre environnement. Si votre connexion à Internet est assurée par un modem (ADSL) ou par RNIS, INET doit prendre la valeur ppp0 ou ippp0. Si l’interface varie lors de la connexion à Internet, vous pouvez aussi utiliser l’écriture ppp+ ou ippp+. La commande iptables prend alors en compte toutes les interfaces de ce type. Repousser les tentatives de connexions externes
Le filtre se compose d’une simple chaîne de règles wall. Elle protège de manière élégante et efficace des nouvelles connexions depuis l’extérieur. La première règle de wall indique que tous les paquets appartenant à une connexion déjà établie sont acceptés. La deuxième règle accepte les paquets qui initient une nouvelle connexion dès lors qu’ils ne sont pas initiés à partir de l’interface Internet. Il est donc possible de démarrer une session SSH depuis le réseau local. La troisième règle est que tous les paquets qui ne correspondent pas aux règles précédentes sont refusés. Cette règle concerne donc l’interdiction de tout ce qui n’est pas explicitement autorisé. Par exemple, un pirate potentiel n’arrivera donc pas à démarrer une session SSH (cela est également valable pour tous les autres services réseau : HTTP, FTP, telnet, etc.). Les deux dernières commandes indiquent que les règles de wall s’appliquent à tous les paquets qui passent par les chaînes input ou forward. #!/bin/sh # /etc/maconfig/iptables-firewall # Mini-Firewall pour un accès ADSL via ppp # remise à zéro /etc/maconfig/iptables-reset # paramétrage IPT=... #à définir comme dans le script iptables-reset INET=eth1 # cette nouvelle chaîne bloque toutes les tentatives de connexion # provenant de l’extérieur (Internet) $IPT -N wall $IPT -A wall -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A wall -m state --state NEW -i ! $INET -j ACCEPT $IPT -A wall -j DROP # utiliser la chaîne pour INPUT et FORWARD $IPT -A INPUT -j wall $IPT -A FORWARD -j wall
Sécuriser un client sans-fil sans VPN Vous pouvez également utiliser le script ci-dessus si vous accédez à Internet via Wi-Fi. Selon la distribution, l’interface à utiliser peut être eth* ou wlan*. Le plus simple est de déterminer cela avec ifconfig. Ce pare-feu ne permet pas aux autres utilisateurs du réseau Wi-Fi de se connecter à votre ordinateur en SSH, de lire les répertoires Samba que vous partagez, etc. Si le but du réseau Wi-Fi n’est pas de vous connecter à Internet, mais à un réseau local, ce pare-feu est trop restrictif.
Linux Livre Page 572 Mardi, 23. septembre 2008 1:05 13
572
LINUX
Vous ne devez pas non plus placer une confiance démesurée dans ce pare-feu. Si un pirate craque le chiffrage de votre réseau sans-fil, il peut lire le trafic réseau non chiffré, par exemple les mots de passe d’un formulaire web. Le pare-feu n’a aucune influence sur cela. Il empêche qu’un pirate ne se connecte à votre ordinateur mais ne fournit aucune protection contre l’écoute du trafic. Il est donc conseillé de fournir l’accès à Internet et à tous les autres services réseau par-dessus un VPN. Cela est particulièrement vrai si l’accès sans-fil ne sert pas qu’à l’accès à Internet, mais aussi au réseau local d’une entreprise.
Sécuriser un client sans-fil avec PPTP-VPN Lorsqu’un client est connecté au réseau local par un VPN, il dispose de deux réseaux en même temps : un réseau non sûr (le réseau Wi-Fi) et un réseau sûr (le VPN). Un pare-feu du côté client a ici la tâche principale de sécuriser l’interface Wi-Fi. Sur cette interface, seuls les paquets nécessaires à la configuration du client (DHCP) et à l’établissement du tunnel VPN peuvent circuler. L’idée de base du pare-feu est de ne définir que quelques règles qui autorisent les paquets servant à configurer le VPN. Tous les autres paquets sont interdits. Les règles du VPN dépendent ensuite du protocole utilisé pour le VPN. Nous ne parlerons dans cet ouvrage que de PPTP. Accepter les paquets DHCP
Les instructions suivantes acceptent les paquets DHCP (protocole UDP sur les ports 67 et 68). # /etc/maconfig/iptable-firewall # Pare-feu pour un client VPN Wi-Fi # remise à zéro /etc/maconfig/iptables-reset # paramétrage IPT=... #à définir comme dans le script iptables-reset WLAN=eth1 # accepter le trafic sur les ports 67 et 68 UDP (DHCP) $IPT -A INPUT -i $WLAN -p udp --dport 67 -j ACCEPT $IPT -A OUTPUT -o $WLAN -p udp --dport 67 -j ACCEPT $IPT -A INPUT -i $WLAN -p udp --dport 68 -j ACCEPT $IPT -A OUTPUT -o $WLAN -p udp --dport 68 -j ACCEPT
Accepter les paquets PPTP
PPTP utilise le protocole TCP sur le port 1 723 ainsi que le protocole GRE (Generic Encapsulation, encapsulation générique), pris en compte par l’option -p 47 de iptables. Pour que PPTP fonctionne en tant que client, les paquets TCP en entrée et en sortie du port 1 723 doivent être acceptés : # extension de /etc/maconfig/iptables-firewall # accepter les paquets sur le port 1723 (contrôle PPTP) # accepter le protocole GRE (numéro 47, données PPTP) $IPT -A INPUT -i $WLAN -p tcp --sport 1723 -j ACCEPT $IPT -A OUTPUT -o $WLAN -p tcp --dport 1723 -j ACCEPT $IPT -A INPUT -i $WLAN -p 47 -j ACCEPT $IPT -A OUTPUT -o $WLAN -p 47 -j ACCEPT
Bloquer tous les autres paquets
Les règles suivantes bloquent l’interface pour tous les paquets des protocoles UDP et TCP :
Linux Livre Page 573 Mardi, 23. septembre 2008 1:05 13
573
SÉCURITÉ DU RÉSEAU
# extension de # bloquer tout $IPT -A INPUT $IPT -A OUTPUT $IPT -A INPUT $IPT -A OUTPUT Règles pour l’interface PPP
/etc/maconfig/iptables-firewall le reste -i $WLAN -p tcp -j DROP -o $WLAN -p tcp -j DROP -i $WLAN -p udp -j DROP -o $WLAN -p udp -j DROP
L’interface Wi-Fi est suffisamment protégée. Tout le trafic passe à présent sur le VPN via l’interface PPP. La sécurisation de cette interface dépend de la sécurité du réseau local. Pour un petit réseau dont le serveur réseau est lui-même protégé par un pare-feu, vous pouvez vous contenter des règles ci-dessus. Si vous souhaitez plus de sécurité, vous pouvez protéger l’interface PPP par la chaîne wall décrite ci-dessus.
Sécuriser une passerelle Internet Le script iptables est plus complexe lorsqu’il s’agit de protéger non pas un ordinateur unique, mais une passerelle Internet complète. Le script commence comme d’habitude, mais il définit également la variable LAN pour l’interface au réseau local. Sur mon ordinateur, il s’agit de eth2. #!/bin/sh # /etc/maconfig/iptables-firewall # Mini-Firewall pour sécuriser une passerelle Internet # remise à zéro /etc/maconfig/iptables-reset # paramétrage IPT=... # à définir comme dans le script iptables-reset MODPROBE=... # contient le chemin vers modprobe ; déterminé comme le # chemin d’iptables INET=eth0 LAN=eth2 Fournir des services individuels publiquement
Le but du pare-feu est de bloquer les accès provenant de l’extérieur. Les règles correspondantes sont indiquées ci-après. Cependant, si votre serveur doit mettre à disposition des services réseau sur Internet en plus du réseau local (par exemple un serveur web ou SSH), vous devez créer des règles d’exceptions. Comme toutes les tentatives de connexion sont interdites par la chaîne wall, vous devez les définir avant cette chaîne ! Il suffit de définir des règles INPUT. Les règles OUTPUT ne sont pas nécessaires car la chaîne wall laisse passer les paquets des connexions actives. MYIP content l’adresse IP avec laquelle votre ordinateur est accessible sur Internet. Seuls les paquets qui y sont adressés et qui en viennent sont acceptés. Si votre adresse IP est dynamique (ce qui est le cas pour de nombreuses connexions par modem, RNIS ou ADSL), vous pouvez omettre les options -d et -s. Dans ce cas, l’établissement d’une connexion HTTP ou SSH depuis l’extérieur est de toute façon plus difficile car votre adresse IP change à chaque reconnexion.
Linux Livre Page 574 Mardi, 23. septembre 2008 1:05 13
574
LINUX
# extension de /etc/maconfig/iptables-firewall # Permettre l’accès au serveur HTTP (port 80) depuis l’extérieur MYIP=123.124.125.126 $IPT -A INPUT -i $INET -p tcp -d $MYIP --dport 80 -j ACCEPT # Permettre l’accès au serveur SSH (port 22) depuis l’extérieur $IPT -A INPUT -i $INET -p tcp -d $MYIP --dport 22 -j ACCEPT
Si votre passerelle Internet n’est pas directement connectée par un modem, mais par un routeur ADSL, les règles ci-dessus ne s’appliquent pas. Depuis Internet, il n’est pas possible de s’adresser directement à votre passerelle. Les paquets qui arrivent depuis l’extérieur sont adressés au routeur ADSL qui transmet les données aux clients par NAT. Ces clients regroupent aussi votre passerelle Linux. Du point de vue de la sécurité, cette variante de configuration est également un avantage. Le routeur ADSL est un premier pare-feu et laisse passer uniquement les paquets qui résultent d’une connexion établie depuis l’intérieur. L’inconvénient évident est que votre passerelle n’est pas accessible depuis Internet, même dans les cas où vous aimeriez fournir des services comme un serveur SSH ou web. Bloquer complètement les ports dangereux
Les lignes suivantes bloquent tout accès à divers ports dangereux par le biais de l’interface à Internet. Dans la boucle for, quatre commandes iptables sont lancées pour chaque numéro de port. La première règle bloque le trafic entrant TCP sur le port. La deuxième règle bloque le trafic sortant TCP. Les troisième et quatrième règles fonctionnent de manière comparable pour le protocole UDP. # extension de /etc/maconfig/iptables-firewall # bloquer complètement quelques ports # 23 (telnet) # 69 (tftp) # 135 (Microsoft DCOM RPC) # 139 (NetBIOS/Samba/etc.) # 445 (système de fichiers CIFS pour Samba/SMB) # 631 (ipp/CUPS) # 1433 (Microsoft SQL Server) # 2049 (NFS) # 3306 (MySQL) # 4444 (W32.Blaster Virus) # 5999-6003 (X-Displays) # 7100 (X-Font-Server) # 7741 (lisa, RLAN) for PORT in 23 69 135 139 445 631 1433 2049 3306 \ 4444 5999 6000 6001 6002 6003 7100 7741; do $IPT -A INPUT -i $INET -p tcp --dport $PORT -j DROP $IPT -A OUTPUT -o $INET -p tcp --dport $PORT -j DROP $IPT -A INPUT -i $INET -p udp --dport $PORT -j DROP $IPT -A OUTPUT -o $INET -p udp --dport $PORT -j DROP done
Interdire l’établissement de connexion depuis l’extérieur
Une fois les règles ci-dessus définies, vous devez ajouter les règles définissant wall au script de pare-feu. Attention, celles-ci ne protègent pas la passerelle contre un accès provenant du réseau local.
Mascarade
Comme l’ordinateur sert de passerelle Internet, il faut activer la mascarade. Les trois commandes modprobe ci-après s’assurent que FTP fonctionne malgré la mascarade :
Linux Livre Page 575 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
575
# extension de /etc/maconfig/iptables-firewall # Masquerading $MODPROBE ip_conntrack $MODPROBE ip_conntrack_ftp $MODPROBE ip_nat_ftp $IPT -t nat -A POSTROUTING -o $INET -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Serveur mandatairecache
Si votre ordinateur fait office de serveur mandataire-cache transparent (voir la section 29.6), il faut ajouter une règle supplémentaire : # extension de /etc/maconfig/iptables-firewall # serveur mandataire/cache transparent $IPT -t nat -A PREROUTING -i $INET -p tcp --dport 80 -j REDIRECT --to-port 3128
Sécuriser les interfaces Wi-Fi
Si votre serveur est connecté à un point d’accès sans-fil pour fournir ses services aux clients sans-fil, il faut également protéger cette interface. Vous pouvez utiliser les mêmes règles que pour l’interface Internet, ce qui fournit une protection acceptable. Cependant, le pare-feu ne bloque pas seulement les intrus mais aussi tous les clients légitimes. La seule solution sensée est de permettre aux clients Wi-Fi de se connecter uniquement par le biais d’un VPN. Pour cela, vous devez installer un serveur VPN sur votre serveur (ce dont nous ne traiterons pas dans cet ouvrage). Vous pouvez ainsi bloquer tout le trafic Wi-Fi à l’exception des paquets VPN et DHCP.
Journalisation iptables permet de journaliser l’efficacité de règles indépendantes. Pour cela, donnez à la règle l’action LOG. Pour qu’une règle soit active et journalisée, vous devez donc donner deux options -j : -j LOG et -j ACCEPT ou -j DROP. La journalisation est gérée par syslogd dans les fichiers usuels (/var/log/messages et /var/ log/warn). Par défaut, peu d’informations sont journalisées. Vous pouvez activer des messages supplémentaires avec diverses options -log-xxx (voir man iptables). Les lignes suivantes montrent comment les règles de blocage des ports importants sont étendues pour ajouter de la journalisation : # Modification de /etc/maconfig/iptables-firewall for PORT in 23 137 138 139 631 1433 2049 3306 5999 6000 6001 6002 6003 7100 7741; do $IPT -A INPUT -i $INET -p tcp --dport $PORT -j LOG \ --log-prefix "myfirewall:" --log-level warning $IPT -A OUTPUT -o $INET -p tcp --dport $PORT -j LOG \ --log-prefix "myfirewall:" --log-level warning $IPT -A INPUT -i $INET -p tcp --dport $PORT -j DROP $IPT -A OUTPUT -o $INET -p tcp --dport $PORT -j DROP done
Attention, les fichiers de journalisation peuvent vite devenir énormes. Ne journalisez que ce qui est nécessaire !
Linux Livre Page 576 Mardi, 23. septembre 2008 1:05 13
576
LINUX
Exécuter automatiquement les règles du filtre Intégration à InitV
Intégration à la configuration PPP
/ppp/peers/ adsl
Pour lancer automatiquement les règles de filtrage dans le cadre d’InitV, vous devez enregistrer le script de filtres dans un endroit accessible pendant le processus InitV et l’appeler par un script InitV. Inspirez-vous pour cela des scripts InitV de votre distribution. Vous pouvez aussi intégrer les règles du pare-feu aux scripts /etc/ppp/ip-up.local et /etc/ ppp/ip-down-local qui sont démarrés à la mise en place et à la terminaison de toute connexion PPP. Cela offre l’avantage de pourvoir passer le nom de l’interface au script (par exemple ppp0). De cette manière, le pare-feu peut obtenir dynamiquement le nom de l’interface utilisée, si celui-ci varie. Ces deux scripts ont six arguments : le premier est le nom de l’interface (par exemple ppp0) et le sixième est l’identifiant de la connexion PPP (option ipparam). Pour que tout fonctionne, vous devez modifier plusieurs fichiers : /ppp/peers/adsl, ip-up.local, ip-down.local et iptablesfirewall. Le fichier /ppp/peers/adsl (qui peut s’appeler autrement) contient les options de votre connexion à Internet. Ajoutez-y l’option ipparam si elle n’existe pas déjà. Cela permet d’utiliser une chaîne de caractères unique pour identifier l’accès à Internet et le différencier des autres connexions PPP. # dans /etc/ppp/peers/adsl ... ipparam "adsl"
ip-up.local
Vous devez créer le fichier /etc/ppp/ip-up.local ou l’étendre de cette manière : #! /bin/sh # démarrage du pare-feu # $1 est l’interface PPP utilisée (par exemple ppp0) # $6 contient la chaîne de caractères ipparam if [ "$6" = "adsl" ]; then /etc/maconfig/iptables-firewall $1 fi
ip-down.local
De cette manière, vous pouvez lancer le script iptables-firewall lorsque la connexion PPP ADSL est lancée. Le script du pare-feu prend comme argument le nom de l’interface. De la même manière, créez ou étendez le fichier /etc/ppp/ip-down.local : #! /bin/sh # démarrage du pare-feu if [ "$6" = "adsl" ]; then /etc/maconfig/iptables-firewall fi
iptablesfirewall
Le script du pare-feu doit être modifié pour prendre en compte l’interface réseau indiquée en paramètre. La variable INET est maintenant définie de manière dynamique. #!/bin/sh # pare-feu # remise à zéro /etc/maconfig/iptables-reset # déterminer l’emplacement de iptables et modprobe IPT=... MODPROBE=...
Linux Livre Page 577 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
577
# Interface réseau : l’interface réseau Internet # est passée comme paramètre du script LAN=eth0 WLAN=eth1 INET=$1 # règles du pare-feu lorsque l’interface à Internet est connectée # (y compris la mascarade) if [ $INET ]; then ... fi # règles du pare-feu ne dépendant pas de l’accès à Internet, # par exemple sécurisation de l’interface Wi-Fi ...
Lorsque tout fonctionne, chaque fois qu’une interface PPP est connectée à Internet, le parefeu est configuré spécifiquement pour l’interface PPP en question. Lorsque la connexion à Internet est coupée, le pare-feu est redémarré, mais les commandes iptables spécifiques à Internet sont omises.
29.6 Filtrage web (Squid) Le programme squid est au cœur de ce chapitre. Il s’agit d’un serveur mandataire-cache. Cela signifie qu’il enregistre les pages web localement et qu’il en régule l’accès. Deux raisons peuvent justifier la mise en place d’un serveur mandataire-cache : • L’accélération de l’accès aux pages souvent consultées. Lorsque plusieurs personnes lisent des pages web en passant par le serveur mandataire-cache, on peut éviter de transmettre plusieurs fois le même fichier. Cela accélère la lecture des pages qui sont souvent demandées et réduit le trafic vers le fournisseur d’accès à Internet. Les économies réalisées ne sont généralement que réduites car de nombreux sites web sont basés sur des pages dynamiques qui ne peuvent pas être mises en cache. • Le contrôle d’accès. L’utilisation de squid en tant que filtre web est de plus en plus importante. Squid peut bloquer des pages données à certains utilisateurs, restreindre l’accès web à certaines heures, etc. Il se révèle idéal pour les établissements qui veulent limiter ou sécuriser l’accès à Internet (par exemple les écoles). Cette section se limite au contrôle d’accès par Squid et fournit quelques pointeurs pour la configuration de base. Vous trouverez plus d’informations dans le fichier /etc/squid/ squid.conf. Le site web de Squid (http://www.squid-cache.org) contient également un guide de configuration ainsi qu’une foire aux questions.
Configuration et démarrage Configuration minimale
Le comportement de squid est défini par /etc/squid/squid.conf. Le fichier de configuration fourni avec squid est documenté de manière exhaustive et il est donc affreusement long
Linux Livre Page 578 Mardi, 23. septembre 2008 1:05 13
578
LINUX
(4 500 lignes). Créez une copie de ce fichier afin de constituer une documentation et supprimezen tous les commentaires : root# cd /etc/squid root# mv squid.conf squid.conf.orig root# grep -v ’^#’ squid.conf.orig | cat -s > squid.conf
Le fichier est alors réduit à une soixantaine de lignes. Par défaut, squid.conf est configuré de manière à ne pouvoir être utilisé comme cache que pour l’ordinateur localhost. Selon la configuration de l’ordinateur local, cela ne fonctionne pas nécessairement : squid ne reconnaît pas forcément que l’accès provient de localhost. Les lignes suivantes montrent une configuration minimale possible pour squid. Le point de départ était la configuration de base de Squid version 2.6. Les modifications effectuées sont indiquées en gras. cache_mem est la quantité de mémoire vive réservée pour les objets du cache. La ligne cache_dir est le répertoire dans lequel les pages web sont enregistrées. Les trois valeurs numériques indiquent la taille du cache en mégaoctets ainsi que le nombre de répertoires et sous-répertoires maximaux (de manière générale, plus l’espace attribué au cache est gros, mieux c’est). acl localnet définit la variable localnet qui contient la plage d’adresses du réseau local. Utilisée avec http_access, elle permet aux autres ordinateurs du réseau local d’utiliser le cache. Vous pouvez choisir un nom arbitraire à la place de localnet. # /etc/squid/squid.conf # Exemple de configuration # nom de l’hôte sur lequel squid est lancé visible_hostname mars.sol # Taille du cache : 64Mo en mémoire vive, 100Mo sur le disque dur cache_mem 64 MB cache_dir ufs /var/spool/squid 100 16 256 # Debian, Fedora, Red Hat, # Ubuntu # cache_dir ufs /var/cache/squid 100 16 256 # SUSE # pas de cache lorsque l’URL contient cgi-bin hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY # durée de vie des fichiers sans date d’expiration refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 # configuration du réseau local hosts_file /etc/hosts # Définitions acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl localnet src 192.168.0.0/255.255.255.0 acl SSL_ports port 443 # https acl SSL_ports port 563 # snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp
Linux Livre Page 579 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
579
acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow localnet http_access deny all icp_access allow all coredump_dir /var/spool/squid # Debian, Fedora, Red Hat, Ubuntu coredump_dir /var/cache/squid # SUSE
Si votre fournisseur d’accès fournit son propre cache et si vous voulez ou devez l’utiliser, indiquez son adresse IP et son port avec le mot clé cache_peer (comme dans l’exemple suivant). Si vous ne connaissez pas le port ICP, essayez 0 ou 7. Si cela ne fonctionne pas, ajoutez l’option supplémentaire default ou no-query. # serveur mandataire-cache suivant (par exemple celui de votre FAI) # cache_peer <proxy-port> cache_peer www-proxy.provider.de parent 8080 7 default
Si vous souhaitez que les pages web d’un serveur local ne soient pas mises en cache, utilisez le mot clé no_cache : # accès direct au serveur web local mars.sol acl mars dstdomain .mars .mars.sol no_cache deny mars
Il existe au moins une centaine d’options supplémentaires avec lesquelles vous pouvez contrôler le comportement de Squid, par exemple pour éviter de mettre en cache certaines pages, pour contrôler la journalisation, etc. Pour plus d’informations, reportez-vous au fichier original squid.conf ou à la documentation sur www.squid-cache.org.
Linux Livre Page 580 Mardi, 23. septembre 2008 1:05 13
580 Démarrage/ arrêt
LINUX
Squid est un démon qui doit éventuellement être démarré explicitement. La commande correspondante varie selon la distribution. Si Squid est déjà démarré, vous pouvez lui faire relire son fichier de configuration avec reload : root# /etc/init.d/squid reload
Premier test
Squid crée alors divers répertoires de cache dans /var/cache/squid ou dans /var/spool/ squid. Pour tester si un programme fonctionne, démarrez un navigateur sur l’ordinateur local et modifiez la configuration du serveur mandataire. Indiquez-y le nom de l’ordinateur (ici, mars.sol) et le numéro de port 3 128. Sous Firefox, cela se fait en passant par le menu Édition > Préférences > Avancé > Réseau > Paramètres. Sous Konqueror, il faut aller dans Configuration > Configurer Konqueror > Serveur mandataire > Spécifier manuellement la configuration du serveur mandataire (proxy). Chargez alors une page avec le navigateur web. Le fichier /var/log/squid/access.log contient normalement tous les fichiers enregistrés. Pour que les utilisateurs de votre réseau local puissent utiliser le cache, ils doivent également passer par ces opérations pour le configurer dans leurs navigateurs web.
Configuration en tant que serveur mandataire-cache transparent
Configuration du noyau
Activation du transfert IP
Jusqu’ici, l’utilisation du serveur mandataire se fait volontairement. squid est utilisé uniquement lorsque les clients ajoutent la configuration du serveur mandataire dans leurs navigateurs. Sans cette modification, les utilisateurs court-circuitent le cache. Cette situation n’est pas idéale, et ce pour deux raisons. D’une part, pour de nombreux utilisateurs, changer les paramètres du cache est une exigence trop grande. D’autre part, Squid en tant que filtre reste sans effet s’il suffit aux utilisateurs de supprimer le paramétrage pour le contourner. Pour remédier à cela, le noyau Linux peut être configuré pour transférer tout le trafic HTTP (qui transite habituellement sur le port 80) au serveur mandataire. Celui-ci est alors désigné sous le terme de "transparent". Cela signifie que le cache est automatiquement utilisé pour tous les accès HTTP. La configuration suivante suppose que squid est installé sur l’ordinateur qui fait office de passerelle Internet. Nous supposons aussi que la connexion entre le serveur et les clients passe par l’interface Ethernet eth2. Vous devez d’abord configurer correctement votre noyau. Les fonctions Netfilter suivantes doivent être compilées directement dans le noyau : Connection Tracking, IP tables support, Full NAT et Redirect target support. C’est le cas pour les noyaux de toutes les distributions que j’ai testées. Il n’est donc généralement pas nécessaire de recompiler un noyau. Vous devez ensuite activer une fonction spéciale du noyau pour permettre de transférer les paquets IP : root# echo 1 > /proc/sys/net/ipv4/ip_forward
Configuration de Squid
Vous devez effectuer les modifications suivantes : # Modifications de /etc/squid/squid.conf httpd_accel_host virtual httpd_accel_port 80
Linux Livre Page 581 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
581
httpd_accel_with_proxy on httpd_accel_uses_host_header on
Puis, vous devez lancer /etc/init.d/squid reload. Configuration de iptables
Vous devez aussi activer le transfert de paquets IP. Tous les paquets qui quittent l’ordinateur et qui sont adressés au port 80 doivent passer par le port de squid. La commande est coupée en deux pour des raisons de place : root# iptables -t nat -A PREROUTING -i eth0 -p tcp \ --dport 80 -j REDIRECT --to-port 3128
Lorsque tout fonctionne, tous les clients du réseau local passent automatiquement par squid pour consulter des pages web. Vérifiez que tout fonctionne en consultant /var/log/squid/ access.log après avoir accédé au Web depuis un ordinateur client. Pour finir, ajoutez la commande iptables dans un script InitV lancé automatiquement au démarrage de l’ordinateur. Sur mon serveur, la commande fait partie des scripts de parefeu. En principe cette configuration fonctionne uniquement pour les clients du réseau local, mais pas pour l’ordinateur sur lequel le serveur mandataire est installé. En d’autres termes, la protection automatique n’est pas valable pour l’ordinateur local, mais elle est valable pour tous les autres ordinateurs du réseau. Si vous souhaitez utiliser le serveur mandataire pour l’ordinateur local, vous devez modifier le paramétrage correspondant dans le navigateur web. Exceptions
Il existe quelques sites web qui ne peuvent pas être utilisés à travers un serveur mandataire. Lorsque le serveur mandataire n’est pas transparent, un utilisateur peut le contourner facilement (en le désactivant ou en définissant des exceptions). Pour un proxy transparent, l’utilisateur n’a pas le choix. Squid ne permet pas non plus de transférer des pages web précises sans modification. Lorsque Squid reçoit l’ordre de récupérer une page web, il est déjà trop tard. Pour pouvoir utiliser des pages problématiques malgré le cache transparent, vous devez modifier les règles iptables afin d’éviter que les requêtes vers ces pages n’atteignent Squid. Le plus simple pour cela est de modifier le script iptables avec quelques lignes de script. #!/bin/sh # Extension du script de pare-feu # # transférer directement les adresses suivantes (pas de serveur # mandataire) for ADDRESS in adresse1.com adresse2.fr adresse3.ca; do iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -d $ADDRESS -j ACCEPT done # transférer toutes les autres adresses (serveur mandataire transparent) iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 \ -j REDIRECT --to-port 3128
Linux Livre Page 582 Mardi, 23. septembre 2008 1:05 13
582
LINUX
Tous les ouvrages iptables déconseillent l’utilisation de règles de pare-feu dépendant d’une résolution DNS. Si celle-ci ne fonctionne pas, un message d’erreur est renvoyé. Dans ce cas concret, je n’ai cependant pas trouvé d’autre solution. J’insiste sur le fait que cette méthode n’est qu’une solution d’urgence. Si le script est lancé par InitV, la connexion à Internet et la configuration du serveur de noms doivent fonctionner. Vous trouverez plus d’informations sur la configuration d’un serveur mandataire-cache dans le Petit guide de mise en place d’un mandataire transparent avec Linux et Squid à l’adresse http://www.traduc.org/docs/HOWTO/vf/TransparentProxy.html.
Règles de contrôle d’accès Grâce à la configuration minimale ci-dessus, tous les utilisateurs du réseau local utilisent le serveur mandataire-cache. squid fournit aussi des mécanismes très fins de contrôle d’accès. Il faut d’abord définir des acl (Access Controls, contrôles d’accès). Ces règles contiennent par exemple des adresses source (src, qui peut accéder à quoi ?), des heures (time, à quelle heure est autorisé l’accès ?) ou des adresses cible (url_regex, quelles adresses peuvent ou non être consultées ?) # modifications de /etc/squid/squid.conf acl admin src mars acl mynet src 192.168.0.0/255.255.255.0 # dates et heures. SA = Saturday + Sunday (samedi + dimanche) # (S = Dim, M = Lun, T = Mar, W = Mer, H = Jeu, F = Ven, A = Sam) acl time1 time SA acl time2 time 18:00-23:59 acl time3 time 0:00-7:00
Les mots clés définis ci-dessus peuvent alors être utilisés dans des commandes http_access-allow et -deny. Pour finir, une règle deny-all indique que les accès qui ne se trouvent pas dans les cas indiqués sont interdits. # localhost a toujours le droit d’accéder au web http_access allow localhost # mars a toujours le droit d’accéder au web http_access allow admin # Les ordinateurs de mynet peuvent accéder au web le # samedi, le dimanche et de 18h00 à 7h00 http_access allow mynet time1 http_access allow mynet time2 http_access allow mynet time3 # dans tous les autres cas, l’accès au web est interdit http_access deny all
Filtre web avec DansGuardian On peut bloquer des sites individuels avec squid.conf. Mais réaliser un filtre web complet serait extrêmement coûteux. Pourquoi réinventer la roue ? Le programme DansGuardian (http://dansguardian.org/) permet de mettre en place un accès web avec une protection parentale de manière bien plus simple.
Linux Livre Page 583 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
583
La fonction de base du programme est d’analyser les pages web à la recherche de mots clés pornographiques et de bloquer la page en fonction du résultat de la recherche. Le mécanisme est suffisamment intelligent pour ne pas filtrer toutes les pages contenant les mots "sexe" ou "seins". Comme DansGuardian prend en compte le contenu des pages, il est indépendant de la plupart des listes noires de sites web. Installation
DansGuardian peut être installé comme paquetage dans la plupart des distributions. Comme il bloque également le téléchargement des virus les plus connus, il est installé avec le filtre ClamAV. DansGuardian est un démon, démarré et arrêté avec les commandes habituelles. Par défaut, il attend des requêtes sur le port 8 080. Il contacte ensuite Squid (sur le port 3 128) et analyse la page web. Si la page ne pose pas de problème, elle est retransmise via le port 8 080 au navigateur web. La variante de configuration que nous proposons ici est plus élégante : DansGuardian traite toutes les requêtes web sur le port 80 afin qu’aucune configuration ne soit nécessaire du côté client.
dansguardian. conf
Le fichier de configuration principal de DansGuardian est /etc/dansguardian/dansguardian.conf. Vous pouvez généralement laisser ce fichier tel qu’il est. Selon la distribution, le fichier peut contenir la ligne UNCONFIGURED, que vous devez désactiver avec un caractère de commentaires. Si vous souhaitez que les messages d’erreur soient affichés en français, utilisez le paramètre language=’french’. Si votre réseau ne contient que des ordinateurs sous Linux, vous pouvez désactiver le scanner de virus avec virusscan=off. Pour intégrer DansGuardian et Squid, il faut indiquer l’adresse et le port de ce dernier : # /etc/dansguardian/dansguardian.conf (extraits) reportinglevel = 3 languagedir = ’/etc/dansguardian/languages’ language = ’french’ loglevel = 1 logexceptionhits = on logfileformat = 1 filterport = 8080 proxyip = 127.0.0.1 proxyport = 3128 ...
Une fois le fichier modifié, faites-le relire par DansGuardian : root# /etc/init.d/dansguardian reload dansguardianf 1.conf
Le filtre lui-même est configuré dans /etc/dansguardian/dansguardianf1.conf. Ce fichier définit d’abord divers fichiers préconfigurés de mots clés, de sites web bloqués, etc. Le paramètre naughtynesslimit contrôle le degré de "malfaisance" à partir duquel la page est bloquée. Plus cette valeur est haute, plus le nombre de mots clés et de combinaisons de mots clés trouvés dans le texte est élevé. # /etc/dansguardian/dansguardianf1.conf (extraits) # Content filtering files location bannedphraselist = ’/etc/dansguardian/bannedphraselist’ weightedphraselist = ’/etc/dansguardian/weightedphraselist’
Linux Livre Page 584 Mardi, 23. septembre 2008 1:05 13
584
LINUX
exceptionphraselist = ’/etc/dansguardian/exceptionphraselist’ bannedsitelist = ’/etc/dansguardian/bannedsitelist’ greysitelist = ’/etc/dansguardian/greysitelist’ exceptionsitelist = ’/etc/dansguardian/exceptionsitelist’ bannedurllist = ’/etc/dansguardian/bannedurllist’ greyurllist = ’/etc/dansguardian/greyurllist’ exceptionurllist = ’/etc/dansguardian/exceptionurllist’ bannedregexpurllist = ’/etc/dansguardian/bannedregexpurllist’ bannedextensionlist = ’/etc/dansguardian/bannedextensionlist’ bannedmimetypelist = ’/etc/dansguardian/bannedmimetypelist’ picsfile = ’/etc/dansguardian/pics’ contentregexplist = ’/etc/dansguardian/contentregexplist’ # Naughtyness limit # As a guide: # 50 is for young children, 100 for old children, 160 for young adults. naughtynesslimit = 50 ...
Ne vous faites pas d’illusion sur l’efficacité de DansGuardian. Même un paramètre naughtynesslimit=50 (adapté aux jeunes enfants) n’offre pas une protection complète envers les pages web pornographiques ; il ne présente aucune protection envers les images pornographiques. La configuration par défaut prend essentiellement en compte des mots clés en anglais. Pour la plupart des sites pornographiques, cela peut suffire. Toutefois, si vous souhaitez également filtrer des pages de sites d’extrême droite ou de sites incitant à la violence, vous devrez mettre la main à la pâte. Jetez un œil au fichier de configuration /etc/dansguardian/weightedphraselist et aux fichiers qui y sont définis. Indépendamment de cela, il n’est pas très difficile de contourner le filtre par du texte créé dynamiquement (JavaScript, Flash), par du texte affiché dans des images ou par des fichiers externes (PDF par exemple). Le filtre ne s’applique qu’aux pages web et ne concerne pas les autres services Internet (courrier électronique, Usenet, discussion en ligne, etc.). DansGuardian fournit une protection, mais ne peut pas remplacer l’éducation et les explications. Règles supplémentaires et exceptions
En pratique il est souvent difficile de discriminer les pages uniquement sur des mots clés. Le tableau suivant décrit quelques fichiers du répertoire /etc/dansguardian dans lesquels vous pouvez indiquer des sites web à laisser passer ou à filtrer. bannedextensionlist
bloque les fichiers avec les extensions indiquées
bannedmimetypelist
bloque les types de fichiers indiqués
bannedsitelist
bloque entièrement les sites web indiqués
bannedurllist
bloque les pages indiquées
exceptionsitelist
accepte les sites web indiqués sans les contrôler
exceptionsurllist
accepte les pages indiquées sans les contrôler
exceptionphraselist
mots clés positifs
greysitelist
de base, accepte le site web, mais contrôle le contenu texte
Linux Livre Page 585 Mardi, 23. septembre 2008 1:05 13
SÉCURITÉ DU RÉSEAU
585
bannedurllist et bannedsitelist peuvent se fonder sur les fichiers du projet urlblacklist (http://urlblacklist.com/). Ce projet collecte divers liens d’innombrables sites web problématiques, classés par catégories (par exemple drugs, porn, violence). Attention, urlblacklist est un service commercial. Les listes de filtres peuvent être téléchargées gratuitement une fois afin d’effectuer des tests, mais les mises à jour régulières ne sont pas gratuites. Dans sa configuration par défaut, DansGuardian bloque le téléchargement de fichiers compressés, de fichiers MP3, de fichiers ISO, etc. Ces paramètres sont trop restrictifs pour une utilisation quotidienne de Linux et peuvent même empêcher un fonctionnement correct du gestionnaire de paquetages. N’hésitez pas à commenter quelques types de fichiers dans les fichiers bannedmimetypelist et bannedextensionlist. Configuration de Squid
Pour interfacer Squid avec DansGuardian, squid.conf doit contenir les lignes suivantes : # modifications de /etc/squid/squid.conf httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
Protection transparente
Par défaut, DansGuardian fonctionne sur le port 8 080. Pour protéger l’accès au web de manière transparente sur le port 80, modifiez le script de pare-feu comme suit : #!/bin/sh # extension du script de pare-feu # # transfère tous les paquets adressés au port 80 au port 8080 # utilisé par DansGuardian (filtre web transparent) iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 \ -j REDIRECT --to-port 8080
DansGuardian n’est pas la seule extension de Squid qui vise au contrôle parental. Une alternative intéressante est SquidGuard qui est un greffon de Squid fournissant diverses fonctions supplémentaires et dont la configuration via Squid est plus simple : http://www.squidguard.org/.
Linux Livre Page 586 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 587 Mardi, 23. septembre 2008 1:05 13
30
Serveur de réseau local (CUPS, NFS et Samba) Ce chapitre décrit la configuration de services réseau généralement utilisés dans un réseau local. Vous apprendrez comment partager des fichiers et des imprimantes au sein de votre organisation. Nous traiterons plus particulièrement des points suivants : • Système d’impression (CUPS). Que votre imprimante soit branchée à un seul ordinateur ou utilisée sur un réseau, un service s’occupe de la communication avec elle. Pour la plupart des distributions, il s’agit de CUPS. • Partage de répertoires par NFS. NFS (Network File System, système de fichiers réseau) permet de partager facilement des fichiers entre des ordinateurs Unix/Linux. • Partage de répertoires et d’imprimantes par Samba. Pour assurer la compatibilité des partages de fichiers avec Windows, il faut utiliser Samba. Celui-ci permet de partager des répertoires et des imprimantes sur un réseau via le protocole SMB.
30.1 CUPS – Les fondamentaux Le paquetage de programmes CUPS (Common Unix Printing System, système d’impression commun sous Unix) sert à traiter et à gérer les files d’attente de tâches d’impression, ainsi qu’à transformer les données à imprimer au format de l’imprimante. CUPS, fourni par la plupart des distributions, est au cœur de cette section, basée sur la version 1.3. Vous vous demandez peut-être pourquoi le thème de l’impression, élémentaire, n’est traité qu’à ce point avancé du livre. Cela est dû au fait que sous Linux, l’impression est gérée par un service réseau. Selon la configuration, chaque imprimante peut être utilisée par tous les autres utilisateurs du réseau local. L’utilisation d’une imprimante locale n’est pas compliquée et fonctionne généralement sans avoir à lire cette section. Les pages suivantes s’adressent aux utilisateurs qui souhaitent comprendre les bases et l’histoire du système d’impression sous Linux. Lorsqu’une imprimante est momentanément indisponible (par exemple, parce qu’elle est éteinte), elle est mise en pause par CUPS. Ce dernier enregistre donc que l’imprimante ne peut pas être utilisée. Cependant, lorsque celle-ci est rallumée ou reconnectée, CUPS ne s’aperçoit pas nécessairement qu’elle est à nouveau disponible. Il faut alors la réactiver explicitement. Toutes les interfaces utilisateur de CUPS le permettent, ainsi que les commandes cupsenable nomimprimante et lpadmin -E -p nomimprimante .
Linux Livre Page 588 Mardi, 23. septembre 2008 1:05 13
588
LINUX
Processus d’impression PostScript
La philosophie d’impression sous Unix/Linux repose sur les imprimantes PostScript. PostScript est un langage de programmation pour décrire le contenu des pages. Ce type d’imprimantes attend des données d’impression dans ce format. La plupart des programmes dotés d’une fonction d’impression envoient des données PostScript au système d’impression. L’avantage de PostScript sur les autres formats est que la description utilise un format vectoriel et qu’il fonctionne donc dans n’importe quelle résolution. L’impression d’un fichier PostScript est d’autant plus précise que l’imprimante est de bonne qualité (résolution élevée). C’est pourquoi PostScript joue un rôle dominant non seulement sous Unix, mais aussi dans toute l’industrie de l’impression. Sous Linux, il existe de nombreux programmes qui permettent de lire un document PostScript. Leur ancêtre est ghostview. Son interface n’est cependant pas très moderne. Les alternatives populaires sont Evince (qui fait partie du bureau Gnome), Okular, KPDF et kghostview (trois applications KDE), ainsi que gv et ggv. Vous pouvez aussi utiliser n’importe quel outil de visualisation de PDF, après avoir converti le fichier au format PDF avec ps2pdf.
Périphériques d’impression
Il est extrêmement simple d’imprimer si votre imprimante comprend le PostScript. Il suffit pour cela d’envoyer le fichier PostScript avec cp en tant que root sur le périphérique de l’interface à laquelle l’imprimante est connectée. root# cp fichier.ps /dev/lp0 root# cp fichier.ps /dev/ttyS0 root# cp fichier.ps /dev/lp0
Ces trois lignes correspondent respectivement à l’impression sur le port parallèle, sur le port série et sur un port USB. Système d’impression
Tous les utilisateurs en dehors de root devraient cependant pouvoir imprimer, qu’ils travaillent en local sur l’ordinateur ou sur une autre machine du réseau. Par ailleurs, aucun d’eux ne veut se battre avec les noms de périphériques, d’autant qu’ils n’y ont probablement pas accès. C’est pourquoi un système d’impression a été développé. Il a plusieurs tâches : • fournir des commandes simples d’impression qui permettent d’accéder à des noms d’imprimantes plutôt qu’à des noms de périphériques ; • permettre à tous les utilisateurs, y compris ceux du réseau, d’imprimer ; • permettre d’ajouter et de gérer plusieurs imprimantes sur un ordinateur ; • fournir un mécanisme de file d’attente lorsque plusieurs tâches sont lancées en même temps, de manière à attendre que l’imprimante soit libre ; • effectuer quelques tâches annexes, comme des statistiques sur le système d’impression. Le système d’impression le plus simple et le plus moderne est, à l’heure actuelle, CUPS. Ses alternatives classiques, BSD-LPD et LPRng, ne seront pas traitées dans cet ouvrage. Quel que soit le système d’impression utilisé sur votre ordinateur, la commande d’impression est toujours la même : utilisateur$ lpr -Pnom fichier
Linux Livre Page 589 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
589
nom est le nom de l’imprimante (ou plus exactement, celui de la file d’attente de l’impression). Si vous omettez l’option -P, le document est imprimé sur l’imprimante par défaut. Filtre d’impression (GhostScript)
Nous avons jusqu’ici décrit la mise en œuvre d’une imprimante PostScript. En pratique, les imprimantes qui ne comprennent pas ce langage sont les plus nombreuses. Pour pouvoir les faire fonctionner sous Linux, il faut convertir les données PostScript au format de l’imprimante. Le programme GhostScript se charge de cette conversion. gs est appelé par un filtre. Il s’agit d’un script qui traite les données d’entrée et renvoie les données de sortie. Le filtre pour le processus d’impression doit en particulier envoyer les bons paramètres à gs : modèle de l’imprimante, résolution et taille de page souhaitées, etc. Il transforme les données PostScript en fichiers bitmap, page par page, et les renvoie à l’imprimante, sans oublier d’ajouter aux données les commandes spécifiques à ladite imprimante. GhostScript accède également à des pilotes d’imprimantes externes. Le projet le plus important de pilotes pour Linux est Gutenprint (autrefois connu sous le nom de Gimp-Print), que vous trouverez à l’adresse http://gutenprint.sourceforge.net/.
Filtres de documents
Jusqu’ici, PostScript est le seul format des fichiers à imprimer. Il est cependant courant de devoir imprimer un seul fichier texte ou image. On peut bien sûr le charger dans un éditeur, qui l’imprime alors au format PostScript. On peut aussi le convertir avec un programme ou un convertisseur graphique au format PostScript. Il est cependant plus confortable de ne lancer que lpr fichier. Pour que cela fonctionne, le système d’impression tente de reconnaître le type de fichiers à imprimer. Lorsque cela fonctionne et qu’il ne s’agit pas encore d’un fichier PostScript, le fichier est transformé au format PostScript avec le programme approprié. Le convertisseur est cependant appelé par un script de filtre.
Résumé de la chaîne
Vous avez configuré une imprimante jet d’encre non PostScript sur votre ordinateur. Elle s’appelle pluton. Vous aimeriez maintenant imprimer le fichier monimage.png. Lancez par conséquent la commande suivante : utilisateur$ lpr -Ppluton monimage.png
Le processus d’impression suit alors ces étapes : 1. lpr envoie le fichier au système d’impression CUPS. 2. Celui-ci envoie le fichier au système de filtres. 3. Le filtre reconnaît le type de fichiers (PNG) et convertit l’image bitmap au format PostScript. 4. Les données PostScript sont envoyées à GhostScript, qui convertit le fichier PostScript au format de données de l’imprimante pluton. 5. Lorsque pluton a terminé toutes ses tâches précédentes, elle imprime monimage.png.
Configuration de base de CUPS cupsd.conf
La configuration de base de CUPS est enregistrée dans /etc/cups/cupsd.conf. Les paramètres par défaut varient selon la distribution. Vous pouvez modifier les principales options
Linux Livre Page 590 Mardi, 23. septembre 2008 1:05 13
590
LINUX
avec un programme de configuration ou l’interface web localhost:631. Nous allons cependant d’abord parler de la configuration manuelle de CUPS. La place manque pour détailler tous les mots clés d’une configuration cupsd.conf. Les exemples ci-après montrent le principe de la configuration et n’ont pas vocation à servir de référence. Vous pourrez trouver une référence de tous les mots clés à l’adresse http://localhost:631/help/ref-cupsd-conf.html. Attention, une modification de cupsd.conf n’est valide qu’une fois CUPS redémarré. Le nom du script InitV correspondant diffère selon la distribution (cups, cupsd, cupsys, etc.). root# /etc/init.d/cups* restart
Si vous utilisez CUPS sous SUSE, vous devez vous abstenir d’utiliser des tabulations ; YaST peut, dans le cas contraire, détruire votre configuration ! Paramètres essentiels
cupsd.conf commence par quelques paramètres essentiels, qui ressemblent par exemple à ceux-ci : # Paramètres essentiels de /etc/cups/cupsd.conf # Journalise les erreurs et les avertissements LogLevel warning # Les membres du groupe lpadmin sont administrateurs de CUPS (@SYSTEM) SystemGroup lpadmin # Administration web uniquement pour les utilisateurs locaux Listen localhost:631 Listen /var/run/cups/cups.sock #Permettre l’accès réseau à l’imprimante sur le réseau local Browsing On BrowseOrder allow,deny BrowseAllow @LOCAL BrowseAddress @LOCAL #Authentification par nom d’utilisateur et mot de passe lorsqu’une #telle authentification est nécessaire DefaultAuthType Basic
Contrôle d’accès
L’accès à plusieurs composants de CUPS est contrôlé par diverses sections , ainsi que par des règles : • est la configuration de base pour tous les composants. • gère les droits d’administration sur l’interface web. • gère les droits de configuration sur l’interface web. • définit les règles pour les opérations de base. L’exemple de configuration suivant définit un droit d’accès à toutes les fonctions de CUPS uniquement pour l’ordinateur local. Order allow,deny interdit par défaut tout accès et définit les règles en lisant d’abord les lignes Allow, puis les lignes Deny. L’administration web sur localhost:631 n’est également accessible que pour localhost. Les modifications de la configuration nécessitent l’authentification d’un administrateur système (root ou un utilisateur membre du groupe défini par le mot clé SystemGroup). Le bloc Policy contient des règles sur les opérations accessibles aux différents utilisateurs (par exemple, pour arrêter une tâche d’impression déjà lancée).
Linux Livre Page 591 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
591
# Gestion des droits d’accès dans /etc/cups/cupsd.conf # Authentification par nom d’utilisateur et mot de passe lorsqu’une # telle authentification est nécessaire DefaultAuthType Basic # Autorise un accès global au serveur CUPS pour localhost Order allow,deny Allow localhost # Autorise l’administration web à localhost Order allow,deny Allow localhost # Autorise la configuration web à localhost, mais demande une # authentification d’un administrateur système CUPS AuthType Basic Require user @SYSTEM Order allow,deny Allow localhost # Règles pour l’accès à l’imprimante et aux tâches d’impression # Les tâches d’impression ne peuvent être modifiées que par leur # propriétaire ou par un administrateur Require user @OWNER @SYSTEM Order deny,allow # les tâches administratives nécessitent qu’un administrateur de CUPS se # connecte AuthType Basic Require user @SYSTEM Order deny,allow # toutes les autres opérations sont autorisées à tous Order deny,allow
Linux Livre Page 592 Mardi, 23. septembre 2008 1:05 13
592 TCP-Wrapper
LINUX
L’accès à CUPS est normalement enregistré dans /etc/cups/cupsd.conf. Il arrive cependant que CUPS soit compilé avec la bibliothèque TCP-Wrapper (comme sous SUSE). Vous pouvez vérifier cela avec ldd : user$ ldd /usr/sbin/cupsd ... libwrap.so.0 => /lib64/libwrap.so.0
Dans ce cas, CUPS ne fonctionne que lorsqu’il n’est pas interdit dans /etc/hosts.deny ou autorisé explicitement dans /etc/hosts.allow, ce qui est le cas par défaut. Si vous modifiez ces fichiers, vous devez penser à CUPS (ligne cupsd).
Administration de CUPS dans un navigateur web On peut aussi administrer CUPS dans un navigateur web. CUPS embarque pour cela un serveur http, qui écoute par défaut sur le port 631. Pour tester cette fonction, allez à l’adresse http://localhost:631 avec votre navigateur (voir Figure 30.1).
Figure 30.1 Administration web de CUPS.
cupsd.conf
Le fichier /etc/cups/cupsd.conf définit si l’administration web est activée, si elle peut être utilisée sur l’ordinateur local ou le réseau, et s’il est nécessaire de s’y connecter avec un identifiant de compte système et un mot de passe associé. La configuration de la section précédente autorise uniquement les utilisateurs locaux à gérer CUPS via le Web (Listen localhost:631). Si vous désirez faire également fonctionner la configuration web sur le réseau local, vous devez modifier cupsd.conf comme suit. Vous devez aussi vous assurer que le port 631 n’est pas bloqué par un pare-feu. # /etc/cups/cupsd.conf ... Port 631 Listen /var/run/cups/cups.sock
Linux Livre Page 593 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
593
... ... Order allow,deny Allow @LOCAL # Modifier la configuration nécessite l’authentification d’un # administrateur système de CUPS AuthType Basic Require user @SYSTEM Order allow,deny Allow @LOCAL ...
Commandes d’administration de CUPS En général, vous utiliserez la boîte de dialogue d’impression d’un programme (OpenOffice.org, Firefox, etc.) pour imprimer, et les outils de Gnome ou de KDE pour gérer les tâches d’impression. Vous pouvez également utiliser pour cela diverses commandes en ligne de commande. Celles-ci sont très utiles lorsque vous désirez automatiser l’envoi de tâches d’impression. Les commandes lpr, lpq, lprm et lpc ne sont pas spécifiques à CUPS ; elles existent aussi dans BSD-LPD et LPRng. Il s’agit d’un dénominateur commun de tous les systèmes d’impression, mais attention : les options peuvent différer d’un système à un autre. lpr
lpr permet d’imprimer un fichier. Si plusieurs imprimantes sont configurées, indiquez avec l’option -P sans espace le nom de la file d’attente. Vous pouvez l’omettre si vous utilisez l’imprimante par défaut. utilisateur$ lpr -Pnom fichier
On peut aussi utiliser lpr en conjonction avec un tube pour imprimer la sortie d’une autre commande. La commande suivante imprime la liste de fichiers renvoyée par ls sur l’imprimante par défaut : utilisateur$ ls -l *.odt |lpr
Vous pouvez aussi utiliser, à la place de lpr, la commande lp (sa syntaxe est expliquée dans man 1 lp). lpq et lprm
Toutes les tâches d’impression qui ne sont pas exécutées immédiatement sont enregistrées dans une file d’attente (une file par imprimante). Vous pouvez afficher le contenu de cette file d’attente avec lpq -Pnom.
Linux Livre Page 594 Mardi, 23. septembre 2008 1:05 13
594
LINUX
Pour supprimer les tâches d’impression que vous avez vous-même lancées, utilisez lprm Pnom id en indiquant le nom de l’imprimante et le numéro de la tâche, que vous pouvez obtenir avec lpq. utilisateur$ lpq HPLasJet1022 est prête et en cours d’impression Rang Propr. Tâche Fichiers active michael 20 evince-print 1st michael 21 evince-print utilisateur$ lprm 20 utilisateur$ lprm 21 lpc
lpstat, lpinfo, lpadmin et lpoptions
Taille totale 17408 octets 16384 octets
lpc permet un contrôle plus fin sur l’activité de l’imprimante. Lorsque vous lancez cette commande, vous arrivez dans un environnement interactif, dans lequel vous pouvez lancer des commandes telles que status, help, etc. Certaines ne peuvent être lancées que par l’utilisateur root. Pour quitter lpc, utilisez les commandes exit, bye ou quit. lpstat affiche des informations sur toutes les imprimantes disponibles. lpinfo fournit une liste de tous les périphériques et pilotes d’impression. lpadmin permet d’ajouter ou de supprimer une imprimante. lpoptions affiche les options des imprimantes CUPS et permet de les modifier. utilisateur$ lpoptions -o PageSize=A4
CUPS désactive les imprimantes qui ne sont pas accessibles. Pour les réactiver, lancez les deux commandes suivantes : utilisateur$ lpadmin -E -p nom utilisateur$ accept nom
Pour les désactiver explicitement, utilisez la commande reject : utilisateur$ reject nom
HP Linux Imaging and Printing (HPLIP) HP développe des pilotes libres pour la plupart de ses imprimantes, scanners et appareils multifonction. Les licences sont principalement la GPL, mais aussi parfois la licence MIT ou BSD. La prise en charge du libre chez HP est exemplaire − mais malheureusement encore une exception. La plupart des distributions installent HPLIP par défaut. Le paquetage HPLIP contient divers pilotes et programmes supplémentaires pour la configuration et la maintenance des périphériques. Par exemple, hp-setup reconnaît les appareils HP connectés à l’ordinateur et aide à les connecter. hp-toolbox permet de connaître le niveau de remplissage des cartouches de nombreuses imprimantes à jet d’encre HP, une fonction que CUPS ne fournit pas. L’utilisation des pilotes HPLIP est optionnelle pour de nombreuses imprimantes. La plupart des imprimantes laser HP sont prises en compte directement par CUPS. Le pilote HPLIP, en association avec hp-toolbox, peut cependant fournir des fonctionnalités supplémentaires. HPLIP est étroitement lié à CUPS. Les processus hpiod et hpssd, lancés lors du démarrage du système par le script InitV /etc/init.d/hplip, gèrent la communication avec les périphériques HP. Vous trouverez plus d’informations sur HPLIP à l’adresse http://hplip.sourceforge.net/.
Linux Livre Page 595 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
595
30.2 CUPS – Configuration d’une imprimante
Pilotes d’imprimante
Pour configurer une imprimante, vous pouvez utiliser les outils intégrés à Gnome et KDE, l’outil de configuration web de CUPS ou les programmes fournis par votre distribution. • Gnome : gnome-cups-manager • KDE : module du centre de contrôle • CUPS : configuration web • Debian, Ubuntu : outils KDE et Gnome • Red Hat, Fedora : system-config-printer • SUSE : module YaST Matériel, Imprimantes La question décisive de la configuration de l’imprimante est bien sûr de savoir si elle est compatible avec Linux et avec la combinaison CUPS, GhostScript et leurs pilotes. La liste suivante résume la compatibilité à prévoir pour les différentes catégories d’imprimantes : • Imprimantes laser. Elles sont pour la plupart compatibles PostScript ou PCL (langage d’imprimante de HP). Leur utilisation sous Linux est optimale. C’est également valable pour la majorité des modèles réseau. • Imprimantes GDI/Windows. Ces imprimantes, généralement bon marché, sont prévues pour être utilisées sous Windows. L’idée sous-jacente est qu’un programme Windows prépare la page à imprimer sur l’ordinateur et l’envoie à l’imprimante. Les pages sont souvent construites avec l’interface graphique GDI développée par Microsoft, d’où le nom d’imprimante GDI. Malheureusement, le format des données des pages n’est généralement pas documenté. De nombreuses imprimantes de ce type ne sont donc pas prises en charge sous Linux. • Imprimantes à jet d’encre et imprimantes photo. La prise en charge des imprimantes à jet d’encre dépend largement du modèle et de la marque. Les imprimantes HP sont en général relativement bien prises en charge. Comme HP travaille beaucoup avec la communauté Linux, il existe un pilote libre pour la plupart des modèles. Les modèles les plus récents peuvent cependant manquer d’une base de données d’impression CUPS (fichiers PPD). Les imprimantes à jet d’encre d’autres fabricants posent souvent plus de problèmes. Le site web http://mambo.kuhp.kyoto-u.ac.jp/~takushi propose des pilotes pour quelques imprimantes Canon et Epson. L’installation peut cependant être compliquée. Lorsque vous achetez une nouvelle imprimante, il est profitable de jeter un œil sur le site web http://www.freestandards.org/en/OpenPrinting qui recense d’innombrables informations sur le thème de l’impression sous Linux. Il existe aussi une base de données de modèles pris en charge sous Linux. Certaines imprimantes pour lesquelles il n’existe pas de pilote libre disposent d’un pilote commercial TurboPrint. Ce dernier permet d’ailleurs d’obtenir de meilleurs résultats pour certaines imprimantes photo. Vous trouverez des pilotes relativement bon marché et une version gratuite, mais limitée des pilotes sur le site web http://www.turboprint.de/en_p_turboprint.phtml .
Linux Livre Page 596 Mardi, 23. septembre 2008 1:05 13
596 Fichiers PPD
LINUX
CUPS voit toutes les imprimantes comme une imprimante PostScript. Les paramètres spécifiques, comme la taille des marges non imprimables, la résolution de l’imprimante, les commandes pour différentes fonctions (par exemple, les bacs d’entrée du papier) et autres particularités (impression en duplex), sont enregistrés dans des fichiers PPD (PostScript Printer Definition, définition d’imprimantes PostScript). Ce format, défini par Adobe, est également utilisé pour les imprimantes sous Windows et Mac OS X. Comme toutes les imprimantes ne sont pas en réalité des imprimantes PostScript, les fichiers CUPS PPD contiennent également sous forme de commentaires la commande GhostScript, y compris toutes les options, avec lesquelles gs peut convertir les fichiers PostScript dans le format de l’imprimante. Les lignes suivantes constituent quelques extraits d’un fichier PPD pour l’imprimante à jet d’encre HP DeskJet 5940 : *PPD-Adobe: "4.3" ... *Manufacturer: "HP" *Product: "(deskjet 5940)" ... *cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip" *%pprRIP: foomatic-rip other ... *FoomaticIDs: HP-DeskJet_5940 hpijs *FoomaticRIPCommandLine: "gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=ijs -sIjsServer=hpijs%A%B%C -dIjsUseOutputFD%Z -sOutputFile=- -" ...
Ces informations sont extraites d’une base de données ppds.dat qui contient toutes les imprimantes connues par CUPS. Le fichier ppds.dat est créé lors de la configuration de l’imprimante et se trouve selon la distribution dans un répertoire différent, par exemple /var/cache/cups. Si votre imprimante ne se trouve pas dans cette base de données et si vous ne trouvez pas de modèle compatible, vous pouvez éventuellement trouver un fichier .ppd sur Internet. Le script cupsomatic extrait du fichier PPD de l’imprimante les paramètres GhostScript, puis appelle gs et convertit les données PostScript au format de l’imprimante.
Configuration d’une imprimante locale Indépendamment du programme de configuration utilisé, les astuces suivantes devraient vous aider : • La détection automatique de l’imprimante ne peut fonctionner que lorsque celle-ci est allumée. Si vous possédez plusieurs imprimantes, vous devez pendant la configuration d’une imprimante donnée éteindre toutes les autres. • Pour configurer manuellement une imprimante, vous devez au moins connaître l’interface (parallèle, série, USB, réseau, etc.) et le modèle. Celui-ci est choisi dans une énorme base de données.
Linux Livre Page 597 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
597
Si votre imprimante n’y figure pas, essayez de trouver un modèle compatible. Pour les imprimantes PostScript et PCL, vous pouvez choisir le fabricant Generic et indiquer le type de l’imprimante (PostScript ou PCL). Pour certaines imprimantes récentes qui ne figurent pas encore dans la base de données de modèles de CUPS, vous pouvez trouver un fichier PPD sur Internet et le charger pendant la configuration. Attention, tous les fichiers PPD ne sont pas compatibles avec CUPS. Un fichier donné peut aussi demander une version très récente de CUPS. • Pour de nombreux modèles d’imprimantes, il existe plusieurs pilotes. Deux raisons peuvent expliquer cela. Bon nombre d’imprimantes prennent en charge différents standards. De plus, CUPS agrège plusieurs projets différents (GhostScript, GutenPrint, etc.), ce qui peut mener à différents pilotes provenant de différents projets. L’imprimante peut alors apparaître plusieurs fois sous différents noms. Il n’est souvent pas facile de dire si le pilote X est meilleur que le pilote Y. La qualité de l’impression dépend largement de ce que vous désirez imprimer : texte, schémas techniques, photos, etc. Seules quelques expériences vous permettront de savoir quel pilote utiliser pour quelles données. La qualité d’impression dépend également du paramétrage du pilote, par exemple la résolution. Les pilotes ne se différencient pas seulement par la qualité, mais aussi par la vitesse d’impression. Pour imprimer du code, il n’est pas forcément nécessaire d’utiliser un pilote destiné à l’impression de photos ! • La plupart des imprimantes laser PostScript peuvent aussi être configurées via un mode de compatibilité pour se comporter comme une imprimante HP LaserJet. Les données d’impression sont alors converties dans le langage d’impression de HP et envoyées à l’imprimante. Cela peut paraître lourd, mais la vitesse d’impression obtenue est dans de nombreux cas supérieure. En effet, pour l’imprimante, traiter des fichiers PostScript est bien plus complexe que traiter des fichiers LaserJet. La vitesse de traitement est plus faible que celle d’un PC classique. Cette configuration a cependant un inconvénient : la qualité d’impression est en partie plus faible. La différence dépend principalement des polices utilisées.
Configuration d’une imprimante réseau (côté serveur) Les termes "configuration d’une imprimante réseau" sont souvent peu clairs. Cette section traite du cas d’une imprimante tout à fait normale branchée sur un ordinateur et mise à la disposition du reste du réseau via CUPS. La section suivante décrit comment utiliser une imprimante déjà connectée au réseau. cupsd.conf
Nous supposons ici que l’imprimante est déjà configurée en local, c’est-à-dire qu’il est possible d’imprimer depuis l’ordinateur. Avant que d’autres ordinateurs ne puissent l’utiliser, il faut que les contrôles d’accès du serveur CUPS le permettent. Pour que toutes les imprimantes du réseau local sachent quelles imprimantes sont disponibles sur le réseau, il faut activer
Linux Livre Page 598 Mardi, 23. septembre 2008 1:05 13
598
LINUX
la fonction Browsing du serveur CUPS. Les modifications nécessaires du fichier cupsd.conf sont indiquées dans le fichier de configuration ci-après : # /etc/cups/cupsd.conf ... Listen 631 Browsing On BrowseAddress @LOCAL ... # Permettre l’accès à CUPS dans le réseau local Order allow,deny Allow @LOCAL ...
Listen 631 indique que CUPS communique sur le port réseau 631. Attention, le paramétrage par défaut est Listen localhost:631, qui n’autorise l’accès qu’à l’ordinateur local. BrowseAdress @LOCAL s’assure que les informations de CUPS sont envoyées sur toutes les interfaces réseau locales, mais pas sur les interfaces d’accès à Internet (PPP, etc.). Vous pouvez aussi indiquer une interface réseau particulière avec BrowseAddress @IF(eth0). cupsd.conf a de nombreux mots clés associés au parcours du réseau. Par exemple, BrowseAllow et BrowseDeny permettent d’indiquer explicitement depuis quels ordinateurs les informations CUPS peuvent être reçues. Par défaut, il n’y a pas de restriction d’accès et il est rarement nécessaire ou sensé de modifier les autres paramètres BrowseXxx. Allow @LOCAL permet de donner accès à CUPS aux ordinateurs du réseau local. N’oubliez pas de redémarrer CUPS pour que les modifications soient prises en compte : root# /etc/init.d/cups* restart
Pour qu’une imprimante locale soit également utilisée sur les ordinateurs Windows du réseau, elle doit être partagée par Samba (voir section 30.8).
Configuration d’une imprimante réseau (côté client) Après avoir décrit comment partager une imprimante avec d’autres membres du réseau, nous allons maintenant traiter de l’opération inverse : envoyer des documents à une imprimante qui n’est pas connectée directement à l’ordinateur, mais seulement disponible via le réseau. Il existe deux variantes : les imprimantes usuelles, connectées à un autre ordinateur, et les vraies imprimantes réseau, qui disposent elles-mêmes d’une prise réseau et d’un serveur d’impression intégré. Lorsque la connexion à l’imprimante se fait par le biais d’un autre ordinateur, on peut rencontrer les cas suivants : • une imprimante IPP (gestion par Linux/Unix avec CUPS, Internet Printing Protocol) ; • une imprimante Linux/Unix (gestion par Linux/Unix, protocole LPD) ; • une imprimante Windows (gestion par un ordinateur sous Windows ou un serveur Samba) ; • une imprimante Novell (gestion par un ordinateur Novell Networks).
Linux Livre Page 599 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
Utiliser une imprimante IPP
599
La plupart des vraies imprimantes réseau connaissent au moins l’un de ces protocoles. De plus, certains appareils prennent en charge divers protocoles supplémentaires : • une API de socket (par exemple JetDirect d’HP) sur le port IP 9100 ; • AppSocket (par exemple Tektronix) ; • un protocole spécifique au fabricant. Les détails de la configuration dépendent du protocole utilisé pour les communications. La situation la plus simple correspond à celle où CUPS et IPP sont disponibles des deux côtés. Les imprimantes répondant à cette configuration sont visibles sans autre configuration du côté client et peuvent être utilisées immédiatement. CUPS ajoute toutes les imprimantes visibles sur le réseau au fichier /etc/printcap. lpstat -v affiche une liste de toutes les imprimantes disponibles. La commande suivante est lancée sur l’ordinateur uranus. Il existe une imprimante locale, nommée DeskJet-5940, ainsi que deux imprimantes sur mars et saturne, nommées respectivement pluton et kyocera. user@uranus$ périphérique périphérique périphérique
lpstat -v pour DeskJet-5940 : parallel:/dev/lp0 pour pluton : ipp://mars.sol:631/printers/pluton pour kyocera : ipp://saturn.esol:631/printers/kyocera
Ces trois imprimantes sont accessibles directement avec lpr -Pnom. Si plusieurs imprimantes ont le même nom sur le réseau, elles doivent être désignées sous la forme nomimprimante@nomhôte, par exemple lpr -Plp@jupiter. Pour que les imprimantes CUPS soient visibles des autres ordinateurs dans le réseau local, CUPS doit être configuré sur les ordinateurs distants comme dans la section précédente. Le port 631 ne doit pas être bloqué par un pare-feu ! En principe, une imprimante IPP peut être configurée de manière à pouvoir être utilisée en réseau, mais non visible automatiquement. Dans ce cas, vous devez configurer l’imprimante sur l’ordinateur local. Choisissez comme type d’imprimante Imprimante réseau IPP et saisissez comme adresse ipp://nomhôte/printers/ nomimprimante. Si l’imprimante distante est gérée par Linux/CUPS, indiquez comme fabricant et modèle Raw et Queue. Cela signifie que les données PostScript doivent être envoyées telles quelles à l’ordinateur distant qui se chargera du traitement des données pour l’imprimante. Configurer d’autres imprimantes réseau
Si l’imprimante réseau distante n’est pas compatible avec IPP, elle doit être configurée du côté du client avant qu’il puisse l’utiliser. Les programmes de configuration s’en chargent comme pour une imprimante locale. Il faut cependant choisir, comme type d’imprimante, Imprimante réseau. La suite de la configuration dépend du protocole : • SMB (Windows/Samba). Vous devez indiquer le nom d’hôte de l’ordinateur, le nom de l’imprimante et éventuellement un nom d’utilisateur et un mot de passe. Avant de pouvoir utiliser une imprimante Windows, vous devez installer les outils client de Samba. Selon la distribution, les outils client et serveur font tous partie du même paquetage. • LPD (Unix-LPD). Indiquez le nom de l’ordinateur et de l’imprimante, ainsi que celui de la file d’attente. En cas de doute, il s’agit souvent de lp ou lp0. • Protocole de socket comme HP JetDirect. Indiquez le nom d’hôte et l’adresse IP de l’imprimante, ainsi que le numéro de port (en général, 9100).
Linux Livre Page 600 Mardi, 23. septembre 2008 1:05 13
600
LINUX
Certains programmes de configuration attendent les informations ci-après sous la forme d’une adresse URI (la syntaxe est résumée dans le tableau qui suit). Les informations détaillées quant à l’imprimante réseau (protocole, identifiant de connexion, etc.) sont enregistrées dans le fichier /etc/cups/printers.conf. Les lignes suivantes montrent la configuration d’une imprimante réseau compatible JetDirect : # /etc/cups/printers.conf Info FS-1800+ DeviceURI socket://pluton:9100 State Idle StateTime 1164874758 Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy retry-job
Le mot clé correspondant de printers.conf est DeviceURI. Il introduit l’adresse URI qui fournit le protocole et l’adresse réseau. Le tableau suivant donne quelques exemples de syntaxe pour ces adresses. Adresses URI de CUPS parallel:/dev/lp0 serial:/dev/ttyS0?baud=115200 usb:/dev/usb/lp0 lpd://nomhôte/nomimprimante socket://nomhôte:9100 smb://nomhôte/imprimante smb://groupe/nomhôte/imprimante smb://utilisateur:xxx@wg/hôte/imprimante ipp://nomhôte/printers/nomimprimante
imprimante locale (parallèle) imprimante locale (série) imprimante locale (USB) imprimante réseau LPD imprimante avec protocole de socket imprimante Windows imprimante Windows dans un groupe de travail imprimante Windows dans un groupe de travail avec authentification imprimante IPP
30.3 NFS NFS (Network File System, système de fichiers réseau) permet à un ordinateur de mettre à disposition ses répertoires locaux pour d’autres ordinateurs du réseau. C’est la méthode la plus courante sous Unix/Linux de gérer les répertoires partagés. Les fonctions de base de NFS sont intégrées directement au noyau depuis la version 2.2, afin d’atteindre des performances optimales. La plupart des distributions actuelles fournissent un noyau NFS. Il existe aussi un serveur NFS en espace utilisateur, indépendant du noyau.
Linux Livre Page 601 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
601
Le noyau NFS prend en charge les versions 3 et 4 de NFS. Pour l’instant, NFS4 n’est pas largement diffusé. NFS est implémenté avec des RPC (Remote Procedure Calls, appels de procédures distants). Pour que NFS fonctionne, il faut donc un ensemble de programmes, dont voici une liste des principaux : • nfsd (pour NFS3) et nfsd4 (pour NFS4) sont les démons NFS. Ils sont mis en œuvre par des threads du noyau. • portmap établit la connexion entre le client et le serveur NFS, et s’occupe de l’allocation dynamique de ports UDP sur les clients. • rpc.mountd traite les demandes de montage des clients. Vous avez normalement peu d’attention à porter à ces programmes : dès lors que NFS est installé et actif, tous les programmes nécessaires sont démarrés par InitV. Un guide pratique détaillé sur le thème de NFS, avec de nombreuses astuces d’optimisation et de sécurité, se trouve à l’adresse http://nfs.sourceforge.net/nfs-howto/.
Installation et configuration Avant de configurer un serveur NFS, vous devez vous assurer que les différents paquetages sont installés. Par défaut, ce n’est généralement pas le cas. Les noms des paquetages varient selon la distribution. Debian, Ubuntu
nfs-common, nfs-kernel-server, portmap
Fedora, Red Hat, SUSE
nfs-utils, portmap
La configuration est regroupée dans trois fichiers : /etc/exports, /etc/hosts.allow et /etc/ hosts.deny. /etc/exports
Le fichier /etc/exports est le fichier central de configuration de NFS. Il définit quel ordinateur a le droit d’accéder à quel répertoire. L’ordinateur peut être indiqué par son adresse IP ou son nom sur le réseau. Les adresses IP peuvent être des masques (par exemple, 192.168.0.0/255.255.255.0 ou 192.168.0.0/24). Les adresses IP et noms d’ordinateurs peuvent, de plus, contenir le caractère joker * (par exemple *.sol). L’exemple suivant indique que tous les clients dans le réseau IP 192.168.0.* ou nommés *.sol peuvent accéder au répertoire /usr/local, mais pas le modifier. De plus, uranus.sol peut lire et modifier le répertoire /usr/share. La ligne /usr/local est séparée en deux lignes pour des raisons de place. # /etc/exports sur l’ordinateur mars.sol # ro = lecture seule, rw = lecture et écriture /usr/local 192.168.0.0/24(ro,async,no_subtree_check) \ *.sol(ro,async,no_subtree_check) /usr/share uranus.sol(rw,async,no_subtree_check)
Linux Livre Page 602 Mardi, 23. septembre 2008 1:05 13
602
LINUX
La syntaxe de /etc/exports est comparable à celle des lignes qui précèdent. Le répertoire et le nom d’hôte ou l’adresse IP sont suivis d’options NFS entre parenthèses. ro et rw indiquent si l’accès n’est autorisé qu’en lecture ou en lecture/écriture. sync et async définissent le moment où le serveur NFS prend en compte les modifications. Par défaut, il s’agit de sync : la modification est enregistrée lorsque le fichier est effectivement enregistré. async est une option plus rapide, mais nettement moins sûre. man exports fournit une référence exhaustive de toutes les options. Si le serveur NFS est déjà démarré, les modifications de /etc/exports ne seront prises en compte qu’après avoir lancé la commande exportfs : root# exportfs -a /etc/ hosts.allow et /etc/hosts.deny
Les fichiers hosts.allow et hosts.deny indiquent quels ordinateurs ont le droit d’accéder au serveur NFS. Les informations de /etc/exports définissent quels utilisateurs peuvent contacter le serveur NFS. Ils se situent en première ligne de la protection des accès. Le serveur NFS s’occupe des lignes portmap et mountd.
Démarrage
Le serveur NFS est, comme tous les autres services réseau, lancé grâce à un script InitV. Le nom du script dépend de la distribution et peut s’appeler nfs, nfs-kernel, nfsserver, etc. Une fois le serveur lancé, vous pouvez regarder si tout fonctionne avec la commande mount sur un autre ordinateur : utilisateur@uranus$ utilisateur@uranus$ utilisateur@uranus$ utilisateur@uranus$
mkdir /test mount -t nfs mars:/usr/share /test ... umount /test
Si ce n’est pas le cas, vérifiez que NFS n’est pas bloqué par un pare-feu. Attention, NFS utilise le protocole UDP et non TCP. UID et GID
Un des gros problèmes de NFS dans un petit réseau est que les utilisateurs de NFS doivent avoir les mêmes identifiants d’utilisateur et de groupe. NFS utilise ces numéros et les droits d’accès en dépendent. Pour les gros réseaux, il existe souvent un serveur qui centralise ces informations. root a souvent un rôle particulier. Il ne peut pas, pour des raisons de sécurité, utiliser NFS comme un utilisateur normal. Il n’a que les droits de l’utilisateur nobody. Si vous désirez donner les droits usuels à root, il faut utiliser l’option no_root_squash.
NFS4 NFS4 est une implémentation complètement nouvelle du protocole. Il prend en charge les ACL et permet une authentification plus sûre des utilisateurs. De plus, il utilise le port TCP 2049 et non UDP. Les fichiers ne sont plus associés aux UID et GID des utilisateurs, mais à une chaîne de caractères de la forme utilisateur@ordinateur. Il a cependant l’inconvénient d’être plus compliqué. Pour Linux et Sun, il existe peu de clients NFS4. Vous trouverez plus d’informations sur NFS4 sur les pages suivantes :
Linux Livre Page 603 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
603
http://wiki.linux-nfs.org/ ; http://fr.wikipedia.org/wiki/Network_File_System http://www.citi.umich.edu/projects/nfsv4/linux/using-nfsv4.html http://www.vanemery.com/Linux/NFSv4/NFSv4-no-rpcsec.html http://www.brennan.id.au/19-Network_File_System.html#nfs4
30.4 Samba – Les fondamentaux Samba est un ensemble de programmes servant à faire communiquer les ordinateurs sous Windows et Unix/Linux. Son nom vient de l’abréviation SMB, qui signifie Server Message Block. SMB est utilisé sous Windows pour partager des fichiers et des imprimantes sur un réseau. Sur les réseaux Windows, il existe souvent un serveur Windows pour fournir ces fonctionnalités à tous les clients. Samba permet de mettre en place cela sur un serveur Linux. Cette solution est moins coûteuse et souvent plus efficace et stable. Il n’est cependant pas nécessaire de modifier tout un réseau Windows pour pouvoir mettre en place Samba. Comme ce dernier peut être ajouté sans problème à un ordinateur sous Linux, vous pouvez d’une part accéder à des fichiers et à des imprimantes partagées par des ordinateurs Windows et d’autre part, servir vous-même des fichiers ou des imprimantes locales. Cette section ne couvre que les fonctions de base de Samba 3.0. Si vous avez besoin de fonctions plus avancées, comme l’authentification via LDAP, vous devez recourir à d’autres documentations, par exemple sur http://www.samba.org ou https://help.ubuntu.com/community/SettingUpSamba.
Protocole et services
NetBIOS
NBNS
Un prérequis de la configuration d’un serveur Samba est que vous ayez une idée de la manière dont fonctionnent les réseaux Windows. Nous ne pouvons ici qu’en donner un bref aperçu. Cette section a pour seul but de déclarer les fonctions de Samba et de les relier à la terminologie Windows. Procurez-vous un bon livre sur la configuration du réseau sous Windows. Si vous vous intéressez aux aspects plus techniques, http://www.samba.org/ samba/docs/using_samba/toc.html est un bon point de départ. L’abréviation NetBIOS vient du protocole Network Basic Input/Output System, système basique d’entrées/sorties réseau, développé par IBM. Il a été entre temps plusieurs fois mis à jour. NetBIOS ne doit pas être confondu avec NetBEUI. Ce dernier est un protocole qui remplissait le même rôle que TCP/IP. Il était autrefois utilisé à la place de TCP/IP sous Windows, mais n’a depuis plus beaucoup de signification. NetBIOS sert, entre autres, à échanger les noms d’ordinateurs (service de noms). Ces noms peuvent être gérés de manière centralisée par un serveur de noms NetBIOS (NBNS) ou de manière décentralisée. Dans ce cas, chaque ordinateur envoie lorsqu’il démarre un message à tous les autres clients du réseau et leur indique sous quel nom il est accessible.
Linux Livre Page 604 Mardi, 23. septembre 2008 1:05 13
604 Datagrammes/ sessions
WINS
LINUX
NetBIOS utilise deux mécanismes de communication : le service de sessions et le service de datagrammes. Tous deux ont à voir avec l’échange de données entre deux ordinateurs. Le premier établit une connexion fixe entre deux ordinateurs. Dans le deuxième, la connexion n’est au contraire pas fixée : il n’y a pas de vérification que les données arrivent dans le bon ordre. Le service de datagrammes a l’avantage de pouvoir envoyer des données à plusieurs ordinateurs en même temps. Le NBNS est réalisé grâce à WINS (Windows Internet Name Service, service de noms Internet sous Windows). Ce dernier est le pendant du DNS sous Linux/Unix. Les serveurs WINS peuvent être mis en place avec Samba ou des versions actuelles de Windows (à l’exception des Windows 9x). Samba peut ainsi accéder à un DNS déjà actif. La résolution de noms fonctionne, à la différence d’Unix, sans serveur de noms explicite. Les paquets de datagrammes doivent être envoyés à tous les ordinateurs du réseau. C’est pourquoi cette opération est de plus en plus inefficace au fur et à mesure que le réseau grossit. Les noms d’ordinateurs NetBIOS et TCP/IP sont indépendants. En théorie, un ordinateur peut avoir un nom différent par protocole. En pratique, on évitera évidemment cette situation. Utiliser différents noms porte à confusion et peut également s’opposer à l’utilisation de certaines fonctions.
Exploration du réseau
Un client Windows peut explorer le réseau pour savoir quels sont les autres ordinateurs présents sur le réseau. Pour que tous les ordinateurs n’aient pas à parcourir le réseau, un explorateur principal (Master Browser) se charge de cette tâche. Dans les réseaux importants, il est aidé par un ou plusieurs explorateurs de sauvegarde. Samba peut faire office d’explorateur. Il n’est pas explicitement défini qui doit prendre le rôle d’explorateur. Les ordinateurs qui se trouvent sur le réseau le négocient dynamiquement en fonction de leur adaptation au rôle − en général, l’ordinateur avec le système d’exploitation le plus récent est le mieux adapté. La liste d’exploration n’est malheureusement pas toujours synchrone avec l’état courant du réseau. Cela est dû au fait que les clients gèrent un cache avec le dernier état valide. L’actualisation de ce cache (F5 sous l’Explorateur de Windows) ne fonctionne pas toujours ou peut demander un certain temps. Si vous ne trouvez pas un ordinateur alors que vous savez qu’il fonctionne, cela dénote probablement un problème d’exploration.
Droits d’accès et systèmes de sécurité
Partages Sécurité au niveau des partages
Initialement, Windows n’était pas conçu comme un système multi-utilisateur, ni comme un système réseau. Cela a bien changé, mais les origines de Windows sont encore reconnaissables lorsqu’il s’agit de savoir à quels fichiers un utilisateur peut accéder et comment régler ces droits d’accès. D’un point de vue Unix, ces concepts peuvent paraître déconcertants. Le concept de partages décrit les répertoires ou les imprimantes qui sont mis à la disposition d’autres ordinateurs via NetBIOS. La forme la plus simple de contrôle d’accès est d’associer un mot de passe à chaque répertoire et imprimante. Vous pouvez aussi ouvrir complètement l’accès à des répertoires ou des imprimantes données ; aucun mot de passe n’est nécessaire, mais aucun contrôle d’accès n’est fait. Tous les ordinateurs sous Windows à partir de la version 3.11 prennent en charge cette sécurité au niveau des partages.
Linux Livre Page 605 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
605
L’idée est si simple qu’elle est encore très utilisée et tout à fait envisageable dans les petits réseaux. Elle fonctionne sans notion d’utilisateur (jusqu’à Windows 95, la connexion avec des noms d’utilisateurs différents n’était pas prévue). Cette pratique a cependant un inconvénient : si dix ordinateurs partagent trois objets chacun, trente mots de passe différents sont nécessaires. Dans des réseaux plus importants, cela mène rapidement au chaos et à la multiplication des Post-It sur les écrans... Sécurité au niveau des utilisateurs
La sécurité au niveau des utilisateurs suppose que ces derniers se connectent côté client avec un identifiant et un mot de passe. Lorsqu’ils désirent utiliser des données du serveur, leur identifiant et leur mot de passe courants servent à leur attribuer des autorisations d’accès. En plus de l’authentification correcte, il faut également à ce niveau que le client et le serveur appartiennent au même groupe de travail. Par conséquent, un répertoire sur le serveur n’est pas simplement associé à un mot de passe. Il est lié à un utilisateur (ou à une liste ou un groupe d’utilisateurs). Le serveur a donc besoin d’une base de données avec les noms d’utilisateurs, les appartenances aux groupes et les mots de passe. Pour donner un exemple, supposons que l’utilisateur X travaille sur l’ordinateur A. Pour que X puisse accéder au serveur S, il doit être déclaré en tant qu’utilisateur sur S comme sur A (avec le même identifiant et le même mot de passe). Supposons à présent que l’ordinateur A tombe en panne et que X passe sur l’ordinateur B. Pour qu’il puisse accéder aux mêmes données sur S, il doit également être créé sur l’ordinateur B (avec un mot de passe). Si X décide de changer son mot de passe, cette modification doit être répercutée sur le serveur S et tous les clients (A, B, etc.). La gestion décentralisée des mots de passe et de l’authentification est donc un problème perpétuel avec ce concept. Les clients A, B, etc. accèdent aux données du serveur au niveau utilisateur, mais ils peuvent utiliser entre eux une approche de sécurité de partages. Il est également possible que le client A partage, sans mot de passe, un répertoire. Le client B peut alors utiliser ce répertoire (quel que soit l’utilisateur connecté), à partir du moment où il connaît le mot de passe.
Domaines et Active Directory
Les domaines et Active Directory permettent de centraliser l’authentification des utilisateurs sur le réseau. Nous ne parlerons pas ici de l’utilisation de Samba dans ce type de configuration.
Que peut faire Samba ?
Revenons maintenant à Linux. Samba prend en charge les quatre modèles de sécurité : • La sécurité au niveau des partages peut être reproduite, mais c’est assez peu intuitif pour les administrateurs de Samba. • L’utilisation de Samba comme serveur avec une sécurité au niveau des utilisateurs est la plus simple et la plus populaire. • Samba prend en charge, depuis la version 2.2, tous les aspects de la sécurité au niveau des domaines. • Depuis la version 3.0, Samba peut s’intégrer comme client dans un réseau Active Directory. • La version 4 de Samba, attendue pour 2008, devrait lui permettre d’être utilisé comme serveur de domaine Active Directory.
Linux Livre Page 606 Mardi, 23. septembre 2008 1:05 13
606
LINUX
Nous ne parlerons ici que de la sécurité au niveau des partages et des utilisateurs. Pour configurer Samba au niveau des domaines ou mettre en œuvre Active Directory, vous devrez trouver un ouvrage spécifique à Samba.
30.5 Client Samba Gnome et KDE
Vous pouvez accéder à des partages réseau sous Linux, qu’il s’agisse d’ordinateurs Windows ou de serveurs Samba. Le plus simple est d’utiliser le gestionnaire de fichiers de Gnome ou de KDE. L’accès à des répertoires réseau est si simple que les nombreuses limitations concernant la modification des fichiers qui s’y trouvent sont d’autant plus agaçantes. Dans certains cas, un double-clic sur un fichier entraîne des erreurs qui indiquent que ce dernier n’existe pas ou qu’il ne peut pas être trouvé. C’est bien sûr absurde. En fait, de nombreux programmes ne savent pas ouvrir des fichiers sur des partages Windows (par exemple Gimp). D’autres peuvent les ouvrir, mais ne savent pas les enregistrer. La meilleure intégration est la prise en charge transparente du protocole SMB par les programmes purement KDE. La solution à ce problème est malheureusement assez inconfortable : copiez les fichiers du répertoire distant dans un répertoire local, éditez-les et recopiez-les sur le répertoire réseau. Vous pouvez aussi intégrer le répertoire réseau avec le système de fichiers CIFS dans l’arborescence locale.
CIFS
On peut également monter directement un répertoire réseau avec le système de fichiers cifs dans l’arborescence locale (voir section 23.10). Quelle que soit la méthode utilisée, vous devez au moins installer les outils client pour Samba, qui sont fournis dans de nombreuses distributions par des paquetages distincts (sous Ubuntu, samba-common et smbclient). Il faut également s’assurer que le protocole SMB n’est pas bloqué par un pare-feu. Les ports utilisés sont les ports TCP 135, 139 et 445, ainsi que les ports UDP 137 et 138.
smbclient
On peut également chercher des répertoires Windows avec la commande smbclient. Celleci est peu confortable, mais elle est souvent pratique pour tracer les problèmes Samba. L’exemple suivant montre toutes les ressources de l’ordinateur local mercure. Il ne s’agit que d’imprimantes. La deuxième partie du résultat liste tous les groupes de travail visibles et indique quel ordinateur est maître de ces groupes. Il n’est pas nécessaire de donner un mot de passe ; il suffit de taper Entrée, puisque nous ne cherchons pas ici à accéder à des ressources protégées par des mots de passe. utilisateur$ smbclient -L localhost smbclient -L localhost Password: Anonymous login successful Domain=[TEST] OS=[Unix] Server=[Samba 3.0.22] Sharename Type Comment -----------------print$ Disk Printer Drivers
Linux Livre Page 607 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
607
IPC$ IPC IPC Service (mercure server (Samba, Ubuntu)) ADMIN$ IPC IPC Service (mercure server (Samba, Ubuntu)) pluton Printer pluton LaserJet-5 Printer LaserJet-5 DeskJet-5940 Printer hp5940 FS-1800+ Printer FS-1800+ Anonymous login successful Domain=[TEST] OS=[Unix] Server=[Samba 3.0.22] Server Comment --------------MERCURE mercure server (Samba, Ubuntu) Workgroup Master --------------MYGROUP SATURNE SOL MARS TEST MERCURE
Si smbclient renvoie une erreur (access denied), le nom d’utilisateur ou celui du groupe de travail de votre ordinateur ne correspond pas à celui de l’ordinateur Windows ou du serveur Samba. La solution la plus simple est de donner ces informations comme paramètres supplémentaires à smbclient. Le fichier /etc/smb.conf propose plus de paramètres à configurer. Il sert principalement à configurer un serveur Samba, mais certains paramètres sont également exploités par smbclient. utilisateur$ smbclient -U utilisateur -W groupe -L venus
Vous pouvez aussi utiliser smbclient pour télécharger des fichiers. Vous devez d’abord établir une connexion avec le répertoire partagé sur l’ordinateur Windows ou Samba distant. Un mot de passe est alors généralement demandé. Vous pouvez, comme avec ftp, afficher le contenu du répertoire avec ls, changer de répertoire avec cd, télécharger des fichiers avec get et en transférer sur le partage avec put. help renvoie la liste des commandes disponibles et man smbclient fournit une description détaillée des commandes. utilisateur$ smbclient //venus/partage -U nom -W groupe added interface ip=192.168.0.2 bcast=192.168.0.255 nmask=255.255.255.0 Password: xxxxxx Domain=[SOL] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager] smb: > ls . D 0 Thu Sep 7 17:38:02 2006 .. D 0 Thu Sep 7 17:38:02 2006 data D 0 Wed Apr 5 18:17:11 2006 file.xy AR 226 Sat Dec 14 00:00:00 2006
30.6 Samba – Configuration de base et mise en service Configuration minimale
Le fichier de configuration central pour Samba est /etc/samba/smb.conf. Il se compose d’une section globale pour les paramètres de base, ainsi que de plusieurs autres sections pour le partage des ressources (répertoires, imprimantes, etc.). Chaque section commence
Linux Livre Page 608 Mardi, 23. septembre 2008 1:05 13
608
LINUX
par une ligne du type [nom_ressource]. Le fichier peut ressembler, pour les premiers tests, à ceci : ; /etc/samba/smb.conf [global] workgroup = SOL security = share [public] path = /data/public guest ok = yes guest only = yes
Samba partage le répertoire public et se trouve dans le groupe de travail SOL. Ce répertoire contient les données du répertoire /data/public de l’ordinateur local − ce répertoire doit donc exister et contenir quelques fichiers à des fins de test. On peut accéder au serveur (security = share) et au répertoire public (guest ok, guest only = yes) sans mot de passe. Les fichiers ne sont cependant pas modifiables : par défaut, les répertoires sont partagés en lecture seule (read only = yes). Chaque fois que l’on modifie le fichier de configuration, le serveur Samba doit le recharger. Si le serveur fonctionne déjà, il faut forcer cela par /etc/init.d/smb reload ou /etc/init.d/samba reload. Démarrage
Tests
Deux processus d’arrière-plan présentent les services de Samba : • nmbd sert à la gestion interne et agit comme serveur de noms. Ce démon gère aussi l’exploration du réseau. Il peut au besoin faire office d’explorateur maître ou de serveur WINS. • smbd est l’interface pour les clients et leur donne accès aux répertoires, aux imprimantes et à la liste des ressources. Ces deux processus sont démarrés par le système InitV. Les noms des scripts InitV dépendent de votre distribution. • Debian, Ubuntu samba démarre les deux processus • Red Hat, Fedora smb démarre les deux processus • SUSE smb démarre smbd, nmb démarre nmbd Pour tester si tout fonctionne, lancez sur le serveur la commande smbclient. Si vous avez utilisé la configuration minimale proposée, il n’est pas nécessaire de saisir un mot de passe. Dans l’exemple suivant, Samba est installé sur l’ordinateur mars : root# smbclient -L localhost Password: <Entrée> Domain=[SOL] OS=[Unix] Server=[Samba 3.0.23] Sharename Type Comment -----------------public Disk IPC$ IPC IPC Service (Samba 3.0.23) Domain=[SOL] OS=[Unix] Server=[Samba 3.0.23] Server Comment --------------MARS Samba 3.0.23d Workgroup Master --------------SOL MARS
Linux Livre Page 609 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
609
Lorsque cela fonctionne, vous devez vérifier si le serveur Samba et le répertoire public sont visibles par les clients Windows. Un mot de passe n’est normalement pas nécessaire non plus dans ce cas. La Figure 30.2 montre le répertoire sous Windows XP.
Figure 30.2 Le serveur Mars vu de l’Explorateur Windows.
Vérificateur de syntaxe de smb.conf
Lorsque vous faites de grosses modifications dans le fichier smb.conf, il est prudent de vérifier sa syntaxe avec testparm avant de redémarrer Samba. root# testparm Load smb config files from /etc/samba/smb.conf Processing section "[public]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] workgroup = SOL ...
À partir de Samba 3.0, l’option -v affiche une liste de tous les paramètres par défaut pour toutes les options possibles. Cela peut être pratique si vous ne savez pas quelles valeurs par défaut ont les paramètres. État de Samba
smbstatus permet de connaître l’état courant de Samba, y compris les connexions actives : root# smbstatus Samba version 3.0.23 PID Username Group Machine ------------------------------------------------------------------Service pid machine Connected at -------------------------------------------------------
Linux Livre Page 610 Mardi, 23. septembre 2008 1:05 13
610
LINUX
IPC$ public
32292 32292
192.168.1.41 192.168.1.41
Sun Jul 13 12:30:03 2008 Sun Jul 13 12:30:00 2008
Locked files: Pid Uid DenyMode Access R/W Oplock SharePath Name ... -----------------------------------------------------------------------------32292 65534 DENY_NONE 0x100001 RDONLY NONE /data/public . ...
Samba enregistre généralement son état et ses messages d’erreur dans les fichiers /var/log/ samba/log.smbd et log.nmbd.
30.7 Samba – Partager des répertoires Il existe de nombreuses possibilités de partager des répertoires pour des utilisateurs individuels ou des groupes et d’indiquer qui peut modifier des fichiers, en créer de nouveaux, etc. Cette section offre quelques exemples pour lesquels vous devez connaître les principes de configuration dans smb.conf. Les gestionnaires de fichiers de KDE et de Gnome permettent de partager des répertoires réseau. Cette fonctionnalité masque une modification de smb.conf. D’après mon expérience, cela ne fonctionne pas toujours de manière satisfaisante et nécessite de toute façon une configuration de base correcte de smb.conf.
Sécurité au niveau des partages
Répertoire sans mot de passe
Faire fonctionner Samba avec une sécurité au niveau des partages est rarement une bonne idée. Ce niveau de sécurité n’est utile que lorsque vous désirez partager tous vos objets (répertoires, imprimantes, etc.) sans mot de passe. Si vous souhaitez sécuriser vos ressources par un identifiant de connexion, la section suivante vous sera plus profitable. Notre exemple de base à la section 30.6 garantissait presque le succès du partage : l’accès au serveur Samba et au répertoire public fonctionne indépendamment de l’identifiant du client et n’est pas partagé par un mot de passe. Samba associe à chaque accès à un répertoire un utilisateur Linux. Les options guest ok et guest only assurent que tout le monde peut accéder au répertoire public sans mot de passe et que cet accès est toujours associé au compte correspondant à guest. Il s’agit normalement de l’utilisateur Linux nobody, dont disposent automatiquement la majorité des distributions Linux. Vous pouvez déterminer le compte par défaut pour guest avec cette commande : root# testparm -s -v | grep "guest account" guest account = nobody
Pour que les clients Windows puissent effectivement accéder au répertoire public, il faut s’assurer que l’utilisateur nobody existe et que le répertoire /data/public est accessible à cet utilisateur. L’option guest account permet d’associer le compte guest à un autre compte système.
Linux Livre Page 611 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
Répertoires avec un mot de passe
611
On peut aussi sécuriser un répertoire avec un mot de passe au niveau partage. Le problème est qu’il n’existe pas de méthode simple de définir ce mot de passe. Vous devez associer le répertoire à un compte Linux existant. Les commandes suivantes créent le nouvel utilisateur dummy1 et en font le propriétaire du répertoire /data/readwrite. root# useradd -s /bin/false dummy1 root# chown -R dummy1:users /data/readwrite
smbpasswd permet de créer un mot de passe Samba pour dummy1, qui sécurise l’accès réseau au répertoire readwrite. root# smbpasswd -a dummy1 New SMB password: ******** Retype new SMB password: ******** Added user dummy1.
Les lignes suivantes montrent la configuration nécessaire dans smb.conf. L’option browseable assure que le répertoire est visible de l’ordinateur client avant que l’accès ne soit accordé. [readwrite] path = /data/readwrite user = dummy1 writeable = true browseable = true
L’authentification fonctionne à présent en plusieurs étapes − l’opération est même plus complexe en vérité ; vous trouverez des détails dans la description de smb.conf. • Dès qu’un client souhaite accéder au répertoire, Samba tente d’abord de gérer l’authentification avec le nom d’utilisateur courant et le mot de passe. Si cela réussit, l’accès au répertoire fonctionne pour ce compte. • Si cela ne fonctionne pas (ce qui est généralement le cas au niveau de sécurité du partage), le mot de passe transféré est comparé à celui de l’utilisateur dummy1. S’il est correct, l’accès au répertoire est autorisé. • Si cela ne fonctionne pas, une boîte de dialogue apparaît dans laquelle l’utilisateur doit saisir un nom et un mot de passe. L’identifiant utilisé n’a pas d’importance, car Samba utilise dans tous les cas dummy1 ; l’authentification n’est faite que sur la base du mot de passe. Lors de mes tests, je n’ai pas réussi à accéder avec le paramétrage par défaut à un répertoire en lecture/écriture. Il semble que Samba ne comprenne pas le protocole NTLMv2 au niveau partage (mais cela fonctionne au niveau sécurité des utilisateurs). Il faut modifier les paramètres de sécurité de Vista pour accéder à un répertoire en lecture/écriture. Le paramètre correspondant se trouve, pour la plupart des versions de Vista, dans la configuration des stratégies locales de sécurité. Choisissez dans le panneau de configuration Outils d’administration > Stratégie de sécurité locale > Stratégies locales > Options de sécurité et passez la valeur de Sécurité réseau : Niveau
Linux Livre Page 612 Mardi, 23. septembre 2008 1:05 13
612
LINUX
d’authentification Lan Manager de Envoyer uniquement les réponses NTLM v.2 à Envoyer LM et NTLM − utiliser la sécurité de session NTLM version 2 si négociée. Sous Windows Vista Home, le programme de modification des politiques de sécurité n’existe pas. Vous ne pouvez modifier la politique d’authentification que dans la base de registres. Il faut pour cela modifier la clé LmCompatibilityLevel de HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa de la valeur 3 à la valeur 1.
Sécurité au niveau utilisateur Correspondance entre les noms d’utilisateurs Windows et Linux
Sous Windows, les noms des utilisateurs sont des chaînes de caractères arbitraires qui peuvent contenir jusqu’à 128 caractères. Sous Linux, elles se composent au maximum de huit caractères, sans caractère spécial, ni espace. Lorsqu’un utilisateur de Windows utilise un nom d’utilisateur qui n’est pas compatible avec un utilisateur Linux, il faut définir l’association dans un fichier. Le nom de ce fichier est défini dans smb.conf avec l’option username map : [global] ... username map = /etc/samba/smbusers
Chaque ligne du fichier smbuser contient un nom d’utilisateur Linux, le signe = et le nom d’un ou de plusieurs utilisateurs de Windows. Vous pouvez aussi utiliser ce fichier pour associer plusieurs utilisateurs Windows à un utilisateur Linux. administrateur est souvent associé à root, et guest à nobody. Si l’utilisateur peter a comme identifiant Peter Mayer sous Windows, il faut simplement ajouter la ligne peter = Peter Mayer à smbusers.
/etc/samba/smbusers (quel que soit son nom) peut compromettre le système de sécurité complet du système. Assurez-vous donc que le fichier n’est modifiable que par root ! Mots de passe
Avant que peter puisse effectivement accéder à des répertoires, il doit s’identifier. Pour cela, lorsque la connexion est établie entre le client Windows et Samba, l’identifiant Windows et un mot chiffré pour le mot de passe sont échangés. Cette valeur ne permet pas de reconstruire le mot de passe. Samba ne peut donc vérifier le mot de passe que s’il existe un fichier de mots de passe (le plus souvent, /etc/samba/smbpasswd) qui contient le même mot chiffré. L’administrateur du système Linux doit donc ajouter une nouvelle ligne à ce fichier pour peter, ce que permet la commande smbpasswd. Indiquez comme mot de passe la même chaîne de caractères que celle saisie par l’utilisateur Peter Mayer sous Windows. Pour modifier un mot de passe Samba existant, utilisez smbpasswd sans l’option -a : root# smbpasswd -a peter New SMB password: ****** Retype new SMB password: ****** Added user peter. Password changed for user peter.
Linux Livre Page 613 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
613
Attention, cette commande ne fonctionne que lorsque peter existe sur le système local. Dans le cas contraire, il faut l’ajouter avec useradd ou l’un des outils prévus par la distribution. L’utilisateur peter a maintenant trois combinaisons identifiant/mot de passe : • pour se connecter sous Windows, Peter Mayer et son mot de passe Windows ; • pour se connecter sous Linux, peter et son mot de passe Linux ; • pour se connecter à des ressources Samba, Peter Mayer ou peter et son mot de passe Samba. Si les mots de passe Windows et Samba correspondent, l’utilisateur peut accéder de manière transparente aux ressources Samba. Si ce n’est pas le cas, il doit saisir son mot de passe chaque fois qu’il désire accéder à un répertoire. Le mot de passe du compte système sur le serveur Samba et le mot de passe Samba sont en revanche indépendants. Répertoires personnels
La sécurité au niveau de l’utilisateur correspond au modèle de sécurité de Linux ; elle est donc bien plus légère à mettre en place. La configuration par défaut de nombreux serveurs Samba ressemble à ceci : [global] workgroup = SOL # nom de votre groupe de travail security = user username map = /etc/samba/smbusers map to guest = bad user guest account = nobody [homes] writeable = true browseable = false
Les deux lignes guest indiquent que tous les utilisateurs dont le nom ne se trouve pas dans /etc/samba/smbusers sont automatiquement associés au compte nobody. Ainsi, ils peuvent tous accéder au serveur Samba et voir quels fichiers s’y trouvent. Les dossiers accessibles effectivement sont ceux dont l’option guest ok = yes est activée. Le groupe [homes] est une section spéciale. Les répertoires personnels des utilisateurs actifs sont visibles sous leur nom. Ces trois lignes économisent une liste sans fin de sections de cette forme : [peter] writeable = true user = peter
L’option browseable = false n’indique pas que l’utilisateur ne peut pas voir son répertoire. Elle évite juste que le répertoire soit visible deux fois, une fois sous le nom de l’utilisateur (par exemple peter) et une fois sous homes. L’accès au répertoire personnel n’est possible que lorsque l’utilisateur dispose d’un compte Linux avec un répertoire personnel. Une condition supplémentaire est qu’il ait un mot de passe dans smb.conf.
Linux Livre Page 614 Mardi, 23. septembre 2008 1:05 13
614
LINUX
L’option map to guest = bad user dans la section [global] peut présenter un risque de sécurité. La valeur never pour cette option est plus sûre. Elle fait en sorte que le serveur Samba soit entièrement inaccessible aux utilisateurs qui ne sont pas correctement identifiés. L’accès général à tous les répertoires personnels est également problématique du point de vue de la sécurité. Si vous désirez refuser cet accès à certains utilisateurs, vous pouvez utiliser l’option invalid users. Répertoires de groupes
Le répertoire personnel n’est accessible qu’à un utilisateur donné. Mais il est souvent utile de disposer d’un répertoire auquel les différents membres d’un groupe peuvent accéder. Pour cela, il faut d’abord associer tous les comptes utilisateurs membres à un groupe. Vous pouvez alors définir dans smb.conf un répertoire que tous les membres de ce groupe peuvent utiliser avec une syntaxe du type @groupe. Vous évitez ainsi de devoir énumérer tous les membres du groupe, ce qui est bien sûr également possible. [ventes] path = /data/ventes writeable = true browseable = true user = @ventes create mask = 0770 directory mask = 0770
Les droits d’accès à des répertoires de groupes sont particulièrement importants. Cela est aussi valable pour les fichiers créés par les membres du groupe. Les deux options mask font en sorte que les fichiers et les répertoires soient accessibles par tous les membres du groupe.
30.8 Samba – Imprimantes réseau Samba permet aux utilisateurs de Windows d’accéder à vos imprimantes sous Linux. La configuration est simple, mais suppose que le système d’impression fonctionne déjà en local. Pour donner accès à tous les utilisateurs de smbpasswd aux imprimantes de /etc/printcap, il suffit d’ajouter les lignes suivantes à smb.conf : # /etc/samba/smb.conf [global] ... printing = CUPS # accès à toutes les imprimantes locales du serveur [printers] printable = yes path = /var/tmp/ browseable = no
browseable = no indique que les imprimantes sont visibles, mais pas le répertoire printers. L’option path est utilisée pour les fichiers d’impression temporaires. Tous les utilisateurs doivent avoir le droit d’écrire dans ce répertoire, sans quoi ils ne peuvent pas imprimer.
Linux Livre Page 615 Mardi, 23. septembre 2008 1:05 13
SERVEUR DE RÉSEAU LOCAL (CUPS, NFS ET SAMBA)
615
Si vous désirez ne partager qu’une imprimante donnée, vous devez ajouter ces lignes. Cet exemple suppose que la file d’attente de l’imprimante s’appelle lp1 dans /etc/printcap et qu’elle soit visible sous le nom hp3 sur les clients Samba : [hp3] printer = lp1 printable = yes path = /var/tmp/ browseable = no
Pour donner à tous les utilisateurs le droit d’imprimer (sans mot de passe), ajoutez la ligne guest ok = yes à la configuration de l’imprimante. Configuration du système d’impression
Il existe plusieurs possibilités qui influent sur l’endroit où sont converties les données d’impression au format de l’imprimante. • Le plus simple est de choisir le pilote de l’imprimante sous Windows lorsque vous configurez l’imprimante réseau. Cette configuration peut poser certains problèmes. Il arrive que les données à imprimer soient filtrées deux fois. Par exemple, pour une imprimante configurée comme une imprimante PostScript, il se peut que le code PostScript envoyé par Windows soit interprété comme du code ASCII par Linux et que le résultat de l’impression soit du code PostScript explicite (commençant généralement par deux caractères %). • L’autre variante est de configurer l’imprimante sous Windows comme une imprimante PostScript, quel que soit son modèle (y compris lorsqu’il ne s’agit pas d’une imprimante PostScript). Sous Linux, la file d’attente correspond au modèle réel de l’imprimante. Cela implique que le client Windows envoie des données PostScript au serveur Linux. Les données sont alors converties au format de l’imprimante. Elles sont donc converties deux fois, sous Windows au format PostScript et sous Linux au format de l’imprimante. Cette méthode est, entre autres, appuyée par les développeurs de CUPS qui ont même développé un pilote Windows à cette fin. Cette variante présente deux inconvénients. D’une part, les pilotes sous Windows sont généralement meilleurs que sous Linux. C’est particulièrement vrai pour les imprimantes à jet d’encre. Vous obtiendrez donc de meilleurs résultats si vous préparez les fichiers sous Windows. De plus, la préparation de données d’impression est un processus coûteux en temps. De nombreuses tâches d’impression peuvent entraîner une charge importante pour le serveur. Il est donc plus intéressant d’effectuer ces tâches sur les clients de manière décentralisée.
Configuration des imprimantes sous Windows
Les imprimantes partagées sont visibles dans l’explorateur Windows, mais ne peuvent pas être utilisées immédiatement. Il faut d’abord installer la nouvelle imprimante. Pour cela, lancez le module Imprimantes et télécopieurs du Panneau de configuration, puis Ajouter une imprimante et choisissez l’option Une imprimante réseau ou une imprimante connectée à un autre ordinateur. Toutes les imprimantes réseau disponibles devraient alors s’afficher. Si cela ne fonctionne pas, saisissez le nom de l’imprimante manuellement.
Linux Livre Page 616 Mardi, 23. septembre 2008 1:05 13
616
LINUX
Un second problème est que Windows affiche généralement un avertissement qui signale que le serveur ne fournit pas de pilote d’impression. Vous devez le valider avec OK et choisir le pilote d’impression dans la liste qui s’affiche. Le pilote à utiliser dépend de la configuration de l’imprimante sous Linux. Il serait plus élégant que Samba fournisse lui-même le bon pilote, afin de faciliter l’installation côté client. Ajoutez pour cela un répertoire partagé [print$] dans smb.conf qui pointe vers un répertoire avec les fichiers d’installation. Les quatre options write list, force group, create mask et directory mask indiquent qui peut installer des pilotes sur le serveur et quels droits ont les fichiers résultants. [print$] path = /var/lib/samba/drivers write list = @ntadmin root force group = ntadmin create mask = 0664 directory mask = 0775
Le seul problème est maintenant d’installer le pilote d’imprimante dans le répertoire /var/ lib/samba/drivers. Cette étape relativement compliquée peut être effectuée depuis un ordinateur sous Windows doté du pilote d’imprimante, ou depuis Linux, ce qui installe les pilotes CUPS ou PostScript librement disponibles. Les différentes opérations nécessaires à l’installation des pilotes sont décrites en détail dans le Samba-HOWTO sur http://www.samba.org.
Linux Livre Page 617 Mardi, 23. septembre 2008 1:05 13
PARTIE 6 – UTILISATION DE PLUSIEURS SYSTÈMES SIMULTANÉMENT
31
Lancer des programmes Windows (Wine, CrossOver) À la base, les programmes Windows ne fonctionnent pas sous Linux, car les bibliothèques correspondantes n’existent pas. Plusieurs méthodes permettent néanmoins d’accomplir l’impossible : • Wine. Cet acronyme signifie Wine Is Not an Emulator, soit Wine n’est pas un émulateur. Ce programme libre est cependant souvent décrit comme un émulateur de Windows. Il s’agit en fait d’un ensemble de bibliothèques qui contiennent toutes les fonctions de base des bibliothèques Windows. Pour des raisons de licence, le code de Windows ne peut évidemment pas être copié par Wine ; des fonctions similaires sont donc développées. Cela explique pourquoi le projet Wine vient de publier sa version 1.0 après 15 ans de développement ! Il fonctionne suffisamment bien pour lancer des programmes Windows sous Linux. • CrossOver et Cedega. CrossOver et Cedega sont deux variantes commerciales de Wine. CrossOver est un logiciel de l’entreprise CodeWeavers, qui facilite l’installation et le démarrage de programmes Windows. Il se positionne sur le marché de la bureautique. Cedega, de l’entreprise TransGaming, fournit diverses fonctions supplémentaires, en particulier les bibliothèques DirectX, et se positionne sur le marché des jeux Windows. • Programmes de virtualisation. Les programmes de virtualisation comme VMware ou Xen ont une tout autre approche. Ils permettent de mettre en place un environnement virtuel, dans lequel vous pouvez installer Windows. (Il existe évidemment d’autres raisons pour mettre en place des logiciels de virtualisation.) Vous pouvez alors lancer Windows dans une fenêtre et y installer vos programmes Windows préférés. • Terminal Server. Plutôt que de lancer des programmes Windows en local, vous pouvez les lancer sur un ordinateur distant. Le programme s’affiche cependant sur l’ordinateur Windows local. Les communications se font via un protocole réseau (VNC, NX, etc.). L’ordinateur local fonctionne alors comme un simple terminal. Cette variante est particulièrement intéressante dans les réseaux importants : un serveur Windows correctement dimensionné permet à tous les utilisateurs de Linux d’accéder à un programme Windows. La configuration initiale est plus complexe que celle des autres solutions et les questions de licence doivent être considérées − en général, il faut des licences multiutilisateur spéciales pour que plusieurs utilisateurs puissent utiliser un programme commercial en même temps. Cet ouvrage ne décrit pas toutes ces possibilités. Dans ce chapitre, nous parlerons de Wine et de ses deux variantes commerciales les plus connues, CrossOver et Cedega. Les chapitres suivants décrivent quelques programmes de virtualisation.
Linux Livre Page 618 Mardi, 23. septembre 2008 1:05 13
618 Limitations
LINUX
Avant de crier victoire, vous devez être conscient de certaines limitations. Wine et CrossOver ne fonctionnent que sur des plateformes x86. Ces mêmes limitations s’appliquent à la plupart des programmes de virtualisation. La compatibilité de Wine et de CrossOver avec Windows est limitée. De nombreux programmes ne fonctionnent pas ou alors uniquement pour des fonctions basiques. Mais les performances sont généralement au rendez-vous et, dans quelques rares cas, supérieures à celles de la même application sous Windows. Les programmes de virtualisation peuvent pallier certains problèmes de compatibilité. Les fonctions nécessaires ne sont pas redéveloppées : le système d’exploitation complet est lancé dans un environnement virtuel. Cela diminue largement les problèmes de compatibilité, mais au détriment des performances. De plus, le matériel nécessaire et, en particulier, la quantité de mémoire sont nettement plus importants. Lancer des programmes Windows sous Linux implique souvent des coûts élevés. Certains programmes ne sont pas libres (par exemple, CrossOver ou VMware). De plus, vous avez besoin d’une licence pour le programme à démarrer (par exemple, Adobe Photoshop) et, dans le cas d’un programme de virtualisation, d’une licence pour le système d’exploitation (par exemple, Windows XP). Enfin, signalons qu’une motivation courante pour passer à Linux est la sécurité accrue du système. Si vous ne faites pas attention, vous pouvez rétablir le même genre de problèmes (virus, etc.) avec Wine et d’autres programmes similaires que sous Windows.
31.1 Wine La plupart des distributions fournissent un paquetage pour Wine, qui n’est cependant pas installé par défaut. Cette section se base sur la version 1.1.2. Vous trouverez plus d’informations sur Wine aux adresses http://www.winehq.org/ et http://wine-wiki.org/. Configuration
Généralement, Wine fonctionne sans configuration préalable. Si vous rencontrez des problèmes, le programme winecfg aide souvent à les résoudre (voir Figure 31.1). Vous pouvez y configurer différents éléments audio et graphiques, associer des répertoires à diverses lettres de lecteurs Windows, etc. L’onglet Applications permet de définir quelle version de Windows est imitée par Wine (par défaut, il s’agit de Windows 2000). Vous pouvez alors définir des versions de Windows différentes pour vos programmes.
Installer et démarrer des programmes Windows
Une fois Wine installé, vous pouvez lancer un programme Windows avec la commande wine nom_du_programe.exe. Comme premier test, lancez le bloc-notes fourni avec Wine : utilisateur$ wine /usr/lib/wine/notepad.exe.so
Cela ne fonctionne que lorsque le programme souhaité est installé. Une installation dans la partition Windows de votre ordinateur n’est généralement pas d’une grande aide, car les programmes Windows utilisent généralement des bibliothèques supplémentaires et des enregistrements dans la base de registres. Il faut donc l’installer localement pour Wine : utilisateur$ cd répertoire_des_fichiers_d’installation utilisateur$ wine setup.exe
Linux Livre Page 619 Mardi, 23. septembre 2008 1:05 13
LANCER DES PROGRAMMES WINDOWS (WINE, CROSSOVER)
619
Figure 31.1 Configuration de Wine avec winecfg.
Si vous avez de la chance, l’installation fonctionne sans erreur. C’est souvent le cas lorsque vous installez de petits programmes populaires et anciens. Les programmes récents, très gros ou exotiques renverront pour la plupart des messages d’erreur obscurs. Le problème vient généralement du fait que l’installation réclame une fonction ou une bibliothèque Windows (DLL) qui n’est pas encore implémentée sous Wine. Une recherche sur Internet permet parfois de trouver quelques astuces pour débloquer la situation. Sinon, il faut vous faire une raison : le programme ne fonctionne pas (encore) sous Wine. Un rapport d’erreur à l’adresse http://bugs.winehq.org aide les développeurs de Wine à remédier au problème dans le futur. La base de données d’application de Wine recense plus de 5 000 programmes, avec des informations sur la manière de les installer et sur la mesure dans laquelle ils fonctionnent. Cette base se trouve à l’adresse http://appdb.winehq.org/.
Lorsque l’installation se passe bien, Wine se termine sans indiquer où le programme a été installé. La commande find peut s’avérer utile lorsqu’on l’utilise, par exemple, pour trouver tous les fichiers *.exe modifiés dans les 60 dernières minutes : utilisateur$ find ~/.wine -cmin -60 -iname ’*.exe’
Notez que Wine ne fournit ni bureau Windows, ni menu de démarrage, barre des tâches, gestionnaire de programmes, explorateur Windows, etc.
Linux Livre Page 620 Mardi, 23. septembre 2008 1:05 13
620 Transfert de données entre Wine et Linux
LINUX
Par défaut, le lecteur C: de Windows est associé au répertoire ~/.wine/drive_c et le lecteur Z: à /. Vous pouvez, si nécessaire, définir d’autres lettres de lecteurs avec winecfg ou modifier le chemin des lecteurs préexistants. Pour transférer des données via le presse-papiers, pensez à utiliser sous Windows les raccourcis Ctrl+C et Ctrl+V. Sous Linux, c’est le presse-papiers et non le tampon de texte marqué qui est utilisé ! Pour les programmes texte, les combinaisons de la souris ne fonctionnent donc pas. Wine met à disposition toutes les imprimantes définies sous Linux pour les applications Windows. Cependant, cela ne fonctionne pas toujours. En revanche, les fonctions réseau ne posent aucun problème. Si votre ordinateur sous Linux a accès à Internet, les applications Windows lancées sous Wine y ont accès également.
Installer Internet Explorer
Vous vous demandez peut-être pourquoi installer l’un des programmes réputés comme les moins sûrs sous Windows. Il y a deux raisons à cela. D’une part, Microsoft utilise depuis plusieurs années Internet Explorer pour installer diverses extensions du système. Certains programmes Windows ne peuvent donc être installés que lorsqu’une version récente d’Internet Explorer l’est également. D’autre part, les développeurs web doivent, bon gré mal gré, tester leurs pages sous Internet Explorer − l’installer localement sous Linux permet d’éviter de changer de système d’exploitation. L’installation manuelle d’Internet Explorer est relativement pénible. Le script ies4linux s’en chargera pour vous. Il permet d’installer IE6 et, si vous le choisissez, IE 5.5SP2 et 5.01SP2, ainsi que le greffon Flash9. La version courante d’Internet Explorer, IE7, n’est malheureusement pas encore prise en charge. Le script ies4linux permet cependant d’utiliser le moteur de rendu d’IE7 dans l’interface d’IE6. La procédure est assez compliquée et n’est conseillée qu’aux utilisateurs avancés. Vous trouverez plus d’informations à l’adresse http://www.tatanka.com.br/ies4linux/page/Fr/Page_D’Accueil. Le script nécessite l’installation de Wine et cabextract. Ce dernier sert à décompresser des archives CAB (méthode classique pour créer des archives Microsoft). Attention, l’installation d’Internet Explorer n’est autorisée que si vous disposez d’une licence Windows ! Pour installer Internet Explorer, lancez les commandes suivantes. Choisissez la version d’IE à installer ; vous pouvez la télécharger directement depuis le site web de Microsoft et l’installer rapidement. utilisateur$ wget \ http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz utilisateur$ tar zxvf ies4linux-latest.tar.gz utilisateur$ cd ies4linux-* utilisateur$ ./ies4linux
Ensuite, lancez Internet Explorer avec les commandes ie6, ie55 ou ie5 (voir Figure 31.2). Lorsque vous utilisez Wine 1.x, le programme d’installation affiche un avertissement comme quoi votre version de Wine ne convient peut-être pas ; vous pouvez l’ignorer. Conclusion
Il est possible d’installer et de faire fonctionner certains programmes Windows avec Wine. Ce dernier est néanmoins plutôt destiné aux utilisateurs avancés de Linux. Si vous n’êtes pas prêt à expérimenter quelques éléments et à chercher des solutions sur Internet, Wine ne vous conviendra pas.
Linux Livre Page 621 Mardi, 23. septembre 2008 1:05 13
LANCER DES PROGRAMMES WINDOWS (WINE, CROSSOVER)
621
Figure 31.2 Internet Explorer 6 sous Linux.
31.2 Dérivés commerciaux de Wine Il existe des dérivés commerciaux de Wine, comme CrossOver et Cedega, qui visent à faciliter l’installation de différents programmes. Ils réclament une licence payante, mais permettent parfois de gagner du temps par rapport à une installation standard sous Wine. Celle-ci peut certes fonctionner, mais parfois au prix d’un temps non négligeable. De plus, ces sociétés commerciales fournissent une assistance utilisateur qui peut être un gain appréciable.
CrossOver CrossOver, de l’entreprise CodeWeavers, est un dérivé commercial de Wine qui permet d’installer facilement des programmes fréquemment utilisés. Le répertoire des applications prises en charge contient, entre autres, Microsoft Office (versions 97, 2000, XP, 2003 ; la prise en charge de la version 2007 est encore expérimentale), Adobe Photoshop 6 et 7, iTunes, FrameMaker, Lotus Notes, World of Warcraft, ainsi que les greffons de navigateur QuickTime, Shockwave et Windows Media Player. Vous trouverez plus d’informations sur CrossOver à l’adresse http://www.codeweavers.com/products/cxoffice/. Vous pouvez également télécharger une version d’évaluation de CrossOver à l’adresse http://www.codeweavers.com/products/cxlinux/download_trial/.
Linux Livre Page 622 Mardi, 23. septembre 2008 1:05 13
622 Installation
LINUX
Dans la plupart des cas, vous devez télécharger le programme d’installation de CrossOver depuis le site web de CodeWeavers. Positionnez son bit d’exécution et lancez-le : utilisateur$ chmod u+x install-crossover-xxx.sh utilisateur$ ./install-crossover-xxx.sh
CodeWeavers fournit également des paquetages pour la plupart des distributions actuelles.
Installer des programmes Windows
Le programme d’installation ajoute un menu CrossOver dans les menus Gnome et KDE. Si cela ne fonctionne pas, lancez les programmes CrossOver avec les commandes cxnom. Dans le cas d’une installation locale, ces programmes se trouvent dans le répertoire ~/cxoffice/ bin. Sinon, ils se trouvent dans /opt/cxoffice. Pour installer un programme Windows, lancez cxinstallwizard. Choisissez le programme souhaité dans la liste, placez le CD dans le lecteur ou indiquez à quel endroit se trouvent les fichiers d’installation. L’installation fonctionne alors comme sous Windows. Si le programme à installer ne se trouve pas dans la liste, choisissez l’option Installer une application non supportée. Lorsque l’installation s’est bien déroulée, les programmes peuvent être lancés confortablement à partir du nouveau menu Applications Windows.
Cedega Cedega, de l’entreprise TransGaming, vise également la facilité d’installation, mais les applications concernées sont les jeux. Ceux officiellement pris en charge comprennent Warcraft 3, World of Warcraft, Diablo 2, Half Life 2 et Sim City 4. De plus, le site web de Cedega maintient une liste des jeux testés et de leur état. Vous trouverez plus d’informations à l’adresse http://www.cedega.com/. Cedega ne fournit pas de version d’évaluation et fonctionne sur un système de souscription qui permet, entre autres, de télécharger le logiciel. Il existe également un wiki non officiel d’informations sur Cedega et sur les jeux pris en charge à l’adresse http://cedegawiki.sweetleafstudios.com/wiki/.
Linux Livre Page 623 Mardi, 23. septembre 2008 1:05 13
32
Virtualisation avec VMware, VirtualBox, QEMU et KVM Ces dernières années, les différentes techniques de virtualisation ont suscité un intérêt croissant. Ce terme représente la simulation sur un ordinateur d’une ou de plusieurs machines virtuelles et de leurs systèmes d’exploitation. Les applications sont variées : • Exécution simultanée de Windows et de Linux. Il n’est plus nécessaire de choisir l’un de ces deux systèmes. La virtualisation permet de les exécuter sur le même ordinateur. Le système hôte peut être Windows ou Linux ; l’autre fonctionne dans une fenêtre. • Machines d’assistance et de développement. Les développeurs d’applications Linux doivent souvent tester leurs produits sous différentes versions et distributions. Les employés d’une entreprise ou d’un service d’assistance ont des besoins similaires : de nombreuses questions sont spécifiques à une distribution. Au lieu de redémarrer sans cesse l’ordinateur ou de mettre en place de nombreuses machines, vous pouvez installer plusieurs distributions dans un environnement donné et les activer à la demande. Cela économise du temps et des ressources. • Virtualisation de serveurs. Les machines actuelles sont si performantes qu’un seul serveur ne suffit plus pour les exploiter entièrement. Les systèmes de virtualisation permettent de réunir plusieurs serveurs virtuels sur un ordinateur. Cela était bien sûr possible auparavant, mais avec certaines limitations − Apache pouvait, par exemple, être configuré pour servir plusieurs adresses IP ou hôtes. La virtualisation de serveurs présente, de plus, un avantage décisif : les serveurs virtuels sont complètement indépendants les uns des autres. Un problème de sécurité ou de stabilité sur un serveur donné n’a aucune influence sur les autres. Ce type de virtualisation n’est pas nouveau pour les supercalculateurs. La nouveauté vient de la mise à disposition de ces techniques aux utilisateurs d’un PC ordinaire. La virtualisation de serveurs est le segment pour lequel l’intérêt croît le plus vite. Jusqu’à récemment, la virtualisation impliquait du matériel coûteux (supercalculateurs) ou au moins, des logiciels chers (par exemple VMware). Cela a bien changé : les ordinateurs courants fournissent désormais suffisamment de puissance de calcul pour expérimenter la virtualisation et de plus en plus de programmes de virtualisation sont disponibles librement ou gratuitement. Ce chapitre présente quelques solutions commerciales (VMware) et libres (VirtualBox, QEMU, KVM). En raison de sa plus grande complexité, Xen sera traité à part, au Chapitre 33. Nous nous limiterons à une rapide introduction. Les programmes présentés ici sont si complexes qu’il faudrait y consacrer un livre entier. Cet ouvrage fournit les premiers éléments ; vous trouverez des informations supplémentaires sur Internet. Notez également que peu de domaines de Linux changent aussi vite que les systèmes de virtualisation. Diverses méthodes se disputent l’entrée dans le noyau officiel et plusieurs entreprises tentent de s’établir comme standard pour la virtualisation. Ce chapitre est un aperçu de la virtualisation sous Linux à l’été 2008.
Linux Livre Page 624 Mardi, 23. septembre 2008 1:05 13
624
LINUX
32.1 Notions de base Hôte et invités
Pour décrire les systèmes de virtualisation, les termes d’hôte (host) pour le système de base et d’invités (guests) pour les systèmes virtuels se sont imposés.
Techniques de virtualisation
Il existe différentes méthodes pour virtualiser des systèmes d’exploitation. La liste suivante résume les techniques existantes et quelques programmes associés. • Virtualisation complète (machines virtuelles, émulation). Le programme simule du matériel virtuel : processeur, mémoire vive, disque dur, carte réseau, etc. Du point de vue du système invité, ce matériel semble exister réellement. Pour que cela fonctionne, le programme de l’hôte doit contrôler le système invité et remplacer certaines opérations par d’autres. C’est à cela que sert l’hyperviseur (VMM ou Virtual Machines Monitor, moniteur de machines virtuelles). Celui-ci gère également la mémoire, les processus et les fonctions proches du matériel. Avantages : la plupart des systèmes d’exploitation peuvent fonctionner sur une machine virtuelle. Ils n’ont pas besoin d’être modifiés. Inconvénients : cette solution est relativement lente. Programmes/entreprises : VMware, QEMU, Parallels, VirtualBox, Microsoft Virtual PC. • Paravirtualisation. L’hôte met également à disposition des machines virtuelles dans lesquelles les invités sont lancés. La différence est que les systèmes invités sont modifiés pour la virtualisation et qu’ils communiquent directement avec l’hyperviseur. Avantages : cette solution est efficace. Inconvénients : les systèmes d’exploitation doivent être modifiés pour le système de virtualisation. C’est assez simple pour les systèmes libres comme Linux, mais plus problématique pour les systèmes propriétaires comme Windows. Programmes/entreprises : Xen, UML (User Mode Linux). • Paravirtualisation avec prise en charge matérielle. Les processeurs modernes d’Intel et d’AMD contiennent des instructions matérielles pour faciliter la virtualisation, nommées Intel-VT (anciennement Vanderpool) pour Intel, et AMD-V (anciennement Pacifica) pour AMD. Avantages : cette méthode est efficace et, selon l’implémentation, ne demande pas de modification du système invité. Inconvénients : elle nécessite des processeurs spéciaux. Programmes/entreprises : KVM, Xen. • Virtualisation au niveau du système d’exploitation. Cette technique est à différencier des vraies machines virtuelles. Les systèmes invités utilisent le même noyau et une partie du système de fichiers de l’hôte. Elle permet cependant d’isoler l’hôte et ses invités, afin d’éviter certains risques de sécurité. Avantages : cette méthode est efficace et économise des ressources (mémoire, disque dur, etc.). Inconvénients : elle n’est adaptée que lorsque l’hôte et ses invités utilisent le même système d’exploitation et la même version du noyau. Le système d’exploitation doit être modifié. Programmes/entreprises : OpenVZ, Virtuozzo, Linux VServer. Toutes ces méthodes, excepté la première, nécessitent pour Linux une modification du noyau. À l’heure actuelle (mi-2008), seuls les composants de virtualisation de KVM et certaines
Linux Livre Page 625 Mardi, 23. septembre 2008 1:05 13
VIRTUALISATION AVEC VMWARE, VIRTUALBOX, QEMU ET KVM
625
parties de Xen font partie du noyau Linux officiel. Pour les autres, il faut modifier le noyau avec un correctif non officiel. Lorsque vous installez une distribution prévue pour Xen, le mainteneur de la distribution a ajouté les fonctions Xen au noyau. Vous trouverez plus d’informations sur les différentes techniques de virtualisation aux adresses http://doc.ubuntu-fr.org/virtualisation et http://fr.wikipedia.org/wiki/Virtualisation. Pour déterminer si votre processeur dispose de fonctionnalités de virtualisation matérielles (Intel-VT ou AMD-V), lancez la commande egrep. Un processeur Intel Core2 avec deux cœurs renvoie le résultat suivant. Si ce dernier est vide, le processeur ne prend pas en charge la virtualisation ou alors, les fonctions correspondantes sont désactivées dans le BIOS. Notez que ces lignes peuvent apparaître même lorsque les fonctions sont présentes, mais désactivées dans le BIOS. utilisateur$ egrep ’^flags.*(vmx|svm)’ /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm Aspects matériels
L’émulation de matériels virtuels est par nature une opération complexe. Selon la méthode de virtualisation et l’implémentation, vous vous heurterez à un moment ou à un autre aux frontières suivantes : • Processeurs. Le système hôte peut bien sûr accéder complètement aux processeurs et cœurs de l’ordinateur. Cependant, peu de systèmes de virtualisation sont capables d’attribuer plus d’un processeur à un invité. Dans ce cas, les systèmes SMP et multicœurs n’aident donc qu’à exécuter plusieurs invités en parallèle de manière efficace. On ne peut pas lancer un invité 64 bits sur un système hôte 32 bits (à l’exception d’une émulation du processeur par QEMU, mais il s’agit d’un cas particulier). Par contre, si l’hôte est un système 64 bits, il peut généralement lancer des invités 32 ou 64 bits. • Mémoire vive. La règle de base s’énonce ainsi : votre ordinateur doit disposer de plus de mémoire que la somme de la mémoire nécessaire au système hôte et à tous les invités en cours d’exécution. Il faut donc prévoir plusieurs gigaoctets de mémoire vive. • Disques durs. La plupart des systèmes de virtualisation enregistrent le système de fichiers des invités dans de gros fichiers dans le système hôte. Les invités n’accèdent donc pas directement au disque dur, mais indirectement via le système de virtualisation. Les accès disque sont donc plus lents que sur l’hôte. Le facteur de ralentissement a pour valeur typique deux ou trois. • Lecteurs CD/DVD. L’accès aux lecteurs CD et DVD est transmis de l’hôte aux invités, mais uniquement en lecture seule. Aucun système de virtualisation ne permet la gravure de CD/DVD depuis le système hôte. La plupart des programmes de virtualisation permettent d’associer un fichier ISO au lecteur CD/DVD. Plutôt que d’utiliser le lecteur réel, l’hôte accède à un fichier ISO.
Linux Livre Page 626 Mardi, 23. septembre 2008 1:05 13
626
LINUX
C’est particulièrement pratique pour l’installation. Vous pouvez extraire une image ISO très facilement à partir d’un CD : root# dd if=/dev/scd0 of=fichier.iso bs=2048
• Fonctions réseau. Le système de virtualisation met à la disposition des systèmes invités l’infrastructure réseau de l’hôte. Il existe divers procédés pour lier la carte virtuelle à la carte réseau réelle. Nous utiliserons dans ce qui suit la nomenclature de VirtualBox. Attention, tous les programmes de virtualisation n’utilisent pas les mêmes possibilités et celles-ci peuvent être nommées différemment. Dans l’option par défaut, NAT (Network Address Translation), le système de virtualisation met en place un serveur DHCP et des fonctions de mascarade pour ses invités. Ces derniers peuvent ainsi utiliser l’accès Internet de l’hôte. L’adressage du réseau local de l’hôte et celui du réseau des invités sont disjoints ; il est généralement impossible de faire communiquer ces deux réseaux. L’option Adaptateur réseau hôte crée une carte réseau virtuelle sur le système hôte. Cette interface fonctionne en parallèle avec vos interfaces habituelles. Lorsque l’invité l’utilise, c’est comme si le système hôte et l’invité étaient connectés physiquement par un câble réseau : l’hôte peut envoyer des données via l’interface et en recevoir. Vous pouvez alors configurer des routes ou un pont entre l’invité et le reste de votre réseau. L’option Réseau interne limite le réseau disponible vu des invités au système hôte et éventuellement aux autres systèmes invités. • Carte graphique. Pour utiliser efficacement les fonctions graphiques, il faut installer sur chaque système invité un pilote spécial adapté au système de virtualisation de l’hôte. Cependant, lors de nos tests, nous n’avons pas pu profiter des fonctions 3D de la carte graphique sur un système invité. Autrement dit, les graphismes 2D ont des performances décentes, mais vous devrez probablement vous passer de fonctions 3D. • Fonctions audio. La plupart des programmes de virtualisation fournissent une carte son virtuelle aux invités et transmettent la sortie audio au système audio de l’hôte. Cela fonctionne sans problème si vos besoins sont raisonnables. • Périphériques USB et matériel externe. Le clavier et la souris sont transmis de l’hôte à l’invité. L’accès aux périphériques externes dépend largement du système de virtualisation. Les périphériques USB ne sont souvent pas pris en charge ou alors, avec de nombreuses limitations. • Heure. Ce problème semble trivial, mais de nombreux systèmes de virtualisation ont du mal à gérer l’heure. Cela provient du fait que l’heure est initialisée par le système hôte lors du démarrage de la machine, mais gérée par la suite par les systèmes invités. La gestion de l’heure utilise généralement le processeur pour décompter le temps. Or, les processeurs modernes font dépendre leur fréquence de la charge. Le système hôte le sait et peut corriger l’heure en fonction de cette information. Le système invité ne dispose pas de cette information. C’est pourquoi le déroulement du temps sur les systèmes invités peut sembler plus rapide que sur le système hôte. Nous supposons ici que les systèmes hôte et invités partagent la même architecture. Certains programmes, comme QEMU, sont capables d’émuler du matériel différent. Cela réduit cependant largement les performances. On parle alors d’émulation et non de virtualisation, même si la frontière entre ces deux concepts est floue.
Linux Livre Page 627 Mardi, 23. septembre 2008 1:05 13
VIRTUALISATION AVEC VMWARE, VIRTUALBOX, QEMU ET KVM
Échange de données entre l’hôte et les invités
627
La principale restriction est qu’un invité ne peut pas accéder directement à un disque dur utilisé par l’hôte. Deux systèmes d’exploitation ne peuvent pas contrôler en même temps un disque dur − cela mènerait inévitablement à des pertes de données. Le système de virtualisation de l’hôte simule donc un disque dur pour l’invité et s’occupe de le reproduire dans le fichier du système hôte. L’hôte ne peut donc pas non plus accéder directement au système de fichiers des invités. Le moyen le plus rapide de partager des données est d’utiliser des répertoires partagés. Le plus simple est de lancer un serveur NFS ou Samba sur l’hôte ou sur un ordinateur accessible par l’hôte et les invités. Certains programmes de virtualisation incluent des fonctions de ce type, mais, d’après mon expérience, cela apporte peu d’avantages et complique inutilement la configuration. De nombreux programmes de virtualisation permettent d’échanger un texte marqué via le presse-papiers. Malheureusement, cela fonctionne plus ou moins bien. De plus, le pressepapiers se limite alors à la copie de texte brut. Vous ne pourrez donc pas copier un diagramme Excel depuis un invité Windows vers un document OpenOffice.org sur l’hôte.
Compatibilité entre les systèmes
À la base, vous devez supposer que les systèmes de virtualisation sont incompatibles les uns avec les autres. Un système invité installé sous VMware ne peut pas être réutilisé sous Xen (et réciproquement). Cette incompatibilité est due à deux facteurs. D’une part, les formats des disques durs virtuels sont différents. D’autre part, les systèmes de virtualisation font appel à différents pilotes supplémentaires, différentes extensions de noyau, etc. Les programmes commerciaux sont généralement en partie capables d’importer des systèmes invités créés sous des systèmes concurrents, mais cela entraîne souvent des problèmes. Des efforts ont été déployés pour définir un format unifié de systèmes invités, mais leur succès n’est pas garanti. La plupart des programmes de virtualisation permettent de déplacer un système invité d’une machine à une autre. Avec VMware, on peut même passer un système invité d’un hôte Windows à un hôte Linux (et inversement). Une installation de système invité peut donc être utilisée sur tous les systèmes hôte compatibles.
Quel produit dans quel but ?
Le monde de la virtualisation est souvent déroutant pour les débutants ; même les professionnels ont parfois du mal à suivre le développement rapide de ces applications. Se décider pour un produit revient à se poser les questions suivantes : • Quel est votre but ? Voulez-vous exécuter Windows sous Linux ou Linux sous Windows ? Désirez-vous tester divers systèmes d’exploitation sans redémarrer ? Visez-vous une plus grande sécurité grâce à des environnements isolés ? Voulez-vous lancer plusieurs serveurs Linux sur un ordinateur puissant ? • Quelles sont vos conditions matérielles ? Votre processeur prend-il en charge la virtualisation matérielle ? • Qu’attendez-vous de l’administration du système virtuel ? Avez-vous besoin de fonctions spéciales, comme la migration d’un système invité d’un hôte à un autre ? Ce type de souhait mène presque nécessairement à des solutions commerciales.
Linux Livre Page 628 Mardi, 23. septembre 2008 1:05 13
628
LINUX
Les débutants peuvent faire leur première expérience avec VMware Workstation (il existe une version d’évaluation pour un mois) ou VirtualBox. Ces deux programmes facilitent les premiers pas grâce à leurs interfaces utilisateur confortables. Le marché professionnel est actuellement dominé par Xen. Les distributions professionnelles Red Hat et SUSE proposent, en plus de leurs produits de base, des outils d’administration. Vous pouvez tester ces outils gratuitement dans openSUSE et Fedora. La question de savoir quel système de virtualisation s’établira comme standard est une question encore ouverte. KVM a de bonnes chances de son côté, car il est établi dans le noyau officiel. Il nécessite cependant un processeur avec des fonctions de virtualisation (Intel-VT ou AMD-V).
32.2 VMware Workstation, Player et Server
VMware Workstation
VMware Player et Server
Peu d’entreprises sont actives depuis aussi longtemps sur le marché de la virtualisation pour PC que VMware. Son rôle précurseur et le haut degré de maturité de ses produits lui ont longtemps conféré une position dominante sur ce segment. VMware propose divers produits de virtualisation, que nous ne pourrons pas tous traiter ; nous nous limiterons donc à VMware Workstation, Player et Server. Vous trouverez plus d’informations, des versions de test et divers téléchargements à l’adresse http://www.vmware.com/. Notez que les produits VMware, y compris ceux fournis gracieusement, ne sont pas des produits libres. VMware Workstation est probablement le plus connu. Il permet de lancer un autre système d’exploitation dans une fenêtre. Malgré son prix élevé et le nombre croissant d’alternatives commerciales et gratuites, il reste pour de nombreux professionnels la solution pour permettre à Windows et à Linux de cohabiter sur le même ordinateur. Techniquement, VMware Workstation se base sur une virtualisation complète. Il est donc compatible avec la plupart des systèmes d’exploitation, sans besoin matériel particulier − Intel-VT et AMD-V ne sont pas nécessaires. VMware Workstation 6 prend également en charge la paravirtualisation si les systèmes Linux invités utilisent un noyau étendu avec les fonctions VMware VMI (Virtual Machine Interface, interface de machine virtuelle). Cela améliore les performances de la virtualisation. VMware Player et VMware Server sont deux alternatives gratuites à VMware Workstation. Les fonctionnalités de ces produits sont restreintes, mais dans le cas de VMware Server, elles sont compensées par d’autres fonctions supplémentaires. Ces solutions gratuites doivent être considérées comme une tentative de la part de VMware d’établir des parts de marché plus importantes dans un marché où les offres libres (VirtualBox, Xen, KVM) ou gratuites (Microsoft Virtual PC) sont de plus en plus nombreuses. VMware Server est comparable à VMware Workstation, mais vise les serveurs où les systèmes virtualisés peuvent fonctionner sans interface graphique. Vous pouvez néanmoins l’utiliser pour faire tourner des systèmes bureautiques classiques. VMware Player est une version restreinte de VMware Workstation. Il peut lancer des machines virtuelles, mais ne permet pas d’en créer de nouvelles, ni de modifier la configuration d’une machine existante. L’interface utilisateur ressemble à celle de VMware Workstation. Cependant, elle n’inclut pas les divers menus et boîtes de dialogue pour les fonctions spécifiques de Workstation.
Linux Livre Page 629 Mardi, 23. septembre 2008 1:05 13
629
VIRTUALISATION AVEC VMWARE, VIRTUALBOX, QEMU ET KVM
Comparatif
Le tableau suivant compare ces trois logiciels. VMware Workstation
VMware Server
VMware Player
But
vise le marché bureautique ; sa principale utilisation est l’exécution d’un système A sur un système B
vise le marché des serveurs
permet de lancer des machines virtuelles précédemment créées avec une interface simple
Licence
propriétaire, payante
propriétaire, gratuite
propriétaire, gratuite
oui
non
Création de machines oui virtuelles Démarrage des machines virtuelles à l’amorçage
non
oui
non
Répertoires partagés
oui
non
non
Démarrage de plusieurs machines simultanément
oui
oui
non
Avantage principal
produit complet sans limitation
produit raisonnablement complet et gratuit
gratuité et simplicité d’utilisation
Inconvénient principal
prix
complexité d’utilisation
impossibilité de créer ou modifier une machine virtuelle
32.3 VirtualBox Depuis janvier 2007, VirtualBox (http://www.virtualbox.org) est une alternative intéressante à VMware Workstation. Ce programme fournit les mêmes fonctions de base et une version GPL est disponible. Il fonctionne sur des hôtes Windows, Linux, Macintosh et OpenSolaris. Les systèmes invités pris en charge comptent, entre autres, Windows (2000, XP, 2003 Server, Vista), Linux, FreeBSD, OpenBSD, Solaris, OS/2 et DOS. VirtualBox est moins mûr que VMware Workstation. De nombreuses fonctions avancées ne sont pas disponibles. Mais pour les tâches de virtualisation de base, il suffit largement. Il est également avantagé par rapport aux autres programmes de virtualisation libre par son interface graphique et sa documentation. Cela facilite la vie des débutants. Versions
Sur le site web de VirtualBox, vous trouverez deux versions à télécharger : • Version complète. Elle est gratuite pour les utilisateurs privés et universitaires, ainsi que pour l’évaluation. L’utilisation commerciale de cette version nécessite cependant l’achat de licences. • Version Open Source Edition (OSE). Cette version contient le code source de VirtualBox sous licence GPL. Son utilisation est gratuite dans le cadre de la GPL. Elle est un peu limitée par rapport à la version binaire : vous ne pouvez pas accéder aux périphériques USB et iSCSI depuis une machine virtuelle, ni utiliser RDP (Remote Display Protocole)
Linux Livre Page 630 Mardi, 23. septembre 2008 1:05 13
630
Prérequis
Installation de l’hôte
LINUX
entre les machines virtuelles. Par ailleurs, si votre distribution ne fournit pas de paquetage pour VirtualBox, vous devez compiler vous-même le logiciel. Cette section se base sur la version binaire VirtualBox 1.6.4, sur un système hôte Ubuntu 8.0.4, ainsi que sur les systèmes invités openSUSE 10.2 et Windows XP. Pour installer VirtualBox, vous devez avoir installé les fichiers d’en-tête du noyau, ainsi que tous les outils de développement de base. Ces éléments sont nécessaires pour compiler des modules du noyau utilisés par VirtualBox. Si vous installez la version OSE de VirtualBox, celle-ci peut être déjà disponible dans la base de paquetages de votre distribution. Si ce n’est pas le cas ou si vous préférez utiliser la version binaire de VirtualBox, vous devez la télécharger sur www.virtualbox.org. Vous trouverez sur le site web de VirtualBox des paquetages prêts à l’installation (Debian, Red Hat, SUSE, Ubuntu) ou un script universel d’installation, à lancer comme ceci : root# chmod u+x VirtualBox_n.run install root# ./VirtualBox_n.run install
Vous devez alors, dans le cas de la version binaire, accepter la licence. L’installation se déroule ensuite sans question supplémentaire. Le groupe vboxusers est créé. Seuls les utilisateurs de ce groupe peuvent accéder au périphérique /dev/vboxdrv nécessaire pour lancer des machines virtuelles. La commande suivante ajoute l’utilisateur michael au groupe vboxusers : root# usermod -a -G vboxusers michael
Installer des systèmes invités
Additions Client
Lorsque vous lancez le système hôte, le script InitV /etc/init.d/vboxdrv est lancé. Il charge le module noyau du même nom et s’assure que les conditions d’utilisation de VirtualBox sont remplies. La commande VirtualBox lance l’interface utilisateur de VirtualBox. Un assistant permet de créer de nouvelles machines virtuelles. Après le choix du type de système d’exploitation (par exemple, Linux avec un noyau 2.6) et de la taille souhaitée de la mémoire vive, puis la création d’un disque dur virtuel, VirtualBox affiche un résumé de tous les composants matériels. Vous pouvez alors ajouter des paramètres supplémentaires : changer le type d’accès réseau ou indiquer un fichier ISO comme source de données pour le lecteur CD/DVD (voir Figure 32.1). Par défaut, l’accès au réseau entre l’hôte et les invités fait appel à du NAT. Le système invité peut donc accéder à Internet, mais pas échanger de données avec le réseau local. Une fois le système installé, vous pouvez alors le lancer dans une fenêtre du système hôte (voir Figure 32.2). Après l’installation du système, vous devez installer les Additions Client. Il s’agit d’un ensemble de pilotes supplémentaires qui améliorent l’interaction avec l’hôte (contrôle de la souris plus élégant, résolution de l’écran plus importante, échange de données via les répertoires partagés, etc.). Cette installation n’est possible que lorsque le système invité dispose d’outils de développement et des fichiers d’en-tête de son noyau. Pour cela, éjectez le CD/DVD éventuellement présent et lancez Périphériques, Installer les Additions Client... Exécutez le fichier VBoxLinuxAdditions.run depuis le CD virtuel qui est alors monté dans le système invité. De manière atypique, vous devez alors redémarrer le système invité, qui peut disposer d’une plus grande résolution. Vous pouvez avoir à modifier la taille de la mémoire vidéo attribuée à l’invité ou la configuration de X de l’invité si la résolution que vous souhaitez n’est pas accessible.
Linux Livre Page 631 Mardi, 23. septembre 2008 1:05 13
VIRTUALISATION AVEC VMWARE, VIRTUALBOX, QEMU ET KVM
631
La machine virtuelle capture automatiquement le clavier et la souris dès que vous tapez une touche ou dès que vous cliquez. Par défaut, vous pouvez rendre le focus avec la touche Ctrl droite. Ce paramètre est modifiable dans la fenêtre principale de VirtualBox dans Fichier, Préférences.
Figure 32.1 Configuration d’une machine virtuelle dans VirtualBox.
Figure 32.2 openSUSE en tant que système invité dans une machine virtuelle VirtualBox.
Linux Livre Page 632 Mardi, 23. septembre 2008 1:05 13
632 Répertoires partagés
LINUX
Une fois les Additions Client installés, vous pouvez partager un dossier sur l’hôte pour qu’un invité puisse y accéder. Les répertoires partagés sont spécifiques à chaque système invité. Pour cela, il suffit d’ajouter l’invité dans les préférences de la machine virtuelle dans l’onglet Répertoires partagés. Le champ Chemin du répertoire est le répertoire de la machine hôte. Le champ Nom du répertoire est le nom grâce auquel l’invité y accédera. Sur le système invité, le répertoire n’est pas monté automatiquement, mais manuellement. Si le répertoire est partagé sous le nom partage, il faut lancer la commande suivante, en supposant que le répertoire partage-vbox est déjà créé : root@invite# mount -t vboxsf partage /media/partage-vbox
Les répertoires partagés peuvent également être utilisés lorsque le système invité est Windows. Le lecteur réseau à monter est \\vboxsev\partage.
32.4 QEMU et KVM
QEMU
Fin 2006, l’extension du noyau KVM s’est fait connaître par son entrée dans le noyau officiel 2.6.20. KVM est en soi un module de noyau relativement petit, dont l’action principale s’exerce avec le logiciel d’émulation QEMU. Il nécessite un processeur avec des fonctions matérielles de virtualisation et constitue avec QEMU un système de virtualisation matériel. Son élégance provient du fait qu’il ne gère pas lui-même les tâches classiques d’un hyperviseur (par exemple, la gestion de la mémoire et des processus), mais qu’il utilise pour cela les fonctions standard du noyau Linux. Le module de noyau de KVM contient donc relativement peu de code. Comme QEMU est à la base de KVM, cette section traite d’abord de QEMU, puis s’intéresse à KVM. QEMU émule divers processeurs et composants matériels de base d’un ordinateur typique (carte réseau, lecteur CD, etc.). Il peut également émuler des processeurs incompatibles avec le processeur de l’hôte (ARM, Sparc, PowerPC, MIPS, etc.), ce qui se fait évidemment au détriment des performances. Nous ne traiterons ici que de l’émulation des processeurs compatibles x86. Vous trouverez une description détaillée des fonctions et des limites de QEMU sur la page web du projet, http://bellard.org/qemu/. Comparé aux programmes comme VMware ou VirtualBox, QEMU est plus spartiate. Au lieu d’utiliser un assistant pour créer une nouvelle machine virtuelle, vous devez d’abord créer un fichier d’image pour le disque dur virtuel et passer tous les autres paramètres du matériel virtuel comme paramètres de la commande qemu. Il existe des interfaces graphiques à QEMU, comme Qemu Launcher ou qemuctl, mais celles-ci ne font pas partie de QEMU. La commande qemu-img crée le fichier image. Vous pouvez indiquer le format de fichier avec l’option -f. qcow et qcow2 sont les formats standard de QEMU. Il en existe d’autres, comme raw et vmdk (compatibles avec VMware Workstation 3 et 4). La taille du fichier est indiquée en mégaoctets (nM) ou en gigaoctets (nG). utilisateur$ qemu-img create -f qcow qemu.img 10G
L’émulateur lui-même est lancé avec la commande qemu ou qemu-xxx. qemu émule un processeur compatible x86, qemu-system-x86_64 sa variante 64 bits, qemu-sparc un processeur Sparc, etc. Toutes les commandes qemu ont la même syntaxe : utilisateur$ qemu [options] fichier-image
Linux Livre Page 633 Mardi, 23. septembre 2008 1:05 13
VIRTUALISATION AVEC VMWARE, VIRTUALBOX, QEMU ET KVM
633
qemu peut prendre de nombreuses options. La commande qemu sans paramètre en donne un résumé. Nous ne survolerons ici que les plus importantes : • -boot a/c/d indique le support d’amorçage (lecteur de disquettes, disque dur ou lecteur CD/DVD). Les lettres correspondent aux lecteurs DOS/Windows. Par défaut, QEMU démarre depuis le disque dur. • -cdrom fichier-iso utilise l’ISO indiquée comme source de données pour le lecteur CD/DVD virtuel. • -k langue indique la disposition clavier à utiliser, comme fr (français) et en-us (anglais US). Cette option n’est nécessaire que dans de rares cas, lorsque qemu n’interprète pas correctement les codes clavier du système hôte. • -localtime initialise l’heure CMOS virtuelle du système avec l’heure locale (plutôt que, par défaut, avec l’heure UTC). • -m n indique la taille de la mémoire de la machine virtuelle (en mégaoctets). Par défaut, les machines virtuelles disposent de 128 Mo de RAM. • -net options configure le matériel réseau virtuel. Cette option n’est nécessaire que lorsque la configuration par défaut de QEMU (carte NE2000 et pile réseau en mode utilisateur) n’est pas adaptée. • -no-acpi désactive l’ACPI. • -snapshot lance QEMU sans modifier de manière permanente le fichier image du disque dur. QEMU lance le système émulé dans une fenêtre simple sans menu, ni élément d’utilisation. Pour contrôler diverses fonctions, il faut utiliser des raccourcis clavier. Les plus importants sont recensés dans le tableau suivant. Raccourcis clavier de QEMU c+a c+a+F c+a+1 c+a+2 c+a+3 c+a+S c+a+X
Essayer QEMU
rend le focus du clavier active/désactive le mode plein écran affiche la sortie standard affiche le moniteur de QEMU affiche la console série enregistre les modifications sur le fichier image (uniquement en mode snapshot) termine le programme
Dans sa forme de base, QEMU ne permet de lancer des systèmes modernes graphiques avec des performances décentes que sur du matériel puissant. Pour les premiers tests, il vaut mieux tester une distribution Linux minimale. Les nostalgiques de DOS peuvent aussi effectuer ces tests avec FreeDOS (voir Figure 32.3). Le fichier ISO de FreeDOS se trouve à l’adresse http://freedos.org.
Linux Livre Page 634 Mardi, 23. septembre 2008 1:05 13
634
LINUX
Figure 32.3 FreeDOS sous QEMU.
Les deux commandes suivantes créent un fichier d’image pour le disque virtuel et démarrent QEMU en utilisant l’image ISO de FreeDOS comme support d’amorçage. utilisateur$ qemu-img create -f qcow qemu.img 500M utilisateur$ qemu -m 16 -boot d -cdrom fdbasecd.iso qemu.img
Lorsque l’installation s’est bien déroulée, vous n’avez plus besoin de l’image du CD et vous pouvez utiliser le disque dur virtuel pour démarrer le système : utilisateur$ qemu -m 16 qemu.img
J’ai également installé, de la même manière, Ubuntu 8.04.1. Cela demande un peu plus de patience (et davantage de mémoire vive attribuée à QEMU). Le système était globalement utilisable, mais lancer des applications graphiques était plutôt pénible au vu des problèmes de performances. KQEMU
Le cas le plus fréquent d’utilisation de QEMU est l’exécution de code x86 (invité) sur du matériel x86 (hôte). Il n’est donc pas nécessaire d’émuler ce code ; on peut le lancer directement. C’est à cela que sert le module noyau KQEMU. Il améliore de manière significative les performances de QEMU, qui sont alors comparables à celles de VMware, VirtualBox, etc. Vous trouverez plus d’informations sur KQEMU à l’adresse http://bellard.org/qemu/kqemu-tech.html. Vous pouvez avoir à installer les modules de noyau KQEMU manuellement, après les avoir téléchargés ou avoir installé le paquetage de source de votre distribution : utilisateur$ tar zxvf kqemu-x.y.z.tar.gz utilisateur$ cd kqemu-x.y.z utilisateur$ make root# make install root# modprobe kqemu
Il peut également être nécessaire de modifier les permissions du module /dev/kqemu.
Linux Livre Page 635 Mardi, 23. septembre 2008 1:05 13
VIRTUALISATION AVEC VMWARE, VIRTUALBOX, QEMU ET KVM
KVM
635
Les fonctions de KVM sont réparties dans trois modules du noyau. Les fonctions de base se trouvent dans le module kvm, les fonctions spécifiques à Intel-VT dans kvm-intel et les fonctions spécifiques à AMD-V dans kvm-amd. Pour pouvoir utiliser KVM, vous devez charger le module KVM qui correspond à votre matériel. kvm est automatiquement chargé. Pour un processeur Intel, lancez : root# modprobe kvm-intel
Pour un processeur AMD, lancez : root# modprobe kvm-amd
Si cette commande renvoie une erreur, vérifiez que votre processeur prend bien en charge la virtualisation matérielle. Si c’est le cas, elle peut être désactivée au niveau du Bios, ce qui est donc également un point à vérifier. L’utilisation des fonctions KVM nécessite d’accéder au périphérique /dev/kvm en lecture ou en écriture. Dans de nombreuses distributions, cet accès n’est autorisé qu’à root. Il faut donc modifier les droits d’accès de /dev/kvm pour autoriser d’autres utilisateurs à l’utiliser. Du point de vue de l’utilisateur, KVM est une variante de QEMU qui accède aux modules noyau KVM. Il n’est pas nécessaire d’installer QEMU ; le paquetage KVM en contient une variante modifiée. Pour créer un nouveau fichier image, vous avez cependant besoin de la commande qemu-img qui peut n’être disponible que dans le paquetage QEMU. KVM est démarré, selon la distribution, avec kvm ou qemu-kvm. Il est nettement plus rapide que QEMU dans sa version de base, mais la différence est négligeable par rapport à QEMU utilisé en parallèle avec KQEMU. Vous trouverez d’autres informations sur KVM sur le site http://kvm.qumranet.com/.
Linux Livre Page 636 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 637 Mardi, 23. septembre 2008 1:05 13
33
Xen Ce chapitre est une introduction au système de virtualisation Xen. Il mérite qu’on y consacre un chapitre entier, en raison de son importance croissante et de sa grande complexité. Nous supposons cependant ici que les concepts sous-jacents de virtualisation, présentés dans les chapitres précédents, vous sont familiers.
33.1 Introduction Xen est une infrastructure de virtualisation qui prend en charge deux formes de virtualisation et qui se différencie par quelques détails techniques des autres systèmes. Il est particulièrement adapté à la virtualisation de serveurs Linux. Le développement de Xen a commencé en 2001 à l’université de Cambridge. En soi, Xen est libre (sous licence GPL), mais il existe également diverses versions commerciales, ainsi que des extensions et des outils de gestion. Le noyau Linux doit être étendu par un correctif pour que Xen fonctionne. De nombreuses distributions fournissent par défaut des noyaux modifiés pour Xen. Applications
Xen est conçu principalement pour une utilisation serveur. Une utilisation bureautique comme celle que permettent VMware ou VirtualBox est possible, mais avec quelques limitations ; ce n’est donc pas la solution optimale. Le plus courant est d’utiliser la même distribution pour le système de base (le serveur Xen) et ses invités. Pour cela, vous installez par exemple SUSE Enterprise Server avec la prise en charge de Xen comme système de base, puis vous utilisez Xen pour lancer diverses instances virtualisées de cette distribution dans des environnements isolés. Les outils de configuration des différentes distributions permettent généralement d’assister l’utilisateur lorsqu’il crée des systèmes invités. Ces outils sont également utiles, car la gestion manuelle de Xen est relativement inconfortable : vous devez vous occuper des fichiers de configuration, des périphériques réseau, etc. Une autre utilisation courante est de configurer un serveur Xen qui n’effectue pas d’autre tâche que l’administration de Xen et l’accès au matériel. Pour cela, il suffit d’installer une minidistribution, sans système graphique, ni services réseau, comme Apache ou Samba.
Versions et environnement de test
J’ai testé Xen avec diverses distributions. Ce chapitre se base sur un système hôte Ubuntu 8.04.1 (32 bits), Xen 3.2.0 et un noyau 2.6.24. Tester Xen peut mener à certaines instabilités. Il est donc conseillé de sauvegarder votre disque dur avant de vous lancer, ou d’utiliser une machine de tests.
Linux Livre Page 638 Mardi, 23. septembre 2008 1:05 13
638
LINUX
33.2 Détails techniques À la base, la mise en œuvre de Xen n’est pas plus compliquée que celle de VMware Server, du moins en ce qui concerne les aspects pertinents pour l’utilisateur et l’administrateur. Les chapitres précédents n’abordaient pas les détails techniques des systèmes de virtualisation, mais il vous faut certaines bases pour faire fonctionner Xen. Si vous ne comprenez pas comment il fonctionne, vous ne parviendrez pas le configurer correctement − et aucun assistant n’est fourni.
Variantes de la virtualisation Paravirtualisation
Virtualisation matérielle
Xen est avant tout un système de paravirtualisation : les machines virtuelles utilisées nécessitent un noyau Linux modifié. Lorsque ces prérequis sont remplis, Xen est plus efficace que VMware Workstation ou VMware Server. Cependant, en tant qu’outil de paravirtualisation, Xen ne peut pas lancer de système d’exploitation sans prise en charge de Xen et en particulier, Windows. Depuis la version 3, Xen peut lancer des systèmes non modifiés dans des HVM (Hardware Virtual Machines, machines virtuelles matérielles). Cela nécessite néanmoins une prise en charge matérielle (Intel VT ou AMD-V). Xen utilise pour cela une partie du code de QEMU ; de nombreux avantages et particularités de Xen disparaissent alors. Lorsque vous lisez dans la presse informatique que Xen peut maintenant exécuter Windows, la forme de virtualisation considérée n’apporte presque rien par rapport à KVM/QEMU.
Architecture et terminologie Au contraire des solutions de virtualisation présentées précédemment, qui fonctionnent comme des applications habituelles sur un système hôte normal, les fonctions de base de Xen sont implémentées dans une couche du noyau. Xen ne s’occupe pas de démarrer les invités : c’est également le travail de l’hôte. Du point de vue de Xen, le système d’exploitation de base se comporte comme un invité avec des privilèges particuliers.
Figure 33.1 Virtualisation avec Xen.
dom0 et domU
La terminologie est également différente. Au lieu de machines virtuelles, on parle sous Xen de domaines. Lors du démarrage de l’ordinateur, Xen est d’abord démarré. Il démarre ensuite le domaine 0. Dans ce dernier, le noyau modifié pour Xen et une distribution ayant accès aux composants matériels (par exemple le système graphique) sont lancés et contrôlent tous les autres domaines Xen.
Linux Livre Page 639 Mardi, 23. septembre 2008 1:05 13
639
XEN
Les désignations hôte et invité sont encore valables dans Xen, mais avec quelques limitations. Pour être exact, Xen est lui-même l’hôte. Le système qui serait désigné comme hôte sur un autre système de virtualisation est désigné par Xen comme domaine privilégié (Domain 0, abrégé en dom0). Le dom0 est parfois également décrit comme serveur de machines virtuelles ou serveur Xen. Toutes les machines virtuelles supplémentaires (invités, dans la terminologie précédente) fonctionnent dans des domaines non privilégiés (domU). La Figure 33.1 résume l’architecture de Xen. Vous pouvez lancer dans les domU d’autres systèmes d’exploitation, soit de manière paravirtualisée (lorsque le système prend en charge Xen), soit avec une virtualisation matérielle. Nous nous limitons ici à Linux.
Restrictions Comme tout autre système de virtualisation, Xen souffre également de limitations, dont certaines sont liées au fait qu’il est optimisé pour une utilisation serveur. • Xen et tous les domaines doivent concorder et utiliser la même architecture de processeur. Il est impossible de lancer un dom0 en 64 bit et des domU en 32 bits. Si vous utilisez une architecture 32 bits, une restriction similaire s’applique à PAE (Physical Addressing Extensions, extensions d’adressage physique), qui permet d’adresser plus de 4 Go de RAM sur un processeur 32 bits. Xen peut être compilé avec ou sans prise en charge de PAE. Cependant, Xen et tous les noyaux (dom0 et domU) doivent s’accorder sur ce point. Si ces règles ne sont pas suivies, Xen termine le démarrage d’un domU par le message d’erreur error 22, invalid argument. Ces limitations ne s’appliquent que pour la paravirtualisation et non pour les machines virtuelles HVM. • Xen est incompatible avec certains pilotes matériels binaires (utilisés, par exemple, pour certaines cartes graphiques ou cartes Wi-Fi). Utilisez dans la mesure du possible les pilotes libres. Il existe un correctif pour les pilotes NVIDIA. De manière générale, Xen est, comme tous les systèmes de virtualisation actuels, peu adapté aux graphismes 3D. • Xen ne fournit pas de fonctions audio aux domaines non privilégiés. • La prise en charge d’ACPI et d’APM est très limitée. En particulier, les fonctions d’économie d’énergie des ordinateurs portables sont largement inutilisées. Les processeurs fonctionnent à pleine fréquence. Les cartes PCMCIA et CardBus ne peuvent pas être utilisées. • Le dom0 ne peut fonctionner que sur un Linux ou un NetBSD. Windows, Solaris et les BSD ne peuvent être lancés que dans des domU et souffrent souvent de diverses limitations ou ne fonctionnent qu’en virtualisation matérielle. • Xen peut poser des problèmes de compatibilité avec les pare-feu et d’autres systèmes de sécurité (SELinux, AppArmor, etc.). • Dans un domaine Xen, il est impossible d’exécuter d’autres programmes de virtualisation. Xen et le second programme de virtualisation veulent tous les deux gérer la mémoire, les processus, etc.
Linux Livre Page 640 Mardi, 23. septembre 2008 1:05 13
640
LINUX
Cependant, le cas inverse fonctionne : vous pouvez essayer Xen dans une machine virtuelle VMware. N’en attendez cependant pas des foudres de performances...
Gestion du matériel Xen fonctionne un niveau en dessous du noyau Linux et doit donc être démarré avant le noyau du système dom0. C’est Xen, et non le noyau Linux, qui gère les ressources matérielles élémentaires (voir Figure 33.2). Il s’occupe en particulier de la gestion de la mémoire, de l’utilisation du processeur, des accès au disque dur et du système réseau. Les systèmes invités (domU) n’accèdent pas à ces ressources par le pilote Linux standard, mais via des modules propres au matériel virtuel Xen. Ces pilotes sont une interface entre Xen et le noyau. C’est pourquoi Xen ne peut être exécuté que sur des noyaux Linux modifiés. La situation est encore plus délicate pour le dom0. Xen gère également dans ce cas la mémoire vive et les processeurs. Le noyau du dom0 doit donc également être modifié pour Xen. Les accès disque et l’utilisation de la carte réseau incombent cependant au noyau du dom0 et fonctionnent comme d’habitude via les modules du noyau Linux avec les pilotes correspondants. Les systèmes domU sont dépendants du bon fonctionnement des disques durs et de l’accès au réseau du dom0. Le système dom0 joue également un rôle privilégié pour l’accès aux autres composants matériels. En général, ce système est le seul à accéder aux cartes graphiques, audio et PCI, aux périphériques USB, etc. Il n’est pas prévu que les systèmes domU accèdent directement à ces composants. Il est cependant possible de bloquer certains périphériques PCI du dom0 et de les réserver à une instance de domU. Cela nécessite une configuration spéciale, que nous ne détaillerons pas ici.
Figure 33.2 Gestion du matériel dans Xen.
Accès au réseau La corrélation complexe entre le matériel, Xen, dom0 et domU se manifeste probablement le mieux dans le cadre de l’accès au réseau. On pourrait écrire un chapitre complet sur les différentes possibilités de configuration réseau dans Xen. Nous nous limitons ici à la variante
Linux Livre Page 641 Mardi, 23. septembre 2008 1:05 13
641
XEN
Démarrage de l’ordinateur Initialisation du réseau via xend
la plus courante : le réseau ponté (Bridged Networking). Tous les clients Xen (dom0 et domU) ont un accès direct à un serveur externe ou un routeur qui, idéalement, fait fonctionner un serveur DHCP. La Figure 33.3 illustre les nombreuses interfaces réseau que vous pouvez trouver dans une configuration Xen typique. Pendant le démarrage de l’ordinateur, tout se passe normalement. Le noyau dom0 charge les modules du matériel physique et initialise eth0, eth1, etc. À la fin du processus InitV du système dom0, le programme xend est démarré. Il initialise les interfaces réseau spécifiques à Xen. eth0 est renommé en peth0 et un pont réseau virtuel (xenbr0) est créé. Celui-ci établit la connexion aux interfaces virtuelles vifn.m (vif signifie virtual interface). L’accès au réseau de dom0 se fait via la nouvelle interface eth0, câblée virtuellement avec vif0.0. Une fois le réseau complètement initialisé, il ne s’est apparemment rien passé pour dom0 : il accède au réseau, comme auparavant, avec eth0. Cette interface n’est cependant plus associée directement au matériel, mais à Xen. Les systèmes domU accèdent simplement au réseau via eth0. eth0 est alors associé au pilote réseau Xen (module xennet) qui étend le trafic réseau vers le réseau local avec vifn.n et xenbr0. n est le numéro d’identifiant de la machine virtuelle Xen. Les interfaces vifn.m sont créées automatiquement au démarrage des domaines et supprimées lorsque les domaines correspondants sont arrêtés.
Figure 33.3 Accès au réseau pour les domaines Xen.
Ce système est modifiable à l’infini. Lorsque plusieurs cartes réseau sont présentes sur l’ordinateur, plusieurs interfaces pethn et ethn sont créées dans le dom0. Lorsque les domU utilisent plusieurs cartes réseau, plusieurs interfaces vifn.m sont définies dans le dom0. Il est également possible d’ajouter des réseaux virtuels avec plusieurs ponts. Le réseau virtuel Xen est configuré dans le fichier /etc/xen/xendconfig.sxp.
Linux Livre Page 642 Mardi, 23. septembre 2008 1:05 13
642 ifconfig (dom0)
LINUX
ifconfig affiche comme prévu une longue liste d’interfaces. eth0 lo peth0 vif0.0 vif1.0
Link encap:Ethernet HWaddr 52:54:00:12:34:56 inet adr:10.0.2.15 Bcast:10.0.2.255 Masque:255.255.255.0 Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 Link encap:Ethernet HWaddr 52:54:00:12:34:56 inet adr:10.0.2.15 Bcast:10.0.2.255 Masque:255.255.255.0 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff BROADCAST MULTICAST MTU:1500 Metric:1 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff adr inet6: fe80::fcff:ffff:feff:ffff/64 Scope:Lien UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
Accès au disque dur Le système dom0 accède tout à fait usuellement à son noyau sur le disque dur. Les systèmes domU accèdent au disque dur grâce au module xenblk. Le noyau domU voit donc, par exemple, la partition (virtuelle) /dev/sda1. Celle-ci correspond généralement à une partition réelle sur le disque dur du dom0 ou à un fichier d’image qui se trouve dans le système de fichiers du dom0. Le pilote xenblk connecte la partition virtuelle à la partition réelle. L’accès direct du domU à une partition de disque dur est autorisé uniquement lorsque cette partition n’est utilisée par aucun autre domaine (y compris dom0). Lorsque plusieurs domaines ont accès en même temps à une partition, les conflits et la corruption du système de fichiers sont inévitables.
Sortie graphique Normalement, seul dom0 a accès à la carte graphique et à la sortie écran. Il existe des configurations spéciales qui permettent à un domU de communiquer directement avec la carte graphique, mais nous ne rentrerons pas ici dans les détails de ce cas particulier. Cela est suffisant dans le cadre d’une utilisation serveur. Pour communiquer avec la machine virtuelle sur laquelle fonctionne le serveur web, une simple connexion réseau suffit. On peut également administrer le domaine via ssh dans une fenêtre de console. Jusqu’à ce qu’un domU fonctionne correctement, il est cependant intéressant de disposer d’une interaction indépendante du réseau qui ne fonctionne éventuellement pas encore. Les possibilités suivantes s’offrent à vous : • Console (texte). Xen peut rediriger la première console texte du domU dans une fenêtre de console locale. Vous pouvez suivre le démarrage du domU et vous connecter. Les consoles peuvent être couplées dès le démarrage (xm create domaine -c) ou ultérieurement (xm console domaine). Cependant, ce principe ne fonctionne que pour une seule console, ce qui est en pratique très limité. • SDL (graphique). SDL (Simple DirectMedia Layer, couche DirectMedia simple) est une bibliothèque qui accède directement à différents éléments multimédias (framebuffer 2D,
Linux Livre Page 643 Mardi, 23. septembre 2008 1:05 13
643
XEN
OpenGL, clavier, souris et système audio). Xen utilise SDL pour afficher le système graphique d’un domU dans une fenêtre du dom0. • VNC (graphique). Vous pouvez, comme alternative à SDL, utiliser VNC pour afficher le système graphique du domU. Xen démarre un petit serveur VNC en même temps que le domU lorsqu’il est configuré pour cela.
33.3 Gestion des fichiers image
Créer une image de fichier vide
Comme nous l’avons vu à la section précédente, Xen permet d’enregistrer physiquement des systèmes domU de plusieurs manières : dans un fichier image sur le système dom0 local ou un serveur NFS, ainsi que sur un disque dur ou une partition inutilisée. L’accès direct à une partition est nettement plus efficace que l’utilisation de fichiers image. Cependant, ces derniers sont plus adaptés aux premières expérimentations : il est facile de les créer, copier et supprimer. De plus, les besoins en place sont, du moins au début, nettement plus faibles. Xen prend en charge le format RAW et le format d’images de QEMU. Un fichier RAW contient exactement les mêmes données qu’une partition de disque dur. Cette section offre quelques astuces pour gérer ce type d’images. Ces informations sont indépendantes de Xen, mais en pratique, vous aurez probablement à vous frotter à ce type de commandes lors de vos tests. Tous les exemples supposent que vous utilisez un système ext3 dans vos fichiers image. Cela n’est évidemment pas nécessaire ; vous pouvez utiliser un autre système de fichiers. Pour créer un nouveau fichier image correspondant à une partition de 5 Go, lancez la commande dd suivante. Le fichier est créé, mais il n’est pas physiquement rempli de 0. ls -l montre qu’il a une taille de 5 Go, mais du indique qu’il n’est pour l’instant composé que des informations de gestion. root# dd if=/dev/zero of=fichier.img bs=1 count=0 seek=5G root# ls -l fichier.img ... 5368709120 ... fichier.img root# du fichier.img 0 fichier.img
Créer le système de fichiers
Pour créer un système de fichiers sur le fichier image, il faut lancer la commande mkfs. Celle-ci reconnaît qu’il ne s’agit pas d’un périphérique de bloc (comme ce serait le cas sur une vraie partition) et demande, selon la version, confirmation. Le fichier est alors formaté. du montre que le fichier prend plus de place en raison des informations de gestion du système de fichiers. root# mkfs.ext3 fichier.img mke2fs 1.40.8 (13-Mar-2008) fichier.img n’est pas un périphérique spécial en mode bloc. Procéder malgré tout ? (o,n) o root# du fichier.img 174372 fichier.img
Linux Livre Page 644 Mardi, 23. septembre 2008 1:05 13
644 Créer un fichier image à partir d’une partition
Utiliser le système de fichiers d’un fichier image
LINUX
Vous pouvez aussi directement créer une image à partir d’une partition. Il n’est alors nécessaire ni de créer le fichier, ni de le formater : root# dd if=/dev/sda7 of=fichier.img
Attention, la partition source de la commande dd ne doit pas être active ! On ne peut pas cloner la partition du système démarré. Il faut pour cela démarrer l’ordinateur avec une autre distribution ou un système live. Dès que Xen lance le système domU dont le système de fichiers se trouve dans le fichier image, vous pouvez accéder au système de fichiers. Vous pouvez ouvrir une fenêtre Xen, installer un nouveau paquetage, etc. Vous pouvez aussi échanger des fichiers via le réseau entre le système dom0, domU et les ordinateurs du réseau local. Vous pouvez cependant aussi utiliser le système de fichiers de l’image lorsque domU n’est pas lancé. Pour cela, il suffit de le monter dans l’arborescence du système avec mount. Il faut utiliser l’option -o loop pour monter l’image comme périphérique de bouclage. root# mkdir /systeme-domu root# mount -t ext3 -o loop fichier.img /systeme-domu
Vous pouvez alors utiliser le système de fichiers de l’image, monté dans le répertoire /systeme-domu. L’accès est en lecture/écriture. Vous pouvez donc modifier le système de fichiers, par exemple pour corriger /etc/fstab. Il est souvent intéressant de démarrer un nouvel interpréteur de commandes avec chroot. Cet interpréteur utilise le système de fichiers de l’image comme répertoire racine. exit permet de le quitter. root# chroot /systeme-domu root# ls bin boot dev etc home lib lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var root# jmacs /etc/fstab root# ... root# exit
Redimensionner un système de fichiers
N’oubliez pas de démonter l’image avant d’envisager de redémarrer le système domU. resize2fs permet de redimensionner un système de fichiers. Pour le rétrécir, le système doit être inutilisé. Dans tous les cas, vous devez auparavant lancer e2fsck. resize2fs adapte automatiquement la taille du fichier image. root# e2fsck fichier.img root# resize2fs -p fichier.img 3G ... Le système de fichiers fichier.img a maintenant une taille de 786 432 blocs. root# ls -l fichier.img ... 3221225472 ... fichier.img
Créer un fichier image d’échange
Il est possible d’ajouter une partition virtuelle d’échange à un système domU. Il suffit de la formater avec mkswap : root# dd if=/dev/zero of=swap.img bs=1 count=0 seek=100M root# mkswap swap.img Initialisation de la version de l’espace de swap 1, taille = 104853 kB
Linux Livre Page 645 Mardi, 23. septembre 2008 1:05 13
645
XEN
33.4 Mettre en place le système de base Xen (dom0) Paquetages Xen
GRUB
Un système de base Xen est souvent composé d’une installation Linux standard. Certaines distributions savent également installer directement les paquetages Xen lors de l’installation initiale. Pour mettre en place un système de base Xen, la plupart des distributions proposent des paquetages, même si ceux-ci ne font pas forcément partie des dépôts de paquetages officiels. Vous avez besoin des éléments suivants : • Xen (qui contient également xend et divers autres programmes) ; • la bibliothèque Xen xenlib ; • la bibliothèque de virtualisation virtlib ; • un noyau modifié pour Xen, compatible avec la version de Xen (architecture CPU, PAE) ; • un client VNC (qui se trouve généralement dans le paquetage vnc). Pour démarrer Xen, puis le noyau dom0, il faut adapter le fichier de configuration de GRUB /boot/grub/menu.lst (LILO ne sait pas démarrer Xen). Dans de nombreuses distributions, le gestionnaire de paquetages s’occupe de la configuration de GRUB. Les lignes suivantes montrent un exemple de menu pour Xen. N’oubliez pas d’adapter les périphériques et noms de fichiers à votre propre système. Vous devez indiquer dans la ligne kernel le fichier de démarrage de Xen et non le noyau Linux usuel. Les deux lignes module qui suivent fournissent le nom du noyau, les paramètres du noyau et le fichier initrd. # /boot/grub/menu.lst ... title Linux avec Xen root (hd0,10) kernel /boot/xen.gz-n module /boot/vmlinuz-n ro root=/dev/sda11 module /boot/initrd-n.img
Si vous souhaitez limiter la mémoire du dom0, vous pouvez passer l’option dom0_mem=n à la ligne kernel. n est la limite supérieure de la mémoire utilisable par le dom0 (en mégaoctets). Au démarrage suivant, vous verrez divers messages s’afficher. Ceux-ci sont ensuite suivis des messages usuels du noyau. Pour consulter les messages de Xen, utilisez la commande xm dmesg : root# xm dmesg __ __ \ \/ /___ _ __ \ // _ \ ’_ \ / \ __/ | | | /_/\_\___|_| |_|
_____ ____ _ _ |___ / |___ \ / | _ __ ___/ | _ __ _ __ ___ |_ \ __) | | |__| ’__/ __| |__| ’_ \| ’__/ _ \ ___) | / __/ _| |__| | | (__| |__| |_) | | | __/ |____(_)_____(_)_| |_| \___|_| | .__/|_| \___| |_| (XEN) Xen version 3.2.1-rc1-pre (buildd@buildd) (gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) Fri Apr 11 01:12:53 UTC 2008 ... (XEN) Xen heap: 9MB (10124kB) (XEN) Domain heap initialised: DMA width 32 bits (XEN) PAE enabled, limit: 16 GB
Linux Livre Page 646 Mardi, 23. septembre 2008 1:05 13
646
LINUX
(XEN) Processor #0 6:2 APIC version 20 (XEN) IOAPIC[0]: apic_id 1, version 17, address 0xfec00000, GSI 0-23 (XEN) Enabling APIC mode: Flat. Using 1 I/O APICs ... (XEN) *** LOADING DOMAIN 0 *** (XEN) Xen kernel: 32-bit, PAE, lsb (XEN) Dom0 kernel: 32-bit, PAE, lsb, paddr 0xc0100000 -> 0xc0503000 (XEN) PHYSICAL MEMORY ARRANGEMENT: (XEN) Dom0 alloc.: 000000003a000000->000000003c000000 (232753 pages to be allocated) (XEN) VIRTUAL MEMORY ARRANGEMENT: ...
xm list permet de voir que Xen exécute votre système Linux dans le domaine privilégié dom0 : root# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 950 2 r----736.1 xend
Tandis que les fonctions de base de Xen sont démarrées avant le noyau Linux, diverses opérations de Xen se déroulent tout à la fin. À la fin du processus InitV, le script xend est démarré. Il lance le démon de contrôle de Xen du même nom et met en place le réseau virtuel Xen.
Configuration
La configuration de base a lieu dans le fichier /etc/xen/xend-config.sxp. Celui-ci contient, entre autres, tous les paramètres du réseau virtuel Xen. Dans la plupart des distributions, vous pouvez laisser le script tel quel lors de vos premières expériences ; sous Ubuntu, vous devez éventuellement rectifier le paramètre network-script. # /etc/xen/xend-config.sxp ... # utiliser un pont réseau (network-script network-bridge) (vif-script vif-bridge) ... # limite inférieure de RAM pour dom0 (dom0-min-mem 256)
Le répertoire /etc/xen contient divers scripts supplémentaires que vous n’avez généralement pas besoin de modifier, ainsi qu’un fichier de configuration pour chaque système domU. La création de ces fichiers de configuration est couverte dans la section suivante.
33.5 Créer des systèmes invités (domU) L’opération la plus difficile lors des premières expériences Xen est la création d’un domU. Avant de détailler une installation, voici un résumé des impératifs d’un système domU fonctionnel : • Système de fichiers. Le système de fichiers complet du système domU doit se trouver dans un fichier image ou une partition non utilisée. • Noyau. Le système de fichiers du dom0 (et non celui du domU) doit contenir un noyau compatible Xen et le fichier initrd correspondant. Ces deux fichiers sont nécessaires au
Linux Livre Page 647 Mardi, 23. septembre 2008 1:05 13
XEN
647 démarrage du domaine. Xen lit ces deux fichiers avant même que le système de fichiers du domU ne soit activé. Comme des fonctions Xen sont exécutées sous forme de modules (xenblk, xennet), les modules doivent se trouver dans le fichier initrd. Vous ne pouvez omettre ce point que lorsque les fonctions Xen sont directement compilées dans le noyau. Le système de fichiers du domU doit contenir un répertoire de modules correspondant au noyau (/lib/modules/version_noyau). Il était d’usage auparavant de mettre en place des noyaux monolithiques pour les systèmes dom0 et domU. Cet usage n’est plus de mise. La plupart des distributions fournissent maintenant un noyau Xen modulaire utilisable pour le dom0 et les domU.
Plusieurs chemins mènent à Xen
• Fichiers de configuration. Tous les paramètres, qu’ils concernent le matériel virtuel ou d’autres éléments du domaine, sont enregistrés dans le fichier de configuration /etc/xen/ nom_de_domaine. Cette section présente quelques exemples pour ce fichier de configuration. Le problème de l’installation des systèmes invités est que Xen ne peut lancer que des systèmes dotés d’un noyau modifié pour Xen. Les distributions courantes n’utilisent pas de noyau de ce type pendant l’installation. Il n’est donc pas possible d’effectuer une installation habituelle depuis un CD ou un fichier ISO. Les possibilités suivantes s’offrent à vous : • Vous pouvez utiliser une image Xen préinstallée. Vous pouvez la télécharger sur Internet, par exemple sur http://www.jailtime.org. J’ai cependant eu de mauvaises expériences avec ce type de solution. Les images sont rarement compatibles avec une version de Xen et une architecture processeur données. Il manque souvent le noyau et le fichier initrd. • Vous pouvez lancer une installation classique sur une partition de disque, puis installer un noyau Xen et un fichier initrd pour Xen. Une fois ces étapes effectuées, quittez le système et modifiez quelques éléments (par exemple, dans /etc/fstab). Si vous le désirez, vous pouvez copier le système de fichiers dans un fichier image avec dd. Pour finir, démarrez Xen et accédez au domU directement sur la partition ou par le biais d’un fichier image. • Vous pouvez aussi lancer l’installation dans QEMU et utiliser l’image QEMU dans Xen. L’avantage de cette méthode est que vous n’avez pas à quitter le système qui fonctionne. L’installation dure cependant plus longtemps. • Certaines distributions (Fedora, Red Hat et SUSE) fournissent des outils pour lancer l’installation de manière paravirtualisée dans Xen. Le programme d’installation est pour cela chargé depuis le réseau et lancé avec un noyau compatible avec Xen. Cette procédure dépend néanmoins largement de la distribution et de la version. • Les utilisateurs de Debian peuvent mettre en place un système Debian élémentaire avec debootstrap dans une partition montée dans un répertoire. Après la configuration de base, il suffit d’ajouter un noyau compatible avec Xen pour démarrer le système avec Xen. Vous trouverez diverses documentations à ce sujet en cherchant xen debootstrap dans un moteur de recherche. • Si votre processeur sait utiliser les fonctions de virtualisation, vous pouvez lancer l’installation dans un domaine HVM. Cette opération est comparable à l’installation d’une version de Windows.
Linux Livre Page 648 Mardi, 23. septembre 2008 1:05 13
648
Installation de Fedora
Installation de la distribution
Noyau Xen
Fichier initrd
LINUX
Dans cette section, nous utiliserons la méthode d’installation de la distribution sur un partition du disque. Ce premier exemple pratique montre comment installer Fedora 9 comme système invité dans Xen. (Notez que Fedora 9 ne fonctionne pas en tant que système dom0, mais en tant que domU. Fedora 10 devrait fonctionner en tant que dom0.) La plupart des étapes sont valables pour l’ensemble des distributions ; certains détails sont spécifiques à la distribution ou à la version. Dans ce qui suit, nous indiquons pour toutes les commandes sur quels systèmes elles doivent être lancées. @domU spécifie que les commandes sont lancées sur le système invité (qu’il soit déjà lancé par Xen ou non), et @dom0 sur le système hôte. Redémarrez tout d’abord l’ordinateur et créez une partition supplémentaire sur le disque dur. Si vous désirez transférer l’installation dans une image disque, la partition doit être la plus petite possible (par exemple, 3 Go). Cela économise ensuite du temps lorsque vous gérerez le fichier image. Installez ensuite votre distribution normalement. Pensez à utiliser la même architecture que votre système Xen dom0 ! L’installation dépend évidemment de la manière dont vous comptez l’utiliser dans Xen. Cependant, plus l’installation est réduite, plus elle est rapide à mettre en place. Il est peu probable que vous ayez besoin d’OpenOffice.org dans un système Xen invité ; et si c’est le cas, il sera toujours temps de l’installer. Lors de mes tests, j’ai désactivé le pare-feu et SELinux. Cela minimise les sources possibles d’erreur si un problème survient. De plus, il est souvent opportun de désinstaller tous les services qui ne sont pas nécessaires dans un environnement Xen (avahi, smartd, gpm, etc.), ou du moins d’en supprimer le démarrage automatique. Certaines distributions permettent, pendant l’installation, d’installer un noyau Xen en plus du noyau habituel. Dans le cas contraire, démarrez le système Linux et ajoutez le noyau Xen avec les outils de gestion de paquetages. Pour pouvoir démarrer la distribution à partir de Xen, vous avez besoin d’un fichier initrd. Or, celui créé lors de l’installation du noyau Xen de Fedora ne contient pas les modules xenblk et xennet. Il faut donc le régénérer : root@domU# cd /boot root@domU# mkinitrd --preload=xenblk --with=xennet \initrd-xen-fedora9 2.6.25-3.2.fc9.i686.xen
Redémarrage du dom0
L’installation de l’invité Fedora est alors terminée. Redémarrez votre ordinateur et lancez le système Xen (dom0). Si vous le désirez, vous pouvez maintenant créer une image de l’installation avec dd et travailler avec cette image par la suite : root@dom0# mkdir /domu-filesys root@dom0# dd if=/dev/sda7 of=fedora.img
Vous pouvez aussi accéder directement à la partition de l’installation de Fedora. Nous supposons ici que Fedora est installé dans la partition /dev/sda7. Dans tous les cas, il faut monter le système invité dans l’arborescence courante avec, selon le cas, l’une des deux commandes suivantes : root@dom0# mount -t ext3 -o loop fedora.img /domu-filesys root@dom0# mount -t ext3 /dev/sda7 /domu-filesys
Linux Livre Page 649 Mardi, 23. septembre 2008 1:05 13
649
XEN
Copier le noyau et le fichier initrd
Pour que Xen puisse lancer le système invité, il faut copier le noyau et le fichier initrd de Fedora vers le système dom0. Si vous envisagez d’utiliser plusieurs invités Xen, il est préférable de créer un sous-répertoire de boot pour chaque noyau : root@dom0# root@dom0# root@dom0# root@dom0#
/etc/fstab
mkdir /boot/fedora cd /boot/fedora cp /domu-filesys/boot/vmlinuz-2.6.25-3.2.fc9.i686.xen . cp /domu-filesys/boot/initrd-xen-fedora9 .
Lorsque Fedora sera lancé par le biais de Xen, ses périphériques de disques recevront de nouveaux noms qui correspondent au fichier de configuration de Xen. Il faut donc adapter le fichier /etc/fstab : root@dom0# jmacs /domu-filesys/etc/fstab
Le plus simple est d’utiliser pour la partition racine l’UUID de la partition comme identifiant de montage. Pour obtenir cet UUID, il faut lancer la commande vol_id, suivie du nom du périphérique ou du fichier. Cette commande peut être lancée quel que soit le système auquel est attaché le périphérique : l’UUID ne change pas selon le système auquel il est attaché. Les premières expériences peuvent être lancées sans partition d’échange. Il faut donc généralement modifier /etc/fstab selon ce schéma : # /etc/fstab dans le système domU UUID=XXXX / ext3 devpts /dev/pts devpts tmpfs /dev/shm tmpfs proc /proc proc sysfs /sys sysfs Fichier de configuration de Xen
defaults gid=5,mode=620 defaults defaults defaults
1 0 0 0 0
1 0 0 0 0
Pour finir la préparation, il faut créer un fichier de configuration pour le nouveau domU dans le répertoire /etc/xen. L’exemple suivant indique comment le nouveau domaine Xen doit s’appeler, où se trouvent le noyau et le fichier initrd (dans le système dom0), quels paramètres il faut passer au noyau du domU et combien de RAM est attribuée au domaine (en mégaoctets). La ligne root indique l’emplacement du fichier racine. Pour simplifier l’amorçage, utilisez ici aussi l’UUID de la partition ou du fichier. La ligne disk indique l’emplacement du fichier image et le nom des périphériques pour domU. À la place de xen-images, indiquez le répertoire dans lequel se trouve le fichier image. Dans de nombreux exemples Xen, vous verrez à la place de tap:aio le mot clé file:. Cette variante fonctionne également, mais elle est plus lente. Le mot clé vif s’assure que le système invité peut accéder au réseau. Si l’ordinateur local fait fonctionner un serveur DHCP, le domU y récupère une IP. Sinon, vous devez configurer l’interface eth0 du domU avec ses propres outils de configuration. sdl=1 permet d’afficher une fenêtre au démarrage du système invité, qui affiche le contenu de son système graphique (framebuffer). Pour les premières tentatives, vous pouvez vous en dispenser. # /etc/xen/fedora dans le système de fichiers du dom0 name = ’fedora’ kernel = ’/boot/fedora/vmlinuz-2.6.25-3.2.fc9.i686.xen’
Linux Livre Page 650 Mardi, 23. septembre 2008 1:05 13
650
LINUX
ramdisk = ’/boot/fedora/initrd-xen-fedora9’ root = ’UUID=XXXX-XXXX ro’ memory = 400 disk = [’tap:aio:/xen-images/fedora.img,sda1,w’] vif = [ ’’ ] sdl = 1
Lorsque vous démarrez le système domU directement depuis la partition /dev/sda7, modifiez la ligne disk comme suit : # /etc/xen/fedora ... disk = [’phy:sda7,sda1,w’] Premier démarrage
Avant de démarrer votre nouveau système domU, vous devez démonter son système de fichiers de l’arborescence du dom0 : root@Dom0# cd root@Dom0# umount /domu-filesys
Pour finir, lancez dans une console xm create fedora -c. Cela lance le domaine fedora et lie le terminal Xen avec la console courante. Toutes les tâches du domU (messages du noyau, etc.) s’affichent dans la console locale. Lorsque tout se passe bien, vous pouvez vous connecter. Cet exemple est largement élagué pour des raisons de place. root@dom0# xm create fedora -c Using config file "/etc/xen/fedora". Started domain fedora ... Linux version 2.6.25.3-2.fc9.i686.xen (mockbuild@) (gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC) ) #1 SMP Thu May 29 12:48:20 EDT 2008 ACPI in unprivileged domain disabled BIOS-provided physical RAM map: Xen: 0000000000000000 - 0000000019800000 (usable) 0MB HIGHMEM available. 408MB LOWMEM available. ... Detected 1196.929 MHz processor. ... input: Macintosh mouse button emulation as /devices/virtual/input/input0 ... XENBUS: Device with no driver: device/vbd/2049 XENBUS: Device with no driver: device/vif/0 ... SCSI subsystem initialized register_blkdev: cannot get major 8 for sd ... Fedora release 9 (Sulphur) Kernel 2.6.25.3-2.fc9.i686.xen on an i686 (/dev/hvc0) localhost.localdomain login: kofler Password: ****** Last login: Thu Apr 5 19:59:41 on hvc0 [kofler@localhost ~]$
Linux Livre Page 651 Mardi, 23. septembre 2008 1:05 13
651
XEN
Pour connaître l’état de tous les domaines Xen, vous pouvez lancer la commande xm list. L’état b signifie blocked et indique que le système n’a rien à faire et qu’il attend des tâches. root@Dom0# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1213 2 r----357.2 fedora 10 399 1 -b---19.0 Problèmes
Heure
J’ai bien dû lancer vingt fois xm create name -c avant que mon premier domaine domU ne se lance. Les sources d’erreur les plus fréquentes sont les suivantes : • Le noyau du domU est incompatible avec Xen (mauvaise architecture de processeur, prise en charge de PAE, message d’erreur error 22, invalid argument). • Ni le noyau du domU, ni le fichier initrd ne contiennent le pilote xenblk. Alors, le noyau du domU ne peut pas accéder à la partition racine, ce qui renvoie l’erreur kernel panic - not syncing. • Le noyau lancé par Xen ne correspond pas au répertoire de modules /lib/modules/n du système domU. Le noyau domU ne peut donc pas charger de modules. Dans ce cas, le démarrage du système commence normalement, mais les problèmes surviennent pendant le processus InitV. Le système domU utilise automatiquement l’heure du dom0. Il ne sert donc à rien d’exécuter un serveur ntpd sur le domU. Si vous désirez régler l’heure de ce système indépendamment de l’heure du dom0, vous devez ajouter la commande suivante dans le processus InitV : root# echo 1 > /proc/sys/xend/independent_wallclock
Cloner un domU
Lorsque le système fonctionne, vous pouvez le cloner sans problème. Arrêtez le domU, copiez l’image et le fichier de configuration, puis modifiez la ligne disk du nouveau fichier de configuration. C’est tout ! Vous pouvez alors démarrer deux systèmes domU indépendamment l’un de l’autre.
Installation de Windows (HVM) Vous pouvez aussi lancer Windows XP sous Xen si votre processeur prend en charge la virtualisation matérielle. L’installation de Xen en mode HVM est plus simple que celle de Linux en paravirtualisation. Vous avez d’abord besoin d’un fichier image pour le disque dur virtuel. De plus, il vaut mieux utiliser une image ISO du CD, plutôt que le CD lui-même lors de l’installation. root@dom0# root@dom0# root@dom0# root@dom0#
cd dd cd dd
xen-images if=/dev/zero of=winxp.img bs=1 count=0 seek=4G iso-images if=/dev/scd0 of=winxp.iso
Le fichier de configuration de Xen doit suivre le schéma suivant. Les paramètres builder, kernel et device_model s’assurent que Xen lance le mode HVM et non la paravirtualisation. device_model doit contenir, selon l’architecture du processeur du dom0, lib ou lib64.
Linux Livre Page 652 Mardi, 23. septembre 2008 1:05 13
652
LINUX
Le paramètre disk définit cette fois deux paramètres : un fichier image pour le disque virtuel et un fichier ISO pour le lecteur CD. Windows voit ces deux lecteurs comme maîtres des deux canaux IDE. Attention, le mode HVM de Xen ne prend pas encore en charge l’accès aux données via tap:aio:. Vous devez donc utiliser l’écriture classique file:. boot demande à Xen de démarrer depuis le CD-ROM (lecteur D: dans la nomenclature Windows). # /etc/xen/winxp dans le système dom0 name
= ’winxp’
builder
= ’hvm’
kernel
= ’/usr/lib/xen/boot/hvmloader’
device_model = ’/usr/lib/xen/bin/qemu-dm’ # memory disk
’/usr/lib64/xen/bin/qemu-dm’ (bei 64-Bit-Xen) = 256 = [ ’file:/\zsi{xen-images}/winxp.img,ioemu:hda,w’, ’file:/\zsi{iso-images}/winxp_pro_with_sp2.iso,hdc:cdrom,r’]
boot
= ’d’
vif
= [ ’type=ioemu’ ]
sdl
= 1
xm create démarre l’installation. Une fenêtre HVMXEN s’ouvre automatiquement ; elle représente le système graphique du domU. Cette fenêtre se comporte comme QEMU : Ctrl+Alt rend le focus de la souris et du clavier, et Ctrl+Alt+F passe du mode fenêtre au mode plein écran (ce qui, dans mon environnement de test, mène à un plantage systématique de l’ordinateur). Attention, lorsque vous fermez la fenêtre, le système domU s’éteint brutalement (comme lors d’une coupure de courant). root@dom0# xm create winxp
L’installation elle-même se déroule comme sur un ordinateur réel, mais plus lentement. Lorsque l’installation s’est bien déroulée, modifiez les paramètres disk et boot du fichier de configuration. Vous pourrez ainsi démarrer directement Windows depuis le disque dur virtuel C: et accéder au lecteur CD physique du dom0. # /etc/xen/winxp dans le système de fichiers dom0 ... disk = [ ’file:/\zsi{xen-images}/winxp.img,ioemu:hda,w’, ’phy:scd0,hdc:cdrom,r’] boot = ’c’
33.6 Interaction avec le système domU démarré (SDL, VNC) Lorsque le système domU fonctionne avec une connexion réseau, l’échange de données et le contrôle peuvent s’effectuer via le réseau (par exemple, avec ssh). Avant que cela ne soit fonctionnel, il faut utiliser les consoles Xen comme SDL ou VNC. Cette section propose quelques astuces pour gérer ces outils.
Linux Livre Page 653 Mardi, 23. septembre 2008 1:05 13
653
XEN
Si, pour une raison ou une autre, vous ne pouvez plus accéder au domU, vous pouvez toujours l’arrêter avec xm. L’identifiant du domaine s’obtient avec xm list. root@dom0# xm shutdown identifiant
Console Xen La forme la plus simple d’interaction avec le système domU est la console Xen. Si vous avez oublié l’option -c en lançant votre domaine, vous pouvez vous connecter à la console ultérieurement : root@dom0# xm console nom_domaine
Cette commande donne souvent l’impression qu’elle a été ignorée. En fait, elle a bel et bien fonctionné. Appuyez sur Entrée ; l’invite de connexion du système domU apparaît alors dans la console. Pour sortir de la console, tapez la combinaison de touches Ctrl+] – soit, sur un clavier français, Ctrl+AltGr+). Le système domU continue à fonctionner, mais vous ne pouvez plus voir ce qu’il se passe dans la console.
SDL Lorsque la configuration de Xen contient la ligne sdl=1, une fenêtre doit s’afficher immédiatement après le démarrage avec le contenu de l’écran (framebuffer). Lorsque le domU démarre X, la fenêtre affiche le système graphique du système. Pour que cela fonctionne, le fichier de configuration de X du système domU doit contenir les paramètres suivants. Les paramètres Identifier sont arbitraires, mais doivent correspondre à ceux indiqués dans les sections Screen et ServerLayout. # /etc/X11/xorg.conf dans le système de fichiers du domU Section "Device" Identifier "<nom_périphérique>" Driver "fbdev" Option "fbdev" "/dev/fb0" EndSection Section "InputDevice" Identifier "<nom_souris>" Driver "mouse" Option "Protocol" "PS/2" Option "Device" "/dev/input/mouse0" EndSection ... Fermer et rouvrir la fenêtre SDL
Lorsqu’on ferme une fenêtre SDL, les domaines paravirtualisés continuent à tourner, tandis que les domaines HVM s’arrêtent immédiatement. Lorsqu’un domaine paravirtualisé fonctionne, vous pouvez rétablir la connexion SDL en lançant manuellement xen-sdlfb. L’identifiant du domaine s’obtient avec xm list. root@dom0# /usr/lib/xen/bin/xen-sdlfb --domid 10
Linux Livre Page 654 Mardi, 23. septembre 2008 1:05 13
654
LINUX
VNC Xen possède un petit serveur VNC. Vous pouvez donc aussi afficher le contenu de l’écran via VNC. Pour cela, le fichier de configuration de Xen doit contenir la ligne vnc=1. Par défaut, le serveur VNC de Xen utilise l’adresse IP 127.0.0.1, les ports 5900, 5901, 5902, etc. et aucun mot de passe. Tous les paramètres de VNC peuvent être modifiés globalement dans /etc/xen/xen-config.sxp ou individuellement pour chaque domaine. Attention, le paramètre utilisé dans de nombreux exemples, vnclisten = ’0.0.0.0’, donne accès aux machines virtuelles pour tout le réseau local, ce qui peut représenter un risque de sécurité. # /etc/xen/domainname dans dom0 ... vnc = 1 vnclisten = "127.0.0.1" vncpasswd = "xxx"
L’option vncunused=0 permet d’utiliser le numéro de port 5900+n, où n est l’identifiant du domaine. Vous pouvez, en plus de vncunused=0, indiquer le numéro de port avec vncdisplay=n (où n est ajouté à 5900). Si vous ne savez pas sur quels ports fonctionne le serveur VNC, utilisez netstat : root@Dom0# netstat -lpn | grep xen tcp 0 0 127.0.0.1:5906 0.0.0.0:* LISTEN 6005/xen-vncfb tcp 0 0 127.0.0.1:5907 0.0.0.0:* LISTEN 6104/xen-vncfb ...
Dans le domU, il faut utiliser la même configuration de X que pour SDL (voir ci-dessus). Lorsque le domU est démarré, lancez vncviewer ainsi : root@dom0# vncviewer localhost:5906
33.7 Syntaxe du fichier de configuration du domU Cette section résume les paramètres importants du fichier de configuration d’un domU (/etc/ xen/nom). • builder = ’linux’ / ’hvm’ indique le type de domaine. linux est le paramètre par défaut et représente un domaine paravirtualisé. • device_model = ’fichier’ doit contenir, pour les domaines HVM, /usr/lib[64]/xen/ bin/qemu-dm. • disk = [’chaîne1’,’chaîne2’...] décrit un ou plusieurs supports de données. La syntaxe de la chaîne est type:périphérique_réel,périphérique_virtuel,mode. type peut avoir la valeur phy (périphérique physique), tap:aio (accès à un fichier image via l’interface tap) ou file (accès à un fichier image pour les domaines HVM). Les périphériques sont décrits par leur nom sans /dev/. Les modes possibles sont r (lecture seule) et w (lecture/écriture). L’exemple suivant définit trois supports de données : une image pour la partition système et une pour la partition d’échange, ainsi que le lecteur CD de l’hôte pour le lecteur CD :
Linux Livre Page 655 Mardi, 23. septembre 2008 1:05 13
655
XEN
disk = [’tap:aio:/repertoire/root.img,sda1,w’, ’tap:aio:/repertoire/swap.img,sda2,w’, ’phy:scd0,scd0,r’]
• extra = ’paramètre’ ajoute des paramètres optionnels au noyau Linux. • kernel = ’fichier’ est le nom du fichier du noyau Linux ou celui du chargeur HVM (souvent /usr/lib/xen/boot/hvmloader). • memory = n indique la taille de la mémoire réservée pour le domaine en mégaoctets. • name = ’nom’ est le nom du domaine. Ce nom est utilisé pour la gestion dans le dom0. • ramdisk = ’fichier’ est le nom du fichier initrd pour le noyau Linux. • root = ’périphérique’ est la partition système de Linux. Il est intéressant de passer ce paramètre via son UUID. • sdl = 1 représente le système graphique du domaine dans une fenêtre SDL. • vcpus = n indique le nombre de processeurs virtuels. Par défaut, le domaine est associé à un seul processeur. • vif = [’chaîne1’,’chaine2’...] décrit une ou plusieurs interfaces réseau. Les chaînes peuvent, dans le cas le plus simple, rester vides (interface par défaut, DHCP). Les paramètres possibles sont type, mac, bridge et ip. Pour les interfaces HVM, il faut utiliser type=ioemu, comme dans l’exemple suivant : vif = [ ’type=ioemu, mac=01:23:45:67:89:ab, bridge=xenbr0’ ]
• vnc = 1 démarre un serveur VNC avec le domaine. Les paramètres vnclisten et vncpasswd permettent de contrôler sur quelle adresse le serveur peut être contacté et par quel mot de passe il est protégé.
33.8 Administration de Xen xm
La commande au cœur de l’administration des domaines Xen est xm. Elle sert à démarrer et à arrêter des domaines, à modifier le matériel virtuel, etc. La liste suivante résume les principales commandes xm. man xm en fournit une description plus détaillée. • block-attach id réel virtuel mode associe au domaine indiqué le support de données réel sous le nom virtuel indiqué dans le mode souhaité (ro ou rw). • block-detach id-domaine id-périphérique supprime le support de données du domaine. • block-list id affiche une liste des périphériques attachés à un domaine avec leurs identifiants de périphérique. • console id connecte la console actuelle avec la console Xen du domaine déjà démarré, dont le numéro d’identifiant est indiqué. • create [-c] fichier démarre le domaine indiqué par le fichier de configuration du répertoire /etc/xen. L’option -c associe la console Xen du domaine directement à la console courante.
Linux Livre Page 656 Mardi, 23. septembre 2008 1:05 13
656
LINUX
• destroy id éteint le domaine immédiatement (comme lors d’une coupure de courant). • dmesg affiche les messages de Xen et du noyau. • info affiche des informations sur le système Xen (numéro de version, processeurs, utilisation de la mémoire, etc.). • list affiche une liste de tous les domaines lancés. Pour chacun d’eux, un état est indiqué : – r : running (démarré, fonctionne) – b : blocked (bloqué, attend une entrée ou une sortie) – p : paused (en pause) – s : shutdown (en cours d’extinction) – c : crashed (planté) – d : dying (mourant) • network-attach id paramètre associe une nouvelle interface réseau au domaine. Cette interface est décrite par les paramètres ip, mac, bridge et backend. • network-detach id-domaine id-interface supprime l’interface du domaine. • network-list id affiche les interfaces du domaine et les identifiants associés. • pause id met en pause le domaine indiqué. Il consomme toujours de la mémoire, mais ne demande plus de ressources processeur. • shutdown [-w] id lance l’arrêt du domaine. L’option -w s’assure que xm attend la fin de l’arrêt. • unpause id relance, après une pause, un domaine. xentop
xentop est une variante de la commande top habituelle. Elle montre l’utilisation mémoire, l’occupation processeur et divers autres paramètres de tous les domaines lancés (y compris dom0). L’affichage est régulièrement actualisé jusqu’à ce que vous terminiez le programme avec Q.
Démarrer et arrêter automatiquement des domaines
Le script InitV /etc/init.d/xendomain enregistre, lors de l’arrêt de l’ordinateur, l’état de tous les domaines lancés (xm save) et les réactive lors du redémarrage de l’ordinateur. Pour activer certains domaines chaque fois que l’ordinateur est démarré (indépendamment de leur état lors de l’arrêt de l’ordinateur), créez des liens vers ces domaines dans /etc/xen/ auto : root# cd /etc/xen/auto root# ln -s ../fichier_config .
Outils d’administration graphiques
Il existe diverses interfaces d’administration pour Xen, comme par exemple Xenman (voir http://xenman.sourceforge.net). SUSE et Red Hat ont des outils spécifiques aux distributions : le module YaST Système, Virtualisation (paquetage yast-vm) et virt-manager.
Linux Livre Page 657 Mardi, 23. septembre 2008 1:05 13
ANNEXES
A
Références thématiques Ce chapitre offre un rapide descriptif des principales commandes sous Linux. Pour une référence complète des commandes en question, utilisez man commande ou info commande (ou help commande s’il s’agit d’une commande intégrée à l’interpréteur). Il se peut que certaines des commandes décrites ici doivent être installées séparément.
Gestion des fichiers cat
affiche un fichier sur la sortie standard ; est aussi utilisé pour grouper plusieurs fichiers en un
cd
change de répertoire
chgrp
modifie l’appartenance d’un fichier à un groupe
chmod
modifie les bits d’accès d’un fichier
chown
modifie le propriétaire d’un fichier
cp
copie un fichier
file
tente de déterminer le type d’un fichier
ln
crée des liens durs et symboliques
ls
affiche le contenu d’un répertoire
mkdir
crée un nouveau répertoire
mv
déplace un fichier ou le renomme
rm
supprime un fichier
rmdir
supprime un répertoire vide
rsync
synchronise des répertoires
tee
duplique la sortie standard
ACL (listes de contrôle d’accès) et EA (attributs étendus) attr
gère les attributs étendus d’un fichier
chacl
gère les ACL d’un fichier
getfacl
évalue les ACL d’un fichier
getfattr
évalue les attributs étendus d’un fichier
setfacl
modifie les ACL d’un fichier
setfattr
modifie les attributs étendus d’un fichier
Linux Livre Page 658 Mardi, 23. septembre 2008 1:05 13
658
LINUX
Recherche de fichiers beagle-query
cherche des fichiers d’après leur contenu
find
cherche des fichiers d’après leur nom, taille, date, etc.
grep
cherche du texte dans un fichier texte
locate
cherche des fichiers dans une base de données préétablie
updatedb
actualise la base de données de locate
whereis
cherche des fichiers dans des répertoires prédéfinis
which
parcourt les répertoires de PATH à la recherche de commandes
Traitement de fichiers texte cat
affiche un fichier sur la sortie standard ; est aussi utilisé pour grouper plusieurs fichiers en un
csplit
découpe un fichier en sections grâce à un séparateur
cut
extrait des colonnes de toutes les lignes d’un texte
diff
compare deux textes
expand
remplace les tabulations par des espaces
fold
met en forme un fichier à une largeur donnée
grep
cherche du texte dans un fichier
head
affiche les premières lignes d’un fichier
iconv
modifie le jeu de caractères d’un fichier
less
affiche un fichier page par page (avec retour arrière)
more
affiche un fichier page par page (sans retour arrière)
paste
réunit plusieurs fichiers texte ligne à ligne
patch
modifie un fichier selon un fichier généré par diff
recode
convertit un fichier entre différents jeux de caractères
sed
édite les flux (éditeur programmable)
sort
trie un fichier
split
sépare un fichier en morceaux d’une taille donnée
strings
affiche les chaînes de caractères d’un fichier binaire
tac
affiche un fichier dans l’ordre inverse (dernière ligne au début)
tail
affiche les dernières lignes d’un fichier
tr
remplace les caractères indiqués par d’autres caractères
uniq
supprime les doublons d’un fichier
zcat
affiche un fichier compressé
zless
affiche un fichier compressé page par page (avec retour arrière)
zmore
affiche un fichier compressé page par page (sans retour arrière)
Linux Livre Page 659 Mardi, 23. septembre 2008 1:05 13
659
RÉFÉRENCES THÉMATIQUES
Compresser et archiver des fichiers bunzip2 bzip2 cpio compress gunzip gzip mt tar uncompress unzip zip zipinfo
décompresse des fichiers compressés avec bzip2 compresse des fichiers ; plus performant que gzip archive des fichiers indépendamment du système de fichiers compresse des fichiers décompresse des fichiers compressés avec gzip compresse des fichiers ; plus performant que compress contrôle le fonctionnement d’un disque magnétique (avance, recul de bande, etc.) groupe plusieurs fichiers et répertoires dans un seul fichier décompresse des fichiers compressés avec compress décompresse une archive Zip crée une archive Zip (compatible avec Windows) affiche le contenu d’une archive Zip
Graver des CD/DVD cdrdao cdrecord dvd+rw-format dvd+rw-mediainfo genisoimage growisofs mkisofs mkudffs wodim
grave un CD en mode Disk-at-Once grave un CD ou un DVD formate un DVD+RW ou un DVD-RW affiche des informations sur un support de données optique crée une image ISO (variante à mkisofs) grave un DVD ou un disque Blue-Ray crée une image ISO crée un système de fichiers UDF (par exemple, sur un DVD-RAM) grave un CD ou un DVD (variante à cdrecord)
Convertisseurs a2ps convert convmv enscript epstopdf gs inconv mogrify mpage
convertit un fichier texte en format PostScript convertit un fichier graphique vers différents formats modifie le jeu de caractères d’un nom de fichier convertit un fichier texte en format PostScript convertit un fichier EPS en fichier PDF convertit des fichiers PostScript et PDF en format bitmap modifie le jeu de caractères d’un fichier texte modifie les paramètres d’un fichier image convertit un fichier texte en format PostScript
Linux Livre Page 660 Mardi, 23. septembre 2008 1:05 13
660
LINUX
pdf2ps pdftk pdftops pdftotext ps2pdf recode
convertit un fichier PDF en fichier PostScript manipule des fichiers PDF alternative à psd2ps transforme un document PDF en texte brut convertit un fichier PS en fichier PDF modifie le jeu de caractères d’un fichier texte
Gestion des programmes et des processus bg chroot fg fuser halt kill killall ldconfig lsof nice nohup pidof ps pstree reboot renice sudo top
passe un processus en arrière-plan (tâche de fond) démarre un interpréteur de commandes avec un répertoire racine différent passe un processus en avant-plan détermine le programme qui accède à un fichier termine Linux et éteint l’ordinateur envoie des signaux (généralement pour terminer un processus) comparable à kill, mais s’applique à des noms de processus actualise le fichier de cache de la recherche de bibliothèques affiche une liste de tous les fichiers ouverts et des processus associés démarre un programme avec une priorité modifiée démarre un processus "indestructible" affiche le numéro de processus d’un programme démarré affiche la liste des processus courants comparable à ps, mais affiche les résultats sous forme arborescente termine Linux et redémarre l’ordinateur modifie la priorité d’un processus en cours d’exécution lance un programme en tant que root affiche une liste actualisée régulièrement de tous les processus
Gestion des utilisateurs et des groupes adduser addgroup chgrp chown chsh delgroup deluser groupadd groupdel groupmod groups
crée un nouvel utilisateur (Debian) crée un nouveau groupe (Debian) modifie l’appartenance d’un fichier à un groupe modifie le propriétaire d’un fichier modifie l’interpréteur de commandes par défaut d’un utilisateur supprime un groupe (Debian) supprime un utilisateur (Debian) crée un nouveau groupe supprime un groupe modifie les propriétés d’un groupe affiche les groupes de l’utilisateur courant
Linux Livre Page 661 Mardi, 23. septembre 2008 1:05 13
661
RÉFÉRENCES THÉMATIQUES
id newgrp newusers passwd useradd userdel usermod
affiche les identifiants d’utilisateur et de groupe de l’utilisateur courant modifie le groupe courant d’un utilisateur crée plusieurs utilisateurs modifie le mot de passe d’un utilisateur ajoute un utilisateur supprime un utilisateur modifie les propriétés d’un utilisateur
Administration du système de fichiers badblocks dd df du dumpe2fs eject fdformat fdisk fsck fsck.type hdparm mdadm mkfifo mkfs mkfs.type mknod mkswap mount ntfsmount ntfs-3g pmount pumount smartctl swapoff swapon sync tune2fs
teste si le support de données contient des secteurs défectueux copie des blocs de données entre des périphériques (bas niveau) affiche l’espace libre d’un disque dur détermine la place nécessaire à un répertoire affiche des informations internes sur un système de fichiers ext éjecte un CD ou une disquette formate une disquette partitionne un disque dur répare un système de fichiers répare un système de fichiers du type indiqué modifie les paramètres du disque dur gère les partitions RAID crée un fichier FIFO (tube nommé) crée un système de fichiers crée un système de fichiers du type indiqué crée un fichier de périphérique crée un fichier ou une partition d’échange monte un système de fichiers dans l’arborescence de répertoires monte un système de fichiers NTFS dans l’arborescence de répertoires (variante 1) monte un système de fichiers NTFS dans l’arborescence de répertoires (variante 2) monte un support de données externe dans l’arborescence de répertoires démonte un support de données externe de l’arborescence de répertoires contrôle les fonctions SMART du disque dur désactive un fichier ou une partition d’échange active un fichier ou une partition d’échange effectue toutes les opérations d’écriture du tampon modifie les paramètres système d’un système de fichiers ext
Linux Livre Page 662 Mardi, 23. septembre 2008 1:05 13
662
LINUX
umount vol_id volname
démonte un système de fichiers de l’arborescence de répertoires affiche l’UUID, le nom et d’autres données d’une partition affiche le nom de volume d’un CD
Gestion de paquetages alien alternatives apt-cache apt-cdrom apt-get apt-key aptitude dpkg rpm update-alternatives yum zypper
convertit des paquetages entre différents formats ajuste les liens de /etc/alternatives (Fedora, Red Hat) affiche des informations sur les paquetages installés et disponibles ajoute un CD/DVD comme dépôt de paquetages pour APT permet de gérer des paquetages DEB récupère la clé d’un dépôt de paquetages APT permet de gérer des paquetages DEB (dés)installe ou actualise les paquetages DEB (dés)installe ou actualise les paquetages RPM ajuste les liens de /etc/alternatives permet de gérer des paquetages RPM permet de gérer des paquetages RPM (spécifique à SUSE)
Fonctions réseau ftp host hostname ifconfig ifdown ifup iptables iwconfig iwlist netstat nmap ping route rsync scp sftp smbclient ssh traceroute wget
transfère des fichiers interactivement via FTP résout les adresses IP et noms réseau affiche et modifie le nom de l’ordinateur local configure les interfaces réseau et affiche leur état désactive une interface réseau active une interface réseau configure le filtre de paquets (pare-feu) de Linux configure les interfaces réseau sans fil et affiche leur état affiche des informations sur le contrôleur et le réseau Wi-Fi affiche des informations sur l’activité réseau de l’ordinateur local affiche des informations sur l’activité réseau d’un ordinateur distant teste la connexion réseau vers un autre ordinateur modifie et affiche les tables de routage IP synchronise des répertoires réseau transfère des fichiers de manière chiffrée via SSH transfère des fichiers de manière chiffrée via SFTP transfère des fichiers vers/depuis des partages Windows permet de se connecter à d’autres ordinateurs du réseau affiche les étapes vers une adresse réseau télécharge des fichiers ou des répertoires via FTP/HTTP
Linux Livre Page 663 Mardi, 23. septembre 2008 1:05 13
663
RÉFÉRENCES THÉMATIQUES
Administration de l’imprimante lpadmin lpinfo lpoptions lpq lpr lprm lpstat
ajoute ou supprime une imprimante (CUPS) affiche des informations sur les périphériques et pilotes d’impression disponibles (CUPS) affiche les options d’une imprimante et les modifie (CUPS) affiche le contenu d’une file d’impression imprime un fichier supprime une tâche d’impression de la file affiche des informations sur les imprimantes, les tâches d’impression, etc. (CUPS)
Gestion du matériel acpi free lshal lspci lsscsi lsusb pccardctl
affiche des informations sur l’état de la batterie affiche l’espace libre de la mémoire (mémoire vive et espace d’échange) affiche des informations sur la couche d’abstraction matérielle HAL affiche des informations sur les composants PCI affiche des informations sur les périphériques SCSI connectés affiche des informations sur les périphériques USB connectés contrôle les cartes PCMCIA
Noyau et modules depmod insmod lsmod modinfo modprobe rmmod sysctl
actualise le fichier de dépendances des modules modules.dep charge un module dans le noyau affiche la liste de tous les modules chargés affiche des informations sur un module charge un module et tous les modules dont il dépend dans le noyau supprime un module du noyau modifie les paramètres du noyau
Démarrage et arrêt du système chkconfig grub invoke.rc lilo
crée des liens InitV (Red Hat, Fedora) lance l’interpréteur de commandes GRUB (par exemple, pour installer le chargeur d’amorçage) lance un script InitV (Debian, Ubuntu) installe le gestionnaire d’amorçage LILO
Linux Livre Page 664 Mardi, 23. septembre 2008 1:05 13
664
LINUX
init insserv mkinitramfs mkinitrd service shutdown update-rc.d
passe dans un autre niveau d’exécution crée des liens InitV (SUSE) crée un fichier initrd pour le gestionnaire d’amorçage (Ubuntu) crée un fichier initrd pour le gestionnaire d’amorçage lance un script InitV (Red Hat, Fedora) termine Linux crée des liens InitV (Debian, Ubuntu)
Terminal et console texte echo printf reset setfont setterm
affiche une ligne de texte permet de mettre en forme une sortie comme en C nettoie le terminal modifie la fonte du terminal modifie divers paramètres du terminal
Aide en ligne apropos help info man whatis
affiche les commandes relatives à un thème affiche la description d’une commande de l’interpréteur de commandes démarre le système info affiche la description d’une commande affiche une courte description d’une commande
Divers basename cksum date dirname dmesg expr ldd md5sum rdev sleep sum tty uname xargs
détermine le nom de fichier d’un chemin calcule la somme de contrôle CRC d’un fichier affiche la date et l’heure détermine le répertoire d’un chemin affiche les messages du noyau, en particulier pendant le démarrage exécute des calculs et des comparaisons affiche les bibliothèques nécessaires d’un programme calcule une somme de calcul d’un fichier modifie quelques bits dans le noyau attend une durée déterminée calcule la somme de contrôle d’un fichier affiche le nom du périphérique du terminal courant affiche le nom et le numéro de version du système d’exploitation transmet la sortie standard comme argument d’une autre commande
Linux Livre Page 665 Mardi, 23. septembre 2008 1:05 13
665
RÉFÉRENCES THÉMATIQUES
bash – Gestion des variables alias declare export local printenv read readonly set shift unalias unset
définit un alias/raccourci définit une variable d’environnement définit une variable d’environnement définit une variable locale à une fonction n’affiche que les variables d’environnement lit une variable affiche toutes les variables protégées en écriture affiche toutes les variables connues de l’interpréteur décale la liste de paramètres supprime un alias supprime une variable
bash – Programmation break case continue exit for function if local return source test until while
termine une boucle prématurément introduit une différenciation de cas fait l’impasse sur le reste du corps de la boucle termine le programme shell introduit une boucle définit une nouvelle fonction introduit une condition définit une variable locale à une fonction termine une fonction lance le fichier shell indiqué évalue une condition introduit une boucle introduit une boucle
bash – Commandes dirs eval popd pushd trap ulimit wait
affiche la liste des répertoires enregistrés évalue la commande indiquée passe dans le dernier répertoire enregistré enregistre le répertoire courant et passe dans un nouveau répertoire lance une commande à l’arrivée d’un signal contrôle les ressources réclamées par le shell attend la fin d’un processus en tâche de fond
Linux Livre Page 666 Mardi, 23. septembre 2008 1:05 13
Linux Livre Page 667 Mardi, 23. septembre 2008 1:05 13
B
Sources d'information Ce chapitre recense divers sites web utiles pour l'installation et la configuration des distributions Linux mentionnées dans cet ouvrage. Celles-ci sont énumérées dans l'ordre alphabétique.
Debian Site web de Debian Communauté francophone Wiki Debian Manuel d'installation
http://www.debian.org/ http://forum.debian-fr.org/ http://wiki.debian.org/ http://www.debian.org/releases/stable/installmanual
Fedora Site web de Fedora Communauté francophone Wiki Fedora Wiki Fedora francophone Manuel d'installation
http://www.fedoraproject.org/ http://www.fedora-fr.org/ https://fedoraproject.org/wiki/ http://doc.fedora-fr.org/wiki/ http://doc.fedora-fr.org/wiki/Guide_d'installation_de_Fedora_en _images
Mandriva Site web de Mandriva Communauté francophone Wiki Mandriva Manuel d'installation
http://www.mandriva.com/ http://www.mandriva.com/fr/communaute/bienvenue http://wiki.mandriva.com/ http://wiki.mandriva.com/fr/Installer_Mandriva_Linux
openSUSE Site web d'openSUSE Communauté francophone Manuel d'installation
http://www.opensuse.org/ http://fr.opensuse.org/ http://fr.opensuse.org/Documentation_utilisateurs/Installation
Linux Livre Page 668 Mardi, 23. septembre 2008 1:05 13
668
LINUX
Red Hat Site web de Red Hat Red Hat France Manuel d'installation
http://www.redhat.com http://www.redhat.fr/ http://www.redhat.com/docs/manuals/linux/ (en anglais)
SUSE Site web de SUSE
http://www.novell.com/linux/
Ubuntu et ses variantes Site web d'Ubuntu Site web de Kubuntu Site web de Xubuntu Site web d'Edubuntu Communauté francophone Manuel d'installation
http://www.ubuntu.com/ http://www.kubuntu.org/ http://www.xubuntu.org/ http://edubuntu.org/ http://www.ubuntu-fr.org/ http://doc.ubuntu-fr.org/installation
Informations généralistes Divers articles d'aide http://www.lea-linux.org Comparatif de distributions http://www.distrowatch.com Articles divers http://www.unixgarden.com
Autour du logiciel libre Actualité du logiciel libre AFUL APRIL FSF France GNU
http://www.linuxfr.org http://www.aful.org http://www.april.org http://www.fsffrance.org/ http://www.gnu.org/home.fr.html
Linux Livre Page 669 Mardi, 23. septembre 2008 1:05 13
Index Symboles $DISPLAY 220 $PATH 214 $PS1 285 . 182 .. 182 / 181 /bin 209 /boot 209 /dev 209 /dev/null 211 /dev/zero 211 /etc 209 /etc/adduser.conf 310 /etc/aliases 99 /etc/default 303 /etc/default/console-setup 306 /etc/default/rcS 307 /etc/deluser.conf 310 /etc/exports 601 /etc/fstab 423 CD 442 CIFS 449 clé USB 446 disque dur externe 446 DVD 442 exemple 423 ext3 429 LABEL 423 NFS 448 NTFS ntfs-3g 440 ntfsmount 439 pilote ntfs 438 option users 446 options 425 partition d’échange 450 reiser4 433 reiserfs 433
SMBFS 449 syntaxe 423 système de fichiers 424 UUID 423, 446 vérification du système de fichiers 425 VFAT 437 xfs 435 /etc/group 312 /etc/gshadow 316 /etc/host.conf 506 /etc/hostname 509 /etc/hosts 505 /etc/iftab 510 /etc/init.d 476 /etc/init.d/ 225 reload 226 restart 226 start 225 stop 226 /etc/init.d/network 511, 512 /etc/init.d/networking 510 /etc/localtime 308 /etc/login.defs 314 /etc/logrotate.conf 335 /etc/logrotate.d/* 335 /etc/network/interfaces 510, 524 /etc/pam.d 317 /etc/passwd 310 /etc/rc.d 476 /etc/resolv.conf 503, 506 /etc/security 317 /etc/services 562 /etc/shadow 313 /etc/skel 311 /etc/sysconfig 303 /etc/sysconfig/clock 307 /etc/sysconfig/console 306 /etc/sysconfig/i18n 305 /etc/sysconfig/keyboard 305
/etc/sysconfig/network 508, 509, 512 /etc/sysconfig/network/ config 526 /etc/sysconfig/networkscripts 511 /etc/syslog.conf 334 /etc/timezone 307 /home 182, 209 /lib 209 /lib/firmware 519 /lost+found 209 /media 209 /mnt 209 /opt 209 /proc 209 /proc/acpi 326 /proc/apm 327 /proc/asound 331 /proc/net/wireless 523 /root 182, 209 /sbin 210 /sbin/setsysfont 305 /share 210 /srv 210 /sys 210 /tmp 210 /usr 210 sous-répertoires 210 /var 210 /var/adm/log 334 /var/log 334
Numériques 32 et 64 bits 26 3D 387 bureau 389 tester 388 802.11x (standards) 513
Linux Livre Page 670 Mardi, 23. septembre 2008 1:05 13
670
LINUX
A AAC 161 abiword 134 AC-3 161 ACL ACL standard 208 commandes, référence 657 getfacl 207 masques 208 prérequis 206 setfacl 207 ACPI 326, 473 acpid 326 addgroup 309 adduser 309 Administation 301 Adobe Flash Player 90 Adobe Reader 89 Adresse IP 495, 496 MAC 495 ADSL 531 box 544 ip-down-local 576 ip-up.local 576 PPP 533 pppd 537 pppeoconf 533,534 PPPoA 537 PPPoE 537 PPTP 538 pptpconfig 538 protocole 537 routeur 544 type de modem 533 Aide 41, 178 applications 48 commandes, référence 664 documentation 48 en français 50 forums 49 groupes de discussion 41, 49 help 178 info 49, 178, 179 Linux Documentation Project 49
man 49, 178 paquetages 49 wikis 49 AIGLX 391, 392 comparaison avec XGL 392 configuration 392 prise en charge des pilotes graphiques 391 alacarte 54 alias 288 alien 355 alsactl 331 alsamixer 331 Amarok 164 Amorçage journalisation 335 options du noyau 472 aplay 331 APM 327, 473 Appareils photo numériques 136 photo PTP 136 AppArmor 39 Applet, Java 92 APT 349 affichage d’informations 351 apt-cache 351 apt-get 349 aptitude 354 configuration 350 dépôts 350 sur CD 350 installation de paquetages 351 mise à jour 351 automatique 352 paquetages de code source 351 suppression 351 Synaptic 352 apt-cache 351 apt-get 349 installation 351 mise à jour 351 paquetages de code source 351 suppression 351
aptitude, ligne de commande 354 arborescence 181, 209, 403 /bin 209 /boot 209 /dev 209 /etc 209 /home 209 /lib 209 /lost+found 209 /media 209 /mnt 209 /opt 209 /proc 209 /root 209 /sbin 210 /share 210 /srv 210 /sys 210 /tmp 210 /usr 210 /var 210 ajouter un système de fichiers 403 déplacement dans 182 racine 181 Architectures 325 32 et 64 bits 26 Archive 194 Ark 76 commandes, référence 659 file-roller 63 tar 195 unzip 196 zip 195 arecord 331 Ark 76 Arrêt 47 du système, commandes, référence 663 aRts 332 aRtsd 332 ASCII 319 ATA 404 ATAPI 404 Atheros 519 athn (interface) 521
Linux Livre Page 671 Mardi, 23. septembre 2008 1:05 13
671
INDEX
ATSC A/52 161 Attribut étendu 206 getfattr 208 prérequis 206 setfattr 208 Audio 157 lecteurs 157 audiofile 234 aufs 420 autofs 419 autofs4 419 Avahi 528
B Banshee 165 baobab 63, 185 Base (OpenOffice) 130 bash 283 $HOME 299 $MAIL 299 $PATH 214, 299 $PS1 285, 299 $PWD 299 alias 288 bash_completion 287 calcul arithmétique 294 caractère joker 185, 293 commandes, référence 665 complètement 286 avancé 287 automatique 175 configuration du clavier 284 construction de chaînes avec {} 294 invite de commande 285 mécanismes de substitution 293 résumé 296 programmation, commandes, référence 665 raccourcis clavier 174, 287 redirections résumé 291
Voir Redirection substitution de commandes 294 succession de commandes 292 tâche de fond 291 tee 290 ulimit 217 variables 297 commandes, référence 665 importantes 299 locales et globales 298 Batterie (portable) 326 Beagle 192 beagle-query 193 expressions de recherche 193 gnome-beagle-search 193 kerry 193 ligne de commande 193 beagle-query 193 bg 214 BitTorrent 248 clients 248 Bluetooth 330 BMP (format) 151 bogofilter 95 bootloader 459 Brasero 63 Brevet logiciel 21 bunzip2 195 Bureau Gnome 52 KDE 68 Bureau 3D 358, 389 AIGLX 391, 392 Compiz Fusion 393 fonctions 389 prérequis 391 raccourcis clavier 390 XGL 391 Bureau virtuel 358 bzip2 195
C Cache web 577 Calc (OpenOffice) 126 Captive 440 Caractère accentué, nom de fichier 181 étranger gucharmap 395 kcharselect 395 saisie 48, 380, 395 joker 185 problème 186 CardBus (PCMCIA) 329 Carte graphique, pilotes 360 CD /etc/fstab 442 audio 443 éjection 442 erreur 442 ISO 9660 441 lecteur nom de périphérique 441 magicdev 445 montage 442 supermount 445 UDF 441 cd 182 CD audio 162 extraction 163, 233 gravure avec Serpentine 63 lecture 162 CD et DVD gravure Voir Gravure cdcd 164 cdda2wav 233 CDDB 162 cdparanoia 233 cdrdao 199 cdrecord 199 Cedega 622 Changement d’utilisateur 46 Gnome 52 KDE 68
Linux Livre Page 672 Mardi, 23. septembre 2008 1:05 13
672
LINUX
Character set 319 Chargeur d’amorçage 459 démarrage du noyau 460 installation 40 chat 536 chgrp 203 Chiffrement (e-mails) 100 chkconfig 227, 478 chmod 202, 204 valeurs octales 204 chroot 644 CIFS 418, 448, 606 mount 448 utilisateur sans privilèges 449 Clavier Compose 380 exemples 381 configuration 305 console texte 305 disposition 379 Gnome 65 gnome-keyboardproperties 381 modèle 378 nodeadkeys 305 nombre de touches 28 problème 42, 43 QWERTY 42 raccourcis 47 touches de contrôle 381 spéciales 379 VerrMaj 380 VerrNum 379 xmodmap 380 Clé 101 privée 101 publique 101 Clé USB 443 etc/fstab 446 branchement à chaud 444 configuration 444 D-BUS 444 démonter 446 GRUB 470 hald 444 ivman 444
monter 445 performances 444 pmount 446 super-floppy 445 udev 444 Client réseau configuration 544, 553 Debian 553 dhcpcd 553 Fedora 553 network-admin 553 Red Hat 553 SUSE 553 system-confignetwork 553 Ubuntu 553 redémarrage 554 coda 418 Codec 158 CodeWeavers 621 CrossOver 621 Commande, en tâche de fond 175 Compiz Fusion 393 configuration 393 gtk-window-decorator 393 kde-window-decorator 393 Compression 194 Ark 76 bunzip2 195 bzip2 195 commandes, référence 659 file-roller 63 gunzip 194 gzip 194 unzip 196 zip 195 Compte courrier électronique 96 e-mail 96 cone 95, 99 Configuration 301 clavier (console texte) 305 console texte 304 créer un utilisateur 308 fuseau horaire 307 LAN 493
mot de passe 314 police 305 réseau 493 souris 306 Configuration d’un client réseau 493 Configuration des langues 318 Connexion automatique 46, 63, 77 bureau 45 en mode texte 46 Gnome 52 KDE 68 langue 45 root 45 Connexion automatique Gnome 63 KDE 77 Console 173 déconnexion 173 fenêtre 174 Voir Terminal lancer des commandes 175 paquetage 306 passage en root 175 raccourcis 174 souris 175 Console texte 173 clavier 305 commandes, référence 664 configuration 304 connexion 173 déconnexion 173 gpm 175 nombre 173 passage entre les consoles 173 police 305 raccourcis clavier 174 souris 306 console.apps 317 console.perms 317 consolehelper 220 Contrôle parental 577 DansGuardian 582 Contrôleur Ethernet configuration 500
Linux Livre Page 673 Mardi, 23. septembre 2008 1:05 13
673
INDEX
Convertisseur 231 audio et vidéo 232 audiofile 234 CD audio 233 cdda2wav 233 cdparanoia 233 commandes, référence 659 convmv 235 documents 235 données EXIF 232 dos2unix 234 EMF 232 ffmpeg 234 FLAC 234 graphique 231 iconv 234 Image Magick 231 lame 233 librsvg 232 libtiff 232 libwmf 232 MP3 233 Netpbm 232 noms de fichiers 235 OGG 233 oggenc 233 PDF 235 PostScript 235 RAW 232 recode 234 SVG 232 texte 234 TIFF 232 unix2dos 234 WMF 232 convmv 235 Cookies 83 Copier-coller 48 Courrier électronique 95 chiffrement 100 compte 96 Evolution 110 Kontact 115 local 98
MIME 97 signature 97, 100 Thunderbird 103 cp 184 CPU 325 cpufreq 325 cramfs 419 cron 227 /etc/crontab 227 /var/spool/cron 227 configuration 227 modification de la configuration 228 crontab 227 syntaxe 228 CrossOver 621 cxinstallwizard 622 installation 622 de programmes 622 CrossOver Office 134 CSS (Content Scrambling System) 159 CUPS 587 administration 593 web 592 cupsd.conf 592 ajouter une imprimante 594 configuration 589 d'une imprimante 595 contrôle d'accès 590 cupsd.conf 589 cupsomatic 596 environnement interactif 594 fichiers PPD 596 gestion de la file 593 HPLIP 594 imprimante réseau client 598 serveur 597 imprimer 593 informations 594 IPP 599 lpadmin 594
lpc 594 lpinfo 594 lpoptions 594 lpq 593 lpr 588, 593 lprm 593 lpstat 594 PPD 596 redémarrer 590 supprimer une imprimante 594 TCP Wrapper 592 URI 600 cupsd.conf 589 administration web 592 contrôle d'accès 590 paremètres de base 590 cxinstallwizard 622
D Damn Small Linux 14 DansGuardian 582 configuration 583 de Squid 585 dansguardian.conf 583 dansguardianf1.conf 583 filtre transparent 585 installation 583 personnalisation des règles 584 Date 307 D-BUS 444 dbus-daemon 330 dd 199 DDC 359 Debian 11, 667 Firefox 80 Décodeur 158 Déconnexion 46 Gnome 52 KDE 68 mode texte 47 delgroup 309
Linux Livre Page 674 Mardi, 23. septembre 2008 1:05 13
674
LINUX
deluser 309 Démarrage 45 automatique 64 KDE 78 bureau 45 connexion automatique 46 langue 45 mode texte 46 Démarrage du système 459 commandes, référence 663 initrd 461 InitV 474 mode graphique 475 texte 475 modules du noyau 460 noyau 460 options d’amorçage du noyau 472 processus 474 Démon 223 arrêt manuel 226 arrêter 477, 478 cron 227 démarrage automatique 226 manuel 225 démarrer 477, 478 rechargement 226 redémarrage 226 suppression du démarrage automatique 227 depmod 485 devices.map 464 Devil Linux 14 devpts 418 df 184, 421 dhcdbd 553 dhclient 504, 553 dhclient.conf 553 DHCP 496, 504, 541, 548, 554 adresse MAC 549 avantages 548 configuration des clients 544, 553 dhcpd 554 dnsmasq 550
fonctionnement interne 549 nom d’hôte des clients 549 dhcpcd 504, 554 dhcpd 554 adresses statiques 555 arrêt 554 configuration 555 minimale 555 démarrage 554 dhcpd.conf 555 journalisation 556 noms d’hôtes 555 redémarrage 554 dhcpd.conf 555 digiKam 143 disque dur 402 ATA 404 cache d’écriture 455 économies d’énergie 456 espace 184 externe 443 /etc/fstab 446 branchement à chaud 444 configuration 444 D-BUS 444 démonter 446 fonctionnement manuel 445 GRUB 471 hald 444 ivman 444 monter 445 nom de périphérique 445 performances 444 pmount 446 subfs 445 submount 445 super-floppy 445 udev 444 UUID 446 hdparm 455 IDE 404 pilote 404 MBR 459 nomenclature 405 libata 405 pilote SCSI 405 nomenclature dans GRUB 464
occupation avec baobab 63 occupation avec KDE 73 optimiser 455 paramètres 455 partitionnement Voir Partitionnement PATA 404 performances 455 pilote 404 IDE 404 libata 404 SCSI 404 SATA 404 SCSI 404 SMART 456 surveillance 456 Disquette 443 d’amorçage 469 formatage 443 GRUB 469 magicdev 445 mtools 443 supermount 445 Distribution 8 64 bits 26 commerciale 10 critères de choix 8, 11 disponibilité des mises à jour 9 histoire 21 minimale 14 dmesg 334, 335, 502 DMZ 566 DNS 496, 541, 549 configuration des clients 506, 544, 553 dnsmasq 550, 551 serveur local avec dnsmasq 551 dnsmasq 550 /etc/hosts 550 adresses statiques 552 arrêter 551 configuration des clients 553 configuration minimale 551 démarrer 551 DNS 551
Linux Livre Page 675 Mardi, 23. septembre 2008 1:05 13
675
INDEX
DNS pour l’ordinateur local 552 dnsmasq.conf 550 journalisation 553 noms d’hôtes 552 redémarrer 551 serveur de noms 551 Documentation 48 applications 48 en français 50 forums 49 groupes de discussion 49 info 49 Linux Documentation Project 49 man 49 paquetages 49 wikis 49 Dolphin 71 barres complémentaires 72 répertoire réseau 72 supports de données 72 vues 71 dos2unix 234 dpkg 348 APT 348 installation 349 suppression 349 syntaxe 349 DRI 387 droits d’accès 388 DRM 22, 159 Droit d’accès 202, 308 ACL 206 Voir ACL affichage 183 attributs étendus Voir Attribut étendu bits d’accès 202 setgid 204 setuid 203
spéciaux 203 chgrp 203 chmod 202, 204 erreur dans les bits spéciaux 204 groupe 202 Konqueror 73 lire 202 ls 202 modification 202, 204 du groupe 203 Nautilus 58 NTFS 436 prédéfinition 205 propriétaire 202 sticky bit 204 sur périphérique 203 sur répertoire 203 umask 205 du 185 DVB 170 dvb-apps 170 dvbscan 170 dvb-util 170 DVD /etc/fstab 442 chiffrement 22 éjection 442 erreur 442 formatage 201 informations 201 ISO 9660 441 lecteur nom de périphérique 441 magicdev 445 montage 442 supermount 445 UDF 441 vidéo 443 lecture 163 dvd+rw-format 201 dvd+rw-mediainfo 201 dvd+rw-tools 200
E e2label 431 EA commandes, référence 657 Voir Attribut étendu eBox 302 Économie d’énergie 326 Écran Voir Moniteur Écran virtuel 357 Éditeur de texte 176 Elvis 176 Emacs 176, 263 gedit 63 Jed 176 Jmacs 176 Joe 177 Jove 176 Kate 77 KEdit 77 KWrite 77 nano 177 par défaut 178 pico 177 Vi 176, 251 Vim 176, 251 Edubuntu 668 efs 417 Ekiga 79 El-Torito 441 Emacs 263 abréviations 273 caractères spéciaux 281 casse 270 chargement de fichier 264 conventions du clavier 267 copies de sauvegarde 265 correction des fautes de frappe 270 démarrage 264
Linux Livre Page 676 Mardi, 23. septembre 2008 1:05 13
676
LINUX
Emacs (suite) déplacement du curseur 265, 268 écrasement de texte 270 enregistrement 264 de la position du curseur 268 espaces et tabulations 270 fenêtre 276 indentation 271 dans du texte continu 272 insertion de texte 270 marquage de texte 269 mise en évidence de la syntaxe 278 mode d’édition 266, 277 exemples 278 de saisie 281 info 266 majeur 277 mineur 277 texte 273 quitter 264 recherche de texte 273 expressions rationnelles 274 incrémentale 273 recherche et remplacement de texte 275 souris 267 suppression de texte 269 système d’aide 266 taille des tabulations 271 tampon 276 texte continu 272 Unicode 278 sous Gnu EMACS 279 sous Xemacs 279 E-mail 95 chiffrement 100 compte 96 Evolution 110 Kontact 115 local 98 MIME 97 signature 97, 100 Thunderbird 103
Émulation 624 Encapsulated PostScript 152 Encodeur 158 env 323 esd 332 EsounD 332 Espace disponible 421 ethtool 502 evince 63, 588 Evolution 110 synchronisation avec un PDA 114 EXIF 141, 144 exim 95 Explore2fs 432 exportfs 602 exports 601 ext 416, 428 ext2 35, 428 conversion vers ext3 430 ext2online 432 ext3 35, 428 /etc/fstab 429 accès depuis Windows 432 conversion depuis ext2 430 création d’un système de fichiers 429 e2label 431 Explore2fs 432 ext2online 432 fragmentation 432 fsck.ext3 431 journalisation 429 méthodes 429 mke2fs 429 nom de la partition 431 paramètres avancés 431 pilote ext sous Windows 433 redimensionnement 431 resize2fs 431 tune2fs 431 UUID 431 vérification du système de fichiers 430 intervalle 431 ext4 35, 428 Extracteur de CD audio 163
F faillog 315 fast-user-switch-applet 52 FAT 435 fdisk 410, 445 augmentation de la taille d’une partition 411 création d’une nouvelle partition 410 enregistrement des modifications 410 exemple d’utilisation 411 identifiant de partition 410 nom des périphériques 445 raccourcis clavier 413 Fedora 11, 667 disponibilité des mises à jour 9 droits d’accès PAM 317 Fenêtre de console 174 Voir Terminal fetchmail 95 ffmpeg 234 fg 214 Fichier accès d’un processus 216 affichage des droits d’accès 183 arborescence 181 archive 194 bits setgid 204 setuid 203 spéciaux 203 caché 181 caractères accentués 181 joker pour les noms 185 casse 181 chgrp 203 chmod 202, 204 compression 194 copie 184 déplacement 183 droits d’accès 202
Linux Livre Page 677 Mardi, 23. septembre 2008 1:05 13
677
INDEX
espaces 181 exécutable 213 fuser 216 gestion 182 Voir Gestion des fichiers et répertoires groupe 202 lien 188 dur 188 limite du nombre de caractères dans le nom 181 liste 183 modification des droits d’accès 204 du groupe 203 périphérique 211 propriétaire 202 recherche 189 avec Nautilus 58 renommage 183, 187 avec KRename 77 avec sed 187 suppression 184 avec Konqueror 73 avec Nautilus 59 transfert avec BitTottent 248 avec FTP 243 avec scp 241 par rsync 247 par SFTP 246 par wget 246 type 183 Fichier caché 181, 187 affichage dans Gnome 58 dans Konqueror 73 Fichier, commandes, référence 657 Fichier d’échange 450 création 451 Fichier journaux 334 Fichier image 643 à partir d’une partition 644 accès au système de fichier 644
création 643 échanges 644 monter 644 QEMU 643 RAW 643 redimensionner 644 swap 644 système de fichiers 643 Fichier ISO dd 199 génération 198 mkisofs 198 montage 199 Nautilus 60 test 199 Fichier texte affichage 176 commandes, référence 658 éditer 176 file-roller 63 Filtrage web DansGuardian 582 Squid 577 Filtre de paquets 560 find 191 combiner avec grep 192 exemples 191 Firefox 79 MIME 84 plugins 88 XPI 85 xulrunner 85 Firewire 328 flac 234 FlashBlock 92 Fluendo 159 Fonctions d’économie d’énergie 326 Font 321 Format maildir 100 Format mbox 99 Formatage 30 framebuffer 377 free 326
freedb 162 Fréquence d’horloge 325 fsck.ext3 431 fsck.reiser4 434 fsck.reiserfs 434 F-Spot 145 fstab Voir /etc/fstab fsview 73 FTP 243 accès avec Nautilus 60 clients 245 commandes 245 ftp 244 exemple de session 244 Konqueror 74 FUSE 419 ntfsmount 438 Fuseau horaire 39, 307 glibc 308 fuser 216
G gaim 79 gconf-editor 64 gdmsetup 64 gedit 63 Gentoo 12 Gestion de bases de données (Base) 130 Gestion de l’énergie 326 Gestion des fichiers commande, référence 657 Gestion des fichiers et répertoires 182 archive Voir Archive cd 182 compression Voir Compression copie de fichier 184 de répertoire 184
Linux Livre Page 678 Mardi, 23. septembre 2008 1:05 13
678
LINUX
Gestion des fichiers et répertoires (suite) cp 184 création d’un répertoire 183 déplacement d’un fichier 183 d’un répertoire 183 dans l’arborescence 182 df 184 du 185 espace disque 184 lien 188 liste des fichiers 183 ln 188 ls 183 mkdir 183 mv 183 recherche de fichiers Voir Recherche de fichiers renommage d’un fichier 183 d’un répertoire 183 rm 184 rmdir 183 sauvegarde 196 suppression d’un répertoire 183 de fichier 184 de répertoire 184 Gestion des processus commandes, référence 660 Gestion des utilisateurs et groupes commandes, référence 660 Gestionnaire d’amorçage xfs 434 Gestionnaire de bureau 51, 358 Gestionnaire de fenêtres 358 KWin 70 Gestionnaire de fichiers Dolphin 71 Gnome 56 Konqueror 72 Nautilus 56 getfacl 207 getfattr 208 GFS 419
ggv 588 GhostScript 589 filtre 589 ghostview 588 GID 311 GIF (format) 151 Gimp 149 EPS 152 impression 154 PostScript 152 Gimp-Print 589 GimpShop 150 gksu 220 gksudo 221 glibc fuseau horaire 308 GLX 387 glxgears 389 glxinfo 388 GMT (Greenwich Mean Time) 307 gnash 92 Gnome 51 alacarte 54 applet 54 liste des fenêtres 55 menu 54 zone de notification 55 baobab 63 Brasero 63 bureau 52 applet 54 espace de travail 55 liste des fenêtres 55 menu 54 tableau de bord 53 zone de notification 55 zone de travail 53 changement d’utilisateur 52 clavier 65 client Samba 606 comparaison avec KDE 51 configuration 62, 64 connexion 52 automatique 63 déconnexion 52 démarrage automatique 64 espace de travail 55
evince 63, 588 fast-user-switch-applet 52 file-roller 63 gconf-editor 64 gdmsetup 64 gedit 63 gestionnaire de fichiers 56 GnomeBaker 63 gnome-beagle-search 193 gnome-control-center 62 gnome-cups-manager 595 gnome-help 178, 179 gnome-keybindingsproperties 65 gnome-keyboardproperties 65, 381 gnome-search-tool 58 gnome-terminal 62 gnome-volumeproperties 444 gparted 415 gtk-window-decorator 393 gucharmap 48, 395 impression 595 info 179 installation de polices 398 liste des fenêtres 55 man 178 menu 54 Nautilus Voir Nautilus programmes par défaut 64 raccourcis clavier 48, 65 recherche de fichier 58 seahorse 63 Serpentine 63 surveillance du système 65 tableau de bord 53 terminal 62 zone de notification 55 zone de travail 53 Gnome Office 134 GnomeBaker 63 gnome-beagle-search 193 gnome-cd 162 gnome-control-center 62 gnome-cups-manager 595
Linux Livre Page 679 Mardi, 23. septembre 2008 1:05 13
679
INDEX
gnome-help 178, 179 gnome-keybindingsproperties 65 gnome-keyboardproperties 65 gnome-language-selector 321 gnome-photo-printer 136 gnome-pilot 114 gnome-ppp 531 gnome-search-tool 58 gnome-system-monitor 215 gnome-system-tools 309 gnome-terminal 62, 174 gnome-volume-manager 330 gnome-volume-properties 444 GNU 20 GNU Emacs Voir Emacs 263 gnumeric 134 Google Desktop 193 gparted 415 GParted Live 408 gpasswd 316 GPG 102 Kgpg 77 gphoto2 136 GPL 18, 20 versions 18 gpm 175, 306 Graphismes 3D 387 bureau 389 tester 388 Gravure 197 Brasero 63 CD 199 cdrdao 199 cdrecord 199 commandes, référence 659 dd 199 DVD 200 dvd+rw-format 201 dvd+rw-mediainfo 201 dvd+rw-tools 200 extension Joliet 198
extension RockRidge 198 génération d’un fichier ISO 198 GnomeBaker 63 growisofs 200 identifiant SCSI du graveur 197 K3b 77 mkisofs 198 Nautilus 60 nom du périphérique 197 Serpentine 63 wodim 199 grep 192 combiner avec find 192 groupadd 310 Groupes 312 administration 309 affichage 205 changement 205 commandes, référence 660 groups 205 mot de passe 316 newgrp 205 groups 205 growisofs 200 GRUB 459 actualisation automatique de la configuration 463 aide 462 color 465 commandes interactives 462 complétement automatique 462 configuration 461, 463 tester 468 couleur 465 default 465 démarrer Linux 466 Windows 467 devices.map 464
fallback 465 fichiers de configuration 463 gfxmenu 465 grub.conf 463 hiddenmenu 465 image de démarrage 465 installation 468 sur un disque USB 470 sur une disquette 469 ligne de commande 462 menu dysfonctionnement 471 modifier 462 pas d’affichage 471 menu.lst 462, 463, 464 mot de passe 465 nomenclature des disques et partitions 464 nouveau noyau 490 options du noyau 462, 467 paramètres du noyau 460 password 465 plantage 471 problèmes 471 réinstallation 468 splashimage 465 stage1 460 stage1_5 460 stage2 460 structure 460 test 468 timeout 465 update-grub 463 USB 470 utilisation 461 versions 459 Xen 645 xfs 434 grub.conf 463 GStreamer 332 gThumb 139 gtk-window-decorator 393 gucharmap 48, 395 gunzip 194 Gutenprint 589
Linux Livre Page 680 Mardi, 23. septembre 2008 1:05 13
680
LINUX
gv 588 gvim Voir vim gzip 194
H hald 329, 444 hal-device-manager 325 hdparm 455 Helix Player 166 help 178 Heure 307 HFS 417 HFS+ 417 Hibernate 326 hostname 508 hosts.allow 563 NFS 602 hosts.deny 563 NFS 602 Hotplug 329 HPFS 417 HPLIP 594 hp-toolbox 594 hwbrowser 325 hwclock 307
I i.Link 328 i18n 319 Iceweasel 80 ICMP 494, 560 iconv 234 ID3 160 IDE 404 lecteur de bandes 333 pilote 404 IEEE 1394 328 ifcfg 511 ifconfig 237, 501 ifrenew 512 iftab 510 ifup 512
Image Magick 231 convert 231 identify 232 mogrify 231 IMAP 97 Impress (OpenOffice) 127 Impression chaîne 589 compatibilité 597 HP LaserJet 597 configuration d'une imprimante 595 manuelle 596 CUPS 587 détection automatique 596 fichier PostScript 588 PPD 596 filtre 589 de documents 589 gestion de la file 593 GhostScript 589 Gimp-Print 589 gnome-cups-manager 595 Gutenprint 589 HPLIP 594 hp-toolbox 594 imprimante à jet d'encre 595 GDI 595 laser 595 compatibilité HP 597 locale 596 PCL 595 photo 595 PostScript 595 réseau 597, 598 AppSocket 598 cupsd.conf 597 IPP 598, 599 Linux/Unix 598 LPD 599 Novell 598 SMB 599 socket 598, 599 Windows 598 Windows 595 informations 594 KDE 75
kprinter 75 lpadmin 594 lpc 594 lpinfo 594 lpoptions 594 lpq 593 lpr 588, 593 lprm 593 lpstat 594 périphérique 588 pilote 595, 597 Samba 615 PostScript 588 Samba 615 system-config-printer 595 système d'impression 588 TurboPrint 595 Imprimante, commandes, référence 663 Inbox 98 info 178, 179 Emacs 179 Gnome 179 KDE 179 raccourcis clavier 179 init 474 /etc/init.d 477 /etc/rc.d 477 chkconfig 478 Debian 477 Fedora 478 gestion 478, 479 inittab 474 insserv 479 invoke-rc.d 477 niveau d’exécution 474 Red Hat 478 script rc arrêter 477, 478 démarrer 477, 478 nomenclature 477 paramètres 477 scripts rc 477 service 478 SUSE 478 update-rc.d 478
Linux Livre Page 681 Mardi, 23. septembre 2008 1:05 13
681
INDEX
initrd 461, 484, 490 contenu 491 créer un fichier 490 mkinitramfs 491 mkinitrd 491 inittab 474, 475 bootwait 476 ctrlatltdel 476 initdefault 476 once 476 respawn 476 sysinit 476 wait 476 InitV 474 /etc/init.d 477 /etc/rc.d 477 chkconfig 478 Debian 477 Fedora 478 gestion 478, 479 inittab 475 insserv 479 invoke-rc.d 477 iptables 576 journalisation 337 niveau d’exécution 474 Red Hat 478 scripts 476 rc 477 arrêter 477, 478 démarrer 477, 478 nomenclature 477 paramètres 477 service 478 SUSE 478 update-rc.d 478 Xen 656 Inkscape 150 insmod 482 insserv 227, 479 Installation 25 AppArmor 39 chargeur d’amorçage 40 choix des systèmes de fichiers 35
clavier 28 configuration d’un réseau Wi-Fi 38 de base 37 de l’accès à Internet 39 du mode graphique 39 du réseau 38 création des utilisateurs 37 démarrage 27 émulation du 3e bouton 28 fuseau horaire 39 Gnome et KDE 37 langue 39 LVM 35 messages du noyau 28 mises à jour 39 mot de passe root 37 outils de développement 37 paquetages 36 par le réseau 41 pare-feu 39 partition d’amorçage 33 d’échanges 34, 35 de données 34 système 33 partitionnement 31 nombre de partitions 33 premiers paramètres 27 prérequis 25 problème 41 RAID 35 réduction de la partition Windows 32 SELinux 39 services réseau 37 souris 28 sur un disque dur externe 40 système de fichiers 30, 35 taille des partitions 35 Interface 495 réseau 495 ifconfig 237 liste 237 Internationalisation 318
Internet 531 ADSL 531 bases 493 iptables 576 modem 531 passerelle 543 RNIS 531 sécurité 557 Internet Explorer 620 ies4linux 620 sous Wine 620 invoke.rc 225 reload 226 restart 226 start 225 stop 226 invoke-rc.d 477 IP 559 adresse 495, 496, 559 conflit d’adresse 545 filtre de paquets 560 ICMP 560 ports 559 dangereux 574 privée 545 protocole 560 TCP 560 UDP 560 valide sur le réseau mondial 545 iptables 567 blocage de ports dangereux 574 bloquer les connexions externes 571 chaîne 569 forward 569 input 569 output 569 postrouting 569 prerouting 569 DHCP 572 exceptions pour Squid 581 fonctionnement 569 InitV 576
Linux Livre Page 682 Mardi, 23. septembre 2008 1:05 13
682
LINUX
iptables (suite) Internet 576 journalisation 575 mascarade 546 noyau 547 ordre des règles 570 passerelle Internet 573 PPP 576 PPTP 572 remise à zéro 569 sécuriser un client sansfil 571 sécuriser un client VPN 572 serveur mandataire transparent 581 services 573 table 568 filter 569 mangle 569 NAT 569 IPv6 499 IRC 79 ISO 9600 441 ISO 9660 417 El-Torito 441 Joliet 441 Rockridge 441 ISO-10646 (jeu de caractères) 319 ISO-8859, jeu de caractères 319 Istanbul 162 ivman 444 iwlist 524
J Java, plugins 92 Jeu Cedega 622 de caractères 318, 319 jffs 419 jfs 417 Joe 177 raccourcis clavier 177 Joliet 198, 441
Journalisation 334,558 amorçage 335 iptables 575 système de fichiers 426 JPEG (format) 151
K K3b 77 kacpid 326 kapmd 327 Kate 77 KAudioCreator 165 KCharMap 48 kcharselect 395 kcmshell 75, 77 KDE 67 administration distante 78 Ark 76 boîte à miniatures 71 bureau 68 changement d’utilisateur 68 client Samba 606 comparaison avec Gnome 51 configuration 75, 78 connexion 68 automatique 77 déconnexion 68 démarrage automatique 78 Dolphin Voir Dolphin espaces de travail 70 fsview 73 gestionnaire de fenêtres 70 de fichiers 71 gravure 77 icône de connexion 78 impression 75, 595 info 179 installation de polices 398 K3b 77 Kate 77 KCharMap 48 kcharselect 395 kcmshell 75, 77 kde-window-decorator 393
KEdit 77 kerry 193 kghostview 588 Kgpg 77 khelpcenter 178, 179 Klipper 77 kmenuedit 78 Konqueror Voir Konqueror konsole 76 KPDF 588 kprinter 75 KRename 77 KWalletManager 76 KWin 70 KWrite 77 liste des tâches 70 man 178 menu 69 Okular 77, 588 Plasma 69 plasmoïdes 69 programmes par défaut 78 qtparted 415 raccourcis clavier 48, 78 renommage de fichiers 77 souris 67 supports de données 71 systemsettings 75 tableau de bord 69 terminal 76 version 4.0 67 zone de travail 69 kdesu 220 kde-window-decorator 393 KEdit 77 kerry 193 kghostview 588 Kgpg 77 khelpcenter 178, 179 kill 217 killall 217 KimDaBa 146 kioslave 330 KIPI 144, 146 Klipper 77 klogd 334
Linux Livre Page 683 Mardi, 23. septembre 2008 1:05 13
683
INDEX
KMail 115 kmenuedit 78 kmod 481 Knoppix 12 KOffice 134 kolourpaint 150 Konqueror 72, 86 adresses spéciales 74 afficher les fichiers cachés 73 droits d’accès 73 extensions 87 FTP 74 gestionnaire de fichiers 72 images d’aperçu 73 Java 87 navigateur web 74 occupation du disque dur 73 partage Windows 74 SSH 74 suppression de fichier 73 vues 72 konsole 76, 174 Kontact 115 Konversation 79 Kopete 79 KPDF 588 KPhotoAlbum 146 kppp 532 kprinter 75 KQEMU 634 KRename 77 krita 150 ksysguard 215 Kubuntu 668 KVM 632, 635 modules noyau 635 KWalletManager 76 KWin 70 KWrite 77
L l10n 319 lame 160, 233
LAN 493 LANG 322 Langue 39 problème 44 LC_ALL 322 LC_COLLATE 322 LC_CTYPE 322 LC_MESSAGES 322 LC_MONETARY 322 LC_NUMERIC 322 LC_PAPER 322 LC_TIME 322 Lecteur CD/DVD ATAPI 404 éjection 442 erreur 442 nom de périphérique 441 nomenclature 406 virtualisation 625 Lecteurs de bandes 333 Lecture de CD audio 162 Lecture de DVD vidéo 163 less 176 raccourcis clavier 176 LGPL 18 libata 404 nomenclature des disques durs 405 libdbus 329 libmad 164 libogg 164 librsvg 232 libtiff 232 libvorbis 164 libwmf 232 Licence 17 autres licences libres 19 conflit avec les logiciels propriétaires 19 GPL 18 LGPL 18
Lien 188 différence entre lien symbolique et lien dur 188 dur 188 exemple 188 symbolique 188 LILO 461 xfs 434 Linux adaptation au multimedia 16 arrêt 47 complexité 16 configuration 301 coût 16 démarrage 45, 459 distributions 8 histoire 20 installation 25 noyau 6 prise en charge du matériel 7 programmes Windows 17 rapidité 14 ressources nécessaires 15 sécurité 15 stabilité 16 versions 6 Liste de contrôle d’accès Voir ACL ln 188 loadkeys 305 locale 323 localhost 494, 505 Localisation 318 locate 190 base de données 190 updatedb 190 Logiciel libre 668 mises à jour 558 logrotate 335 loop 419 loopback (interface) 495, 498
Linux Livre Page 684 Mardi, 23. septembre 2008 1:05 13
684
LINUX
lpadmin 594 lpc 594 lpinfo 594 lpoptions 594 lpq 593 lpr 588, 593 lprm 593 lpstat 594 ls 183 bits spéciaux 204 droits d’accès 183 résultats 183 lshal 325 lshw 325 lsmod 483 lsof 560 lspci 328 lsusb 328 lvcreate 454 lvextend 454 LVM 451 arrêt 454 avantages 451 configuration 453 création d’un système de fichiers 454 extension physique 453 groupe de volumes 452 création 453 identifiant de partition 453 inconvénients 451 initialisation 453 LV 452 création 454 lvcreate 454 lvextend 454 lvreduce 455 mise en place 453 partition système 452 PD 453 PE 453 périphérique physique 453 PV 452 création 453
pvcreate 453 redimensionnement 454 versions 452 VG 452 création 453 vgchange 454 vgcreate 453 volume logique 452 création 454 volume physique 452 création 453 lvreduce 455 lynx 88
M M3U 161 MAC 549 MAC (adresse) 495 Machine virtuelle 624 Macromedia Flash 90 madplayer 164 MadWifi 519 magicdev 445 mail 99 maildir, format 100 man 178 contextes 178 Gnome 178 KDE 178 Konqueror 179 Manchot 21 Mandriva 12, 667 Mascarade 541, 545 activation automatique 547 désactivation automatique 547 désactiver 547 FTP 548, 574 iptables 546 principes 545 problèmes 547 Masque de sous-réseau 495 Master Boot Record Voir MBR
Matériel commandes, référence 663 prise en charge 7 mbox, format 99 MBR 40, 459 chargeur d’amorçage 459 Windows 460 Mémoire d’échange 450 taille 450 Memtest86 326 Menu Gnome 54 KDE 69 menu.lst 462, 463, 464 color 465 default 465 fallback 465 gfxmenu 465 hiddenmenu 465 password 465 splashimage 465 timeout 465 Message du noyau pendant l’installation 28 Messagerie instantanée 79 Microsoft, polices 398 MIME, Firefox 84 Mise en veille 326 mkdir 183 mkdosfs 436 mke2fs 429 mkfs.ext2 429 mkfs.ext3 429 fichier image 643 mkfs.reiser4 433 mkfs.reiserfs 433 mkfs.xfs 435 mkinitramfs 491 mkinitrd 491 mkisofs 198 exemples 198 mknod 211 mkntfs 436 mode texte 46 modeline 371
Linux Livre Page 685 Mardi, 23. septembre 2008 1:05 13
685
INDEX
Modem 531 arrêter 537 authentification 536 chat 536 démarrer 537 externe 532 Fedora 537 gnome-ppp 531 interne 532 kppp 532 network-admin 531 pppd 535 Red Hat 537 scanModem 534 USB 532 winmodem 534 Modes VGA 377 modinfo 483 modprobe 482, 501 modprobe.conf 485 alias 485 blacklist 486 exemple 486 include 486 install 486 options 486 remove 486 syntaxe 485 modprobe.conf.dist 485 modprobe.conf.local 485 modprobe.d 485 Module 481 binaire 484 chargement automatique 481 commandes, référence 663 compiler 487 outils de développement 487 configuration 483 Debian 485 dépendances 484 depmod 485 Fedora 485 fichier .map 485
gestion 482 initrd 484, 490 insmod 482 iptables 547 kmod 481 KVM 635 liste 483 lsmod 483 modinfo 483 modprobe 482 modprobe.conf 485 modprobe.conf.dist 485 modprobe.conf.local 485 modprobe.d 485 modules.dep 485 non GPL 484 Red Hat 485 rmmod 483 SUSE 485 Ubuntu 485 version 482 versionnage 482 modules.dep 485 modutils 485 Moniteur 358 balayage horizontal 358 vertical 359 comparaison cathodique/ LCD 359 DDC 359 débit vidéo 359 fréquence 359 de pixels 359 horizontale 359 verticale 359 HSync 358 VSync 359 Mot de passe 313 changer 314 gestion avec KWalletManager 76 gestion avec seahorse 63
groupe 316 oublié 315 root 314 mount 421, 445 exemples 422 fichier image 644 options 425 syntaxe 422 MP3 160 décodeur 164 lecteur 164 MPEG-4 161 mpg123 164 mpg321 164 MPlayer 165 MTA (Mail Transfer Agent) 95 mtools 443 MTP 159 MUA (Mail User Agent) 95 mutt 95, 99 mv 183
N Namesys 433 nano 177 raccourcis clavier 177 NAT 541, 545 principes 545 Nautilus 56 adresses spéciales 59 affichage de fichiers cachés 58 barre d’adresse 57 latérale 57 connexion permanente à un répertoire réseau 61 copie de CD 60 de fichiers 57 démarrage 56 déplacement de fichier 57
Linux Livre Page 686 Mardi, 23. septembre 2008 1:05 13
686
LINUX
Nautilus (suite) droits d’accès 58 gestion de fichiers ISO 60 gravure de CD/DVD 60 mode spatial 57 navigation 57 ouverture d’un fichier 57 partages Windows 60 recherche de fichier 58 répertoire FTP 60 réseau 60 supports externes 59 suppression de fichier 59 Navigateur, Konqueror 74 Navigateur Internet 79 Firefox 79 Konqueror 86 lynx 88 NBNS 603 NCPFS 418 NDIS 519 NetBIOS 603 NBNS 603 Netpbm 232 netstat 560 options 560 network-admin 531, 533, 553 NetworkManager 526 newaliases 99 News Usenet 108 NFS 418, 447, 600 /etc/exports 601 /etc/fstab 448 configuration 601 démarrage 602 exportfs 602 hosts.allow 602 hosts.deny 602 installation 601 mount 448 NFS4 602 nfsd 601 nfsd4 601 portmap 601
root 602 rpc.mountd 601 utilisateurs 602 nfsd 601 nfsd4 601 NIC 495 nice 218 niveau d’exécution 474 inittab 474 par défaut 475 nmap 560 nmap-frontend 560 Noatun 166 nodeadkeys 305 Nom d’hôte 494, 508 d’utilisateur 311 de domaine 494 Novell 12 disponibilité des mises à jour 9 Noyau 6, 481 caractéristiques 6 code source 488 commandes, référence 663 compilation 487, 490 outils de développement 488 compiler un module 487 composants 489 configuration 487, 489 existante 489 démarrage 460 fichier d’en-tête 487 histoire 20 initrd 490 installation 490 iptables 547 kmod 481 KVM 632, 635 make config 489 make gconfig 489 make menuconfig 489 make oldconfig 489 make xconfig 489 mascarade 546 messages 335
modulaire 489 modules 460, 481 gestion 482 versionnage 482 versions 482 monolithique 489 options d’amorçage 467, 472 ACPI 473 APM 473 emergency 472 init 472 initrd 472 lapic 473 maxcpus 473 noapic 473 noht 473 noinitrd 472 nolapic 473 noresume 474 nosmp 473 pci 472 quiet 473 reboot 473 resume 474 ro 472 root 472 single 472 SMP 473 syntaxe 472 outils de configuration 489 paquet IP 567 paramètres d’amorçage 460 serveur mandataire transparent 580 threads 224 transfert d’IP 546, 580 version 482 versionnage des modules 482 Xen 648 NTFS 417, 436 /etc/fstab ntfs-3g 440 pilote ntfs 438 pilote ntfsmount 439 Captive 440 droits d’accès 436 flux 440 formatage 436 mkntfs 436
Linux Livre Page 687 Mardi, 23. septembre 2008 1:05 13
687
INDEX
ntfs-3g 439 ntfsmount 438 ntfsprogs 438 outils 438 Paragon 440 pilotes 437 Captive 440 ntfs 437 ntfs-3g 439 ntfsmount 438 Paragon 440 streams 440 ntfs-3g 440 flux 440 streams 440 streams_interface 440 ntfsmount 438 ntfsprogs 438 Numérisation 137
O OASIS 120 OCR 148 OFS 419 Ogg Vorbis 161 ogg123 164 oggenc 233 Okular 77, 588 OpenDocument 120 OpenGL 387 OpenOffice 119 alternatives 133 Base 130 Calc 126 champ 124 coupure des mots 124 export PDF 125, 129 formats de fichiers 120 image 124 Impress 127 impression 125, 127, 129 index lexical 125 Java 119
macros 132 numérotation des titres 124 polices 125 styles 122, 129 table des matières 125 tableau 123 vérification orthographique 124 vue des sources de données 132 Writer 122 OpenPGP 102 openSUSE 13, 667 disponibilité des mises à jour 9 OpenXML 120 OSS 331 Outlook Express 100
P PAM 316 droits d’accès 317 Paquetages 339 administration centralisée 340 alien 355 APT Voir APT choix à l’installation 36 commandes, référence 662 conversion 355 DEB 348 APT Voir APT documentation 49 dpkg Voir dpkg formats 339 groupes préconfigurés 36 système de gestion 339 RPM Voir RPM
Paragon 440 Paravirtualisation 624 prise en charge matérielle 624 Xen 638 Pare-feu 564 blocage de ports dangereux 574 bloquer les connexions externes 571 DHCP 572 distribution 565 DMZ 566 iptables 567 mandataire cache 575 mascarade 574 ordinateur local 566 personnel 564 passerelle Internet 573 PPTP 572 remise à zéro 569 réseau local 565 sécuriser un client sans fil 571 VPN 572 services 573 Squid 575 Partage Windows accès avec Nautilus 60 Konqueror 74 parted 413 création d’une partition 414 démarrage 413 exemple d’utilisation 414 interfaces graphiques 415 LVM 453 mkpart 414 rm 414 Parted Magic 408 Partition 28, 403 /etc/fstab 423 amorçage 33 augmentation de taille 411
Linux Livre Page 688 Mardi, 23. septembre 2008 1:05 13
688
LINUX
Partition (suite) création 410, 414 d’échanges 34 df 421 données 34 échange 450 espace disponible 421 formatage 30 identifiant 410 monter /etc/fstab 423 manuellement 422 mount 421 nom 30 nombre maximal 29, 405 nomenclature dans GRUB 464 identifiants 407 par chemin 407 par libellé 407 par UUID 407 numérotation 406 par chemin 407 par identifiant 407 par libellé 407 par UUID 407 parted 413 schéma de nommage hd-* 31 sd-* 30 swap 450 système 33, 403 de fichiers 30, 35 taille 35 test de cohérence 403 type 29 Partition d’amorçage 33 Partition d’échange 34, 450 /etc/fstab 450 création 451 formatage 35 limite de taille 34 système de fichiers 35 Partition système 33, 403 LVM 452
Partitionnement 28, 408 augmentation de la taille d’une partition 411 compatibilité des programmes 409 création d’une nouvelle partition 410 fdisk 410 GParted Live 408 identifiant d’une partition 410 nombre maximal de partitions 29 Parted Magic 408 réduction de la partition Windows 32 règles de base 408 système de fichiers 35 SystemRescueCD 408 taille des partitions 35 utilitaire 29 Windows Vista 408 Passerelle 496, 543 comparaison avec un routeur matériel 544 configuration des clients 503, 508, 548 installation 543 MSS clamping 546 pare-feu 573 sécurité 546 PATA 404 Pavé tactile 383 pccardctl 329 PC-Cards (PCMCIA) 329 PCI 328 PCM (volume) 332 PCMCIA 329 PDA 114 PDF Adobe Reader 89 evince 63 Okular 77 Périphérique accès bloc 211 caractère 211
création d’un fichier 211 droits d’accès 203 fichier 211 mknod 211 nom du graveur 197 numéro majeur 211 mineur 211 numéros 211 type d’accès 211 udev 211 PGP 102 Phonon 333 Photo numérique 136 pico 177 raccourcis clavier 177 Pidgin 79 pidof 216 Pilote ati 372 ATI/AMD 360, 372 atimisc 372 carte graphique 360 IDE 405 Intel 360, 374 non libre 360 nv 375 NVIDIA 360, 375 nvidia 375 noyau 376 nvidia-xconfig 375 TwinView 376 r128 372 radeon 372, 373 radeonhd 372, 374 VIA 360 pine 95, 99 ping 238 Pluggable Authentication Modules 316 Plugins 88 Adobe Reader 89 Flash 90 Java 92 RealPlayer 166 pmount 446 PNG (format) 152
Linux Livre Page 689 Mardi, 23. septembre 2008 1:05 13
689
INDEX
Polices 321 anti-aliasing 399 anti-crénelage 399 configuration 399 bitmap 394, 396 configuration sans serveur de fontes 397 console texte 305 fc-list 394 freetype 394 installation 398 GNOME 398 KDE 398 manuelle 398 polices Microsoft 398 Microsoft 398 nomenclature 395 OpenType 396 répertoires 394 Speedo 396 TrueType 396 Type1 394, 396 Unicode 396 URW 396 vectorielles 394 X 394 xslfonts 394 POP 97 Portable, batterie 326 portmap 601 Ports (TCP/IP) 494 postfix 95 PostScript 588 Evince 588 evince 63 ggv 588 ghostview 588 gv 588 kghostview 588 KPDE 588 Okular 77, 588 ps2pdf 588 PPD 596 cupsomatic 596 ppds.dat 596
PPP ip-down.local 576 iptables 576 ip-up.local 576 pppd 537 arrêter 537, 538, 539 authentification 536 chat 536 démarrer 537, 538, 539 Fedora 537 modem 535 options 536 Red Hat 537 pppoe 533, 537 carte réseau 537 pppd 537 pppoeconf 534 PPTP 538 carte réseau 538 pppd 538 pptpconfig 538 pptpconfig 538 Prérequis d’installation espace disque 25 matériel 25 mémoire vive 25 processeur 25 Présentations (Impression) 127 Presse-papiers, Klipper 77 Problème clavier 42, 43 démarrage de l’ordinateur 43 de X 43 langue 44 Linux ne démarre pas 43 matériel 42 plantage 42 unable to mount root fs 42 Windows ne démarre pas 43 proc 418 Processeur 325 32 et 64 bits 26 virtualisation 625
Processus 213 accès à un fichier 216 bg 214 commandes, référence 660 consolehelper 220 crontab 227 d’arrière fond 214 d’avant-plan 214 démarrer automatiquement 227 démon 223 fg 214 fuser 216 gksudo 221 gnome-system-monitor 215 hiérarchie 216 identifiant 216 kill 217 killall 217 ksysguard 215 limite de taille 217 liste 214 nice 218 PID 216 pidof 216 priorités 218 ps 214 pstree 216 redirections 218 renice 218 sous une autre identité 219 su 219 sudo 220 tâche de fond 214 terminer 217 threads du noyau 224 top 215, 217 tubes 218 ulimit 217 xkill 217 procmail 95 Programmation de macros (OpenOffice) 132
Linux Livre Page 690 Mardi, 23. septembre 2008 1:05 13
690
LINUX
Programme commandes, référence 660 démarrer 213 par défaut Gnome 64 KDE 78 Proxy 83 ps 214 PS (format) 152 ps2pdf 588 PSD (format) 151 pstree 216 PTP (appareils photo) 136 pumount 446 pump 504 pvcreate 453
Q QEMU 632 clavier 633 fichier image 632 format 632 KQEMU 634 KVM 632 lecteur CD/DVD fichier ISO 633 mémoire vive 633 périphérique d’amorçage 633 options 633 qemu-img 632 raccourcis clavier 633 réseau 633 test 633 qemu-img 632 QEMY KVM 635 qmail 95 Qt 67 qtparted 415
R Raccourci clavier 47 bureau 3D 390 Gnome 65 KDE 78
racine 181 rc reload 226 restart 226 start 226 stop 226 Real Audio 161 RealPlayer 166 Recherche de fichiers 189 Beagle 192 commandes, référence 658 find 191 find et grep 192 Google Desktop 193 grep 192 locate 190 Nautilus 58 Tracker 193 whereis 189 which 189 recode 234 Reconnaissance de texte 148 Red Hat 12, 668 droits d’accès PAM 317 Red Hat Enterprise Linux disponibilité des mises à jour 9 Redirection 218, 289 entrée standard 289 erreur standard 289 sortie standard 289 tee 290 tubes 290 nommés 290 mkfifo 290 reiser4 416, 433 /etc/fstab 433 création d’un système de fichiers 433 fsck.reiser4 434 mkfs.reiser4 433 vérification du système de fichiers 434 reiserfs 416, 433 /etc/fstab 433 création d’un système de fichiers 433
fsck.reiserfs 434 label 434 mkfs.reiserfs 433 redimensionnement 434 resize_reiserfs 434 UUID 434 vérification du système de fichiers 434 reiserfstune 434 renice 218 Répertoire . 182 .. 182 arborescence 209 bit setgid 204 changement de répertoire courant 182 chgrp 203 chmod 202 copie 184 courant 182 création 183 déplacement 183 droits d’accès 203 FTP, accès avec Nautilus 60 gestion Voir Gestion des fichiers et répertoires parent 182 personnel 182, 310, 311 renommage 183 réseau connexion permanente avec Nautilus 61 Dolphin 72 sticky bit 204 suppression 183, 184 umask 205 Réseau /etc/services 562 accessibilité de localhost 238 accessiblité du réseau local 238 adresse IP 559 analyse 559 bases 493 BitTorrent 248
Linux Livre Page 691 Mardi, 23. septembre 2008 1:05 13
691
INDEX
cache web 577 clients 544 commandes, référence 662 configuration à l’installation 38 du contrôleur Ethernet 500 contrôle parental 577 DansGuardian 582 destinée d'un paquet IP 568 diagnostic 237 disponibilité du serveur de noms 238 DMZ 566 état 237 filtrage des entrées 568 des sorties 568 des transferts 568 web 577 filtre de paquets 560 web 582 FTP 243 ICMP 560 ifconfig 237 IP 559 iptables 567 liste des interfaces 237 lsof 560 netstat 560 NFS 600 nmap 560 parcours dans le noyau 567 pare-feu 564, 573 ping 238 ports 559 actifs 560 dangereux 574 postroutage NAT 568 protocole IP 560 routage 567 route 239 rsync 247 Samba 603 scp 241
sécurité 557 serveur mandataire 577 SFTP 246 SHFS 242 Squid 577 ssh 240 TCP Wrapper 563 test de l’accès à Internet 238 de la passerelle 238 traceroute 239 traitement local 568 UDP 560 virtualisation 626 wget 246 xinetd 561 Réseau local 493 configuration 493 Réseau sans fil 512 sécurité 575 resize_reiserfs 434 resize2fs 431 Rhythmbox 167 rm 184 rmdir 183 rmmod 483 RNIS 531 network-admin 533 RockRidge 198, 441 root 45, 175, 219, 315 mot de passe 37 Route 239 commande 503 Routeur matériel comparaison avec une passerelle 544 rpc.mountd 601 RPM 340 architecture des paquetages 340 capacités 343 informations sur les paquetages 342
installation d’un programme 342 mise à jour de programmes 342 nommage des paquetages 340 problèmes 341 dépendances 344 rpm 340 Yum Voir Yum Yumex 347 rpm 340 exemples 342 informations sur les paquetages 342 installation d’un programme 342 mise à jour de programmes 342 problèmes de dépendances 344 syntaxe 342 rsync 196, 247 exemples 248
S S/MIME 102 Samba 603 CIFS 418, 606 client 606 configuration minimale 607 démarrage 608 droits d'accès 604 état 609 exploration du réseau 604 fonctionnalités 605 Gnome 606 impression 615 pilote 615 imprimante partagée 615 KDE 606 NBNS 603
Linux Livre Page 692 Mardi, 23. septembre 2008 1:05 13
692
LINUX
Samba (suite) NetBIOS 603 NBNS 603 nmbd 608 NTLMv2 611 partage mot de passe 611 sans mot de passe 610 sécurité 604, 610 protocoles 603 sécurité 604 partage 604, 610 utilisateurs 605 services 603 smb.conf 607 vérification 609 smbclient 606 smbd 608 SMBFS 418 smbpasswd 611 smbstatus 609 test 608 testparm 609 username.map 612 utilisateurs 605, 612 version 4 605 Windows Vista 611 WINS 604 SANE 137 sane-find-scanner 138 SATA 404 Sauvegarde automatisation 196 rsync 196 stratégie 196 Scan 170 scanimage 138 scanModem 534 Scanner 137 SCO 23 procès 23 scp 241 Scribus 134 SCSI 404 lecteur de bandes 333 seahorse 63
Sécurité 557 client sans-fil 571 DMZ 566 filtre de paquets 560 hosts.allow 563 hosts.deny 563 iptables 567 journalisation 558 mises à jour 558 netstat 560 nmap 560 pare-feu 564 passerelle 573 ports actifs 560 dangereux 574 réseau sans-fil 575 risques 565 services réseau 561 Squid 577 TCP Wrapper 563 xinetd 561, 563 sed 187 renommage de fichier 187 SELinux 39 sendmail 95 Serpentine 63 Serveur de noms 496 de noms 549 mandataire 577 X 357 Service 478 arrêter 477, 478 démarrer 477, 478 reload 226 restart 226 sécuriser 561 start 226 stop 226 xinetd 562 setfacl 207 setfattr 208 setfont 305 setgid 204 setuid 203 setupcon 306
SFTP 246 clients 246 shell 283 changement 284 définition du shell par défaut 284 SHFS 242 Shockwave for Director 92 siga 325 Signature (e-mails) 100 Skype 79 Slackware 13 SMART 456 surveillance automatique 457 test 457 smartd 457 smb.conf 607 vérification 609 smbclient 606 SMBFS 418, 448 mount 448 smbpasswd 611 smbstatus 609 SMP 473 SMTP 97 Software suspend 326 Son, ALSA 331 Sound Juicer 168 Souris 48, 382 console 175 copier-coller 48 émulation du 3e bouton 382 molette 382 pavé tactile 383 ZAxisMapping 382 spamassassin 95 Squid 577 arrêt 580 configuration 580 DansGuardian 585 clients 580 minimale 577 transparente 580 iptables 581 noyau 580 squid.conf 580 transfert IP 580
Linux Livre Page 693 Mardi, 23. septembre 2008 1:05 13
693
INDEX
contrôle d'accès 582 démarrage 580 exceptions 581 squid.conf 578 test 580 squid.conf 578 acl 578, 582 cache_dir 578 cache_mem 578 cache_peer 579 configuration transparente 580 http_access 578 ssh 220, 240 clé publique du serveur 240 démarrage de commandes 240 identification par clés 242 Konqueror 74 session typique 240 ssh-agent 243 tunnel 242 X 241 ssh-agent 243 StarOffice 133 start 226 startx 363 sticky bit 204 Streaming 160 su 175, 219 gksu 220 kdesu 220 mode graphique 220 subfs 445 submount 445 sudo 220 /etc/sudoers 221 configuration 221 gksudo 221 sous SUSE 222 sous Ubuntu 222 Sun Java 92 StarOffice 133
Sun StarOffice 133 super-floppy 445 supermount 445 Support de données Dolphin 72 gestion sous Gnome 59 gestion sous KDE 71 Nautilus 59 Surveillance du système Gnome 65 SUSE 12, 668 SUSE Enterprise Server disponibilité des mises à jour 9 Suspend 326 Suspend to disk 326 Suspend2 (TuxOnIce) 327 swap 450 taille 450 swfdec 92 Synaptic 352, 383 dépôts 353 installation de paquetages 352 problèmes 353 sysfs 418 syslogd 334 system-config-date 307 system-config-language 321 system-config-network 553 system-config-printer 595 system-config-users 309 Système administation 301 Système, démarrage 459 Système d’exploitation 5 Système de fichiers 35, 421 /etc/fstab 423, 424 ajouter à l’arborescence 403 aufs 420 auto 419 autofs 419 autofs4 419 chiffré 420 CIFS 418, 448
coda 418 commandes, référence 661 cramfs 419 déterminer les systèmes disponibles 420 devpts 418 df 421 efs 417 ext 416, 428 ext2 35, 428 ext3 35, 428 ext4 35, 428 FAT 435 fichier image 643 fragmentation 432 FUSE 419 GFS 419 HFS 417 HFS+ 417 HPFS 417 ISO9660 417 jffs 419 jfs 417 journalisation 426 limite de taille 428 loop 419 LVM 451, 454 magicdev 445 monter /etc/fstab 423 manuellement 422 mount 421 NCPFS 418 NFS 418, 447 none 420 NTFS 417, 436 OFS 419 proc 418 reiser4 416 reiserfs 416 réseau 447 SHFS 242 SMBFS 418, 448 subfs 445
Linux Livre Page 694 Mardi, 23. septembre 2008 1:05 13
694
LINUX
Système de fichiers (suite) supermount 445 sysfs 418 sysv 417 test de cohérence 403 tmpfs 418 type 403, 416 UDF 418 UFS 417 unionfs 420 usbfs 419 vérification automatique 427 vérification dans /etc/ fstab 425 vérification manuelle 427 VFAT 417, 435 virtuel 447 xfs 416, 434 Système son (ALSA) 331 SystemRescueCD 408 systemsettings 75 sysv 417
T Table de routage 495 Tableur (OpenOffice) 126 Tâche Voir Processus Tâche de fond 175 tar 195 tcd 164 TCP 560 TCP Wrapper 563 CUPS 592 prise en charge 564 TCP/IP 493 tee 290 Terminal 173 commandes, référence 664 déconnexion 173 gnome-terminal 62, 174 konsole 76, 174 lancer des commandes 175 passage en root 175 raccourcis 174 souris 175
xterm 174 testparm 609 Theora 162 Thunderbird 103 import depuis Windows 109 MIME 105 news Usenet 108 synchronisation avec Windows 109 TIFF (format) 152 time-admin 307 tmpfs 418 top 215 arrêter un processus 217 modification de la prioirité 218 Totem 168 touch 205 touchpad 383 traceroute 239 Tracker 193 tracker-search-tool 193 Traitement de texte (OpenOffice) 122 TransGaming 622 Cedega 622 tube 218 tune2fs 431 Tux 21 TuxOnIce (Suspend2) 327 TwinView 376
U Ubuntu 13, 668 disponibilité des mises à jour 9 udev 211, 444, 509 UDF 418, 441 UDP 494, 560 UFS 417 UID 311 ulimit 217 umask 205 umount 446 uname 482 Unicode 319, 396
console 306 polices 396 Unicode Transfer Format 320 unionfs 420 Unix 5, 6 unix2dos 234 unzip 196 updatedb 190 update-grub 463 update-rc.d 227, 478 Upstart arrêt 226 démarrage 226 USB 328 usbfs 419 useradd 310 username.map 612 usernetctl 511 users-admin 309 UTC (Universal Time, Coordinated) 307 UTF-16 320 UTF-8 320 Utilisateurs 310 administration 308, 309 changement d’identité 219 changement de groupe 205 commandes, référence 660 consolehelper 220 créer 308 gksudo 221 groupes 205 groups 205 newgrp 205 root 45, 219 sudo 220 UUID 407, 423, 435, 446 ext3 431 reiserfs 434 vol_id 446 xfs 435
V Variable d’environnement $DISPLAY 220 $PATH 214
Linux Livre Page 695 Mardi, 23. septembre 2008 1:05 13
695
INDEX
$PS1 285 VerrMaj 380 VerrNum 379 VESA 376 VFAT 417, 435 /etc/fstab 437 formatage 436 mkdosfs 436 VGA, modes 377 vgcreate 453 vi Voir vim Vidéo 157 lecteurs 157 Vidéoprojecteur 383 configuration minimale 384 configuration multiécrans 385 vim 251 changement de mode 253 commandes Linux 261 complètement automatique 257 copie de texte 256 correction des fautes de frappe 255 déplacement du curseur 254 édition de plusieurs fichiers 259 enregistrement 253 de la position du curseur 255 espaces et tabulations 261 fenêtre 259 indentation 257 insertion multiple de texte 255 macros 261 marquage de texte 256 mode graphique 251 insertion 252 normal 252 visuel 256 nouveau fichier 259
numéros de ligne 260 onglet 259 quitter 253 recherche de texte 258 caractères spéciaux 258 recherche incrémentale 258 recherche et remplacement de texte 258 saisie efficace des commandes 260 sauvegardes 261 souris 261 suppression de texte 253, 255 tampon 259 texte continu 257 trucs et astuces 260 VirtualBox 629 Additions Clients 630 hôte 630 installation 630 invités 630 prérequis 630 répertoires partagés 632 versions 629 complète 629 Open Source Edition 629 Virtualisation 623 32 et 64 bits 625 AMD-V 624 applications 623 au niveau du système d’exploitation 624 carte graphique 626 comparaison 627 compatibilité des machines virtuelles 627 complète 624 disques durs 625 échange de données entre l’hôte et les invités 627 émulation 624 gestion du matériel 625
heure 626 hôte 624 Intel VT 624 invité 624 KVM 632 lecteur CD/DVD 625 fichier ISO 625 machine virtuelle 624 mémoire vive 625 paravirtualisation 624 prise en charge matérielle 624 périphériques externes 626 presse-papiers 627 processeur 625 QEMU 632 réseau 626 carte réseau virtuelle 626 NAT 626 réseau interne 626 son 626 techniques 624 USB 626 VirtualBox 629 VMware 628 Xen 637 VMware 134, 628 comparatif 629 Player 628 Server 628 Workstation 628 VoIP 79 vol_id 446 Vorbis 161 vorbiscomment 164 vorbis-tools 164
W WAV 160 Webmin 302 wget 246 exemples 246 whereis 189 which 49, 189
Linux Livre Page 696 Mardi, 23. septembre 2008 1:05 13
696
LINUX
Wi-Fi 512 adaptateur 514 canal 515 configuration 524 ESSID 515 firmware 518 Managed Key 517 mode ad-hoc 515 mode géré 515 mode infrastructure 515 mode maître 515 NWID 515 pilote 518 point d’accès 514 pont 514 PSK (Pre-Shared Key) 517 routeur 514 sécurité 516, 575 SSID 515 WEP 516 Wireless-Tools 518 WPA 516, 521 WPA2 516, 521 Windows accès à une partition ext3 432 chargeur d’amorçage 460 démarrer avec GRUB 467 MBR 460 pilote ext 433 problème de démarrage 43 programmes sous Linux 617 problèmes 618 Wine 618 réduction de la partition 32 Samba 603 Windows Vista NTLMv2 611 partitionnement 408 Samba 611 Windows XP, Xen 651 Wine 618 Cedega 622 configuration 618 CrossOver 621 dérivés commerciaux 621 ies4linux 620
Internet Explorer 620 lancer un programme Windows 618 presse-papiers 620 transferts de données 620 winecfg 618 winecfg 618 winmodem 534 détecter 534 scanModem 534 WINS 604 WLAN 512 wlann (interface) 521 WMA 161 WMV 162 wodim 199 workbone 164 wpa_supplicant 521 Writer (OpenOffice) 122
X X 357, 385 3D 387 tester 388 AIGLX 392 anti-crénelage des polices configuration 399 arrêt 362 bureau 3D 358, 389 AIGLX 392 virtuel 358 caractère étranger, saisie 380 clavier 377 configuration 377 disposition 379 gnome-keyboardproperties 381 modèle 378 touche Compose 380 spéciales 379 VerrMaj 380 VerrNum 379 Xkb 377 Xmodmap 377, 380 xorg.conf 378 Compiz Fusion 393
configuration 364 minimale 365 multi-écrans 385 xorg.conf 365 connexion automatique 63 copier-coller 48 démarrage automatique 43, 362 démarrer manuellement 363 désactivation du démarrage automatique 362 DRI 387 droits d’accès 388 écran virtuel 357 émulation du 3e bouton de la souris 382 framebuffer 377 gestionnaire de bureau 358 gestionnaire de fenêtre 358 GLX 387 glxgears 389 glxinfo 388 graphismes 3D 387 tester 388 journalisation 363 libGL 387 modes graphiques 371 modules d’extension 357 OpenGL 387 pavé tactile 382, 383 Synaptics 383 pilotes 360 ATI/AMD 372 ati 372 atimisc 372 r128 372 radeon 372, 373 radeonhd 372, 374 framebuffer 377 Intel 374 configuration 374 résolution de l’écran 374 NVIDIA 375 nv 375 nvidia 375 non libres 360 VGA 377 VESA 376
Linux Livre Page 697 Mardi, 23. septembre 2008 1:05 13
697
INDEX
polices 394 raccourci clavier 47 redémarrage 362 résolution 368 pilote Intel 374 saisie de caractères étrangers 380 serveur 357 souris 48, 382 3e bouton 382 molette 382 pavé tactile 383 Synaptics 383 touchpad 383 ZAxisMapping 382 startx 363 Synaptics 383 terminer 217 touche Compose 380 exemples 381 touchpad 383 TwinView 376 version 364 VESA 376 vidéoprojecteur 383 configuration minimale 384 configuration multiécrans 385 xev 400 Xinerama 358, 369 xkill 400 xlsfonts 400 xmodmap 400 xorg.conf 365 xrandr 400 xset 400 xterm 400 ZAxisMapping 382 Xandros 13 XCF (format) 151 XChat 79 XEmacs Voir Emacs Xen 637
/etc/fstab 649 administration 655 administration graphique 656 applications 637 architecture 638 carte graphique 642 configuration 646, 654 console 653 démarrage automatique 656 disque dur 642 dom0 638 configuration 646 initrd du domU 649 interfaces réseau 642 noyau du domU 649 domaines 638 domU 639 cloner 651 configuration 649, 654 console 653 console texte 642 création 646 démarrage 650 automatique 656 exemple d’installation 648 Fedora 648 heure 651 image préinstallée 647 initrd 648 installation de la distribution 648 installation du système 647 interaction 652 noyau 648 SDL 642, 653 VNC 643, 654 Windows XP 651 fichier image 643 formats 643 gestion du matériel 640 GRUB 645 HVM 638, 651 InitV 656 installation 645 noyau 648
paravirtualisation 638 problèmes fréquents 651 réseau 640 restrictions 639 SDL 653 virtualisation matérielle 638 VNC 654 Windows XP 651 xenblk 642 xend 641, 646 xend-config.sxp 646 xenman 656 xentop 656 xm 650, 655 xend 641 réseau 641 xend-config.sxp 646 xenman 656 xentop 656 xev 400 xfs 416, 434 /etc/fstab 435 création d’un système de fichiers 435 label 435 mkfs.xfs 435 redimensionnement 435 réparation du système de fichiers 435 vérification du système de fichiers 435 xfs_admin 435 xfs_check 435 xfs_growfs 435 xfs_admin 435 xfs_check 435 xfs_growfs 435 xfs_repair 435 xfs_xfs_repair 435 XGL 391 comparaison avec AIGLX 392 prise en charge des pilotes graphiques 391 xine 169
Linux Livre Page 698 Mardi, 23. septembre 2008 1:05 13
698
LINUX
xine-check 169 Xinerama 358, 369, 385 xinetd 561 /etc/services 562 arrêt 562 configuration 562 démarrage 562 sécurisation 563 service 562 xinetd.conf 562 xinetd.d 562 syntaxe des fichiers 562 xinetd.conf 562 xinetd.d 562 syntaxe des fichiers 562 Xkb 377 xkill 217, 400 xlsfonts 400 xm 650, 655 xmms 169 Xmodmap 377, 380, 400 xorg.conf carte graphique 367 clavier 378
configuration minimale 365 écran 366 modes graphiques 371 moniteur 366 nombre de couleurs 368 pilote 367 résolution 368 sections 365 Device 367 Files 370, 397 Input Device 378 Module 370 Monitor 366 Screen 368 Display 368 ServerFlags 371 ServerLayout 369 Xinerama 369 XPI 85 xrandr 400 XSane 148 xset 400 xterm 174, 400 Xubuntu 668 XV 163 XviD 161
XWindow 357 système 357
Y Yum 344 /etc/yum.conf 345 configuration 345 conflits de verrous 345 dépôt de paquetage 346 exemples 346 mise à jour de la distribution 346 mises à jour automatiques 347 paquetages de code source 347 yumdownloader 347 Yumex 347
Z Zeroconf 528 zip 195
Le Campus 8e édition
Linux Installation, configuration et applications
La bible de l’utilisateur Linux enfin traduite ! Véritable outil de référence depuis plus de dix ans, cet ouvrage exceptionnel vous accompagnera au quotidien dans la découverte et la maîtrise de Linux. Que vous soyez débutant ou confirmé, vous y trouverez tout ce que vous avez besoin de savoir : installation, distributions, configuration du système et des réseaux, outils et applications disponibles, mais également commandes shell, gestion des paquetages, systèmes de fichiers, noyau, outils d’administration, virtualisation, etc. Il couvre les distributions les plus répandues, la majeure partie de leurs usages domestiques et les dernières nouveautés du monde Linux : bureaux 3D, KDE4, Xen. Une référence thématique des commandes est fournie en fin d’ouvrage. Ce guide, complet et accessible, vous donnera toutes les clés pour utiliser et surtout comprendre Linux, et fera de vous un inconditionnel de ce système d’exploitation libre et sûr. À propos de l’auteur Michael Kofler a déjà aidé plusieurs générations d’utilisateurs à faire leurs premiers pas sous Linux. Ses ouvrages sur Linux, sur PHP 5 et sur MySQL font partie des livres les plus lus dans le domaine du logiciel libre.
Pearson Education France 47 bis, rue des Vinaigriers 75010 Paris Tél. : 01 72 74 90 00 Fax : 01 42 05 22 17 www.pearson.fr
Table des matières • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
Qu’est-ce que Linux ? Installation Premiers pas sous Linux Gnome KDE Navigateurs Internet (Firefox, Konqueror) E-mail (Thunderbird, Evolution, Kontact) OpenOffice Appareils photo numériques, numérisation, gestion des photos Gimp Audio et vidéo La console Gestion des fichiers Gestion des processus Convertisseurs graphiques, audio et texte Outils réseau Vim Emacs et Xemacs Bash Configuration de base Gestion des logiciels et des paquetages Système XWindow Administration du système de fichiers Démarrage du système Noyau et modules Configurer l’accès réseau (réseau local, Wi-Fi) Accès à Internet Passerelle Internet (mascarade et DHCP) Sécurité du réseau Serveur de réseau local (CUPS, NFS et Samba) Lancer des programmes Windows (Wine, CrossOver) Virtualisation avec VMware, VirtualBox, QEMU et KVM Xen Références thématiques Sources d’informations
Niveau : Tous niveaux Catégorie : Système d’exploitation Configuration : PC
ISBN : 978-2-7440-4088-7