Handbook FR
Handbook FR
Résumé
La dernière version anglaise de ce document est disponible sur le site Web de FreeBSD. Les
versions antérieures peuvent être obtenues auprès de [Link] Il peut être
aussi téléchargé dans divers formats et options de compression depuis le serveur de
téléchargement FreeBSD ou l’un des nombreux sites miroirs. Des recherches dans le Manuel et les
autres documents peuvent être effectuées à partir de la page de recherches.
1
Table des matières
Préface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Public visé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Modifications depuis la Seconde Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Modifications depuis la Première Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Organisation de cet ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Conventions utilisées dans ce livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
I: Pour commencer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2. Bienvenue à FreeBSD!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3. A propos du Projet FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2. Installing FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2. Configuration matérielle minimale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3. Tâches de pré-installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4. Lancer l’installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5. Utilisation de bsdinstall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.6. Allouer l’espace disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.7. Récupération des fichiers de distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.8. Comptes utilisateurs, fuseau horaire, services et renforcement de la sécurité . . . . . . . . . . . 70
2.9. Interfaces réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
2.10. Dépannage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
2.11. Utilisation du CD Live . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3. Quelques bases d’UNIX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.2. Consoles virtuelles terminaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.3. Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.4. Organisation de l’arborescence des répertoires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.5. Organisation des disques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
3.6. Monter et démonter des systèmes de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.7. Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.8. Daemons, signaux, et comment tuer un processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
3.9. Interpréteurs de commandes - "Shells" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.10. Editeurs de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
3.11. Périphériques et fichiers spéciaux de périphérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
3.12. Le format des fichiers binaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
3.13. Pour plus d’information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
2
4. Installer des applications: les logiciels pré-compilés et les logiciels portés. . . . . . . . . . . . . . . . . . 133
4.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.2. Généralités sur l’installation de logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.3. Trouver votre application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.4. Utiliser le système des logiciels pré-compilés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.5. Utiliser le catalogue des logiciels portés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.6. Activités de post-installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.7. Que faire avec les logiciels portés ne fonctionnant pas? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
5. Le système X Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
5.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
5.2. Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
5.3. Installer X11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.4. Configuration d’Xorg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.5. Utilisation des polices de caractères sous Xorg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
5.6. Le gestionnaire de connexion graphique XDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.7. Environnements de bureau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
5.8. Installation de Compiz Fusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
II: Tâches courantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
6. Bureautique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
6.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
6.2. Navigateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
6.3. Productivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
6.4. Lecteurs de document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
6.5. Finance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
6.6. Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
7. Multimédia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.2. Configurer une carte son . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.3. Fichiers MP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
7.4. Lecture des Vidéos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
7.5. Configuration des cartes TV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
7.6. Scanners. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
8. Configurer le noyau de FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.2. Pourquoi compiler un noyau sur mesure? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.3. Compiler et installer un noyau sur mesure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
8.4. Le fichier de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
8.5. Si quelque chose se passe mal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
9. Imprimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
9.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
9.2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
3
9.3. Configuration de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
9.4. Configuration avancée de l’imprimante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
9.5. Using Printers Traduction en Cours. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
9.6. Alternatives to the Standard Spooler Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . 290
9.7. Troubleshooting Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
10. Compatibilité binaire avec Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.2. Configurer la compatibilité binaire avec Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.3. Système de base CentOS à partir des paquets binaires FreeBSD . . . . . . . . . . . . . . . . . . . . . . 292
10.4. Système de base Debian / Ubuntu avec debootstrap(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
10.5. Sujets avancés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
11. WINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
11.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
11.2. WINE généralités et concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
11.3. Installer WINE sur FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
11.4. Lancer un premier programme WINE sous FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
11.5. Configurer WINE après installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
11.6. Interfaces graphiques de gestion de WINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
11.7. WINE sur un système FreeBSD avec plusieurs utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . 328
11.8. WINE sur FreeBSD Foire Aux Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
III: Administration Système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
12. Configuration et optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
12.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
12.2. Configuration principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
12.3. Configuration des applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
12.4. Démarrer des services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
12.5. Configuration de l’utilitaire cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
12.6. Utilisation du système rc(8) sous FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
12.7. Configuration des cartes réseaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
12.8. Hôtes virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.9. Fichiers de configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
12.10. Optimisation avec sysctl(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
12.11. Optimiser les disques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
12.12. Optimisation des limitations du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.13. Ajouter de l’espace de pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
12.14. Gestion de l’énergie et des ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
12.15. Utiliser et déboguer l’ACPI sous FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13. Processus de démarrage de FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
13.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
13.2. Le problème du démarrage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
13.3. Le gestionnaire de démarrage et les étapes de démarrage . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
4
13.4. Interaction avec le noyau au démarrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.5. "Device Hints"-Paramétrage des périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.6. Init: Initialisation de la gestion des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
13.7. Séquence d’arrêt du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
14. Gestion des comptes et des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
14.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
14.2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
14.3. Le compte super-utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
14.4. Comptes système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
14.5. Comptes utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
14.6. Modifier des comptes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
14.7. Mettre en place des restrictions pour les utilisateurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
14.8. Groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
15. Sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
15.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
15.2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
15.3. Securing FreeBSD Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
15.4. DES, MD5, et chiffrement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
15.5. Mots de passe non réutilisables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
15.6. L’encapsuleur TCP ("TCP Wrappers") . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
15.7. Kerberos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
15.8. Kerberos5 Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
15.9. OpenSSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
15.10. IPsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
15.11. OpenSSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
15.12. Listes de contrôle d’accès au système de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
15.13. Surveillance des problèmes de sécurité relatifs aux programmes tierce-partie . . . . . . . 434
15.14. Avis de sécurité de FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
15.15. Comptabilité des processus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
16. Jails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
16.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
16.2. Termes relatifs aux environnements jail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
16.3. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
16.4. Création et contrôle de l’environnement jail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
16.5. Optimisation et administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
17. Mandatory Access Control Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.2. Key Terms in this Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.3. Explanation of MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.4. Understanding MAC Labels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.5. Module Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
5
17.6. The MAC bsdextended Module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.7. The MAC ifoff Module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.8. The MAC portacl Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.9. MAC Policies with Labeling Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.10. The MAC partition Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.11. The MAC Multi-Level Security Module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.12. The MAC Biba Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.13. The MAC LOMAC Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.14. Implementing a Secure Environment with MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.15. Another Example: Using MAC to Constrain a Web Server. . . . . . . . . . . . . . . . . . . . . . . . . . . 447
17.16. Troubleshooting the MAC Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
18. Audit des événements relatifs à la sécurité du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
18.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
18.2. Mots-clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
18.3. Configuration de l’audit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
18.4. Travailler avec les traces d’audit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
19. Stockage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
19.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
19.2. Noms des périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
19.3. Ajouter des disques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
19.4. RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
19.5. Périphériques de stockage USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
19.6. Création et utilisation de supports optiques (CDs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
19.7. Création et utilisation de supports optiques (DVDs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
19.8. Création et utilisation de disquettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
19.9. Créer et utiliser les bandes magnétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
19.10. Sauvegardes sur disquettes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
19.11. Stratégies de sauvegarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
19.12. Sauvegardes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
19.13. Systèmes de fichiers réseaux, en mémoire et sauvegardés sur fichier . . . . . . . . . . . . . . . 497
19.14. Instantané ("Snapshot") d’un système de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
19.15. Quotas d’utilisation des disques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
19.16. Chiffrer les partitions d’un disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
19.17. Chiffrage de l’espace de pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
20. GEOM: architecture modulaire de gestion des disques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
20.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
20.2. Introduction à GEOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
20.3. RAID0 - "Striping". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
20.4. RAID1 - "mirroring". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
20.5. Périphériques réseau "GEOM Gate" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
20.6. Ajouter un label à un disque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
6
21. The Z File System (ZFS) Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
21.1. What Makes ZFS Different. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
21.2. Quick Start Guide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
21.3. zpool Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
21.4. zfs Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
21.5. Delegated Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
21.6. Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
21.7. ZFS Features and Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
22. Autres systèmes de fichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
22.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
22.2. Systèmes de fichiers Linux®. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
23. Le gestionnaire de volume Vinum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
23.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
23.2. Les disques sont trop petits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
23.3. Les goulots d’étranglement d’accès aux données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
23.4. Intégrité des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
23.5. Objets Vinum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
23.6. Quelques exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
23.7. Appellation des objets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
23.8. Configuration de Vinum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
24. Virtualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
24.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
24.2. FreeBSD comme système d’exploitation invité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
24.3. FreeBSD comme système d’exploitation hôte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
25. Localisation - Utilisation et configuration de l’I18N/L10N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
25.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
25.2. Les bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
25.3. Utiliser la localisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
25.4. Compiler des programmes I18N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
25.5. Localiser FreeBSD pour des langues spécifiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
26. Mise à jour de FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
26.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
26.2. Mise à jour de FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
26.3. Portsnap: un outil de mise à jour du catalogue des logiciels portés . . . . . . . . . . . . . . . . . . . 589
26.4. Updating the Documentation Set Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
26.5. Suivre une branche de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
26.6. Synchroniser vos sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
26.7. Recompiler le système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
26.8. Suivre les mises à jour pour plusieurs machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
27. DTrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
27.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
7
27.2. Des différences de mise en oeuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
27.3. Activer la prise en charge de DTrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
27.4. Utiliser DTrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
27.5. Le langage D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
IV: Réseau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
28. Serial Communications Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
28.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
28.2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
28.3. Terminals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
28.4. Dial-in Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
28.5. Dial-out Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
28.6. Setting Up the Serial Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
29. PPP et SLIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
29.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
29.2. Using User PPP Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
29.3. Utiliser PPP intégré au noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
29.4. Utiliser PPP sur Ethernet (PPPoE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
29.5. Utiliser PPP sur ATM (PPPoA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
29.6. Utiliser SLIP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
30. Courrier électronique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
30.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
30.2. Utilisation du courrier électronique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
30.3. Configuration de sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
30.4. Changer votre agent de transfert de courrier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
30.5. Dépannage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
30.6. Sujets avancés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
30.7. SMTP avec UUCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
30.8. Configuration pour l’envoi seul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
30.9. Utiliser le courrier électronique avec une connexion temporaire . . . . . . . . . . . . . . . . . . . . 665
30.10. Authentification SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
30.11. Clients de messagerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
30.12. Utiliser fetchmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
30.13. Utiliser procmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
31. Serveurs réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
31.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
31.2. Le "super-serveur" inetd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
31.3. Système de fichiers réseau (NFS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
31.4. Services d’information réseau (NIS/YP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
31.5. Configuration réseau automatique (DHCP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
31.6. Serveurs de noms (DNS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
31.7. Serveur HTTP Apache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
8
31.8. Protocole de transfert de fichiers (FTP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
31.9. Serveur de fichiers et d’impression pour clients Microsoft® Windows® (Samba). . . . . . 732
31.10. Synchronisation de l’horloge avec NTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
32. Firewalls Traduction en Cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
32.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
32.2. Firewall Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
32.3. Firewall Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
32.4. The OpenBSD Packet Filter (PF) and ALTQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
32.5. The IPFILTER (IPF) Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
32.6. IPFW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
33. Administration réseau avancée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
33.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
33.2. Passerelles et routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
33.3. Réseau sans fil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
33.4. Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
33.5. Bridging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
33.6. Système sans disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
33.7. ISDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
33.8. Translation d’adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
33.9. IP sur liaison parallèle (PLIP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
33.10. IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
33.11. ATM ("Asynchronous Transfer Mode"). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
V: Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
Annexe A: Se procurer FreeBSD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
A.1. Editeurs de CD-ROMs et DVDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
A.2. Sites FTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
A.3. CVS anonyme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806
A.4. Utiliser CTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
A.5. Utiliser CVSup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
A.6. Utiliser Portsnap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
A.7. Etiquettes CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
A.8. Sites AFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
A.9. Sites rsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Annexe B: Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
B.1. Livres magazines consacrés à FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
B.2. Manuels d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
B.3. Manuels d’administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
B.4. Manuels de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
B.5. "Internes" du système d’exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
B.6. Ouvrages de référence en matière de sécurité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
B.7. Ouvrages de référence sur le matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
9
B.8. Histoire d’UNIX® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
B.9. Revues et journaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
Annexe C: Ressources sur Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
C.1. Listes de diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
C.2. Forums de discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858
C.3. Serveurs World Wide Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
C.4. Adresses électroniques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
C.5. Comptes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860
Annexe D: Clés OpenPGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
D.1. Officers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
10
Préface
Public visé
Le nouveau venu à FreeBSD constatera que la première section de ce livre guide l’utilisateur à
travers le processus d’installation de FreeBSD, et présente progressivement les concepts et les
conventions qui sont les fondements d’UNIX®. Travailler avec cette section demande un peu plus
que le simple désire d’explorer, et la capacité d’assimiler de nouveaux concepts quand ils sont
présentés.
Une fois que vous en êtes arrivé là, la seconde, bien plus grande, section du Manuel est une
référence complète de tous les sujets qui intéressent les administrateurs systèmes de FreeBSD.
Certains de ces chapitres peuvent vous recommander d’effectuer des lectures préliminaires, cela
est noté dans le synopsis au début de chaque chapitre.
• Sécurité, le chapitre "Sécurité", a été augmenté avec de nouvelles informations sur les réseaux
privés virtuels (VPNs), les listes de contrôle d’accès au système de fichiers (ACLs), et sur les avis
de sécurité.
• Mandatory Access Control, "Le contrôle d’accès obligatoire" (MAC) est un nouveau chapitre
ajouté avec cette édition. Il explique ce qu’est le MAC et comment ce mécanisme peut être utilisé
pour sécuriser un système FreeBSD.
• Stockage des données, le chapitre "Stockage des données", a bénéficié de l’ajout de nouvelles
sections concernant les périphériques de stockage USB, les instantanés de systèmes de fichiers,
les quotas d’utilisation des disques, les systèmes de fichiers réseaux et sauvegardés sur fichier,
et le chiffrage de partitions.
• Le gestionnaire de volume Vinum, "Vinum", est un nouveau chapitre apparaissant avec cette
édition. Il décrit l’utilisation de Vinum, un gestionnaire de volume qui permet la création de
disques logiques indépendants du périphérique, et l’utilisation de systèmes RAID-0, RAID-1 et
RAID-5 logiciels.
• Une section dépannage a été ajoutée au chapitre PPP et SLIP, PPP et SLIP.
11
• Serveurs réseau le chapitre "Serveurs réseau", apparaît avec cette édition. Ce chapitre traite de
la configuration du serveur HTTP Apache, de ftpd, et celle d’un serveur pour clients Microsoft®
Windows® à l’aide de Samba. Certaines sections du chapitre Administration réseau avancée,
"Administration réseau avancée" ont été déplacées vers ce nouveau chapitre.
• Un glossaire a été ajouté pour centraliser les définitions des termes techniques employés tout au
long de cet ouvrage.
• Toutes les figures ASCII ont été remplacées par des graphiques.
• Un synopsis standard a été ajouté à chaque chapitre pour donner un rapide résumé des
informations contenues par ce dernier et ce qu’est sensé connaître le lecteur.
• Le Installer FreeBSD ("Installer FreeBSD") fut complètement réécrit avec de nombreuses photos
d’écrans pour rendre le texte plus facile à comprendre pour les nouveaux utilisateurs.
• Le Quelques bases d’UNIX ("Quelques bases d’UNIX®") a été augmenté pour contenir des
informations additionnelles sur les processus, daemons et signaux.
• Le Installer des applications. les logiciels pré-compilés et les logiciels portés ("Installer des
applications") a été augmenté pour contenir des informations complémentaires sur la gestion
des applications pré-compilées.
• Le Le système X Window ("Le système X Window") a complètement été réécrit en insistant sur
l’utilisation de technologies modernes d’environnement de travail comme KDE et GNOME sous
XFree86™ 4.X.
• Le Stockage des données ("Stockage des données") fut réécrit à partir de ce qui était à l’origine
deux chapitres séparés "Disques" et "Sauvegardes". Nous pensons que le sujet est plus facile à
appréhender quand il est présenté en un seul chapitre. Une section sur RAID (matériel et
logiciel) fut également ajoutée.
12
• Plusieurs nouvelles sections ont été ajouté au Administration réseau avancée ("Administration
réseau avancée").
• Le Compatibilité binaire avec Linux® ("Compatibilité Linux®") a été augmenté pour inclure des
informations sur l’installation d’Oracle® et SAP® R/3®.
• Les nouveaux sujets suivants sont abordés dans cette seconde édition:
◦ Multimédia (Multimédia)
Introduction
Présente FreeBSD à un nouvel utilisateur. Il décrit l’histoire du projet FreeBSD, ses objectifs, son
mode de développement.
Installer FreeBSD
Guide un utilisateur à travers le processus d’installation. Quelques sujets d’installation avancée,
comme l’installation avec une console série, sont aussi couverts.
Le système X Window
Décrit le système X Window en général et l’utilisation d’X11 sur FreeBSD en particulier. Décrit
également les environnements de travail comme KDE et GNOME.
Bureautique
Liste les applications de bureautique courantes, comme les navigateurs Web et les suites de
13
bureautique, et décrit comment les installer sous FreeBSD.
Multimédia
Montre comment installer le support du son et de la vidéo pour votre système. Décrit également
quelques applications audio et vidéo.
Imprimer
Décrit la gestion des imprimantes sous FreeBSD, y compris les informations sur les pages d’en-
tête, la comptabilisation de l’usage et la configuration de base.
Configuration et optimisation
Décrit les paramètres disponibles pour les administrateurs systèmes afin d' optimiser les
performances d’un système FreeBSD. Décrit également les différents fichiers de configuration
utilisés dans FreeBSD et où les trouver.
Sécurité
Décrit différents outils disponibles pour vous aider à sécuriser votre système FreeBSD, dont
Kerberos, IPsec et OpenSSH.
Environnements jails
Décrit l’organisation des environnements jail, et les améliorations apportées par ces
environnements par rapport au support chroot traditionnel de FreeBSD.
14
installée, configurée et comment les audits peuvent être examinés et surveillés.
Virtualisation
Décrit ce que les systèmes de virtualisation apportent, et comment ils peuvent être utilisés avec
FreeBSD.
Communications série
Explique comment connecter terminaux et modems à votre système FreeBSD aussi bien pour les
connexions entrantes que sortantes.
PPP et SLIP
Décrit comment utiliser PPP, SLIP ou PPP sur Ethernet pour se connecter à des systèmes distants
à l’aide de FreeBSD.
Courrier électronique
Explique les différents composants d’un serveur de courrier et plonge dans la configuration de
base du serveur de courrier le plus populaire: sendmail.
Serveurs réseau
Fournit des instructions détaillées et des exemples de fichiers de configuration pour configurer
votre machine FreeBSD comme serveur de fichiers, serveur de noms de domaine, serveur
d’information réseau, ou comme serveur de synchronisation d’horloge.
Firewalls
Explique la philosophie des coupe-feux logiciels et fournit des informations détaillées sur la
configuration des différents coupe-feux disponibles pour FreeBSD.
15
Administration réseau avancée
Décrit de nombreux sujets sur l’utilisation réseau, dont le partage d’une connexion Internet avec
d’autres ordinateurs sur votre réseau local, routage, réseaux sans-fils, Bluetooth®, ATM, IPv6, et
bien plus.
Se procurer FreeBSD
Enumère les différentes sources pour obtenir FreeBSD sur CDROM ou DVD, ainsi que les
différents sites Internet qui vous permettent de télécharger et d’installer FreeBSD.
Bibliographie
Cet ouvrage aborde de nombreux sujets cela peut vous laisser sur votre faim et à la recherche de
plus de détails. La bibliographie énumère d’excellents ouvrages qui sont référencés dans le
texte.
Clés OpenPGP
Liste les clés PGP de nombreux développeurs FreeBSD.
Conventions typographiques
Italique
Une police de caractères italique est utilisée pour les noms de fichiers, les URLs, le texte à mettre
en valeur et la première utilisation de termes techniques.
Caractères gras
Des caractères gras sont utilisés pour les applications, les commandes et les touches.
Utilisation du clavier
Les touches sont représentées en gras pour ressortir du texte. Les combinaisons de touches qui
sont sensées être tapées simultanément sont représentées avec + entre chaque touche, comme par
exemple:
16
Indiquant que l’utilisateur devra appuyer simultanément sur les touches Ctrl , Alt , et Del .
Les touches qui sont sensées être tapées en séquence seront séparées par une virgule, par exemple:
Ctrl + X , Ctrl + S
Signifiera que l’on on attend à ce que l’utilisateur tape les touches Ctrl et X simultanément et
ensuite tape Ctrl et S simultanément.
Exemples
Les exemples commençant par E:\ indiquent une commande MS-DOS®. Sauf indication contraire,
on peut exécuter ces commandes depuis une fenêtre "d’invite de commande" dans un
environnement Microsoft® Windows® moderne.
Les exemples commençant par # indiquent que la commande doit être lancée en tant que super-
utilisateur sous FreeBSD. Vous pouvez ouvrir une session en tant que root pour taper cette
commande, ou ouvrir une session sous votre compte normal et utiliser su(1) pour obtenir les
privilèges de super-utilisateur.
# dd if=[Link] of=/dev/fd0
Les exemples commençant par % indiquent une commande qui devrait être lancée par un
utilisateur normal. Sauf indication contraire, la syntaxe de l’interpréteur de commandes C-shell est
utilisée pour configurer les variables d’environnement et autres commandes de l’interpréteur.
% top
Remerciements
L’ouvrage que vous avez en main représente les efforts de plusieurs centaines de personnes dans le
monde. Qu’ils aient envoyé des corrections de fautes de frappe, ou soumis des chapitres entiers,
toutes les contributions ont été utiles.
17
Partie I: Pour commencer
Cette partie du Manuel FreeBSD est destinée aux nouveaux venus à FreeBSD, utilisateurs et
administrateurs. Ces chapitres:
• Présenteront FreeBSD.
Le nombre de références dans le texte a été limité au minimum afin que cette section du Manuel
puisse être lue du début jusqu’à la fin avec le moins de changements de pages possibles.
18
Chapitre 1. Introduction
1.1. Synopsis
Merci de votre intérêt pour FreeBSD! Le chapitre suivant traite de divers aspects concernant le
projet FreeBSD, comme son histoire, ses objectifs, son mode de développement, et d’autres.
• Multi-tâche préemptif avec ajustement dynamique des priorités pour garantir un partage
équilibré et fluide de l’ordinateur entre les applications et les utilisateurs et cela même sous les
charges les plus importantes.
• Réseau TCP/IP complet dont le support de standards industriels comme SCTP, DHCP, NFS, NIS,
PPP, SLIP, IPsec, et IPv6. Cela signifie que votre machine FreeBSD peut coopérer facilement avec
d’autres systèmes ou être utilisée comme serveur d’entreprise, fournissant des fonctions
essentielles comme NFS (accès aux fichiers en réseau) et le service de courrier électronique, ou
encore l’accès de votre entreprise à l’Internet grâce aux services WWW, FTP, et aux
fonctionnalités de routage et de coupe-feu (sécurité).
• La protection de la mémoire garantit que les applications (ou les utilisateurs) ne peuvent
19
interférer entre eux. Une application qui plante n’affectera en rien les autres.
• FreeBSD est un système d’exploitation 32-bits (64-bits sur l’architecture Alpha, Itanium®,
AMD64, et UltraSPARC®) et a été conçu comme tel dès le début.
• Compatibilité binaire avec de nombreux programmes compilés pour Linux, SCO, SVR4, BSDI et
NetBSD.
• Des milliers d’applications prêtes à l’emploi sont disponibles grâce au catalogue des logiciels
portés (ports) et au catalogue des logiciels pré-compilés (packages). Pourquoi chercher sur
l’Internet alors que tout est là?.
• Des milliers d’applications faciles à porter sont disponibles sur l’Internet. FreeBSD est
compatible au niveau du code source avec les systèmes UNIX® commerciaux les plus répandus
et donc la plupart des applications exigent peu, sinon aucune modification, pour les compiler.
• Mémoire virtuelle à la demande et "cache unifié pour les disques et la mémoire virtuelle" cela
permet de répondre aux besoins des applications gourmandes en mémoire tout en garantissant
le temps de réponse aux autres utilisateurs.
• Des outils complets de développement C, C++, et Fortran. De nombreux autres langages pour la
recherche de pointe et le développement sont aussi disponibles dans les catalogues des logiciels
portés et pré-compilés.
• La disponibilité Code source de l’intégralité du système vous donne un contrôle total sur votre
environnement. Pourquoi être prisonnier d’une solution propriétaire et dépendant de votre
fournisseur alors que vous pouvez avoir un véritable système ouvert?
FreeBSD est basé sur la version 4.4BSD-Lite2 du "Computer Systems Research Group" (CSRG) de
l’Université de Californie à Berkeley et continue la tradition de développement renommée des
systèmes BSD. En plus de l’excellent travail fourni par le CSRG, le Projet FreeBSD a investi des
milliers d’heures de travail pour optimiser le système pour arriver aux meilleures performances et
au maximum de fiabilité sous la charge d’un environnement de production. Alors que la plupart
des géants dans le domaine des systèmes d’exploitation pour PC s’acharnent encore à obtenir de
telles possibilités, performances et fiabilité, FreeBSD peut les offrir dès maintenant!
La seule limite aux domaines d’application auxquels FreeBSD peut satisfaire est votre propre
imagination. Du développement de logiciels à la production robotisée, de la gestion de stocks à la
correction d’azimut pour les antennes satellites; si un UNIX® commercial peut le faire, il y a de très
fortes chances que FreeBSD le puisse aussi! FreeBSD bénéficie aussi de centaines d’applications de
haute qualité développées par les centres de recherche et les universités du monde entier, souvent
disponibles gratuitement ou presque. Il existe aussi des applications commerciales et leur nombre
croît de jour en jour.
Comme le code source de FreeBSD lui-même est globalement disponible, le système peut aussi être
20
adapté sur mesure à un point pratiquement jamais atteint pour des applications ou des projets
particuliers, d’une façon qui serait habituellement impossible avec les systèmes d’exploitation
commerciaux de la plupart des principaux fournisseurs. Voici juste quelques exemples
d’applications pour lesquelles FreeBSD est utilisé:
• Services Internet: les fonctionnalités réseau TCP/IP robustes qu’inclut FreeBSD en font la plate-
forme idéale pour un éventail de services Internet, tels que:
◦ Serveurs FTP
◦ Et plus…
Avec FreeBSD, vous pouvez facilement commencer petit avec un PC 386 à bas prix et évoluer
jusqu’à un quadri-processeurs Xeon avec stockage RAID au fur et à mesure que votre
entreprise s’agrandit.
• Recherche: Avec le code source de la totalité du système disponible, FreeBSD est un excellent
outil de recherche sur les systèmes d’exploitation tout autant que pour d’autres branches de
l’informatique. Le fait que FreeBSD soit librement disponible rend aussi possible l’échange
d’idées et le développement partagé entre groupes éloignés sans avoir à se préoccuper de
problèmes de licence particulières ou de restrictions à ce qui pourrait être discuté sur des
forums ouverts.
• Réseau: Il vous faut un nouveau routeur? Un serveur de domaine (DNS)? Un coupe-feu pour
tenir les gens à l’écart de votre réseau interne? FreeBSD peut facilement faire de votre vieux
386 ou 486 inutilisé qui traîne dans un coin un routeur évolué avec des fonctionnalités
sophistiquées de filtrage de paquets.
• Station de travail X Window: FreeBSD est un excellent choix pour faire un terminal X peu
coûteux, en utilisant le serveur X11 librement disponible. Au contraire d’un terminal X, FreeBSD
permet d’exécuter localement, si désiré, un grand nombre d’applications, déchargeant ainsi le
serveur central. FreeBSD peut même démarrer "sans disque", ce qui permet de concevoir des
postes de travail individuels moins chers et plus faciles à administrer.
FreeBSD est disponible sous forme de code source ou binaire sur CDROM, DVD ou par ftp anonyme,
21
Voyez Se procurer FreeBSD pour plus de détails.
FreeBSD est utilisé par certains des plus importants sites sur l’Internet, parmi lesquels:
• Yahoo!
• Apache
• Pair Networks
• Sony Japan
• Netcraft
• Weathernews
• Supervalu
• TELEHOUSE America
• Sophos Anti-Virus
• JMA Wired
et de nombreux autres.
Le projet FreeBSD a vu le jour au début de 1993, en partie comme extension du "Kit de mise à jour
non officiel de 386BSD" des trois derniers coordinateurs du kit de mise à jour : Nate Williams, Rod
Grimes et moi-même.
Notre objectif de départ était de fournir une distribution intermédiaire de 386BSD pour corriger un
certain nombre de problèmes que le mécanisme du kit de mise à jour ne permettait pas de
résoudre. Certains d’entre vous se rappellent peut-être que l’intitulé de travail d’origine du projet
était "386 BSD 0.5" ou "386BSD Interim" en référence à ce problème.
386BSD était le système d’exploitation de Bill Jolitz, qui souffrait assez sévèrement à ce moment-là
d’avoir été négligé pendant presque un an. Comme le kit de mise à jour enflait de plus en plus
inconfortablement au fil des jours, nous avons décidé à l’unanimité qu’il fallait faire quelque chose
et aider Bill en fournissant cette distribution provisoire de "remise à plat". Ces projets se sont
brutalement interrompus lorsque Bill a décidé de retirer son aval au projet sans dire clairement ce
qui serait fait à la place.
Il ne nous a pas fallu longtemps pour décider que l’objectif restait valable, même sans l’adhésion de
Bill, et nous avons donc adopté le nom "FreeBSD", une proposition de David Greenman. Nos
22
objectifs de départ ont été définis après avoir consulté les utilisateurs du moment du système et,
dès qu’il est devenu clair que le projet était parti pour devenir un jour éventuellement réalité, nous
avons contacté Walnut Creek CDROM dans l’optique d’améliorer la distribution de FreeBSD pour le
grand nombre de ceux qui n’avaient pas la chance de pouvoir accéder facilement à l’Internet. Non
seulement Walnut Creek CDROM a adopté l’idée de distribuer FreeBSD sur CDROM, mais a été
jusqu’à fournir au projet une machine pour travailler et une connexion rapide à l’Internet. Sans le
degré pratiquement sans précédent de confiance de Walnut Creek CDROM en ce qui n’était alors
qu’un projet totalement inconnu, il y a peu de chance que FreeBSD ait été aussi loin, aussi vite, que
là où il en est aujourd’hui.
La première version sur CDROM (et sur l’ensemble du Net) fut FreeBSD 1.0, parue en Décembre
1993. Elle reposait sur la bande 4.3BSD-Lite ("Net/2") de l’Université de Californie à Berkeley, avec
de nombreux composants venant aussi de 386BSD et de la "Free Software Foundation". Ce fut un
succès honnête pour une version initiale, qui fut suivi par le franc succès de la version 1.1 de
FreeBSD, publiée en Mai 1994.
A peu près à cette époque, des nuages menaçants et inattendus apparurent lorsque commença la
bataille juridique entre Novell et l’U.C. Berkeley autour du statut légal de la bande Net/2 de
Berkeley. Dans les termes de l’accord, l’U.C. Berkeley concédait qu’une grande partie de Net/2 était
du code "protégé" et propriété de Novell, qui l’avait à son tour racheté à AT&T quelque temps
auparavant. Berkeley obtint en retour la "bénédiction" de Novell que 4.4BSD-Lite soit, lorsqu’il vit
finalement le jour, déclaré non protégé et que tous les utilisateurs de Net/2 soit fortement incités à
migrer. Cela incluait FreeBSD, et l’on donna au projet jusqu’à Juillet 1994 pour mettre un terme à
son propre produit basé sur Net/2. Selon les termes de cet accord, une dernière livraison était
autorisée avant le délai final; ce fut FreeBSD [Link].
Nous avons publié FreeBSD 2.1.5 en Août 1996, et il s’avéra suffisamment populaire chez les
fournisseurs d’accès et les utilisateurs professionnels pour qu’une nouvelle version sur la branche
2.1-STABLE soit justifiée. Ce fut la version FreeBSD [Link], parue en Février 1997 et qui marque la
fin de 2.1-STABLE comme branche principale de développement. Dès lors, il n’y aurait plus que des
améliorations quant à la sécurité et autres corrections de bogues critiques sur cette branche,
(RELENG_2_1_0), passée en phase de maintenance.
La branche FreeBSD 2.2 fut créée à partir de la branche principale de développement ("-CURRENT")
en Novembre 1996 en tant que branche RELENG_2_2, et la première version complète (2.2.1) parut
en Avril 1997. Il y eut d’autres versions sur la branche 2.2 à l’été et à l’automne 97, la dernière
(2.2.8) parut en Novembre 1998. La première version officielle 3.0 sortira en Octobre 1998 et
annoncera le début de la fin pour la branche 2.2.
Il y eut la création de nouvelles branches le 20 Janvier 1999, donnant une branche 4.0-CURRENT et
23
une branche 3.X-STABLE. De cette dernière il y eut la version 3.1 livrée le 15 Février 1999, la version
3.2 livrée le 15 Mai 1999, la 3.3 le 16 Septembre 1999, la 3.4 le 20 Décembre 1999 et la 3.5 le 24 Juin
2000, qui fut suivit quelques jours plus tard par une mise à jour mineure 3.5.1 pour rajouter
quelques correctifs de sécurité de dernière minute sur Kerberos. Cela sera la dernière version de la
la branche 3.X à paraître.
La tant attendue 5.0-RELEASE a été annoncée le 19 Janvier 2003. Etant le point culminant de près de
trois ans de travail, cette version a engagé FreeBSD sur la voie d’un support avancé des systèmes
multiprocesseurs et des "threads", et a introduit le support des plateformes UltraSPARC® et ia64.
Cette version fut suivie de la 5.1 en Juin 2003. La dernier version 5.X issue de la branche -CURRENT
fut la 5.2.1-RELEASE présentée en Février 2004.
La branche RELENG_5 créée en Août 2004, suivie par la 5.3-RELEASE, marque le début de la
branche 5-STABLE. La version la plus récente, la 11.2-RELEASE, est sortie en June 28, 2018. Il n’est
pas prévu de publier d’autres versions de la branche RELENG_5.
La branche RELENG_6 a été créée en Juillet 2005. La version 6.0-RELEASE, la première version issue
de la branche 6.X a été rendue publique en Novembre 2005. La version la plus récente, la 12.0-
RELEASE, est sortie en December 11, 2018. De nouvelles versions sont prévues pour la branche
RELENG_6.
Pour le moment, les projets de développement à long terme continuent à se faire dans la branche
(tronc) 7.X-CURRENT, et des "instantanées" de la 7.X sur CDROM (et, bien sûr, sur le net) sont
continuellement mises à disposition sur le serveur d’instantané pendant l’avancement des travaux.
L’objectif du projet FreeBSD est de fournir du logiciel qui puisse être utilisé à n’importe quelle fin et
sans aucune restriction. Nombre d’entre nous sont impliqués de façon significative dans le code (et
dans le projet) et ne refuseraient certainement pas une petite compensation financière de temps à
autre, mais ce n’est certainement pas dans nos intentions d’insister là dessus. Nous croyons que
notre première et principale "mission" est de fournir du code à tout le monde, pour n’importe quel
projet, de façon à ce qu’il soit utilisé le plus possible et avec le maximum d’avantages. C’est, nous le
pensons, l’un des objectifs les plus fondamentaux du Logiciel Libre et l’un de ceux que nous
soutenons avec enthousiasme.
Le code de l’arborescence des sources, qui est régi par la Licence Publique GNU ("GNU Public
License" - GPL) ou la Licence Publique GNU pour les Bibliothèques ("GNU Library Public License" -
GLPL) impose légèrement plus de contraintes, bien que plutôt liées à une disponibilité plus grande
qu’au contraire, comme c’est généralement le cas. En raison des complications supplémentaires qui
peuvent résulter de l’utilisation commerciale de logiciels GPL, nous essayons, cependant de
remplacer ces derniers par des logiciels soumis à la licence BSD qui est plus souple, chaque fois que
c’est possible.
24
1.3.3. Le mode de développement de FreeBSD
Le développement de FreeBSD est un processus très ouvert et très souple, c’est littéralement le
résultat de contributions de centaines de personnes dans le monde entier, ce que reflète notre liste
des participants. L’infrastructure de développement de FreeBSD permet à ces centaines de
développeurs de collaborer via l’Internet. Nous sommes toujours à l’affût de nouveaux
développeurs et de nouvelles idées, et ceux que s’impliquer de plus près intéresse n’ont besoin que
de contacter la liste de diffusion pour les discussions techniques sur FreeBSD. La liste de diffusion
pour les annonces relatives à FreeBSD est aussi disponible pour ceux qui veulent faire connaître
aux autres utilisateurs de FreeBSD les principaux domaines de développement en cours.
Certains membres de l’équipe de base ont aussi leur propre domaine de responsabilité, ce qui
signifie qu’il leur est dévolu de veiller à ce qu’une partie significative du système satisfasse aux
fonctionnalités annoncées. Pour une liste complète des développeurs FreeBSD et de leurs
domaines de responsabilité, veuillez consulter la liste des participants au projet.
25
donc "implication" ne doit pas être compris "support garanti". La comparaison
précédente avec un comité directeur n’est pas tout à fait exacte, et il serait plus
juste de dire que ce sont des gens qui ont sacrifié leur vie à FreeBSD contre
toute raison!
Contributions extérieures
Enfin, mais certainement pas des moindres, le groupe le plus important de développeurs est
constitué par les utilisateurs eux-mêmes qui nous fournissent de façon quasi régulière leur
retour d’expérience et leurs corrections de bogues. Le principal moyen d’entrer en contact avec
le développement plus décentralisé de FreeBSD est de s’inscrire sur la liste de diffusion pour les
discussions techniques sur FreeBSD où ces questions sont abordées. Voyez Ressources sur
Internet pour plus d’informations concernant les diverses listes de discussion FreeBSD.
La liste de ceux qui ont contribué au projet est longue et en augmentation, pourquoi donc ne pas
vous y joindre et contribuer à quelque chose en retour dès aujourd’hui?
Fournir du code n’est pas la seule manière de contribuer au projet; pour avoir une liste plus
complète de ce qu’il y a à faire, voyez s’il vous plaît le site du projet FreeBSD.
En résumé, notre modèle de développement est organisé comme un ensemble relâché de cercles
concentriques. Ce modèle centralisé est en place pour la commodité des utilisateurs de FreeBSD, qui
disposent ainsi d’un moyen facile de suivre l’évolution d’une base de code centrale, et non pour
tenir à l’écart d’éventuels participants! Nous souhaitons fournir un système d’exploitation stable
avec un nombre conséquent de programmes d’application cohérents que les utilisateurs puissent
facilement installer et employer - c’est un modèle qui fonctionne très bien pour cela.
Tout ce que nous attendons de ceux qui se joindraient à nous pour développer FreeBSD est un peu
de la même implication que les développeurs actuels ont vis-à-vis de sa réussite continue!
FreeBSD est une version librement disponible et incluant tout le code source basé sur 4.4BSD-Lite2
pour les ordinateurs à architectures Intel i386™, i486™, Pentium®, Pentium® Pro, Celeron®,
Pentium® II, Pentium® III, Pentium® 4 (ou compatible), Xeon™, DEC Alpha™ et systèmes basés sur
UltraSPARC® de Sun. Il est basé essentiellement sur du logiciel du groupe CSRG de l’Université de
Californie à Berkeley, avec des additions venant de NetBSD, OpenBSD, 386BSD, et de la "Free
Software Foundation".
Depuis la publication de FreeBSD 2.0 fin 1994, les performances, fonctionnalités et la stabilité de
FreeBSD ont été améliorées de façon spectaculaire. La plus grosse modification est un gestionnaire
de mémoire virtuelle totalement revu qui comprend un cache commun au disque et à la mémoire
virtuelle, qui n’améliore pas seulement les performances, mais diminue aussi l’occupation de la
mémoire, de telle sorte qu’une configuration avec 5 MO devienne un minimum acceptable. D’autres
ajouts concernent le support intégral des clients et serveurs NIS, le support des transactions TCP, les
connexions PPP à la demande, le support intégré DHCP, un sous-système SCSI amélioré, support
ISDN, support pour l’ATM, FDDI, les cartes "Fast et Gigabit Ethernet" (1000 Mbit), un meilleur
support des derniers contrôleurs Adaptec et des milliers de corrections de bogues.
En plus du système lui-même, FreeBSD offre un nouveau catalogue de logiciels portés ("ports") qui
26
inclut des milliers de programmes habituellement demandés. A l’heure où sont écrites ces lignes il y
avait plus de 36000 logiciels portés! La liste va des serveurs HTTP (WWW) aux jeux, langages,
éditeurs et presque tout ce qui existe entre. Le catalogue complet des logiciels demande près de 3
GB d’espace disque, les portages se présentant sous forme de "delta" avec les sources d’origine. Cela
rend leur mise à jour bien plus facile, et diminue de façon sensible l’espace nécessaire par rapport
à l’ancien catalogue 1.0. Pour compiler un logiciel porté, il vous suffit d’aller dans le répertoire du
programme que vous désirez installer, de taper make install, et de laisser le système faire le reste.
La distribution originale complète de chaque logiciel est chargée dynamiquement depuis le CDROM
ou un site FTP proche, il vous suffit de disposer de suffisamment d’espace disque pour compiler le
logiciel que vous voulez. Presque tous les logiciels sont aussi fournis sous forme pré-compilée
("package"-paquetage) qui peut être installé avec une seule commande (pkg_add), si vous ne voulez
pas les compiler à partir des sources. Plus d’information sur les paquetages et les logiciels portés
peut être trouvée dans le Installer des applications. les logiciels pré-compilés et les logiciels portés..
Il y a un certain nombre d’autres documents qui vous serons peut-être très utiles à l’installation et à
l’utilisation de FreeBSD, que vous pouvez maintenant trouver dans le répertoire /usr/shared/doc de
n’importe quelle machine sous une version récente de FreeBSD. Vous pouvez consulter les manuels
localement disponibles avec n’importe quel navigateur HTML aux URLs suivantes:
Le Manuel FreeBSD
/usr/shared/doc/handbook/[Link]
La FAQ de FreeBSD
/usr/shared/doc/faq/[Link]
Vous pouvez aussi consulter les exemplaires originaux (et les plus souvent mis à jour) sur
[Link]
27
Chapitre 2. Installing FreeBSD
2.1. Synopsis
En fonction de l’environnement utilisé, il existe plusieurs manières différentes pour obtenir un
FreeBSD en mesure de fonctionner. Il existe des:
• Images de machines virtuelles disponibles sur les plateformes Amazon AWS Marketplace,
Microsoft Azure Marketplace, et Google Cloud Platform, à exécuter sur leurs services
d’hébergement respectifs. Pour plus d’information sur le déploiement de FreeBSD sur Azure,
veuillez consulter le chapitre correspondant de la Documentayion Azure.
• Images disque de cartes SD, pour les systèmes embarqués comme le Raspberry Pi ou le
BeagleBone Black. Elles peuvent être téléchargées à partir de la page Download FreeBSD. Ces
fichiers doivent être décompressés et écrits sur une carte SD, comme un fichier d’image disque
brut, à partir de laquelle la carte embarquée pourra démarrer.
• Images disque d’installation, pour installer FreeBSD sur un disque dur pour les ordinateurs de
bureau, ordinateurs portables ou les systèmes serveurs.
Le reste de ce chapitre décrit les quatre cas, en expliquant comment installer FreeBSD en utilisant
un programme d’installation en mode texte appelé bsdinstall.
Par défaut, les instructions d’installation de ce chapitre sont écrites pour les architectures i386™ et
AMD64. Où elles seront applicables, des instructions spécifiques à d’autres architectures seront
indiquées. Il peut y avoir des différences mineures entre le programme d’installation et ce qui est
montré ici, aussi il faut utiliser ce chapitre comme un guide général plutôt qu’une suite
d’instructions à suivre à la ligne près.
28
• Comment accéder à la version "live" de FreeBSD avant d’effectuer une installation.
• Lire la liste du matériel supporté fournie avec la version de FreeBSD qui va être installée, et
vérifier que le matériel du système est supporté.
Une installation de FreeBSD nécessite un minimum de 96 Mo de RAM et 1.5 Go d’espace libre sur le
disque dur. Néanmoins, des quantités aussi faibles de mémoire et d’espace disque ne sont
réellement utilisables que pour des applications particulières comme les applications embarquées.
Un ordinateur d’usage général aura besoin de plus de ressources. 2-4 Go de RAM et au moins 8 Go
d’espace disque sont un bon point de départ.
amd64
C’est le type de processeur pour ordinateur de bureau et portable le plus courant, utilisé dans les
systèmes modernes. Intel® l’appelle Intel64. D’autres fabricants l’appelle parfois x86-64.
Des exemples de processeurs compatibles amd64 comprennent: les AMD Athlon™64, AMD
Opteron™, Intel® Xeon™ multi-coeurs, Intel® Core™ 2 et processeurs suivants.
i386
Les ordinateurs de bureau et portables plus anciens utilisent souvent cette architecture x86
32bits.
Presque tous les processeurs compatibles i386 avec une unité de calcul en virgule flottante sont
supportés. Tous les processeurs Intel® 486 ou supérieurs sont supportés. Néanmoins, les
binaires publiés par le projet sont compilés pour le processeur 686, une version spécifiquement
compilée sera nécessaire pour les systèmes 486 et 586.
arm64
La plupart des cartes embarquées sont des systèmes à base d’ARM 64bits. De nombreux serveurs
arm64 sont supportés.
29
arm
Les anciennes cartes armv7 sont supportées.
powerpc
Tous les systèmes Apple® Mac® utilisant une ROM"New World" avec l’USB intégré sont
supportés. Le fonctionnement SMP (multi-processeurs) est supporté sur les machines dotées de
plusieurs CPUs.
Avant d’installer tout système d’exploitation, il faut toujours en premier sauvegarder toutes
les données importantes. Ne pas stocker la sauvegarde sur le système sur lequel aura lieu
l’installation. A la place, sauvegarder les données sur un disque amovible comme un
disque USB, sur un autre système sur le réseau, ou sur un système de sauvegarde en ligne.
Tester la sauvegarde avant de lancer l’installation afin de s’assurer qu’elle contient tous les
fichiers nécessaires. Quand le programme d’installation formate le disque du système,
toutes les données stockées sur ce disque seront perdues.
2. Où installer FreeBSD?
Si FreeBSD sera le seul système d’exploitation installé, cette étape peut être passée. Mais si
FreeBSD partagera le disque avec un autre système d’exploitation, choisir quel disque ou
partition sera utilisée pour FreeBSD.
Dans les architectures i386 et amd64, les disques durs peuvent être divisés en plusieurs
partitions en utilisant une des deux méthodes de partitionnement. Le Master Boot Record
(MBR) traditionnel contient une table de partitions définissant jusqu’à quatre partitions
primaires. Pour des raisons historiques, FreeBSD appelle ces partitions primaires slices (
tranches). Une de ces partitions primaire peut devenir une partition étendue contenant
plusieurs partitions logiques. La table de partitionnement GUID (GUID Partition Table ou
GPT) est une méthode nouvelle et plus simple pour partitionner un disque. Les
implémentations classiques de GPT autorisent jusqu’à 128 partitions par disque,
supprimant ainsi le recours à des partitions logiques.
Le chargeur d’amorçage de FreeBSD a besoin soit d’une partition primaire soit d’une
partition GPT. Si toutes les partitions primaires ou GPT sont déjà utilisées, l’une d’entre
elles devra être libérée pour FreeBSD. Pour créer une partition sans effacer les données
existantes, utiliser un outil de redimensionnement de partition pour réduire une partition
existante et créer une nouvelle partition en utilisant l’espace libéré.
30
De nombreux outils de partionnement gratuits et commerciaux sont listés sur
[Link] GParted Live
([Link] est un CD Live gratuit qui comprend l’éditeur de
partition GParted. GParted est également disponible sur d’autres CDs Live Linux.
Si le réseau dispose d’un serveur DHCP, il peut être utilisé pour fournir une configuration
réseau automatique. Si la configuration par DHCP n’est pas possible, les informations
réseau suivantes pour le système doivent être obtenues auprès de l’administrateur réseau
ou du fournisseur d’accès:
a. Adresse IP
b. Masque de sous-réseau
Bien que le projet FreeBSD s’efforce de s’assurer que chaque version de FreeBSD soit aussi
stable que possible, des bogues peuvent parfois exister. Il est très rare que ces bogues
affectent le processus d’installation. Dès que ces problèmes sont découverts et corrigés, ils
sont notés dans l’Errata de FreeBSD ([Link]
présent sur le site Web de FreeBSD. Vérifier l’errata avant l’installation afin d’être sûr qu’il
n’y a pas de problème pouvant affecter l’installation.
Les informations sur chaque version, y compris les errata, peuvent être trouvés sur le site
web de FreeBSD dans la section d’information sur les différentes versions
([Link]
31
2.3.1. Préparer le support d’installation
Le programme d’installation FreeBSD n’est pas une application qui peut être exécutée à partir d’un
autre système d’exploitation. Au lieu de cela, télécharger un fichier d’installation de FreeBSD,
copiez-le sur le support correspondant à sa taille (CD, DVD, ou clé USB) et démarrer le système pour
installer à partir du support inséré ou branché sur l’ordinateur.
Les fichiers d’installation sont disponibles dans différents formats. Les formats varient en fonction
de l’architecture matérielle et du type de support.
Des fichiers d’installation supplémentaires sont prévus pour les ordinateurs qui sont amorcés par
UEFI (Unified Extensible Firmware Interface pour "Interface micrologicielle extensible unifiée"). Le
nom de ces fichiers comprend la chaîne de caractères uefi.
Types de fichiers:
• -[Link]: C’est le plus petit fichier d’installation car il ne contient que le programme
d’installation. Une connexion à Internet fonctionnelle est requise lors de l’installation puisque le
programme d’installation téléchargera les fichiers nécessaires pour effectuer l’installation de
FreeBSD. Ce fichier doit être gravé sur un CD en utilisant une application de gravure de CDs.
• -[Link]: Ce fichier contient tous les fichiers nécessaires pour installer FreeBSD, ses sources,
et le catalogue des logiciels portés. Il doit être gravé sur un CD en utilisant une application de
gravure de CDs.
• -[Link]: Ce fichier contient tous les fichiers nécessaires pour installer FreeBSD, ses sources, et
le catalogue des logiciels portés. Il contient également un ensemble de paquetages binaires
populaires pour installer un gestionnaire de fenêtres et des applications de manière à ce qu’un
système complet puisse être installé sans nécessiter une connexion à Internet. Ce fichier être
gravé sur un DVD en utilisant une application de gravure de DVDs.
• -[Link]: Ce fichier contient tous les fichiers nécessaires pour installer FreeBSD, ses
sources, et le catalogue des logiciels portés. Il doit être copié sur une clé USB en suivant les
instructions données plus bas.
• -[Link]: Comme -[Link], ne contient pas les fichiers d’installation, mais les
téléchargera au fur et à mesure des besoins. Une connexion à Internet fonctionnelle est requise
lors de l’installation. Copier ce fichier sur une clé USB comme décrit dans Ecrire un fichier
image sur un disque USB.
Après avoir téléchargé le fichier image du support d’installation, téléchargez également le fichier
CHECKSUM.SHA256 à partir du même répertoire. Calculez une somme de contrôle ou checksum du
fichier image. FreeBSD fournit sha256(1) à cet effet, à utiliser comme sha256 fichierimage. Les
autres systèmes d’exploitation proposent des outils similaires.
Comparez la somme de contrôle calculée avec celle donnée dans le fichier CHECKSUM.SHA256. Les
32
sommes de contrôle doivent être identiques. Si une des sommes ne correspond pas, le fichier est
corrompu et devra être téléchargé à nouveau.
Le fichier *.img est une image de l’intégralité du contenu d’une clé USB. Il ne peut pas être copié
directement vers le périphérique de destination comme un simple fichier. Plusieurs applications
existent pour écrire le fichier *.img sur une clé USB. Cette section décrit deux de ces utilitaires.
Cet exemple prend /dev/da0 comme périphérique cible sur lequel l’image sera
écrite. Vérifiez que le périphérique utilisé comme cible est bien le bon, car
cette commande détruira les données existantes.
1. L’utilitaire en ligne de commande dd(1) est disponible sur les systèmes BSD, Linux®, et Mac
OS®. Pour écrire une image en utilisant dd, brancher la clé USB et déterminez son nom de
périphérique. Indiquer, alors, le nom du fichier d’installation téléchargé et le nom du
périphérique pour la clé USB. Cet exemple écrit le fichier image d’installation amd64 sur le
premier périphérique USB sur un système FreeBSD existant.
Si cette commande échoue, vérifier que la clé USB n’est pas montée et que le nom de
périphérique est bien celui d’un disque et non d’une partition. Certains systèmes
d’exploitation pourront nécessiter l’exécution de cette commande avec sudo(8). La syntaxe
dd(1) varie légèrement en fonction des plate-formes; par exemple, Mac OS® a besoin d’un
bs=1m en minuscules. Des systèmes comme Linux® pourront mettre en tampon les
écritures. Pour forcer toutes les écritures en attente à s’effectuer, utiliser sync(8).
Image Writer for Windows® est une application gratuite pour écrire une image sur une clé
USB. Téléchargez-la depuis [Link] et
décompressez-la dans un répertoire.
33
Double-cliquez sur l’icone Win32DiskImager pour lancer le programme. Vérifiez que le
lecteur affiché sous Device est celui de la clé USB. Cliquer sur l’icone répertoire et
sélectionner l’image à écrire sur la clé. Cliquer sur [ Save ] pour accepter le nom du fichier
image. Vérifiez que tout est correct, et qu’il n’y a pas de répertoires présents sur la clé USB
ouverts dans d’autres fenêtres. Puis quand tout est prêt, cliquer sur [ Write ] pour écrire le
fichier image sur la clé USB.
L’installation peut être quittée à tout moment avant cet avertissement. Si quelque
chose a mal été configurée, arrêtez juste l’ordinateur avant ce point, et aucun
changement ne sera effectué sur le disque dur.
Cette section décrit comment démarrer le système à partir du support d’installation qui a été
préparé à l’aide des instructions de Préparer le support d’installation. Pour démarrer avec une clé
USB démarrable, brancher la clé USB avant d’allumer l’ordinateur. Pour démarrer avec un CD ou
un DVD, allumer l’ordinateur et insérer le disque à la première occasion. Comment configurer le
système pour démarrer à partir du support utilisé dépend de l’architure matérielle.
Ces architectures disposent d’un menu du BIOS pour sélectionner le périphérique de démarrage. En
fonction du support de démarrage choisi, sélectionner le lecteur CD/DVD ou l’USB comme premier
périphérique de démarrage. La plupart des systèmes proposent également la sélection du
périphérique d’amorçage au démarrage à l’aide d’une touche sans avoir à entrer dans le BIOS.
Généralement, la touche est soit F10 , soit F11 , soit F12 , ou encore Escape .
1. Le support d’installation n’a pas été inséré suffisamment tôt lors du processus de démarrage.
Laisser le support inséré, et essayer de redémarrer l’ordinateur.
2. Soit les modifications du BIOS étaient incorrectes ou non-sauvegardées. Vérifier à nouveau que
le bon périphérique a été choisi comme premier périphérique de démarrage.
3. Ce système est trop ancien pour supporter l’amorçage à partir du support choisi. Dans ce cas, le
gestionnaire de démarrage Plop ([Link] peut être utilisé
pour démarrer à partir du support sélectionné.
34
2.4.2. Démarrage pour l’architecture PowerPC®
Sur la plupart des machines, maintenir la touche C enfoncée lors du démarrage provoquera
l’amorçage du CD. Sinon appuyez sur Command + Option + O + F , ou Windows + Alt + O + F dans le cas des
claviers non-Apple®. A l’invite 0, entrez:
Une fois le système démarré à partir du support d’installation, un menu similaire au suivant sera
affiché:
Par défaut, le menu attendra dix secondes une saisie de l’utilisateur avant de démarrer dans le
programme d’installation de FreeBSD ou, si FreeBSD est déjà installé, avant de démarrer sous
FreeBSD. Pour mettre en pause ce décompte afin d’examiner les options offertes, appuyer sur
Espace . Pour sélectionner une option, appuyer sur le chiffre, le caractère ou la touche en
surbrillance. Les options disponibles sont les suivantes.
• Boot Multi User (Démarrage en mode multi-utilisateur): Cette option provoquera la poursuite
du processus de démarrage de FreeBSD. Si le décompte du démarrage a été mis en pause,
appuyer sur 1 , B majuscule ou minuscule, ou encore Entrée .
35
• Boot Single User (Démarrage en mode mono-utilisateur): Ce mode peut être employé pour
réparer une installation de FreeBSD existante comme décrit dans la Mode mono-utilisateur.
Appuyer sur 2 ou B majuscule ou minuscule pour entrer dans ce mode.
• Configure Boot Options: Ouvre le menu montré et décrit sur la Menu des options du chargeur
FreeBSD.
Le menu des options du chargeur est divisé en deux parties. La première partie peut être utilisée
pour soit retourner au menu de démarrage principal soit pour réinitialiser les options à leur valeur
par défaut.
La partie suivante est utilisée pour positionner les options disponibles sur On ou Off en appuyant
sur le chiffre ou le caractère en surbrillance pour chaque option. Le système démarre toujours en
utilisant le paramétrage choisi pour ces options jusqu’à ce qu’il soit modifié. Plusieurs options
peuvent être modifées en utilisant ce menu:
36
• ACPI Support: Si le système se fige au démarrage, essayer de positionner cette option à Off.
• Safe Mode: Si le système se fige toujours durant le démarrage même avec l’option ACPI Support à
Off, essayer de positionner cette option à On.
• Single User (Mono-utilisateur): Positionner cette option sur On pour réparer une installation
existante de FreeBSD comme décrit dans la Mode mono-utilisateur. Une fois le problème réglé,
repositionner l’option à Off.
• Verbose (Verbeux): Positionner cette option sur On pour voir des messages plus détaillés lors du
processus de démarrage. Cela peut être utile pour dépanner un matériel.
Après avoir effectué les sélections nécessaires, appuyer sur 1 ou Retour arrière pour retourner au
menu de démarrage principal, puis appuyer sur Entrée pour démarrer sous FreeBSD. Une série de
messages de démarrage apparaîtra au fur et à mesure que FreeBSD détectera le matériel et
chargera le programme d’installation. Une fois le démarrage achevé, le menu d’accueil de la Menu
d’accueil sera affiché.
Appuyer sur Enter pour sélectionner [ Install ] pour entrer dans le programme d’installation. Le
reste de ce chapitre décrit comment utiliser ce programme d’installation. Sinon, utiliser la flèche
droite ou gauche ou les lettres colorées pour sélectionner l’élément désiré. [ Shell ] peut être
sélectionné pour accéder à un interpréteur de commandes FreeBSD afin d’utiliser des utilitaires en
ligne de commande pour préparer les disques avant l’installation. L’option [ Live CD ] peut être
employée pour tester FreeBSD avant de l’installer. Cette option est décrite dans la Utilisation du CD
37
Live.
Pour relire les messages de démarrage, dont la détection du matériel, appuyer sur
la touche S majuscule ou minuscule, puis sur Entrée pour accéder à un
interpréteur de commandes. A l’invite, taper more /var/run/[Link] et utiliser la
barre d’espace pour faire défiler les messages. Une fois terminé, taper exit pour
revenir au menu d’accueil.
Avant de démarrer le processus d’installation, bsdinstall chargera les fichiers de tables de clavier
comme indiqué dans Chargement de la table de clavier.
Après le chargement des tables de clavier, bsdinstall affiche le menu montré sur Menu de sélection
de la table de clavier. Utilisez les flèches haut et bas pour choisir la table de clavier la plus proche
38
de celle du clavier relié au système. Appuyer sur Enter pour sauvegarder la sélection.
De plus, lors de la sélection d’une table de clavier différente, l’utilisateur peut tester la table et
s’assurer qu’elle est correcte avant de prendre en compte le changement comme montré sur Menu
de test de la table de clavier.
39
Figure 6. Menu de test de la table de clavier
Le menu bsdinstall suivant est utilisé pour configurer le nom de machine à donner au système
nouvellement installé.
40
Figure 7. Configuration du nom de machine
Saisir un nom de machine qui est unique sur le réseau. Cela doit être un nom de machine complet
comme [Link]
41
Figure 8. Sélection des composants à installer
• base-dbg - Outils de base comme cat, ls parmi tant d’autres avec les symboles de débogage
activés.
• lib32-dbg - Bibliothèques de compatibilité pour l’exécution d’applications 32bits sur une version
64bits de FreeBSD avec les symboles de débogage activés.
• lib32 - Bibliothèques de compatibilité pour l’exécution d’applications 32bits sur une version
64bits de FreeBSD.
Le catalogue des logiciels portés est un ensemble de fichiers qui automatise le téléchargement,
la compilation et l’installation de logiciels tierce-partie. Le Installer des applications. les logiciels
pré-compilés et les logiciels portés discute de l’utilisation du catalogue des logiciels portés.
42
disque.
• src - Code source complet du noyau et du système de base. Bien que n’étant pas requis pour la
majorité des applications, il peut être nécessaire pour compiler des pilotes de périphériques,
des modules du noyau, ou des applications du catalogue des logiciels portés. Il est également
utilisé pour le développement de FreeBSD. L’arborescence complète des sources demande 1 Go
d’espace disque, et la recompilation du système FreeBSD complet nécessite 5 Go d’espace
supplémentaire.
Le menu affiché dans Installation à partir du réseau n’apparaît que lors de l’installation à partir
d’une image -[Link] ou -[Link] étant donné que ces supports d’installation ne
contiennent pas de copie des fichiers d’installation. Comme les fichiers d’installation doivent être
récupérés par l’intermédiaire d’une connexion réseau, ce menu indique qu’une interface réseau
doit être configurée en premier lieu. Si ce menu est affiché à un moment donné de l’installation,
pensez à suivre les instructions données dans Configuration des interfaces réseau.
43
2.6. Allouer l’espace disque
Le menu suivant est utilisé pour déterminer la méthode pour allouer l’espace disque.
• le partitionnement Auto (UFS) fixe automatiquement les partitions disque et utilise le système
de fichiers UFS.
• le partitionnement Manual ("Manuel") permet aux utilisateurs avancés de créer des partitions
sur mesures à partir des options du menu.
• Shell ouvre une invite d’interpréteur de commandes dans laquelle les utilisateurs avancés
peuvent créer des partitions sur mesures en utilisant des utilitaires en ligne de commande
comme gpart(8), fdisk(8), et bsdlabel(8).
• le partitionnement Auto (ZFS) créé un système de fichiers racine sur ZFS avec le support
optionnel du chiffrement GELI pour les environnements de démarrage.
Cette section décrit ce qui doit être pris en compte lors du partitionnement du disque. Elle montre
ensuite comment utiliser les différentes méthodes de partionnement.
44
2.6.1. Choix du partitionnement
Lors du partitionnement, il faut garder à l’esprit que les disques durs transfèrent les données plus
rapidement depuis les pistes extérieures que depuis les pistes intérieures. Aussi, les systèmes de
fichiers plus petits et très sollicités devraient être positionnés vers l’extérieur du disque, alors que
les partitions plus grandes comme /usr devraient être placées vers l’intérieur du disque. C’est une
bonne idée de créer les partitions dans l’ordre suivant: /, espace de pagination, /var, et /usr.
La taille de la partition /var reflète l’utilisation prévue de la machine. Cette partition est utilisée
pour contenir les boîtes aux lettres de messagerie, les fichiers journaux, et les queues d’impression.
Les boîtes aux lettres et les fichiers journaux peuvent croître jusqu’à atteindre des tailles
inattendues en fonction du nombre d’utilisateurs et combien de temps sont conservés les fichiers
journaux. En moyenne, la plupart des utilisateurs n’auront rarement besoin de plus d’un gigaoctet
d’espace disque pour /var.
La partition /usr contient beaucoup de fichiers nécessaires au système, dont le catalogue des
logiciels portés de FreeBSD et le code source du système. Au moins 2 gigaoctets d’espace sont
recommandés pour cette partition.
Lors du choix de la taille des partitions, gardez à l’esprit les besoins en espace. Manquer d’espace
sur une partition alors qu’une autre est à peine utilisée peut être très frustrant.
Par principe, votre espace de pagination devrait typiquement avoir une taille double de la quantité
de mémoire physique (RAM). Les systèmes avec peu de mémoire RAM pourront avoir de meilleures
performances avec beaucoup plus d’espace de pagination. Configurer trop peu d’espace de
pagination peut conduire à une certaine inefficacité du code de pagination de la mémoire virtuelle
(VM) et peut être à l’origine de problèmes ultérieurement si vous ajoutez plus de mémoire à votre
système.
Sur des systèmes importants avec de multiples disques SCSI ou de multiples disques IDE
fonctionnant sur différents contrôleurs, il est vivement recommandé que vous configuriez un
espace de pagination sur chaque disque, jusqu’à quatre disques. Les partitions de pagination sur les
différents disques devront avoir approximativement la même taille. Le noyau peut gérer des tailles
arbitraires mais les structures de données internes sont dimensionnées pour 4 fois la taille de la
plus grande partition de pagination. Garder la taille des partitions de pagination proche permettra
au noyau de répartir de manière optimale l’espace de pagination entre les disques. Des espaces de
pagination importants ne sont pas problématiques, même s’ils sont peu utilisés. Il peut être plus
simple de récupérer la main face un programme incontrôlable avant d’être forcé à redémarrer la
machine.
En partitionnant correctement votre système, la fragmentation introduite sur les partitions plus
petites et plus chargées en écriture ne s’étendra pas sur les partitions principalement utilisées en
lecture. De plus, avoir les partitions principalement utilisées en écriture proche du bord du disque
45
augmentera les performances d’E/S sur les partitions qui le demandent le plus. Bien qu’il soit
nécessaire d’avoir de bonnes performances d’E/S sur les grandes partitions, les déplacer plus vers
l’extérieur du disque ne donnera pas lieu à une augmentation significative des performances alors
que le déplacement de performances alors que le déplacement de /var vers le bord peut avoir un
sérieux impact.
Quand cette méthode est sélectionnée, un menu affichera le(s) disque(s) disponible(s). Si plusieurs
disques sont connectés, choisissez celui sur lequel FreeBSD doit être installé.
Une fois le disque sélectionné, le menu suivant demande si l’installation se fait soit sur l’intégralité
du disque soit sur une partition à créer à partir de l’espace libre. Si [ Entire Disk ] est sélectionné,
une partition recouvrant la totalité du disque est automatiquement créée. Sélectionner [ Partition ]
créé une partition dans l’espace inutilisé du disque.
46
Figure 12. Sélection de l’intégralité du disque ou d’une partition
Après la sélection de [ Entire Disk ], bsdinstall affiche une boîte de dialogue indiquant que le
disque va être effacé.
47
Figure 13. Confirmation
Le menu suivant montre une liste avec les différents types d’organisation des partitions. GPT est
généralement le choix le plus adapté pour les ordinateurs de type amd64. Les ordinateurs plus
anciens qui ne sont pas compatibles avec GPT devraient utiliser un partionnement de type MBR.
Les autres types de partionnement sont généralement utilisés pour les ordinateurs peu courants ou
anciens. Plus d’informations sont disponibles dans la Tables de partitionnement.
48
Figure 14. Sélection du système de partionnement
Une fois l’organisation des partitions créée, vérifiez-la afin de s’assurer qu’elle correspond bien aux
besoins de l’installation. La sélection de [ Revert ] permettra de revenir au partitionnement de
départ, et l’appui sur [ Auto ] créera les partitions FreeBSD automatiquement. Les partitions
peuvent être créées, modifiées, ou supprimées manuellement. Quand le partitionnement est
correct, sélectionner [ Finish ] pour poursuivre l’installation.
49
Figure 15. Vérification des partitions créées
Une fois les disques configurés, le menu suivant offre une dernière chance pour effectuer des
modifications avant que les disques sélectionnés ne soient formatés. Si des changements doivent
être faits, choisir [ Back ] pour retourner dans le menu principal de partionnement. [ Revert Exit ]
fera quitter le programme d’installation sans qu’aucun changement n’ait été appliqué au disque
dur. Sélectionner [ Commit ] pour lancer le processus d’installation.
50
Figure 16. Confirmation finale
51
Figure 17. Créer manuellement les partitions
Sélectionner le disque d’installation(ada0 dans cet exemple) et [ Create ] pour afficher un menu sur
le choix du type de table de partitionnement.
52
Figure 18. Créer manuellement les partitions
Le partitionnement GPT est généralement le choix le plus approprié pour les ordinateurs de type
amd64 Les ordinateurs anciens qui ne sont pas compatibles avec GPT doivent utiliser à la place un
partitionnement de type MBR. Les autres systèmes de partitionnement sont en général utilisés pour
les ordinateurs plus anciens ou particuliers.
Abbréviation Description
53
Après avoir choisi et créé le partitionnement, sélectionner à nouveau [ Create ] créera les nouvelles
partitions. La touche Tab est utilisée pour déplacer le curseur entre les différents champs.
Une installation standard de FreeBSD avec GPT utilise au moins trois partitions:
• freebsd-zfs - Un système de fichiers ZFS FreeBSD. Plus d’informations au sujet de ZFS est
disponible dans le The Z File System (ZFS) Traduction en Cours .
Consulter la page de manuel gpart(8) pour la description d’autres types de partitions disponibles
pour GPT.
Des partitions avec plusieurs systèmes de fichiers peuvent être créées et certaines personnes
préfèrent une organisation plus traditionnelle avec des partitions séparées pour les systèmes de
fichiers /, /var, /tmp, et /usr. Consulter Création d’un système traditionnel de partitions pour
systèmes de fichiers séparés, pour un exemple.
Les tailles peuvent être entrées avec les abréviations courantes: K for kilooctet, M pour mégaoctets,
ou G pour gigaoctets.
54
Un alignement correct des secteurs sur le disque permet de meilleures
performances, et créer des partitions de tailles multiples de 4Koctets permet de
s’assurer de l’alignement sur les disques à secteur de 512 octets ou 4Koctets.
Généralement, employer des tailles de partition qui sont des multiples d'1M ou 1G
est le moyen le plus simple de garantir que chaque partition débute sur un
multiple de 4K. Il existe une exception: la partition freebsd-boot ne devrait pas
dépasser 512K en raison de limitations du code de démarrage.
Un point de montage est nécessaire si cette partition contiendra un système de fichiers. Si une seule
partition UFS unique sera créée, le point de montage devra être /.
Un Label (ou étiquette) est le nom avec lequel la partition sera connue. Les noms ou numéros de
disques peuvent varier si le disque est connecté à un contrôleur ou port différent, mais le label de
partition ne changera pas. Se référer aux labels plutôt qu’aux noms de disques et numéros de
partitions dans les fichiers comme /etc/fstab rend le système plus tolérant aux changements de
matériel. Les labels GPT apparaissent dans le répertoire /dev/gpt/ lorsqu’un disque est attaché au
système. Les autres systèmes de partitionnement présentent d’autres possibilités au niveau des
labels et leurs labels apparaissent sous différentes répertoires dans /dev/.
Employez un label unique pour chaque partition pour éviter les conflits avec les
labels identiques. Quelques lettres du nom du l’ordinateur, de son rôle, ou de son
emplacement peuvent être ajoutées au label. Par exemple, labroot ou rootfslab
pour la partition UFS racine de l’ordinateur appelé lab.
Exemple 1. Création d’un système traditionnel de partitions pour systèmes de fichiers séparés
Pour une organisation traditionnelle de partitions dans laquelle les répertoires /, /var, /tmp, et
/usr sont des systèmes de fichiers séparés ayant chacun leur propre partition, créer une table
de partition GPT, puis créer les partitions comme montré ci-après. Les tailles de partitions
indiquées sont celles typiques pour un disque de 20G. Si plus d’espace est disponible sur le
disque cible, une partition de pagination ou une partition /var plus importantes peuvent être
utiles. Les labels utilisés ici sont préfixés par ex pour "exemple", mais le lecteur peut utiliser un
autre label unique comme décrit plus haut.
Par défaut, le programme gptboot de FreeBSD s’attend à ce que la première partition UFS
trouvée soit la partition /.
freebsd-swap 4G exswap
freebsd-ufs 2G /var exvarfs
55
Après la création des partitions, sélectionnez [ Finish ] pour poursuivre l’installation et rendez-
vous à la Récupération des fichiers de distribution.
• Pool Type/Disks - Permet la configuration du Pool Type et des disques qui formeront le pool. Le
programme d’installation ZFS automatique ne supporte, actuellement qu’un seul périphérique
virtuel ("top level vdev") de niveau supérieur en dehors du mode stripe (un seul disque ou
concaténation de plusieurs disques). Pour créer des pools plus complexes, utilisez les
instructions de la Partitionnement à partir de l’interpréteur de commandes pour créer le pool.
• Disk Info - Ce menu peut être utilisé pour inspecter chaque disque, y compris sa table des
partitions et différentes autres informations comme la référence du modèle et son numéro de
série s’ils sont disponibles.
56
• Pool Name - Fixe le nom du pool. Le nom par défaut est zroot.
• Force 4K Sectors? - Force l’utilisation de secteurs d’une taille de 4Ko. Par défaut, le programme
d’installation créera automatiquement des partitions qui seront alignées sur des emplacements
multiples de 4Ko et force ZFS à utiliser des secteurs de 4Ko. C’est sans risque même pour les
disques avec des secteurs de 512 octets, et présente l’avantage de s’assurer que les pools créés
sur des disques à secteurs de 512 octets pourront se voir ajouter, dans le futur, des disques avec
secteurs de 4Ko comme espace de stockage supplémentaire ou en remplacement de disques
défectueux. Appuyez sur la touche Enter pour choisir d’activer ou non cette option.
• Encrypt Disks? - Le chiffrement des disques permet à l’utilisateur de chiffer les disques avec
GELI. Plus d’information au sujet du chiffrement des disques est disponible dans la Chiffrage
des disques avec geli. Appuyez sur la touche Enter pour choisir d’activer ou non cette option.
• Mirror Swap? - Permet à l’utilisateur de créer un miroir de l’espace de pagination sur chaque
disque. Faites attention, activer l’espace de pagination en mode miroir rend les crashs dumps
inutilisables. Appuyez sur la touche Enter pour choisir d’activer ou non cette option.
Sélectionner T pour configurer le Pool Type et le ou les disques qui constitueront le pool.
57
Figure 21. Type de pool ZFS
Voici un résumé des Pool Type pouvant être sélectionnés dans ce menu:
• mirror - Le mode miroir stocke une copie complète des données sur chaque disque. Le mode
miroir offre de bonnes performances en lecture parce que les données sont lues à partir de tous
les disques en parallèles. Les performances en écriture sont plus lentes étant donné que les
données doivent être écrites sur tous les disques du pool. Ce mode permet à tous les disques
sauf un de tomber en panne. Cette option nécessite aux moins deux disques.
• raid10 - Miroirs entrelacés. Offre les meilleures performances mais le moins d’espace de
stockage. Cette option nécessite un nombre pair de disques et au minimum quatre disques.
• raidz1 - RAID à simple redondance. Permet la panne d’un seul disque. Cette option nécessite au
moins trois disques.
• raidz2 - RAID à double redondance. Permet la panne simultanée de deux disques. Cette option
nécessite au moins quatre disques.
• raidz3 - RAID à triple redondance. Permet la panne simultanée de trois disques. Cette option
nécessite au moins cinq disques.
Une fois que le Pool Type a été sélectionné, la liste des disques disponibles est affichée, et
58
l’utilisateur est invité à choisir un ou plusieurs disques pour former le pool. La configuration doit
être alors validée pour s’assurer que suffisamment de disques ont été sélectionnés. Si ce n’est pas le
cas, sélectionner [ Change Selection ] pour retourner à la liste des disques, ou [ Back ] pour
changer de Pool Type.
59
Figure 23. Sélection non-valide
Si un ou plusieurs disques manquent sur la liste, ou si des disques ont été ajoutés après le
lancement du programme d’installation, sélectionner [ - Rescan Devices ] pour mettre à jour la liste
des disques disponibles.
60
Figure 24. Recherche des périphériques
Pour éviter d’effacer par accident les mauvais disques, le menu [ - Disk Info ] peut être utilisé pour
inspecter chaque disque, y compris sa table des partitions et plusieurs autres informations comme
le modèle de disque et son numéro de série si disponibles.
61
Figure 25. Analyse d’un disque
Sélectionnez N pour configurer le Pool Name. Entrez le nom souhaité puis sélectionnez [ OK ] pour le
prendre en compte ou [ Cancel ] pour retourner au menu principal et conserver le nom par défaut.
62
Figure 26. Nom du Pool
Sélectionnez S pour fixer la quantité d’espace de pagination. Entrez la quantité souhaitée puis
sélectionnez [ OK ] pour la prendre en compte ou [ Cancel ] pour retourner au menu principal et
conserver la quantité par défaut.
63
Figure 27. Quantité d’espace de pagination
Une fois que toutes les options ont été configurées aux valeurs souhaitées, sélectionnez l’option
[ Install ] en haut du menu. Le programme d’installation offre alors une dernière chance de tout
annuler avant que le contenu des disques sélectionnés ne soit détruit pour créer le pool ZFS.
64
Figure 28. Dernière chance
Si le chiffrement GELI du disque a été activé, le programme d’installation demandera deux fois le
mot de passe à utiliser pour chiffrer les disques. Ensuite, après cela, l’initialisation du chiffrement
commence.
65
Figure 29. Mot de passe de chiffrement des disques
66
Figure 30. Initialisation du chiffrement
L’installation se poursuit alors normalement. Pour continuer l’installation, aller à Récupération des
fichiers de distribution.
Dans le cas d’installations complexes, les menus de partitionnement de bsdinstall peuvent ne pas
proposer le niveau de flexibilité recherché. Les utilisateurs expérimentés peuvent sélectionner
l’option [ Shell ] à partir du menu de partitionnement afin de partitionner manuellement les
disques, de créer le ou les systèmes de fichiers, d’éditer /tmp/bsdinstall_etc/fstab, et de monter les
systèmes de fichiers sous /mnt. Une fois cela fait, taper exit pour retourner dans bsdinstall et
poursuivre l’installation.
67
Figure 31. Récupération des fichiers de distribution
Ensuite, l’intégrité des fichiers de distribution est vérifiée pour s’assurer qu’ils n’ont pas été
corrompus durant le téléchargement ou leur lecture à partir du support d’installation.
68
Figure 32. Vérification des fichiers de distribution
69
Figure 33. Décompression des fichiers de distribution
Une fois que tous les fichiers de distribution requis ont été décompressés, bsdinstall affichera le
premier menu de post-installation. Cette série de menu est décrite dans la section suivante.
Tout d’abord, le mot de passe de l’utilisateur root doit être défini. Notez que lors de la saisie du mot
de passe, les caractères tapés ne sont pas affichés sur l’écran. Après sa saisie, le mot de passe devra
être entré une deuxième fois. Cela permet d’éviter les erreurs de frappe.
70
Figure 34. Saisie du mot de passe root
La série de menus suivante permet de déterminer l’heure locale correcte en choisissant la région
du monde, le pays et le fuseau horaire. Régler le fuseau horaire permet au système de corriger
automatiquement l’heure lors des modifications régionales comme l’heure d’été ou d’hiver, et
d’effectuer correctement toute autre modification relative au fuseau horaire.
L’exemple présenté ici concerne une machine située dans le fuseau horaire du centre de l’Espagne
en Europe. Les choix pourront varier en fonction de la zone géographique.
71
Figure 35. Sélectionner une région
La région appropriée est choisie en utilisant les touches flèches puis en appuyant sur Entrée .
72
Figure 36. Sélection d’un pays
Sélectionner le pays approprié en utilisant les touches flèches et appuyer sur Entrée .
73
Figure 37. Sélection d’un fuseau horaire
Le fuseau horaire approprié est choisi en utilisant les touches flèches, puis en appuyant sur Entrée .
74
Figure 38. Confirmation du fuseau horaire
75
Figure 39. Sélection de la date
La date correcte est sélectionnée en utilisant les touches flèches puis en appuyant sur [ Set Date ].
Sinon, la sélection de la date peut être passée en appuyant sur [ Skip ].
76
Figure 40. Configuration de l’heure
L’heure correcte est sélectionnée en utilisant les touches flèches puis en appuyant sur [ Set Time ].
Sinon, cette configuration peut être passée en appuyant sur [ Skip ].
Le menu suivant est destiné à choisir quels services système seront lancés au démarrage. Tous ces
services sont optionnels. Ne lancez que les services nécessaires au fonctionnement du système.
77
Figure 41. Sélection de services supplémentaires à activer
• local_unbound - Active le résolveur DNS local. Il est important de garder à l’esprit que c’est le
résolveur du système de base qui n’est destiné à être utilisé uniquement qu’en tant que
résolveur cache local. Si l’objectif est de mettre en place un résolveur pour tout le réseau,
installer dns/unbound.
• sshd - Le daemon Secure Shell (SSH) est utilisé pour l’accès à un système à distance via une
connexion chiffrée. Activez ce service que si le système doit être accessible pour l’ouverture de
session à distance.
• moused - Activez ce service si la souris sera utilisée à partir de la console système en ligne de
commande.
• ntpd - Le daemon du protocole de temps réseau (Network Time Protocol) (NTP) pour la
synchronisation automatique de l’horloge. Activez ce service s’il y a un serveur Windows®,
Kerberos, ou LDAP sur le réseau.
• dumpdev - Activer les crash dumps peut s’avérer très utile pour déboguer les problèmes du
78
système, aussi les utilisateurs sont encouragés à activer les crashs dumps.
Le menu suivant est utilisé pour sélectionner quelles options de sécurité seront activées. Toutes ces
options sont facultatives. Mais leur utilisation est encouragée.
Voici un résumé des options qui peuvent être activées dans ce menu:
• hide_uids - Cache les processus en cours d’exécution sous des utilisateurs différents pour éviter
que des utilisateurs non autorisés puissent voir les processus en cours d’exécution exécutés par
d’autres utilisateurs (UID) évitant ainsi la fuite d’information.
• hide_gids - Cache les processus en cours d’exécution sous des groupes différents pour éviter que
des utilisateurs non autorisés puissent voir les processus en cours d’exécution exécutés par
d’autres groupes (GID) évitant ainsi la fuite d’information.
• hide_jail - Cache les processus en cours d’exécution dans des jails pour éviter que des
utilisateurs non autorisés puissent voir les processus en cours d’exécution dans les jails.
• read_msgbuf - Désactive la lecture du tampon des messages du noyau pour les utilisateurs non
autorisés en empêchant l’utilisation de dmesg(8) pour lire les messages du tampon de trace du
noyau.
• proc_debug - La désactivation des fonctionnalités de débogage des processus pour les utilisateurs
79
non autorisés désactive une variété de services de débogage inter-processus non-privilégiés,
cela comprend certaines fonctionnalités procfs, ptrace(), et and ktrace(). Veuillez noter que cela
empêche également le fonctionnement d’outils de débogage pour les utilisateurs non autorisés
comme lldb(1), truss(1), procstat(1), ainsi que certaines fonctionnalités de débogage intégrées
dans certains langages comme PHP, etc.
• disable_syslogd - Désactive l’ouverture d’un socket réseau syslogd. Par défaut, FreeBSD exécute
syslogd de manière sécurisée avec le paramètre -s. Cela évite que le daemon écoute sur le port
514 les requêtes UDP entrantes. Avec cette option activée syslogd sera exécuté avec les
paramètres -ss ce qui empêche l’ouverture de ports par syslogd. Pour des informations
supplémentaires, consultez la page de manuel syslogd(8).
• secure_console - Quand cette option est activée, l’invite réclame le mot de passe root lors de
l’entrée en mode utilisateur unique.
• disable_ddtrace - DTrace peut fonctionner dans un mode qui affectera le noyau en exécution.
Des actions destructives ne pourront pas être utilisées sauf si elles ont été explicitement
autorisées. Pour activer cette option lors de l’utilisation de DTrace utilisez le paramètre -w. Pour
des informations supplémentaires, consultez la page de manuel dtrace(1).
Le menu suivant demande de créer au moins un compte utilisateur. Il est recommandé d’utiliser un
compte utilisateur pour l’ouverture de session sur le système plutôt que d’employer le compte root.
Quand on utilise une session root, il n’existe aucune limite ou protection quant à ce qui peut être
fait. Ouvrir une session en tant qu’utilisateur normal est plus sûr et plus sécurisé.
80
Figure 43. Ajout de comptes utilisateur
Suivez les instructions et saisissez les informations demandées pour le compte utilisateur à ajouter.
L’exemple donné dans Entrée des informations utilisateur créé le compte utilisateur asample.
81
Figure 44. Entrée des informations utilisateur
• Username - Le nom d’utilisateur ou identifiant que l’utilisateur entrera pour ouvrir une session.
Une convention courante est d’utiliser la première lettre du prénom associé au nom, tant que
chaque nom d’utilisateur reste unique sur le système. Le nom d’utilisateur est sensible à la casse
et ne devrait pas contenir d’espace.
• Full name - Le nom complet de l’utilisateur. Il peut contenir des espaces et est utilisé comme
description du compte utilisateur.
• Uid - L’identifiant numérique pour cet utilisateur. En général, ce champ est laissé vide de façon à
ce que le système assigne par lui-même une valeur.
• Login group - Le groupe de l’utilisateur. Généralement il est laissé vide pour accepter le choix
par défaut.
• Invite user into other groups? - Groupes supplémentaires pour lesquels l’utilisateur sera
également ajouté comme membre. Si l’utilisateur a besoin d’un accès administrateur, tapez
wheel ici.
• Login class - Généralement laissé vide pour accepter la valeur par défaut.
• Shell - Tapez un des noms listés pour choisir l’interpréteur de commande de l’utilisateur.
Consulter Interpréteurs de commandes - “Shells” pour plus d’information sur les interpréteurs
de commande.
82
• Home directory - Le répertoire de l’utilisateur. La valeur par défaut est, en général, correcte.
• Home directory permissions - Les permissions sur le répertoire utilisateur. La valeur par défaut
est, en général, correcte.
• Use password-based authentication? - En général yes de manière à ce que l’utilisateur soit invité
à entrer son mot de passe à l’ouverture de session.
• Use an empty password? - En général no car c’est un problème de sécurité d’avoir un mot de passe
vide.
• Use a random password? - En général no de manière à ce que l’utilisateur puisse entrer son propre
mot de passe à l’invite suivante.
• Enter password - Le mot de passe pour cet utilisateur. Les caractères tapés n’apparaîtront pas sur
l’écran.
• Enter password again - Le mot de passe doit à nouveau être saisi pour vérification.
• Lock out the account after creation? - En général no de manière à ce que l’utilisateur puisse
ouvrir une session.
Après avoir tout saisi, un résumé est affiché pour vérification. Si une erreur a été faite, entrez no et
recommencez. Si tout est correct, entrez yes pour créer ce nouvel utilisateur.
S’il y a d’autres utilisateurs à ajouter, répondez yes à la question Add another user?. Entrez no pour
terminer l’ajout d’utilisateurs et continuer l’installation.
83
Pour plus d’information sur l’ajout d’utilisateurs et leur gestion, consultez Synopsis.
Après avoir tout installé et configuré, une dernière chance de modifier les réglages est proposée.
Utilisez ce menu pour effectuer des changements ou toute configuration supplémentaire avant de
terminer l’installation.
84
Figure 47. Configuration manuelle
bsdinstall demandera s’il y a des éléments supplémentaires à configurer avant le redémarrage sur
le nouveau système. Sélectionner [ Yes ] pour quitter vers un interpréteur de commande, ou [ No ]
pour passer à la dernière étape d’installation.
85
Figure 48. Achever l’installation
Si d’autre configuration ou une configuration spécifique est nécessaire, choisissez [ Live CD ] pour
démarrer dans le mode du CD Live.
Lors du démarrage de FreeBSD, des messages d’information sont affichés. Une fois que le système a
achevé son démarrage, une invite de session est affichée. A l’invite login:, saisissez le nom
d’utilisateur ajouté lors de l’installation. Evitez d’ouvrir des sessions en tant que root. Consultez Le
compte super-utilisateur pour des instructions sur comment devenir super-utilisateur quand un
accès administrateur est nécessaire.
Les messages qui ont défilé lors du démarrage peuvent être à nouveau visualisés en appuyant sur
Scroll-Lock (ou Arrêtdéfil ) pour activer le défilement arrière du tampon des messages. Les touches
PgUp , PgDn , et les touches fléchées pourront être utilisées pour remonter dans les messages. Une fois
terminé, appuyez à nouveau sur Scroll-Lock pour déverrouiller l’écran et fera revenir à l’affichage
normal de la console. Pour revoir ces messages quand le système en fonctionnement depuis un
certain temps, tapez less /var/run/[Link] à partir de l’invite. Appuyez sur q pour retourner à
l’invite de commande après la visualisation.
Si sshd a été activé dans Sélection de services supplémentaires à activer, le premier démarage
pourra être un peu plus lent en raison de la génération des clés RSA et DSA. Les démarrages
86
suivants seront plus rapides. Les empreintes des clés seront affichées, comme montré dans cet
exemple:
FreeBSD n’installe pas d’environnement graphique par défaut, mais de nombreux sont disponibles.
Consultez Le système X Window pour plus d’information au sujet de l’installation et la
configuration d’un gestionnaire de fenêtres graphique.
Arrêter proprement un ordinateur sous FreeBSD aide à protéger les données et même le matériel
de tout dommage. Ne coupez pas l’alimentation tant que le système n’est pas correctement arrêté! Si
l’utilisateur est membre du groupe wheel, passez en super-utilisateur en tapant su sur la ligne de
commande et en entrant le mot de passe de root. Ensuite, utilisez la commande shutdown -p now et
87
le système se fermera proprement, et si le matériel le support, s’éteindra lui-même.
Ensuite, est affichée une liste des interfaces réseaux trouvées sur l’ordinateur. Sélectionner
l’interface à configurer.
Si une interface réseau Ethernet est choisie, le programme d’installation passera au menu montré
dans la Sélection d’un fonctionnement réseau en IPv4. Si une interface réseau sans-fil est choisie, le
système recherchera les points d’accès sans-fil:
88
Figure 50. Recherche des points d’accès sans-fil
Les réseaux sans-fil sont identifiés par un Service Set Identifier (SSID), qui est un nom, court, unique
donné à chaque réseau. Les SSIDs trouvés durant la recherche sont affichés, suivis par une
description des types de chiffrement disponibles pour chaque réseau. Si le SSID désiré n’apparaît
pas dans la liste, sélectionner [ Rescan ] pour rechercher à nouveau. Si le réseau désiré n’apparaît
toujours pas, vérifiez qu’il n’y a pas de problèmes d’antenne ou essayez de rapprocher l’ordinateur
du point d’accès. Rescannez après chaque modification.
89
Figure 51. Sélection d’un réseau sans-fil
Ensuite, entrer les informations de chiffrement pour se connecter au réseau sans-fil sélectionné. Le
chiffrement WPA2 est fortement recommandé sachant que les chiffrements plus anciens, comme
WEP, offrent peu de sécurité. Si le réseau utilise WPA2, entrez le mot de passe également connu
sous le nom de Pre-Shared Key (PSK). Pour des raisons de sécurité, les caractères tapés dans la boîte
de saisie apparaissent sous la forme d’astérisques.
90
Figure 52. Configuration WPA2
Ensuite, indiquez si une adresse réseau en IPv4 doit être configurée ou non sur l’interface Ethernet
ou sans-fil:
91
Figure 53. Sélection d’un fonctionnement réseau en IPv4
Il existe deux méthodes de configuration IPv4. En DHCP, l’interface réseau sera configurée
automatiquement, c’est la méthode à privilégier si le réseau dispose d’un serveur DHCP. Sinon, les
informations de configuration du réseau devront être saisies manuellement sous la forme d’une
configuration statique.
Si un serveur DHCP est disponible, sélectionner [ Yes ] dans le menu suivant pour configurer
automatiquement l’interface réseau. Le programme d’installation s’arrêtera pendant environ une
minute pour trouver le serveur DHCP et récupérer l’information de configuration du réseau pour le
système.
92
Figure 54. Sélection de la configuration IPv4 avec DHCP
S’il n’y a pas de serveur DHCP, sélectionner [ No ] et tapez les paramètres d’adressage suivants dans
le menu qui suit:
93
Figure 55. Configuration IPv4 en statique
• IP Address - L’adresse IPv4 assignée à cet ordinateur. Cette adresse doit être unique et ne pas
être déjà utilisée par un autre équipement sur le réseau local.
L’écran suivant demandera si l’interface doit être configurée pour l’IPv6. Si l’IPv6 est disponible et
désiré, choisir [ Yes ] pour le sélectionner.
94
Figure 56. Sélection d’un réseau IPv6
Un réseau IPv6 peut être configuré suivant deux méthodes. Le système d'autoconfiguration sans
état ou StateLess Address AutoConfiguration (SLAAC) demandera automatiquement les
informations de configuration correctes à un routeur local. Consulter [Link] pour plus
d’information. La configuration statique, quant à elle, demande la saisie manuelle des informations
réseau.
Si un routeur IPv6 est disponible, sélectionner [ Yes ] dans le menu suivant pour configurer
automatiquement l’interface réseau. Le programme d’installation s’arrêtera pendant environ une
minute pour trouver le routeur et obtenir les informations de configuration réseau pour le système.
95
Figure 57. Sélection de la configuration IPv6 SLAAC
S’il n’y a pas de routeur IPv6, sélectionnez [ No ] et tapez les paramètres d’adressage suivants dans
le menu qui suit:
96
Figure 58. Configuration IPv6 en statique
• IPv6 Address - L’adresse IP assignée à cet ordinateur. Cette adresse doit être unique et ne pas
être déjà utilisée par un autre équipement sur le réseau local.
Le dernier menu de configuration est utilisé pour configurer le système de résolution Domain Name
System (ou DNS) qui convertit les noms de machine en adresses réseau et inversement. Si la
méthode du DHCP ou du SLAAC a été utilisée pour configurer automatiquement la carte réseau, les
valeurs de configuration du système de résolution de noms (Resolver Configuration) pourront déjà
être complétées. Dans le cas contraire, entrer le nom de domaine du réseau local dans le champ
Search. DNS #1 et DNS #2 sont les adresses IPv4 et/ou IPv6 des serveurs DNS locaux. Au moins un
serveur DNS est nécessaire.
97
Figure 59. Configuration du DNS
Une fois l’interface réseau configurée, sélectionnez un site miroir qui est situé dans la même région
du monde que l’ordinateur sur lequel FreeBSD doit être installé. Les fichiers peuvent être récupérés
plus rapidement quand le miroir est proche de l’ordinateur cible, réduisant ainsi le temps
d’installation.
98
Figure 60. Sélection d’un site miroir
2.10. Dépannage
Cette section couvre le dépannage basique de l’installation, comme les problèmes courants
rencontrés.
99
processus de mise à jour peut mal se passer, laissant un BIOS incomplet et
l’ordinateur inutilisable.
set [Link]="1"
Ce paramètre est réinitialisé à chaque démarrage du système, il est donc nécessaire d’ajouter
[Link]="1" au fichier /boot/[Link]. Plus d’information au sujet du chargeur peut
être trouvée dans la Menu d’accueil.
Les points suivants devront être pris en compte avant l’utilisation du :[ Live CD ]
• Pour utiliser le système, une authentification est nécessaire. Le nom d’utilisateur est root, sans
mot de passe.
• Etant donné que le système s’exécute directement à partir du support d’installation, le système
sera bien plus lent que s’il était installé sur un disque dur.
100
Chapitre 3. Quelques bases d’UNIX
3.1. Synopsis
Le chapitre suivant couvrira les commandes et fonctionnalités de base du système d’exploitation
FreeBSD. La plupart de ces informations sera valable pour n’importe quel système d’exploitation
UNIX®. Soyez libre de passer ce chapitre si vous êtes familier avec ces informations. Si vous êtes
nouveau à FreeBSD, alors vous voudrez certainement lire attentivement ce chapitre.
• Comment les permissions des fichiers d’UNIX® fonctionnent ainsi que l’utilisation des
indicateurs de fichiers sous FreeBSD.
3.2.1. La console
Si vous n’avez pas configuré FreeBSD pour lancer automatiquement un environnement graphique
au démarrage, le système vous présentera une invite d’ouverture de session après son démarrage,
juste après la fin des procédures de démarrage. Vous verrez quelque chose de similaire à:
101
FreeBSD/i386 ([Link]) (ttyv0)
login:
Les messages pourront être différents sur votre système, mais cela devrait y ressembler. Les deux
dernières lignes sont celles qui nous intéressent actuellement. La seconde de ces lignes nous donne:
Cette ligne contient quelques éléments d’information sur le système que vous venez de démarrer.
Vous êtes en train de lire une console "FreeBSD", tournant sur un processeur Intel ou compatible de
la famille x86. Le nom de cette machine (chaque machine UNIX® a un nom) est [Link], et
vous regardez actuellement sa console système-le terminal ttyv0.
login:
C’est le moment où vous êtes supposé taper votre "nom d’utilisateur" pour vous attacher au système
FreeBSD. La section suivante décrit comment procéder.
FreeBSD est un système multi-utilisateur, multi-processeur. C’est la description formelle qui est
habituellement donnée pour un système qui peut être utilisé par différentes personnes, qui
exécutent simultanément de nombreux programmes sur une machine individuelle.
Chaque système multi-utilisateur a besoin d’un moyen pour distinguer un "utilisateur" du reste.
Sous FreeBSD (et sous tous les systèmes de type UNIX®), cela est effectué en demandant à chaque
utilisateur de "s’attacher" au système avant d’être en mesure d’exécuter des programmes. Chaque
utilisateur possède un nom unique (le nom d’utilisateur) et une clé secrète personnelle (le mot de
passe). FreeBSD demandera ces deux éléments avant d’autoriser un utilisateur à lancer un
programme.
Juste après que FreeBSD ait démarré et en ait terminé avec l’exécution des procédures de
démarrage, il présentera une invite et demandera un nom d’utilisateur valide:
login:
Pour cet exemple, supposons que votre nom d’utilisateur est john. Tapez john à cette invite puis
appuyez sur Entrée . Alors vous devrez être invité à entrer un "mot de passe":
login: john
Password:
102
Tapez maintenant le mot de passe de john, et appuyez sur Entrée . Le mot de passe n’est pas affiché!
Vous n’avez pas à vous préoccuper de cela maintenant. Il suffit de penser que cela est fait pour des
raisons de sécurité.
Si vous avez tapé correctement votre mot de passe, vous devriez être maintenant attaché au
système et prêt à essayer toutes les commandes disponibles.
Vous devriez voir apparaître le MOTD ou message du jour suivi de l’invite de commande (un
caractère #, $, ou %). Cela indique que vous avez ouvert avec succès une session sous FreeBSD.
Exécuter des commandes UNIX® dans une console est bien beau, mais FreeBSD peut exécuter
plusieurs programmes à la fois. Avoir une seule console sur laquelle les commandes peuvent être
tapées serait un peu du gaspillage quand un système d’exploitation comme FreeBSD peut exécuter
des dizaines de programmes en même temps. C’est ici que des "consoles virtuelles" peuvent être
vraiment utiles.
FreeBSD peut être configuré pour présenter de nombreuses consoles virtuelles. Vous pouvez
basculer d’une console virtuelle à une autre en utilisant une combinaison de touches sur votre
clavier. Chaque console a son propre canal de sortie, et FreeBSD prend soin de rediriger
correctement les entrées au clavier et la sortie vers écran quand vous basculez d’une console
virtuelle à la suivante.
Des combinaisons de touches spécifiques ont été réservées par FreeBSD pour le basculement entre
consoles. Vous pouvez utiliser Alt + F1 , Alt + F2 , jusqu’à Alt + F8 pour basculer vers une console
virtuelle différente sous FreeBSD.
Quand vous basculez d’une console à une autre, FreeBSD prend soin de sauvegarder et restaurer la
sortie d’écran. Il en résulte l'"illusion" d’avoir plusieurs écrans et claviers "virtuels" que vous
pouvez utiliser pour taper des commandes pour FreeBSD. Les programmes que vous lancez sur une
console virtuelle ne cessent pas de tourner quand cette console n’est plus visible. Ils continuent de
s’exécuter quand vous avez basculé vers une console virtuelle différente.
La configuration par défaut de FreeBSD démarre avec huit consoles virtuelles. Cependant ce n’est
pas un paramétrage fixe, et vous pouvez aisément personnaliser votre installation pour démarrer
avec plus ou moins de consoles virtuelles. Le nombre et les paramétrages des consoles virtuelles
sont configurés dans le fichier /etc/ttys.
Vous pouvez utiliser le fichier /etc/ttys pour configurer les consoles virtuelles de FreeBSD. Chaque
ligne non-commentée dans ce fichier (les lignes qui ne débutent pas par le caractère #) contient le
paramétrage d’un terminal ou d’une console virtuelle. La version par défaut de ce fichier livrée
avec FreeBSD configure neuf consoles virtuelles, et en active huit. Ce sont les lignes commençant
avec le terme ttyv:
103
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure
ttyv2 "/usr/libexec/getty Pc" cons25 on secure
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
Pour une description détaillée de chaque colonne de ce fichier et toutes les options que vous
pouvez utiliser pour configurer les consoles virtuelles, consultez la page de manuel ttys(5).
Une description détaillée de ce qu’est "le mode mono-utilisateur" peut être trouvée dans Mode
mono-utilisateur. Il est important de noter qu’il n’y a qu’une console de disponible quand vous
exécutez FreeBSD en mode mono-utilisateur. Il n’y a aucune console virtuelle de disponible. Le
paramétrage de la console en mode mono-utilisateur peut être également trouvé dans le fichier
/etc/ttys. Recherchez la ligne qui commence avec le mot console:
Cependant faites attention quand vous modifiez cela pour insecure. Si vous oubliez
le mot de passe de root, le démarrage en mode mono-utilisateur sera condamné. Il
est encore possible, mais cela pourra être relativement compliqué pour quelqu’un
qui n’est pas à l’aise avec le processus de démarrage de FreeBSD et les
programmes entrant en jeu.
La résolution (ou encore le mode vidéo) de la console FreeBSD peut être réglée à 1024x768,
1280x1024, ou tout autre résolution supportée par le circuit graphique et le moniteur. Pour utiliser
une résolution vidéo différente vous devez en premier lieu recompiler votre noyau en ajoutant
deux options supplémentaires:
options VESA
104
options SC_PIXEL_MODE
Une fois votre noyau recompilé avec ces deux options, vous pouvez déterminer quels sont les
modes vidéo supportés par votre matériel en utilisant l’outil vidcontrol(1). Pour obtenir une liste
des modes supportés, tapez la ligne suivante:
# vidcontrol -i mode
La sortie de cette commande est une liste des modes vidéo que supporte votre matériel. Vous
pouvez ensuite décider d’utiliser un nouveau mode en le passant à la commande vidcontrol(1) tout
en ayant les droits de root:
# vidcontrol MODE_279
Si le nouveau mode vidéo est satisfaisant, il peut être activé au démarrage de manière permanente
en le configurant dans le fichier /etc/[Link]:
allscreens_flags="MODE_279"
3.3. Permissions
FreeBSD, étant un descendant direct de l’UNIX® BSD, est basé sur plusieurs concepts clés d’UNIX®.
Le premier, et le plus prononcé, est le fait que FreeBSD est un système d’exploitation multi-
utilisateurs. Le système peut gérer plusieurs utilisateurs travaillant tous simultanément sur des
tâches complètement indépendantes. Le système est responsable du partage correct et de la gestion
des requêtes pour les périphériques matériels, la mémoire, et le temps CPU de façon équitable entre
chaque utilisateur.
Puisque le système est capable de supporter des utilisateurs multiples, tout ce que le système gère
possède un ensemble de permissions définissant qui peut écrire, lire, et exécuter la ressource. Ces
permissions sont stockées sous forme de trois octets divisés en trois parties, une pour le
propriétaire du fichier, une pour le groupe auquel appartient le fichier, et une autre pour le reste
du monde. Cette représentation numérique fonctionne comme ceci:
105
Valeur Permission Contenu du répertoire
Vous pouvez utiliser l’option -l avec la commande ls(1) pour afficher le contenu du répertoire sous
forme une longue et détaillée qui inclut une colonne avec des informations sur les permissions
d’accès des fichiers pour le propriétaire, le groupe, et le reste du monde. Par exemple un ls -l dans
un répertoire quelconque devrait donner:
% ls -l
total 530
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile
-rw-r--r-- 1 root wheel 7680 Sep 5 12:31 [Link]
...
Voici comment est divisée la première colonne de l’affichage généré par ls -l:
-rw-r--r--
Le premier caractère (le plus à gauche) indique si c’est un fichier normal, un répertoire, ou un
périphérique mode caractère, une socket, ou tout autre pseudo-périphérique. Dans ce cas, - indique
un fichier normal. Les trois caractères suivants, rw- dans cet exemple, donnent les permissions
pour le propriétaire du fichier. Les trois caractères qui suivent, r--, donnent les permissions pour le
groupe auquel appartient le fichier. Les trois derniers caractères, r--, donnent les permissions pour
le reste du monde. Un tiret signifie que la permission est désactivée. Dans le cas de ce fichier, les
permissions sont telles que le propriétaire peut lire et écrire le fichier, le groupe peut lire le fichier,
et le reste du monde peut seulement lire le fichier. D’après la table ci-dessus, les permissions pour
ce fichier seraient 644, où chaque chiffre représente les trois parties des permissions du fichier.
Tout cela est bien beau, mais comment le système contrôle les permissions sur les périphériques?
En fait FreeBSD traite la plupart des périphériques sous la forme d’un fichier que les programmes
peuvent ouvrir, lire, et écrire des données dessus comme tout autre fichier. Ces périphériques
spéciaux sont stockés dans le répertoire /dev.
Les répertoires sont aussi traités comme des fichiers. Ils ont des droits en lecture, écriture et
exécution. Le bit d’exécution pour un répertoire a une signification légèrement différente que pour
les fichiers. Quand un répertoire est marqué exécutable, cela signifie qu’il peut être traversé, i.e. il
106
est possible d’utiliser "cd" (changement de répertoire). Ceci signifie également qu’à l’intérieur du
répertoire il est possible d’accéder aux fichiers dont les noms sont connus (en fonction, bien sûr,
des permissions sur les fichiers eux-mêmes).
En particulier, afin d’obtenir la liste du contenu d’un répertoire, la permission de lecture doit être
positionnée sur le répertoire, tandis que pour effacer un fichier dont on connaît le nom, il est
nécessaire d’avoir les droits d’écriture et d’exécution sur le répertoire contenant le fichier.
Il y a d’autres types de permissions, mais elles sont principalement employées dans des
circonstances spéciales comme les binaires "setuid" et les répertoires "sticky". Si vous désirez plus
d’information sur les permissions de fichier et comment les positionner, soyez sûr de consulter la
page de manuel chmod(1).
Les permissions symboliques, parfois désignées sous le nom d’expressions symboliques, utilisent
des caractères à la place de valeur en octal pour assigner les permissions aux fichiers et répertoires.
Les expressions symboliques emploient la syntaxe: (qui) (action) (permissions), avec les valeurs
possibles suivantes:
(qui) u Utilisateur
(qui) g Groupe
(qui) o Autre
(permissions) r Lecture
(permissions) w Ecriture
(permissions) x Exécution
Ces valeurs sont utilisées avec la commande chmod(1) comme précédemment mais avec des lettres.
Par exemple, vous pourriez utiliser la commande suivante pour refuser l’accès au fichier FICHIER à
d’autres utilisateurs:
Une liste séparé par des virgules peut être fournie quand plus d’un changement doit être effectué
107
sur un fichier. Par exemple la commande suivante retirera les permissions d’écriture au groupe et
au "reste du monde" sur le fichier FICHIER, puis ajoutera la permission d’exécution pour tout le
monde:
En addition des permissions sur les fichiers précédemment présentées, FreeBSD supporte
l’utilisation d'"indicateurs de fichiers". Ces indicateurs rajoutent un niveau de contrôle et de
sécurité sur les fichiers, mais ne concernent pas les répertoires.
Ces indicateurs ajoutent donc un niveau de contrôle supplémentaire des fichiers, permettant
d’assurer que dans certains cas même le super-utilisateur root ne pourra effacer ou modifier des
fichiers.
Les indicateurs de fichiers peuvent être modifiés avec l’utilitaire chflags(1), ce dernier présentant
une interface simple. Par exemple, pour activer l’indicateur système de suppression impossible sur
le fichier file1, tapez la commande suivante:
Pour afficher les indicateurs propres à ce fichier, utilisez la commande ls(1) avec l’option -lo:
# ls -lo file1
Plusieurs indicateurs ne peuvent être positionnés ou retirés que par le super-utilisateur root. Dans
les autres cas, le propriétaire du fichier peut activer ces indicateurs. Pour plus d’information, la
lecture des pages de manuel chflags(1) et chflags(2) est recommandée à tout administrateur.
108
racine, "/". Ce répertoire est le premier a être monté au démarrage et il contient le système de base
nécessaire pour préparer le système d’exploitation au fonctionnement multi-utilisateurs. Le
répertoire racine contient également les points de montage pour les autres systèmes de fichiers qui
sont montés lors du passage en mode multi-utilisateurs.
Un point de montage est un répertoire où peuvent être greffés des systèmes de fichiers
supplémentaires au système de fichiers parent (en général le système de fichiers racine). Cela est
décrit plus en détails dans la Organisation des disques. Les points de montage standards incluent
/usr, /var, /tmp, /mnt, et /cdrom. Ces répertoires sont en général référencés par des entrées dans le
fichier /etc/fstab. /etc/fstab est une table des divers systèmes de fichiers et de leur point de montage
utilisé comme référence par le système. La plupart des systèmes de fichiers présents dans /etc/fstab
sont montés automatiquement au moment du démarrage par la procédure rc(8) à moins que
l’option noauto soit présente. Plus de détails peuvent être trouvés dans la Le fichier fstab.
Une description complète de l’arborescence du système de fichiers est disponible dans la page de
manuel hier(7). Pour l’instant, une brève vue d’ensemble des répertoires les plus courants suffira.
Répertoire Description
/etc/defaults/ Fichiers de configuration du système par défaut; voir la page de manuel rc(8).
/mnt/ Répertoire vide habituellement utilisé par les administrateurs système comme
un point de montage temporaire.
/proc/ Le système de fichiers pour les processus; voir les pages de manuel procfs(5),
mount_procfs(8).
/rescue/ Programmes liés en statique pour les réparations d’urgence; consultez la page
de manuel rescue(8).
109
Répertoire Description
/tmp/ Fichiers temporaires. Le contenu de /tmp n’est en général PAS préservé par un
redémarrage du système. Un système de fichiers en mémoire est souvent
monté sur /tmp. Cela peut être automatisé en utilisant les variables [Link](5)
relatives au système "tmpmfs" (ou à l’aide d’une entrée dans le fichier
/etc/fstab; consultez la page de manuel mdmfs(8)).
/var/tmp/ Fichiers temporaires. Ces fichiers sont généralement conservés lors d’un
redémarrage du système, à moins que /var ne soit un système de fichiers en
mémoire.
110
3.5. Organisation des disques
Le plus petit élément qu’utilise FreeBSD pour retrouver des fichiers est le nom de fichier. Les noms
de fichiers sont sensibles à la casse des caractères, ce qui signifie que [Link] et [Link]
sont deux fichiers séparés. FreeBSD n’utilise pas l’extension (.txt) d’un fichier pour déterminer si ce
fichier est un programme, un document ou une autre forme de donnée.
Les fichiers sont stockés dans des répertoires. Un répertoire peut ne contenir aucun fichier, ou en
contenir plusieurs centaines. Un répertoire peut également contenir d’autre répertoires, vous
permettant de construire une hiérarchie de répertoires à l’intérieur d’un autre. Cela rend plus
simple l’organisation de vos données.
Les fichiers et les répertoires sont référencés en donnant le nom du fichier ou du répertoire, suivi
par un slash, /, suivi par tout nom de répertoire nécessaire. Si vous avez un répertoire foo, qui
contient le répertoire bar, qui contient le fichier [Link], alors le nom complet, ou chemin
("path") vers le fichier est foo/bar/[Link].
Les répertoires et les fichiers sont stockés sur un système de fichiers. Chaque système de fichiers
contient à son niveau le plus haut un répertoire appelé répertoire racine pour ce système de
fichiers. Ce répertoire racine peut alors contenir les autres répertoires.
Jusqu’ici cela est probablement semblable à n’importe quel autre système d’exploitation que vous
avez pu avoir utilisé. Il y a quelques différences: par exemple, MS-DOS® utilise \ pour séparer les
noms de fichier et de répertoire, alors que MacOS utilise :.
FreeBSD n’utilise pas de lettre pour les lecteurs, ou d’autres noms de disque dans le chemin. Vous
n’écrirez pas c:/foo/bar/[Link] sous FreeBSD.
Au lieu de cela, un système de fichiers est désigné comme système de fichiers racine. La racine du
système de fichiers racine est représentée par un /. Tous les autres systèmes de fichiers sont alors
montés sous le système de fichiers racine. Peu importe le nombre de disques que vous avez sur
votre système FreeBSD, chaque répertoire apparaît comme faisant partie du même disque.
Supposez que vous avez trois systèmes de fichiers, appelés A, B, et C. Chaque système de fichiers
possède un répertoire racine, qui contient deux autres répertoires, nommés A1, A2 (et
respectivement B1, B2 et C1, C2).
Appelons A le système de fichiers racine. Si vous utilisiez la commande ls pour visualiser le contenu
de ce répertoire, vous verriez deux sous-répertoires, A1 et A2. L’arborescence des répertoires
ressemblera à ceci:
111
Un système de fichiers doit être monté dans un répertoire d’un autre système de fichiers. Supposez
maintenant que vous montez le système de fichiers B sur le répertoire A1. Le répertoire racine de B
remplace A1, et les répertoires de B par conséquent apparaissent:
Tout fichier de B1 ou B2 peut être atteint avec le chemin /A1/B1 ou /A1/B2 si nécessaire. Tous les
fichiers qui étaient dans A1 ont été temporairement cachés. Ils réapparaîtront si B est démonté de A.
112
et les chemins seront /A2/B1 et respectivement /A2/B2.
Les systèmes de fichiers peuvent être montés au sommet d’un autre. En continuant l’exemple
précédent, le système de fichiers C pourrait être monté au sommet du répertoire B1 dans le système
de fichiers B, menant à cet arrangement:
Où C pourrait être monté directement sur le système de fichiers A, sous le répertoire A1:
Si vous êtes familier de MS-DOS®, ceci est semblable, bien que pas identique, à la commande join.
Ce n’est normalement pas quelque chose qui doit vous préoccuper. Généralement vous créez des
systèmes de fichiers à l’installation de FreeBSD et décidez où les monter, et ensuite ne les modifiez
jamais à moins que vous ajoutiez un nouveau disque.
113
Il est tout à fait possible de n’avoir qu’un seul grand système de fichiers racine, et de ne pas en
créer d’autres. Il y a quelques inconvénients à cette approche, et un avantage.
• FreeBSD optimise automatiquement la disposition des fichiers sur un système de fichiers, selon
la façon dont est utilisé le système de fichiers. Aussi un système de fichiers contenant beaucoup
de petits fichiers qui sont écrits fréquemment aura une optimisation différente à celle d’un
système contenant moins, ou de plus gros fichiers. En ayant un seul grand système de fichiers
cette optimisation est perdue.
• Les systèmes de fichiers de FreeBSD sont très robustes même en cas de coupure secteur.
Cependant une coupure secteur à un moment critique pourrait toujours endommager la
structure d’un système de fichiers. En répartissant vos données sur des systèmes de fichiers
multiples il est plus probable que le système redémarre, vous facilitant la restauration des
données à partir de sauvegardes si nécessaire.
Les systèmes de fichiers sont contenus dans des partitions. Cela n’a pas la même signification que
l’utilisation commune du terme partition (par exemple une partition MS-DOS®), en raison de
l’héritage Unix de FreeBSD. Chaque partition est identifiée par une lettre de a à h. Chaque partition
ne contient qu’un seul système de fichiers, cela signifie que les systèmes de fichiers sont souvent
décrits soit par leur point de montage typique dans la hiérarchie du système de fichiers, soit par la
lettre de la partition qui les contient.
FreeBSD utilise aussi de l’espace disque pour l’espace de pagination ("swap"). L’espace de pagination
fournit à FreeBSD la mémoire virtuelle. Cela permet à votre ordinateur de se comporter comme s’il
disposait de beaucoup plus de mémoire qu’il n’en a réellement. Quand FreeBSD vient à manquer de
mémoire il déplace certaines données qui ne sont pas actuellement utilisées vers l’espace de
pagination, et les rapatrie (en déplaçant quelque chose d’autre) quand il en a besoin.
114
Partition Convention
a Contient normalement le système de fichiers
racine
b Contient normalement l’espace de pagination
c Normalement de la même taille que la tranche
("slice") contenant les partitions. Cela permet
aux utilitaires devant agir sur l’intégralité de la
tranche (par exemple un analyseur de blocs
défectueux) de travailler sur la partition c. Vous
ne devriez normalement pas créer de système
de fichiers sur cette partition.
d La partition d a eu dans le passé une
signification particulière, ce n’est plus le cas
aujourd’hui, et d pourra être utilisée comme une
partition classique.
Chaque partition contenant un système de fichiers est stockée dans ce que FreeBSD appelle une
tranche ("slice"). Tranche - "slice" est le terme FreeBSD pour ce qui est communément appelé
partition, et encore une fois, cela en raison des fondations Unix de FreeBSD. Les tranches sont
numérotées, en partant de 1, jusqu’à 4.
Les numéros de tranche suivent le nom du périphérique, avec le préfixe s, et commencent à 1. Donc
"da0s1" est la première tranche sur le premier disque SCSI. Il ne peut y avoir que quatre tranches
physiques sur un disque, mais vous pouvez avoir des tranches logiques dans des tranches
physiques d’un type précis. Ces tranches étendues sont numérotées à partir de 5, donc "ad0s5" est la
première tranche étendue sur le premier disque IDE. Elles sont utilisées par des systèmes de
fichiers qui s’attendent à occuper une tranche entière.
Les tranches, les disques "en mode dédié", et les autres disques contiennent des partitions, qui sont
représentées par des lettres allant de a à h. Cette lettre est ajoutée au nom de périphérique, aussi
"da0a" est la partition a sur le premier disque da, qui est en "en mode dédié". "ad1s3e" est la
cinquième partition de la troisième tranche du second disque IDE.
En conclusion chaque disque présent sur le système est identifié. Le nom d’un disque commence
par un code qui indique le type de disque, suivi d’un nombre, indiquant de quel disque il s’agit.
Contrairement aux tranches, la numérotation des disques commence à 0. Les codes communs que
vous risquez de rencontrer sont énumérés dans le Codes des périphériques disques.
Quand vous faites référence à une partition, FreeBSD exige que vous nommiez également la
tranche et le disque contenant la partition, et quand vous faites référence à une tranche vous
devrez également faire référence au nom du disque. On fait donc référence à une partition en
écrivant le nom du disque, s, le numéro de la tranche, et enfin la lettre de la partition. Des exemples
sont donnés dans l'Exemples d’appellation de disques, tranches et partitions.
L'Modèle conceptuel d’un disque montre un exemple de l’organisation d’un disque qui devrait
aider à clarifier les choses.
115
Afin d’installer FreeBSD vous devez tout d’abord configurer les tranches sur votre disque, ensuite
créer les partitions dans la tranche que vous utiliserez pour FreeBSD, et alors créer un système de
fichiers (ou espace de pagination) dans chaque partition, et décider de l’endroit où seront montés
les systèmes de fichiers.
Code Signification
da Disque SCSI
cd CDROM SCSI
fd Lecteur de disquette
Nom Signification
ad0s1a Première partition (a) sur la première tranche
(s1) du premier disque IDE (ad0).
da1s2e Cinquième partition (e) sur la seconde tranche
(s2) du deuxième disque SCSI (da1).
Ce diagramme montre comment FreeBSD voit le premier disque IDE attaché au système.
Supposons que le disque a une capacité de 4 Go, et contient deux tranches de 2 Go (partitions
MS-DOS®). La première tranche contient un disque MS-DOS®, C:, et la seconde tranche
contient une installation de FreeBSD. Dans cet exemple l’installation de FreeBSD a trois
partitions de données, et une partition de pagination.
Les trois partitions accueilleront chacune un système de fichiers. La partition a sera utilisée en
tant que système de fichiers racine, la partition e pour le contenu du répertoire /var, et f pour
l’arborescence du répertoire /usr.
116
3.6. Monter et démonter des systèmes de fichiers
Le système de fichiers peut être vu comme un arbre enraciné sur le répertoire /. /dev, /usr, et les
autres répertoires dans le répertoire racine sont des branches, qui peuvent avoir leurs propres
branches, comme /usr/local, et ainsi de suite.
Il y a diverses raisons pour héberger certains de ces répertoires sur des systèmes de fichiers
séparés. /var contient les répertoires log/, spool/, et divers types de fichiers temporaires, et en tant
que tels, peuvent voir leur taille augmenter de façon importante. Remplir le système de fichiers
racine n’est pas une bonne idée, aussi séparer /var de / est souvent favorable.
Une autre raison courante de placer certains répertoires sur d’autres systèmes de fichiers est s’ils
doivent être hébergés sur des disques physiques séparés, ou sur des disques virtuels séparés,
comme les systèmes de fichiers réseau, ou les lecteurs de CDROM.
Durant le processus de démarrage, les systèmes de fichiers listés dans /etc/fstab sont
automatiquement montés (à moins qu’il ne soient listés avec l’option noauto).
117
Le fichier /etc/fstab contient une liste de lignes au format suivant:
device
Un nom de périphérique (qui devrait exister), comme expliqué dans la Noms des périphériques.
mount-point
Un répertoire (qui devrait exister), sur lequel sera monté le système de fichier.
fstype
Le type de système de fichiers à indiquer à mount(8). Le système de fichiers par défaut de
FreeBSD est l'ufs.
options
Soit rw pour des systèmes de fichiers à lecture-écriture, soit ro pour des systèmes de fichiers à
lecture seule, suivi par toute option qui peut s’avérer nécessaire. Une option courante est noauto
pour les systèmes de fichiers qui ne sont normalement pas montés durant la séquence de
démarrage. D’autres options sont présentées dans la page de manuel mount(8).
dumpfreq
C’est utilisé par dump(8) pour déterminer quels systèmes de fichiers nécessitent une sauvegarde.
Si ce champ est absent, une valeur de zéro est supposée.
passno
Ceci détermine l’ordre dans lequel les systèmes de fichiers devront être vérifiés. Les systèmes de
fichiers qui doivent être ignorés devraient avoir leur passno positionné à zéro. Le système de
fichiers racine (qui doit être vérifié avant tout le reste) devrait avoir son passno positionné à un,
et les options passno des autres systèmes fichiers devraient être positionnées à des valeurs
supérieures à un. Si plus d’un système de fichiers ont le même passno alors fsck(8) essaiera de
vérifier les systèmes de fichiers en parallèle si c’est possible.
Consultez la page de manuel de fstab(5) pour plus d’information sur le format du fichier /etc/fstab
et des options qu’il contient.
La commande mount(8) est ce qui est finalement utilisé pour monter des systèmes de fichiers.
Il y beaucoup d’options, comme mentionné dans la page de manuel mount(8), mais les plus
courantes sont:
Options de montage
118
-a
Monte tous les systèmes de fichiers listés dans /etc/fstab. Exception faite de ceux marqués
comme "noauto", ou exclus par le drapeau -t, ou encore ceux qui sont déjà montés.
-d
Tout effectuer à l’exception de l’appel système de montage réel. Cette option est utile
conjointement avec le drapeau -v pour déterminer ce que mount(8) est en train d’essayer de
faire.
-f
Force le montage d’un système de fichiers non propre (dangereux), ou force la révocation de
l’accès en écriture quand on modifie l’état de montage d’un système de fichiers de l’accès
lecture-écriture à l’accès lecture seule.
-r
Monte le système de fichiers en lecture seule. C’est identique à l’utilisation de l’argument ro
(rdonly pour les versions de FreeBSD antérieures à la 5.2) avec l’option -o.
-t fstype
Monte le système de fichiers comme étant du type de système donné, ou monte seulement les
systèmes de fichiers du type donné, si l’option -a est précisée.
-u
Mets à jour les options de montage sur le système de fichiers.
-v
Rends la commande prolixe.
-w
Monte le système de fichiers en lecture-écriture.
L’option -o accepte une liste d’options séparées par des virgules, dont les suivantes:
noexec
Ne pas autoriser l’exécution de binaires sur ce système de fichiers. C’est également une option de
sécurité utile.
nosuid
Ne pas prendre en compte les indicateurs setuid ou setgid sur le système de fichiers. C’est
également une option de sécurité utile.
Toutes les formes acceptent -f pour forcer de démontage, et -v pour le mode prolixe. Soyez averti
119
que l’utilisation de -f n’est généralement pas une bonne idée. Démonter de force des systèmes de
fichiers pourrait faire planter l’ordinateur ou endommager les données sur le système de fichiers.
Les options -a et -A sont utilisées pour démonter tous les systèmes de fichiers actuellement montés,
éventuellement modifié par les types de systèmes de fichiers listés après l’option -t. Cependant
l’option -A, n’essaye pas de démonter le système de fichiers racine.
3.7. Processus
FreeBSD est un système d’exploitation multi-tâches. Cela veut dire qu’il semble qu’il y ait plus d’un
programme fonctionnant à la fois. Tout programme fonctionnant à un moment donné est appelé un
processus. Chaque commande que vous utiliserez lancera au moins un nouveau processus, et il y a
de nombreux processus système qui tournent constamment, maintenant ainsi les fonctionnalités
du système.
Chaque processus est identifié de façon unique par un nombre appelé process ID (identifiant de
processus), ou PID, et, comme pour les fichiers, chaque processus possède également un
propriétaire et un groupe. Les informations sur le propriétaire et le groupe sont utilisées pour
déterminer quels fichiers et périphériques sont accessibles au processus, en utilisant le principe de
permissions de fichiers abordé plus tôt. La plupart des processus ont également un processus
parent. Le processus parent est le processus qui les a lancés. Par exemple, si vous tapez des
commandes sous un interpréteur de commandes, alors l’interpréteur de commandes est un
processus, et toute commande que vous lancez est aussi un processus. Chaque processus que vous
lancez de cette manière aura votre interpréteur de commandes comme processus parent. Une
exception à cela est le processus spécial appelé init(8). init est toujours le premier processus, donc
son PID est toujours 1. init est lancé automatiquement par le noyau au démarrage de FreeBSD.
Deux commandes sont particulièrement utiles pour voir les processus sur le système, ps(1) et
top(1). La commande ps est utilisée pour afficher une liste statique des processus tournant
actuellement, et peut donner leur PID, la quantité de mémoire qu’ils utilisent, la ligne de
commande par l’intermédiaire de laquelle ils ont été lancés, et ainsi de suite. La commande top(1)
affiche tous les processus, et actualise l’affichage régulièrement, de sorte que vous puissiez voir de
façon intéractive ce que fait l’ordinateur.
Par défaut, ps(1) n’affiche que les commandes que vous faites tourner et dont vous êtes le
propriétaire. Par exemple:
% ps
PID TT STAT TIME COMMAND
298 p0 Ss 0:01.10 tcsh
7078 p0 S 2:40.88 xemacs [Link] (xemacs-21.1.14)
37393 p0 I 0:03.11 xemacs [Link] (xemacs-21.1.14)
48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/[Link]
48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)
72210 p0 R+ 0:00.00 ps
390 p1 Is 0:01.14 tcsh
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y
6688 p3 IWs 0:00.00 tcsh
10735 p4 IWs 0:00.00 tcsh
120
20256 p5 IWs 0:00.00 tcsh
262 v0 IWs 0:00.00 -tcsh (tcsh)
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc
285 v0 S 0:38.45 /usr/X11R6/bin/sawfish
Comme vous pouvez le voir dans cet exemple, la sortie de ps(1) est organisée en un certain nombre
de colonnes. PID est l’identifiant de processus discuté plus tôt. Les PIDs sont assignés à partir de 1, et
vont jusqu’à 99999, et puis repassent à 1 quand le maximum est atteint (un PID n’est pas réassigné
s’il est déjà utilisé). La colonne TT donne le terminal sur lequel tourne le programme, et peut être
pour le moment ignoré sans risque. STAT affiche l’état du programme, peut être également ignoré.
TIME est la durée d’utilisation du CPU-ce n’est généralement pas le temps écoulé depuis que vous
avez lancé le programme, comme la plupart des programmes passent beaucoup de temps à
attendre que certaines choses se produisent avant qu’ils n’aient besoin de dépenser du temps CPU.
Et enfin, COMMAND est la ligne de commande qui a été utilisée lors du lancement du programme.
ps(1) supporte un certain nombre d’options différentes pour modifier les informations affichées.
Un des ensembles d’options les plus utiles est auxww. a affiche l’information au sujet de tous les
processus tournant, et pas seulement les vôtres. u donne le nom de l’utilisateur du propriétaire du
processus, ainsi que l’utilisation de la mémoire. x affiche des informations sur les processus
"daemon", et ww oblige ps(1) à afficher la ligne de commande complète pour chaque processus,
plutôt que de la tronquer quand elle est trop longue pour tenir à l’écran.
% top
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+[Link] [Link]
47 processes: 1 running, 46 sleeping
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm
48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt
...
La sortie est divisée en deux sections. L’entête (les cinq premières lignes) donne le PID du dernier
processus lancé, la charge système moyenne (qui est une mesure de l’occupation du système), la
durée de fonctionnement du système (le temps écoulé depuis le dernier redémarrage), et l’heure
actuelle. Les autres éléments de l’entête concernent le nombre de processus en fonctionnement (47
dans notre cas), combien d’espace mémoire et d’espace de pagination sont occupés, et combien de
121
temps le système passe dans les différents états du CPU.
En dessous il y a une série de colonnes contenant des informations semblables à celles données par
ps(1). Comme précédemment vous pouvez lire le PID, le nom d’utilisateur, la quantité de temps CPU
consommée, et la commande qui a été lancée. top(1) vous affiche par défaut la quantité d’espace
mémoire utilisée par chaque processus. Cela est divisé en deux colonnes, une pour la quantité
totale, et une autre pour la quantité résidente-la quantité totale représente l’espace mémoire dont a
eu besoin l’application, et la quantité résidente représente l’espace qui est en fait utilisé
actuellement. Dans cet exemple vous pouvez voir que getenv(3) a exigé presque 30 Mo de RAM,
mais utilise actuellement seulement 9Mo.
top(1) actualise l’affichage toutes les deux secondes; cela peut être modifié avec l’option s.
Nous appelons ces programmes des daemons (démons). Les "daemons" étaient des personnages de
la mythologie Grecque: ni bon ni mauvais, c’étaient de petits esprits serviteurs qui, généralement,
ont été à l’origine de choses utiles à l’humanité, un peu comme les serveurs web ou de messagerie
d’aujourd’hui nous sont utiles. C’est pourquoi la mascotte BSD a été, pendant longtemps, un démon
à l’apparence joyeuse portant des chaussures de tennis et une fourche.
Il existe une convention pour nommer les programmes qui fonctionnent normalement en tant que
daemons qui est d’utiliser une terminaison en "d". BIND est le "Berkeley Internet Name Domain",
mais le programme réel qui est exécuté s’appelle named); le programme correspondant au serveur
web Apache est appelé httpd; le daemon de gestion de la file d’attente de l’imprimante est lpd, et
ainsi de suite. C’est une convention, mais pas une obligation pure et simple; par exemple le daemon
principal de gestion du courrier électronique pour l’application Sendmail est appelé sendmail, et
non pas maild, comme vous pourriez l’imaginer.
Parfois vous devrez communiquer avec un processus daemon. Une manière de procéder est de lui
(ou à tout processus en cours d’exécution) envoyer ce que l’on appelle un signal. Il existe un certain
nombre de signaux différents que vous pouvez envoyer-certains d’entre eux ont une signification
précise, d’autres sont interprétés par l’application, et la documentation de l’application vous
indiquera comment l’application interprète ces signaux. Vous ne pouvez envoyer de signaux qu’aux
processus dont vous êtes le propriétaire. Si vous envoyez un signal à un processus appartenant à
quelqu’un d’autre avec kill(1) ou kill(2), vous obtiendrez un refus de permission. Il existe une
exception à cela: l’utilisateur root, qui peut envoyer des signaux aux processus de chacun.
Dans certain cas FreeBSD enverra également aux applications des signaux. Si une application est
mal écrite, et tente d’accéder à une partie de mémoire à laquelle elle n’est pas supposée avoir accès,
FreeBSD envoie au processus le signal de violation de segmentation (SIGSEGV). Si une application a
122
utilisé l’appel système alarm(3) pour être avertie dès qu’une période de temps précise est écoulée
alors lui sera envoyé le signal d’alarme (SIGALRM), et ainsi de suite.
Deux signaux peuvent être utilisés pour arrêter un processus, SIGTERM et SIGKILL. SIGTERM est la
manière polie de tuer un processus; le processus peut attraper le signal, réaliser que vous désirez
qu’il se termine, fermer les fichiers de trace qu’il a peut-être ouvert, et généralement finir ce qu’il
était en train de faire juste avant la demande d’arrêt. Dans certains cas un processus peut ignorer
un SIGTERM s’il est au milieu d’une tâche qui ne peut être interrompue.
SIGKILL ne peut être ignoré par un processus. C’est le signal "Je me fiche de ce que vous faites,
arrêtez immédiatement". Si vous envoyez un SIGKILL à un processus alors FreeBSD stoppera le
processus.
Les autres signaux que vous pourriez avoir envie d’utiliser sont SIGHUP, SIGUSR1, et SIGUSR2. Ce sont
des signaux d’usage général, et différentes applications se comporteront différemment quand ils
sont envoyés.
Supposez que vous avez modifié le fichier de configuration de votre serveur web-vous voudriez
dire à votre serveur web de relire son fichier de configuration. Vous pourriez arrêter et relancer
httpd, mais il en résulterait une brève période d’indisponibilité de votre serveur web, ce qui peut
être indésirable. La plupart des daemons sont écrits pour répondre au signal SIGHUP en relisant leur
fichier de configuration. Donc au lieu de tuer et relancer httpd vous lui enverriez le signal SIGHUP.
Parce qu’il n’y a pas de manière standard de répondre à ces signaux, différents daemons auront
différents comportements, soyez sûr de ce que vous faites et lisez la documentation du daemon en
question.
Les signaux sont envoyés en utilisant la commande kill(1), comme cet exemple le montre:
Cet exemple montre comment envoyer un signal à inetd(8). Le fichier de configuration d'inetd
est /etc/[Link], et inetd relira ce fichier de configuration quand un signal SIGHUP est envoyé.
1. Trouvez l’identifiant du processus (PID) auquel vous voulez envoyer le signal. Faites-le en
employant ps(1) et grep(1). La commande grep(1) est utilisée pour rechercher dans le
résultat la chaîne de caractères que vous spécifiez. Cette commande est lancée en tant
qu’utilisateur normal, et inetd(8) est lancé en tant que root, donc les options ax doivent être
passées à ps(1).
Donc le PID d’inetd(8) est 198. Dans certains cas la commande grep inetd pourrait aussi
apparaître dans le résultat. C’est à cause de la façon dont ps(1) recherche la liste des
processus en fonctionnement.
2. Utilisez kill(1) pour envoyer le signal. Etant donné qu’inetd(8) tourne sous les droits de
l’utilisateur root vous devez utilisez su(1) pour devenir, en premier lieu, root.
123
% su
Password:
# /bin/kill -s HUP 198
Comme la plupart des commandes UNIX®, kill(1) n’affichera rien si la commande est
couronnée de succès. Si vous envoyez un signal à un processus dont vous n’êtes pas le
propriétaire alors vous verrez kill: PID: Operation not permitted. Si vous avez fait une
erreur dans le PID, vous enverrez le signal soit à un mauvais processus, ce qui peut être
mauvais, soit, si vous êtes chanceux, vous enverrez le signal à un PID qui n’est pas
actuellement utilisé, et vous verrez kill: PID: No such process.
Envoyer d’autres signaux est très semblable, substituez juste TERM ou KILL dans la ligne de
commande si nécessaire.
Tuer au hasard des processus sur le système peut être une mauvaise idée. En
particulier, init(8), processus à l’identifiant 1, qui est très particulier. Lancer la
commande /bin/kill -s KILL 1 est une manière rapide d’arrêter votre système.
Vérifiez toujours à deux fois les arguments que vous utilisez avec kill(1) avant
d’appuyer sur Entrée .
Quel interpréteur de commandes utilisez-vous? C’est vraiment une question de goût. Si vous
programmez en C vous pourriez vous sentir plus à l’aise avec un interpréteur de commandes
proche du C comme tcsh. Si vous venez du monde Linux ou que vous êtes nouveau à l’interface en
124
ligne de commande d’UNIX® vous pourriez essayer bash. L’idée principale est que chaque
interpréteur de commandes à des caractéristiques uniques qui peuvent ou ne peuvent pas
fonctionner avec votre environnement de travail préféré, et que vous avez vraiment le choix de
l’interpréteur de commandes à utiliser.
Une des caractéristiques communes des interpréteurs de commandes est de pouvoir compléter les
noms de fichiers ("filename completion"). En tapant les premières lettres d’une commande ou d’un
fichier, vous pouvez habituellement faire compléter automatiquement par l’interpréteur de
commandes le reste de la commande ou du nom du fichier en appuyant sur la touche Tab du
clavier. Voici un exemple. Supposez que vous avez deux fichiers appelés respectivement foobar et
[Link]. Vous voulez effacer [Link]. Donc ce que vous devriez taper sur le clavier est: rm
fo[Tab].[Tab].
Le [BEEP] est la sonnerie de la console, c’est l’interpréteur de commande indiquant qu’il n’est pas
en mesure de compléter totalement le nom du fichier parce qu’il y a plus d’une possibilité. foobar et
[Link] commencent tous les deux par fo, mais il fut capable de compléter jusqu’à foo. Si vous tapez
., puis appuyez à nouveau sur Tab , l’interpréteur de commandes devrait pouvoir compléter le reste
du nom du fichier pour vous.
Variable Description
USER Le nom d’utilisateur de la personne
actuellement attachée au système.
PATH La liste des répertoires, séparés par deux points,
pour la recherche des programmes.
DISPLAY Le nom réseau de l’affichage X11 auquel on peut
se connecter, si disponible.
SHELL Le nom de l’interpréteur de commandes
actuellement utilisé.
TERM Le nom du type de terminal de l’utilisateur.
Utilisé pour déterminer les capacités du
terminal.
TERMCAP L’entrée de la base de données des codes
d’échappement pour permettre l’exécution de
diverses fonctions du terminal.
OSTYPE Type du système d’exploitation, e.g. FreeBSD.
125
Variable Description
MACHTYPE L’architecture du CPU sur lequel tourne
actuellement le système.
EDITOR L’éditeur de texte préferé de l’utilisateur.
PAGER Le visualisateur de page de texte préferré de
l’utilisateur.
MANPATH La liste des répertoires, séparés par deux points,
pour la recherche des pages de manuel.
Fixer une variable d’environnement diffère légèrement d’un interpréteur de commandes à l’autre.
Par exemple, dans le style de l’interpréteur de commandes de type C-shell comme tcsh et csh, vous
utiliseriez setenv pour fixer le contenu d’une variable d’environnement. Sous les interpréteurs de
commandes Bourne comme sh et bash, vous utiliseriez export pour configurer vos variables
d’environnement. Par exemple, pour fixer ou modifier la variable d’environnement EDITOR, sous csh
ou tcsh une commande comme la suivante fixera EDITOR à /usr/local/bin/emacs:
% export EDITOR="/usr/local/bin/emacs"
Pour éviter que l’interpréteur de commande n’interprète les caractères spéciaux, ils peuvent être
neutralisés en ajoutant un caractère antislash (\) devant. echo $TERM affichera votre type de
terminal. echo \$TERM affichera $TERM tel quel.
La méthode la plus simple pour changer votre interpréteur de commandes est d’utiliser la
commande chsh. En lançant chsh vous arriverez dans l’éditeur correspondant à votre variable
d’environnement EDITOR; si elle n’est pas fixée, cela sera vi. Modifiez la ligne "Shell:" en
conséquence.
126
Vous pouvez également passer le paramètre -s à chsh; cela modifiera votre interpréteur de
commandes sans avoir à utiliser un éditeur. Par exemple, si vous vouliez changer votre
interpréteur de commandes pour bash, ce qui suit devrait faire l’affaire:
% chsh -s /usr/local/bin/bash
L’interpréteur de commandes que vous désirez utiliser doit être présent dans le
fichier /etc/shells. Si vous avez installé l’interpréteur de commandes à partir du
catalogue des logiciels portés, alors cela a dû déjà être fait pour vous. Si vous avez
installé à la main l’interpréteur de commandes, vous devez alors le faire.
Par exemple, si vous avez installé bash à la main et l’avez placé dans /usr/local/bin,
vous devrez faire:
L’éditeur de plus facile et le plus simple à apprendre est un éditeur appelé ee, qui signifie l’éditeur
facile (easy editor). Pour lancer ee, on taperait sur la ligne de commande ee fichier où fichier est le
nom du fichier qui doit être édité. Par exemple, pour éditer /etc/[Link], tapez ee /etc/[Link]. Une
fois sous ee, toutes les commandes pour utiliser les fonctions de l’éditeur sont affichées en haut de
l’écran. Le caractère ^ représente la touche Ctrl sur le clavier, donc ^e représente la combinaison
de touches Ctrl + e . Pour quitter ee, appuyez sur la touche Echap , ensuite choisissez "leave editor".
L’éditeur vous demandera s’il doit sauver les changements si le fichier a été modifié.
FreeBSD est également fourni avec des éditeurs de texte plus puissants comme vi en tant
qu’élément du système de base, alors que d’autres éditeurs, comme Emacs et vim, en tant
qu’élément du catalogue des logiciels portés de FreeBSD (editors/emacs et editors/vim). Ces éditeurs
offrent beaucoup plus de fonctionnalités et de puissance aux dépens d’être un peu plus compliqués
à apprendre. Cependant si vous projetez de faire beaucoup d’édition de texte, l’étude d’un éditeur
plus puissant comme vim ou Emacs vous permettra d’économiser beaucoup plus de temps à la
longue.
127
matériel présent sur le système, incluant les disques, les imprimantes, les cartes graphiques, et les
claviers. Quand FreeBSD démarre, la majorité de ce qu’affiche FreeBSD est la détection des
périphériques. Vous pouvez à nouveau consulter les messages de démarrage en visualisant le
fichier /var/run/[Link].
Par exemple, acd0 est le premier lecteur de CDROM IDE, tandis que kbd0 représente le clavier.
La plupart de ces périphériques sous un système d’exploitation UNIX® peuvent être accédés par
l’intermédiaire de fichiers appelés fichiers spéciaux de périphérique ("device node"), qui sont situés
dans le répertoire /dev.
Quand vous ajoutez un nouveau périphérique à votre système, ou compilez le support pour des
périphériques supplémentaires, de nouveaux fichiers spéciaux de périphérique doivent être créés.
Le système de fichiers de périphérique, ou DEVFS, fournit un accès à l’espace nom des périphériques
du noyau dans l’espace nom du système de fichiers global. Au lieu d’avoir à créer et modifier les
fichiers spéciaux de périphérique, DEVFS maintient ce système de fichiers particulier pour vous.
• [Link](5)
Le plus vieux et le format objet "classique" d’UNIX®. Il utilise une entête courte et compacte
avec un nombre magique au début qui est souvent utilisé pour caractériser le format (voir la
page de manuel [Link](5) pour plus de détails). Il contient trois segments chargés: .text, .data, et
.bss plus une table de symboles et une table de chaînes de caractères.
• COFF
Le format objet SVR3. L’entête comprend une table de section, de telle sorte que vous avez plus
de sections qu’uniquement .text, .data et .bss.
• elf(5)
Le successeur de COFF, qui permet des sections multiples et des valeurs possibles de 32 bits et
64 bits. Un inconvénient majeur: ELF a aussi été conçu en supposant qu’il y aurait qu’un seul
ABI par architecture système. Cette hypothèse est en fait assez incorrecte, et même dans le
monde SYSV (qui a au moins trois ABIs: SVR4, Solaris, SCO) cela ne se vérifie pas.
128
exécutable connu ELF avec des informations sur l’ABI qui va avec. Consultez la page de manuel
de brandelf(1) pour plus d’informations.
FreeBSD vient du camp "classique" et a utilisé le format [Link](5), une technologie employée et
éprouvée à travers des générations de BSDs, jusqu’aux débuts de la branche 3.X. Bien qu’il fut
possible de compiler et d’exécuter des binaires natifs ELF (et noyaux) sous FreeBSD avant cela,
FreeBSD a initialement résisté à la "pression" de passer à ELF comme format par défaut. Pourquoi?
Bien, quand le camp Linux ont fait leur pénible transition vers ELF, ce n’est pas tant fuir le format
[Link] qui rendait difficile la construction de bibliothèques partagée pour les développeurs mais le
mécanisme de bibliothèques partagées basé sur des tables de sauts inflexible. Puisque les outils ELF
disponibles offraient une solution au problème des bibliothèques partagées et étaient perçus
comme "le chemin à suivre" de toute façon, le coût de la migration a été accepté comme nécessaire,
et la transition a été réalisée. Le mécanisme FreeBSD de bibliothèques partagées se rapproche plus
du style de mécanisme de bibliothèques partagées de SunOS™ de Sun, et est très simple à utiliser.
Dans un obscure et lointain passé, il y avait du matériel simple. Ce matériel simple supportait un
simple petit système. [Link] était complètement adapté pour représenter les binaires sur ce système
simple (un PDP-11). Au fur et à mesure que des personnes portaient UNIX® à partir de ce système
simple, ils ont maintenus le format [Link] parce qu’il était suffisant pour les premiers portages
d’UNIX® sur des architectures comme le Motorola 68k, les VAX, etc.
Alors un certain ingénieur matériel brillant a décidé qu’il pourrait forcer le matériel à faire des
choses bizarre, l’autorisant ainsi à réduire le nombre de portes logiques et permettant au coeur du
CPU de fonctionner plus rapidement. Bien qu’on l’a fait fonctionner avec ce nouveau type de
matériel (connu de nos jour sous le nom de RISC), [Link] n’était pas adapté à ce matériel, aussi
beaucoup de formats ont été développés pour obtenir de meilleures performances de ce matériel
que ce que pouvait offrir le simple et limité format qu’était [Link]. Des choses comme COFF, ECOFF,
et quelques autres obscures formats ont été inventé et leur limites explorées avant que les choses
ne se fixent sur ELF.
En outre, les tailles des programmes devenaient énormes alors que les disques (et la mémoire
physique) étaient toujours relativement petits, aussi le concept de bibliothèque partagée est né. Le
système de VM (mémoire virtuelle) est également devenu plus sophistiqué. Tandis que chacune de
ces avancées était faites en utilisant le format [Link], son utilité a été élargie de plus en plus avec
chaque nouvelle fonction. De plus les gens ont voulu charger dynamiquement des choses à
l’exécution, ou se débarrasser de partie de leur programme après l’initialisation pour économiser
de l’espace mémoire et de pagination. Les langages sont devenus plus sophistiqués et les gens ont
voulu du code appelé automatiquement avant la partie principale du programme. Beaucoup de
modifications ont été apportées au format [Link] pour rendre possible toutes ces choses, et cela a
fonctionné pendant un certain temps. Avec le temps, [Link] n’était plus capable de gérer tous ces
problèmes sans une augmentation toujours croissante du code et de sa complexité. Tandis ELF
résolvait plusieurs de ces problèmes, il aurait été pénible de quitter un système qui a fonctionné.
Ainsi ELF a dû attendre jusqu’au moment où il était plus pénible de rester avec [Link] que d’émigrer
vers ELF.
Cependant, avec le temps, les outils de compilation desquels ceux de FreeBSD sont dérivés
(l’assembleur et le chargeur tout spécialement) ont évolué en parallèle. Les développeurs FreeBSD
129
ajoutèrent les bibliothèques partagées et corrigèrent quelques bogues. Les gens de chez GNU qui
ont à l’origine écrit ces programmes, les récrivirent et ajoutèrent un support plus simple pour la
compilation multi-plateformes, avec différents formats à volonté, et ainsi de suite. Lorsque
beaucoup de personnes ont voulu élaborer des compilateurs multi-plateformes pour FreeBSD, elles
n’eurent pas beaucoup de chance puisque les anciennes sources que FreeBSD avait pour as et ld
n’étaient pas adaptées à cette tâche. Le nouvel ensemble d’outils de GNU (binutils) supporte la
compilation multi-plateformes, ELF, les bibliothèques partagées, les extensions C++, etc. De plus, de
nombreux vendeurs de logiciels fournissent des binaires ELF, et c’est une bonne chose pour
permettre leur exécution sous FreeBSD.
ELF est plus expressif qu'[Link] et permet plus d’extensibilité dans le système de base. Les outils ELF
sont mieux maintenus, et offrent un support pour la compilation multi-plateformes, ce qui est
important pour de nombreuses personnes. ELF peut être légèrement plus lent qu'[Link], mais tenter
de mesurer cette différence n’est pas aisé. Il y a également de nombreux détails qui diffèrent entre
les deux dans la façon dont ils mappent les pages mémoire, gère le code d’initialisation, etc. Dans le
futur, le support [Link] sera retiré du noyau GENERIC, et par la suite retiré des sources du noyau une
fois que le besoin d’exécuter d’anciens programmes [Link] aura disparu.
La documentation la plus complète sur FreeBSD est sous la forme de pages de manuel. Presque
chaque programme sur le système est fournit avec un court manuel de référence expliquant
l’utilisation de base et les diverses options. Ces manuels peuvent être visualisés avec la commande
man. L’utilisation de la commande man est simple:
% man command
command est le nom de la commande à propos de laquelle vous désirez en savoir plus. Par exemple,
pour en savoir plus au sujet de la commande ls tapez:
% man ls
1. Commandes utilisateur.
4. Pilotes de périphérique.
5. Formats de fichier.
7. Information diverse.
130
8. Commandes de maintenance et d’utilisation du système.
Dans certains cas, le même sujet peut apparaître dans plus d’une section du manuel en ligne. Par
exemple, il existe une commande utilisateur chmod et un appel système chmod(). Dans ce cas, vous
pouvez préciser à la commande man laquelle vous désirez en spécifiant la section:
% man 1 chmod
Cela affichera la page de manuel de la commande utilisateur chmod. Les références à une section
particulière du manuel en ligne sont traditionnellement placées entre parenthèses, ainsi chmod(1)
se rapporte à la commande utilisateur chmod et chmod(2) se rapporte à l’appel système.
C’est parfait si vous connaissez le nom de la commande et vous souhaitez simplement savoir
comment l’utiliser, mais qu’en est-il si vous ne pouvez pas vous rappelez du nom de la commande?
Vous pouvez utiliser man pour rechercher des mots-clés dans les descriptions de commandes en
employant l’option -k:
% man -k mail
Avec cette commande on vous affichera la liste des commandes qui ont le mot-clé "mail" dans leurs
descriptions. C’est en fait équivalent à l’utilisation de la commande apropos.
Ainsi, vous regardez toutes ces commandes fantaisistes contenues dans /usr/bin mais vous n’avez
pas la moindre idée de ce quelles font vraiment? Faites simplement:
% cd /usr/bin
% man -f *
ou
% cd /usr/bin
% whatis *
FreeBSD inclut beaucoup d’applications et d’utilitaires produit par la Fondation pour le Logiciel
Libre ( Free Software Foundation). En plus des pages de manuel, ces programmes sont fournis avec
des documents hypertexte appelés fichiers info qui peuvent être lus avec la commande info ou, si
vous avez installé emacs, dans le mode info d’emacs.
131
% info
Pour une brève introduction, tapez h. Pour une référence rapide sur la commande, tapez ?.
132
Chapitre 4. Installer des applications: les
logiciels pré-compilés et les logiciels portés
4.1. Synopsis
FreeBSD est livré avec une riche collection d’outils en tant que partie du système de base. Beaucoup
de choses peuvent être faites avant d’avoir besoin de recourir à l’installation d’une application tiers
pour effectuer un travail précis. FreeBSD fournit deux technologies complémentaires pour installer
des logiciels tiers sur votre système: le Catalogue des logiciels portés de FreeBSD (pour une
installation à partir des sources), et les logiciels pré-compilés ou "paquetages" (pour installer des
binaires pré-compilés). N’importe laquelle de ces deux méthodes peut être utilisée pour installer les
nouvelles versions de vos applications favorites à partir d’un support local ou directement depuis le
réseau.
• Comment compiler des logiciels tiers à partir des sources en utilisant le catalogue de logiciels
portés.
• Comment modifier les paramètres par défaut utilisés par le catalogue des logiciels portés.
1. Télécharger le logiciel, qui peut être distribué sous forme de code source, ou sous forme
d’un binaire.
2. Extraire le logiciel de son format de distribution (généralement une archive tar compressée
soit avec compress(1), soit avec gzip(1), ou encore bzip2(1)).
4. Si le logiciel était distribué sous forme de sources, compilez-le. Cela peut impliquer l’édition
d’un Makefile, ou l’exécution d’une procédure configure, et d’autres activités.
Et cela si seulement tout se passe bien. Si vous installez un logiciel qui n’a pas été spécialement
porté pour FreeBSD, il se peut que vous deviez éditer le code source pour le faire fonctionner
133
correctement.
Si vous le voulez, vous pouvez continuer d’installer des logiciels suivant la méthode "traditionnelle"
sous FreeBSD. Cependant, FreeBSD fournit deux technologies avec lesquelles vous pouvez vous
économiser beaucoup d’efforts: les logiciels pré-compilés et le catalogue des logiciels portés. A
l’heure de l’écriture de ces lignes, plus de 36000 applications tierces sont ainsi mises à disposition.
Pour n’importe quelle application donnée, le logiciel pré-compilé FreeBSD pour cette application est
un unique fichier à télécharger. Il contient les copies pré-compilées de toutes les commandes de
l’application, ainsi que tous fichiers de configuration et documentation. Un logiciel pré-compilé
téléchargé peut être manipulé avec les commandes FreeBSD de gestion des logiciels pré-compilés,
comme pkg_add(1), pkg_delete(1), pkg_info(1), et ainsi de suite. L’installation d’une nouvelle
application peut être effectuée grâce à une unique commande.
Un logiciel porté pour FreeBSD est un ensemble de fichiers conçus pour automatiser le processus de
compilation d’une application à partir du code source.
Rappelez-vous qu’il y a un certain nombre d’étapes que vous effectueriez si vous compiliez un
programme vous-même (téléchargement, extraction, application de correctifs, compilation,
installation). Les fichiers qui composent un logiciel porté contiennent toute l’information
nécessaire pour permettre au système de faire cela pour vous. Vous lancez une poignée de
commandes simples et le code source de l’application est automatiquement téléchargé, extrait,
corrigé, compilé, et installé pour vous.
En fait, le catalogue des logiciels portés peut être utilisé pour générer ce qui pourra plus tard être
manipulé avec pkg_add et d’autres commandes de gestion des logiciels pré-compilés qui seront
présentés sous peu.
Etant donné que les deux technologies sont presque semblables, vous pourriez vous demander
pourquoi FreeBSD s’ennuie avec les deux. Les logiciels pré-compilés et le catalogue de logiciels
portés ont chacun leurs propres forces, et celle que vous emploierez dépendra de votre préférence.
• Les logiciels pré-compilés ne nécessitent pas de compilation supplémentaire. Pour les grosses
applications, comme Mozilla, KDE, ou GNOME cela peut s’avérer important, particulièrement si
vous êtes sur un système lent.
• Les logiciels pré-compilés ne demandent pas une compréhension du processus impliqué dans la
compilation de logiciels sous FreeBSD.
134
Avantages du catalogue des logiciels portés
• Les logiciels pré-compilés sont normalement compilés avec des options conservatrices, parce
qu’ils doivent pouvoir tourner sur le plus grand nombre de systèmes. En installant à partir du
catalogue des logiciels portés, vous pouvez ajuster les options de compilation pour (par
exemple) générer du code spécifique au Pentium 4 ou à l’Athlon.
• Certaines applications ont des options de compilation concernant ce qu’elles peuvent faire et ne
pas faire. Par exemple, Apache peut être configuré avec une très large variété d’options
intégrées différentes. En compilant à partir du catalogue des logiciels portés vous n’avez pas à
accepter les options par défaut, et vous pouvez les configurez vous-même.
Dans certains cas, de multiples logiciels pré-compilés existeront pour la même application pour
spécifier certaines configurations. Par exemple, Ghostscript est disponible comme logiciel pré-
compilé ghostscript et ghostscript-nox11 , en fonction de si vous avez installé ou non un serveur
X11. Ce type d’arrangement est possible avec les logiciels pré-compilés, mais devient
rapidement impossible si une application a plus d’une ou deux options de compilation.
• Les licences de certains logiciels interdisent les distributions binaires. Ils doivent être distribués
sous forme de code source.
• Certaines personnes ne font pas confiance aux distributions binaires. Au moins avec le code
source, vous pouvez (en théorie) le parcourir et chercher les problèmes potentiels par vous-
même.
• Si vous avez des correctifs locaux, vous aurez besoin du code source afin de les appliquer.
• Certaines personnes aiment avoir le code source à portée de main, ainsi elles peuvent le lire si
elles s’ennuient, le modifier, y faire des emprunts (si la licence le permet bien sûr), etc…
Pour suivre les mises à jour du catalogue des logiciels portés, inscrivez-vous à la liste de diffusion à
propos du catalogue des logiciels portés de FreeBSD et la liste de diffusion à propos des rapports de
bogue concernant le catalogue des logiciels portés de FreeBSD.
Le reste de ce chapitre expliquera comment utiliser les logiciels pré-compilés et le catalogue des
logiciels portés et la gestion des logiciels tiers sous FreeBSD.
La liste des applications disponibles pour FreeBSD augmente de jours en jours. Heureusement, il y a
135
plusieurs façons de trouver ce que vous désirez:
• Le site web de FreeBSD maintient à jour une liste, dans laquelle on peut effectuer des
recherches, de toutes les applications disponibles à l’adresse [Link] Le
catalogue des logiciels portés est divisé en catégories, et vous pouvez soit chercher une
application par son nom (si vous le connaissez), soit lister toutes les applications disponibles
dans une catégorie.
• Si vous ne connaissez pas le nom de l’application que vous voulez, essayez d’utiliser un site
comme FreshMeat ([Link] pour trouver une application, ensuite vérifiez
sur le site de FreeBSD si l’application a déjà été portée.
• Si vous connaissez le nom exact du logiciel, vous devez juste déterminer dans quelle catégorie il
se trouve, vous pouvez utiliser la commande whereis(1) pour cela. Tapez simplement whereis
file où file est le programme que vous voulez installer. S’il est trouvé sur le système, on vous
indiquera où il se trouve, de la manière suivante:
# whereis lsof
lsof: /usr/ports/sysutils/lsof
Cela nous indique que lsof (un utilitaire système) peut être trouvé dans le répertoire
/usr/ports/sysutils/lsof.
• Vous pouvez également utiliser une simple commande echo(1) pour déterminer où se trouve un
logiciel porté dans le catalogue de logiciels portés. Par exemple:
# echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsof
Notez que cette commande retournera tout fichier téléchargé du répertoire /usr/ports/distfiles
correspondant à ce motif de recherche.
• Encore une autre façon de trouver un logiciel porté particulier est d’utiliser le mécanisme de
recherche interne du catalogue des logiciels portés. Pour utiliser la fonction de recherche, vous
devrez vous trouver dans le répertoire /usr/ports. Une fois dans ce répertoire, lancez make
search name=program-name où program-name représente le nom du programme que vous voulez
localiser. Par exemple, si vous recherchiez lsof:
# cd /usr/ports
# make search name=lsof
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@[Link]
136
Index: sysutils
B-deps:
R-deps:
La partie du message de sortie à laquelle vous devez prêter attention est la ligne "Path:", car cela
vous indique où trouver le logiciel porté. Les autres informations ne sont pas nécessaires afin
d’installer le logiciel porté, aussi on en parlera pas ici.
Pour une recherche plus en profondeur vous pouvez également utiliser make search key=string
où string est le texte à rechercher. Cela recherche les noms de logiciels portés, les
commentaires, les descriptions et les dépendances et peut être utilisé pour trouver des logiciels
portés se rapportant à un sujet particulier si vous ne connaissez pas le nom du programme que
vous cherchez.
Dans les deux cas, la chaîne de caractère de recherche n’est pas sensible à la casse des
caractères. Rechercher "LSOF" mènera aux même résultats que la recherche de "lsof".
• Les outils de gestion en ligne de commande des logiciels pré-compilés, qui sont le sujet de la
suite de cette section.
Vous pouvez utiliser l’utilitaire pkg_add(1) pour installer un logiciel pré-compilé FreeBSD à partir
d’un fichier local ou d’un serveur sur le réseau.
# ftp -a [Link]
Connected to [Link].
220 [Link] FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@[Link].
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get [Link]
local: [Link] remote: [Link]
200 PORT command successful.
150 Opening BINARY mode data connection for '[Link]' (92375 bytes).
137
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add [Link]
Si vous ne disposez pas d’une source locale de logiciels pré-compilés (comme l’ensemble de CDROM
de FreeBSD) alors il sera probablement plus facile d’utiliser l’option -r de pkg_add(1). Cela fera
déterminer automatiquement à l’utilitaire le format objet et la version corrects et ensuite récupérer
et installer le logiciel pré-compilé à partir d’un site FTP.
# pkg_add -r lsof
Les logiciels pré-compilés sont distribués dans les formats .tgz et .tbz. Vous pouvez les trouver sur
[Link] ou sur le CDROM de distribution de FreeBSD.
Chaque CD de l’ensemble de 4-CD de FreeBSD (et le PowerPak, etc…) contient des logiciels pré-
compilés dans le répertoire /packages. L’organisation des logiciels pré-compilés est semblable à
celle de l’arborescence /usr/ports. Chaque catégorie possède son propre répertoire, et chaque
logiciel pré-compilé peut être trouvé dans le répertoire All.
138
4.4.2. Gestion des logiciels pré-compilés
pkg_info(1) est un utilitaire qui liste et décrit les divers logiciels pré-compilés installés.
# pkg_info
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...
pkg_version(1) est un utilitaire qui récapitule les versions de tous les logiciels pré-compilés
installés. Il compare la version du logiciel pré-compilé avec la version actuelle trouvée dans le
catalogue des logiciels portés.
# pkg_version
cvsup =
docbook =
...
Les symboles dans la seconde colonne indiquent l’âge relatif de la version installée et de la version
disponible dans le catalogue des logiciels portés local.
Symbole Signification
139
4.4.3. Effacer un logiciel pré-compilé
# pkg_delete xchat-1.7.1
# pkg_delete xchat\*
dans ce cas, tous les logiciels dont le nom commence par xchat seront supprimés.
4.4.4. Divers
Toute l’information sur les logiciels pré-compilés est stockée dans le répertoire /var/db/pkg. La liste
des fichiers installés pour chaque logiciel pré-compilé peut être trouvée dans des fichiers de ce
répertoire.
Avant que vous puissiez installer des logiciels portés, vous devez d’abord récupérer le catalogue des
logiciels portés- qui est essentiellement un ensemble de Makefiles, de correctifs, et de fichiers de
description habituellement placés dans /usr/ports.
Quand vous avez installé votre système FreeBSD, sysinstall vous a demandé si vous aimeriez
installer le catalogue des logiciels portés. Si vous avez choisi non, vous pouvez suivre ces
instructions pour obtenir le catalogue des logiciels portés:
C’est une méthode rapide pour récupérer le catalogue des logiciels portés en utilisant le
protocole CVSup. Si vous voulez en apprendre plus au sujet de CVSup, lisez la section Utiliser
CVSup.
140
Assurez-vous que le répertoire /usr/ports est vide avant d’utiliser csup pour la première fois. Si
vous avez déjà un catalogue des logiciels portés, obtenu à partir d’une autre source, csup
n’effacera pas les correctifs qui ont été supprimés.
Remplacez [Link] avec un serveur CVSup proche de vous. Voir Sites CVSup
(Sites CVSup) pour une liste complète des sites miroirs.
b. Editez ports-supfile.
c. Remplacez CHANGE_THIS.[Link] avec un serveur CVSup proche
de vous. Voir Sites CVSup (Sites CVSup) pour une liste complète des
sites miroirs.
# csup -L 2 /root/ports-supfile
Portsnap est un système alternatif de distribution du catalogue des logiciels portés. Veuillez
vous reporter à la section Utiliser Portsnap pour une description détaillée de toutes les
caractéristiques de Portsnap.
# portsnap fetch
2. Si vous exécutez Portsnap pour la première fois, il faut extraire l’instantané dans le
répertoire /usr/ports:
141
# portsnap extract
Si votre répertoire /usr/ports contient déjà une version du catalogue des logiciels portés et
que vous désirez juste mettre à jour, utilisez plutôt la commande:
# portsnap update
Cette méthode implique l’utilisation de sysinstall pour installer le catalogue des logiciels portés
à partir du disque d’installation. Il faut noter que la version du catalogue qui sera installée est
la version datant de la publication de votre disque d’installation. Si vous disposez d’un accès à
l’Internet, vous devriez toujours utiliser une des méthodes précédemment exposées.
# sysinstall
2. Faites défiler l’écran vers le bas et sélectionnez Configure, appuyez sur Entrée .
3. Faites défiler l’écran vers le bas et sélectionnez Distributions, appuyez sur Entrée .
4. Faites défiler l’écran vers le bas jusqu’à ports, appuyez sur Espace .
La première chose qui devrait être expliquée quand on aborde le catalogue des logiciels portés est
ce que l’on entend par "squelette". En bref, un squelette est un ensemble minimal de fichiers qui
indique à votre système FreeBSD comment compiler et installer proprement un programme.
Chaque squelette contient:
• Un fichier Makefile. Le fichier Makefile contient les diverses déclarations qui indiquent
comment l’application devrait être compilée et où elle devrait être installée sur votre système.
• Un fichier distinfo. Ce fichier contient l’information à propos des fichiers qui doivent être
téléchargés pour compiler le logiciel, et leurs sommes de contrôle (en utilisant sha256(1)), pour
s’assurer que ces fichiers n’ont pas été corrompus durant le téléchargement.
142
fichiers qui indiquent des modifications sur des fichiers particuliers. Ils sont sous forme de
fichiers texte, qui disent "Effacer la ligne 10" ou "Modifier la ligne 26 par…". Les correctifs sont
également connus sous le nom de "diffs" car ils sont générés par le programme diff(1).
Ce répertoire peut également contenir d’autres fichiers utilisés pour la compilation du logiciel
porté.
• Un fichier pkg-descr. C’est une description plus détaillée du programme, souvent en plusieurs
lignes.
• Un fichier pkg-plist. C’est une liste de tous les fichiers qui seront installés par le logiciel porté. Il
indique également au système des logiciels portés quels fichiers sont à effacer lors d’une
désinstallation.
Certains logiciels portés utilisent d’autres fichiers, comme pkg-message. Le catalogue des logiciels
portés utilise ces fichiers pour faire face à certaines situations spéciales. Si vous désirez plus de
détails au sujet de ces fichiers, et sur les logiciels portés en général, consultez le Manuel du
développeur de logiciels portés.
Le logiciel porté contient les instructions pour compiler le code source, mais ne contient pas le code
source. Vous pouvez obtenir le code source à partie d’un CDROM ou de l’Internet. Le code source est
distribué de la façon dont l’auteur le désire. Fréquemment c’est une archive tar compressée avec
gzip, mais elle pourra être compressée avec un autre outil ou même non compressée. Le code
source d’un programme, peu importe la forme sous laquelle il est distribué, est appelé un fichier
"distfile". Les deux méthodes pour l’installation d’un logiciel porté pour FreeBSD sont décrites ci-
dessous.
Vous devez avoir ouvert une session sous l’utilisateur root pour installer des
logiciels portés.
Avant d’installer un logiciel porté, vous devez vous assurer d’avoir un catalogue
des logiciels portés à jour et vous devez consulter [Link] pour
les problèmes de sécurité relatifs à votre logiciel.
Le catalogue des logiciels portés suppose que vous disposez d’une connection active à l’Internet. Si
ce n’est pas le cas, vous devez placer manuellement une copie du distfile dans le répertoire
/usr/ports/distfiles.
Pour commencer, rendez-vous dans le répertoire du logiciel porté que vous voulez installer:
143
# cd /usr/ports/sysutils/lsof
Une fois à l’intérieur du répertoire lsof vous verrez le squelette du logiciel porté. L’étape suivante
est de compiler (également appelé la "construction") le logiciel porté. Cela est fait en tapant
simplement make à l’invite. Une fois que c’est fait, vous devriez voir quelque chose comme ceci:
# make
>> lsof_4.[Link] doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from [Link]
===> Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.[Link].
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[configure output snipped]
...
===> Building for lsof-4.57
...
[compilation output snipped]
...
#
Notez qu’une fois la compilation terminée, vous vous retrouvez face à l’invite. L’étape suivante est
d’installer le logiciel porté. Afin de l’installer, vous devez juste ajouter un mot à la commande make,
et ce mot est install:
# make install
===> Installing for lsof-4.57
...
[installation output snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
#
Une fois de retour à l’invite, vous devriez être en mesure d’exécuter l’application que vous venez
juste d’installer. Comme lsof est un programme qui tourne avec des privilèges accrus, un
avertissement sur la sécurité est affiché. Durant la compilation et l’installation de logiciels portés,
vous devriez faire attention à tout avertissement qui pourrait apparaître.
144
Il est conseillé de supprimer le sous-répertoire de travail, qui contient tous les fichiers temporaires
utilisés lors de la compilation. Non seulement cela consomme de l’espace disque, mais cela posera
problème plus tard lors de la mise à jour vers une nouvelle version du logiciel porté.
# make clean
===> Cleaning for lsof-4.57
#
Vous pouvez vous économiser deux étapes supplémentaires en lançant juste make
install clean à la place de make, make install et make clean sous la forme de trois
étapes séparées.
Certains DVD-ROMs comme le FreeBSD Toolkit de FreeBSD Mall contiennent des distfiles. Ils
peuvent être utilisés avec le catalogue des logiciels portés. Montez le DVD-ROM sous /cdrom. Si vous
utilisez un point de montage différent, positionnez la variable make(1) CD_MOUNTPTS. Les distfiles
nécessaires seront automatiquement utilisés s’ils sont présent sur le disque.
Soyez conscient que les licences de quelques logiciels portés n’autorisent pas leur
présence sur le CD-ROM. Cela peut être dû à la nécessité de remplir un formulaire
d’enregistrement avant le téléchargement, ou que la redistribution n’est pas
permise, ou toute autre raison. Si vous désirez installer un logiciel porté qui n’est
pas disponible sur le CD-ROM, vous devrez vous connecter afin de récupérer les
fichiers nécessaires.
Le catalogue des logiciels portés utilise fetch(1) pour télécharger les fichiers, qui respecte diverses
variables d’environnement, dont FTP_PASSIVE_MODE, FTP_PROXY, et FTP_PASSWORD. Il se peut que vous
ayez besoin de configurer une ou plusieurs de ces dernières si vous êtes derrière un coupe-feu, ou
devez utiliser un proxy FTP/HTTP. Consultez la page de manuel fetch(3) pour la liste complète des
variables.
Pour les utilisateurs qui ne peuvent rester connectés à l’Internet indéfiniment, il existe la
commande make fetch. Exécutez cette commande à la base du catalogue des logiciels portés
(/usr/ports) et les fichiers nécessaires seront téléchargés. Cette commande fonctionnera également
dans les sous-répertoires du catalogue, par exemple: /usr/ports/net. Notez que si un logiciel porté
dépend de bibliothèques particulières ou d’autres logiciels portés, cette commande de récupérera
pas les sources de ces logiciels. Remplacez fetch par fetch-recursive si vous voulez récupérer
également les sources des logiciels dont dépend un logiciel porté.
145
Vous pouvez compiler tous les logiciels d’une catégorie ou de l’ensemble du
catalogue en exécutant la commande make dans un répertoire de base, juste comme
la commande make fetch précédente. C’est, cependant, une idée dangereuse étant
donné que certains logiciels portés ne peuvent coexister. Dans d’autres cas,
certains logiciels portés peuvent installer des fichiers différents ayant le même
nom.
Dans de rares cas les utilisateurs peuvent vouloir récupérer les archives à partir d’un site différent
du MASTER_SITES par défaut (l’emplacement par défaut à partir duquel les fichiers sont téléchargés).
Vous pouvez surcharger l’option MASTER_SITES avec la commande suivante:
# cd /usr/ports/répertoire
# make MASTER_SITE_OVERRIDE= \
[Link] fetch
Dans cet exemple nous modifions la valeur par défaut de l’option MASTER_SITES pour
[Link]/pub/FreeBSD/ports/distfiles/.
Il est parfois utile (ou obligatoire) d’utiliser des répertoires de travail ou cible différents. Les
variables WRKDIRPREFIX et PREFIX permettent de modifier les répertoires par défaut. Par exemple:
Et bien sûr
combinera les deux (c’est trop long pour tenir sur cette page, mais cela devrait vous donner une
idée générale).
146
Alternativement, ces variables peuvent également être configurées dans votre environnement.
Consultez la page de manuel de votre interpréteur de commandes pour des instructions sur la
procédure à suivre.
Certains logiciels portés qui utilisent imake (une partie du système X Window) ne fonctionnent pas
correctement avec la variable PREFIX, et insisteront pour s’installer sous /usr/X11R6. De façon
similaire, certains logiciels Perl ignorent PREFIX et s’installent dans l’arborescence Perl. Faire en
sorte que ces logiciels portés respectent PREFIX est une tâche difficile voire impossible.
Lors de la compilation de certains logiciels portés, un menu ncurses(3) pourra s’afficher et à partir
de celui-ci vous pourrez sélectionner certaines options de compilation. Il n’est pas inhabituel pour
les utilisateurs de vouloir revoir ce menu pour ajouter, supprimer, ou modifier ces options après la
compilation d’un logiciel. Il y a plusieurs manières pour y parvenir. Une possibilité est de se rendre
dans le répertoire contenant le logiciel porté et de taper make config, qui affichera à nouveau le
menu avec les mêmes options sélectionnées. Une autre possibilité est d’utiliser make showconfig qui
vous affichera toutes les options de configuration pour le logiciel porté. Enfin, une autre possibilité
est d’exécuter make rmconfig qui supprimera toutes les options sélectionnées et permettra donc de
repartir à zéro. Toutes ces options, et bien d’autres, sont détaillées dans la page de manuel ports(7).
Maintenant que vous savez comment installer des logiciels portés, vous vous demandez
probablement comment les effacer, juste au cas où vous en installez un et plus tard vous vous
apercevez que vous n’avez pas installé le bon logiciel porté. Nous désinstallerons notre exemple
précédent (qui était lsof pour ceux d’entre vous qui n’ont pas suivi). Les logiciels portés sont
supprimés de la même manière que pour les logiciels pré-compilés (comme décrit dans la section
Utiliser le système des logiciels pré-compilés) en utilisant la commande pkg_delete(1):
# pkg_delete lsof-4.57
Tout d’abord, listez les logiciels portés périmés dont une nouvelle version est disponible dans le
catalogue des logiciels portés à l’aide de la commande pkg_version(1):
# pkg_version -v
[Link]. /usr/ports/UPDATING
Une fois que vous avez mis à jour le catalogue des logiciels portés, avant de tenter la mise à jour
d’un logiciel porté, vous devrez consulter le fichier /usr/ports/UPDATING. Ce fichier décrit les divers
problèmes et les étapes supplémentaires que les utilisateurs pourront rencontrer ou devront
effectuer lors de la mise à jour un logiciel porté, comme la modification de format de fichiers, le
147
changement des emplacements des fichiers de configuration, ou des incompatibilités avec les
versions antérieures.
Si le contenu du fichier UPDATING prime même s’il est en est en contradiction avec des
informations présentées ici.
Le logiciel portupgrade a été conçu pour une mise à jour aisée des logiciels portés installés. Il est
disponible via le logiciel porté ports-mgmt/portupgrade. Installez-le de la même manière que pour
n’importe quel autre logiciel en employant la commande make install clean:
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean
Ensuite, parcourez la liste des logiciels installés avec la commande pkgdb -F et corrigez toutes les
inconsistances qu’il signale. C’est une bonne idée d’effectuer ce contrôle régulièrement avant
chaque mise à jour.
En lançant portupgrade -a, portupgrade mettra à jour tous les logiciels portés périmés installés sur
votre système. Ajoutez l’indicateur -i si vous voulez être consulté pour confirmer chaque mise à
jour individuelle.
# portupgrade -ai
Si vous désirez mettre à jour qu’une seule application bien particulière et non pas l’intégralité des
applications, utilisez la commande: portupgrade nom_du_logiciel_porté. Ajoutez l’option -R si
portupgrade doit mettre à jour en premier lieu tous les logiciels portés nécessaires à l’application.
# portupgrade -R firefox
Pour utiliser les versions pré-compilées plutôt que les logiciels portés pour l’installation, utilisez
l’option -P. Avec cette option portupgrade cherche les répertoires locaux listé dans la variable
PKG_PATH, ou récupère les paquetages à partir d’un site distant s’ils ne sont pas trouvés localement.
Si les paquetages ne peuvent pas être trouvés localement ou récupérés à distance, portupgrade
utilisera les logiciels portés. Pour éviter l’usage des logiciels portés, spécifiez l’option -PP.
Pour juste récupérer les sources (ou les paquetages, si l’option -P est utilisée) sans compiler ni
installer quelque chose, utilisez -F. Pour plus d’informations consultez la page de manuel
portupgrade(1).
148
[Link]. Mise à jour des logiciels portés à l’aide de Portmanager
Portmanager est un autre utilitaire de mise à jour aisée des logiciels portés installés. Il est
disponible via le logiciel portés ports-mgmt/portmanager:
# cd /usr/ports/ports-mgmt/portmanager
# make install clean
Tous les logiciels portés installés peuvent être mis à jour en utilisant cette simple commande:
# portmanager -u
Vous pouvez ajouter l’option -ui pour être sollicité pour une confirmation à chaque opération
qu’effectuera Portmanager. Portmanager peut également être employé pour installer de nouveaux
logiciels portés sur le système. Contrairement à la commande make install clean habituelle, il
mettra à jour toutes les dépendances avant de compiler et d’installer le logiciel sélectionné.
# portmanager x11/gnome2
Si des problèmes concernant les dépendances du logiciel porté sélectionné apparaissent, vous
pouvez utiliser Portmanager pour toutes les recompiler dans le bon ordre. Cette recompilation
achevée, le logiciel porté en question peut alors être à son tour recompilé.
# portmanager graphics/gimp -f
Portmaster est un autre utilitaire destiné à la mise à jour des logiciels installés. Portmaster a été
conçu pour utiliser les outils présents dans le système de "base" (il ne dépend pas d’un autre logiciel
porté) et utilise les informations contenues dans le répertoire /var/db/pkg/ pour déterminer quel
logiciel doit être mis à jour. Il est disponible à partir du logiciel porté ports-mgmt/portmaster:
# cd /usr/ports/ports-mgmt/portmaster
# make install clean
• logiciels dits "Leaf" (ont des dépendances, aucun logiciel n’en dépend).
149
Vous pouvez lister tous les logiciels installés et rechercher les mises à jour en utilisant l’option -L:
# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports
L’ensemble des logiciels portés installés peut être mis à jour en utilisant cette simple commande:
# portmaster -a
Par défaut Portmaster fera une sauvegarde avant la suppression d’un logiciel
porté. Si l’installation de la nouvelle version se passe correctement, Portmaster
supprimera la sauvegarde. L’option -b demandera à Portmaster de ne pas
supprimer automatiquement la sauvegarde. L’ajout de l’option -i lancera
Portmaster en mode interactif, vous serez alors sollicité avant la mise à jour de
chaque logiciel.
Si vous rencontrez des erreurs lors du processus de mise à jour, vous pouvez utiliser l’option -f
pour mettre à jour ou recompiler tous les logiciels installés:
# portmaster -af
Vous pouvez également employer Portmaster pour installer de nouveaux logiciels portés en
mettant à jour toutes les dépendances avant la compilation et l’installation du nouveau logiciel:
# portmaster shells/bash
150
Pour plus d’information veuillez consulter la page de manuel portmaster(8).
A la longue, l’utilisation du catalogue des logiciels portés consommera rapidement votre espace
disque. Après la compilation et l’installation de logiciels à partir du catalogue des logiciels portés,
vous devriez toujours penser à supprimer les répertoires de travail temporaires, work, en utilisant
la commande make clean. Vous pouvez balayer l’intégralité du catalogue des logiciels portés pour
supprimer tous les répertoires temporaires oubliés précédement, employez alors la commande
suivante:
# portsclean -C
Avec le temps, vous accumulerez beaucoup de fichiers sources obsolètes dans le répertoire distfiles.
Vous pouvez les supprimer manuellement, ou vous pouvez utiliser la commande suivante pour
effacer toutes les sources qui ne correspondent plus à des logiciels portés d’actualité:
# portsclean -D
Ou pour supprimer les fichiers sources ne correspondant à aucun logiciel installé sur votre
systèmes.
Pensez à supprimer les logiciels portés installés que vous n’utilisez plus. Un outil qui permet
d’automatiser cette tâche est disponible via le logiciel porté ports-mgmt/pkg_cutleaves.
Les étapes que vous devez suivre pour configurer chaque application seront bien évidemment
différentes. Cependant, si vous venez juste d’installer une nouvelle application et que vous vous
demandez "Et maintenant?" les astuces suivantes pourront vous aider:
• Utilisez pkg_info(1) pour déterminer quels fichiers ont été installés et à quel endroit. Par
exemple, si vous venez juste d’installer FooPackage version 1.0.0, alors la commande
affichera tous les fichiers installés par le logiciel pré-compilé. Portez une attention toute
particulière aux fichiers dans les répertoires man/, qui seront des pages de manuel, dans les
répertoires etc/ , qui seront des fichiers de configuration, et dans doc/ qui seront de la
151
documentation plus complète.
Si vous n’êtes pas sûr de la version de l’application qui vient juste d’être installée, une
commande comme
déterminera tous les logiciels pré-compilés installés qui ont foopackage dans leur nom.
Remplacez foopackage dans votre ligne de commande par ce qui convient.
• Une fois que vous avez identifié où les pages de manuel de l’application ont été installées,
consultez-les en utilisant la commande man(1). De même, jetez un coup d’oeil aux exemples de
fichiers de configuration, et toute autre documentation additionnelle qui peut avoir été fournie.
# pkg_info foopackage-1.0.0
La ligne WWW:, si elle est présente, devrait donner l’URL du site web de l’application.
• Les logiciels qui doivent être lancés au démarrage (comme les serveurs Internet) installent
généralement un exemple de procédure de lancement dans le répertoire /usr/local/etc/rc.d. Vous
devriez contrôler si ce fichier est correct et l’éditer ou le renommer si nécessaire. Consultez la
section Démarrer des services pour plus d’informations.
1. Vérifiez s’il n’y a pas de correctif en attente pour le logiciel porté dans la base des rapports de
bogue. Si c’est le cas, il se peut que vous puissiez utiliser le correctif proposé.
2. Demandez l’aide du responsable du logiciel porté. Tapez la commande make maintainer ou lisez
le fichier Makefile pour trouver l’adresse électronique du responsable. Pensez à préciser le nom
et la version du logiciel porté (envoyer la ligne $FreeBSD: du fichier Makefile) et les messages
d’erreurs quand vous écrivez au responsable.
Certains logiciels portés ne sont pas maintenus par une personne mais par une
liste de diffusion. Plusieurs, si ce n’est toutes, les adresses de ces listes
ressemblent à freebsd-listname@[Link]. Veuillez prendre cela en compte
152
s’ils y en a, provient de la communauté qui est abonnée à cette liste de
diffusion. Des volontaires supplémentaires sont toujours les bienvenus!
Si vous n’obtenez pas de réponse, vous pouvez utiliser send-pr(1) pour soumettre un rapport de
bogue (consultez Ecrire des rapports de bogue pour FreeBSD).
153
Chapitre 5. Le système X Window
5.1. Synopsis
Une installation de FreeBSD à l’aide de bsdinstall n’installe pas automatiquement d’interface
graphique. Ce chapitre décrit comment installer et configurer Xorg, qui implémente une version
libre du système X Window qui est utilisé pour fournir un environnement graphique. Il décrit
ensuite comme trouver et installer un environnement de bureau ou un gestionnaire de fenêtres.
Pour plus d’informations sur le matériel vidéo supporté par Xorg, consultez le site Web [Link].
• Savoir comment installer des logiciels tiers comme décrit dans le Installer des applications. les
logiciels pré-compilés et les logiciels portés.
5.2. Terminologie
Alors qu’il n’est pas nécessaire de comprendre tout le détail des divers composants du système X
Window, ni comment ils interagissent entre eux, une certaine connaissance de base de ces
composants peut être utile.
Le serveur X
X a été conçu dès le départ centré autour du réseau, et adopte un modèle "client-serveur". Dans
ce modèle, le "serveur X" tourne sur l’ordinateur sur lequel sont branchés le clavier, le moniteur
et la souris. Le serveur est responsable de tâches telles que la gestion de l’affichage, des entrées
en provenance du clavier et de la souris, et les entrées ou sorties d’autres périphériques comme
une tablette ou un vidéo-projecteur. Cela jette le trouble chez certaines personnes, parce que la
terminologie X est exactement le contraire de ce à quoi ils s’attendent. Ils s’attendent à ce que le
"serveur X" soit la grosse machine puissante au fond du couloir, et que le "client X" soit a
machine sur leur bureau.
154
Le client X
Chaque application X, comme XTerm ou Firefox est un "client". Un client envoie des messages au
serveur comme "Dessine une fenêtre aux coordonnées suivantes", et le serveur renvoie au client
des messages du type "L’utilisateur vient de cliquer sur le bouton OK".
A la maison ou dans un petit bureau, le serveur X et les clients X tourneront en général sur le
même ordinateur. Il est également possible de faire tourner le serveur X sur un ordinateur
moins puissant et d’exécuter les applications X sur un système plus puissant. Dans ce scénario, la
communication entre le client X et le serveur se fera par l’intermédiaire du réseau.
Le gestionnaire de fenêtres
X n’essaye pas de dicter quel aspect doivent avoir les fenêtres à l’écran, comment les déplacer
avec la souris, quelles combinaisons de touches devraient être utilisées pour passer de l’une à
l’autre, comment devraient être les barres de titres de chaque fenêtre, etc. Au lieu de cela, X
délègue cette responsabilité à une application séparée, le gestionnaire de fenêtres ("window
manager"). Il existe des douzaines de gestionnaires de fenêtres disponibles. Chaque gestionnaire
de fenêtres propose une apparence et une prise en mains différentes: certains supportent les
bureaux virtuels, d’autres permettent de personnaliser les combinaisons de touches pour la
gestion du bureau, certains ont un bouton "Démarrer", et certains permettent d’utiliser des
thèmes, pour un changement complet d’apparence et de prise en main du bureau. Les
gestionnaires de fenêtres sont disponibles dans la catégorie x11-wm du catalogue des logiciels
portés.
Environnement de bureau
KDE et GNOME sont considérés comme des environnements de bureau car ils intègrent une
suite complète d’applications pour effectuer les tâches classiques d’un bureau informatique. Ils
peuvent disposer de suites bureautiques, de navigateurs Web, ou encore de jeux.
Politique de focus
Le gestionnaire de fenêtres est responsable de la politique ou stratégie de focus de la souris.
Cette politique offre plusieurs méthodes pour choisir quelle fenêtre doit recevoir les frappes au
clavier et comment indiquer visuellement la fenêtre actuellement active.
Une des politiques de focus est appelée "click-to-focus" ("cliquer pour obtenir le focus"). Dans ce
mode, une fenêtre devient active quand elle reçoit un clic de la souris. Dans le mode "focus-
follows-mouse" ("le focus suit la souris"), la fenêtre qui est sous le pointeur de la souris est la
fenêtre qui a le focus et le focus est modifié en pointant sur une autre fenêtre. Si la souris est sur
la fenêtre racine (ou fond d’écran), alors cette fenêtre a le focus. Dans le mode "sloppy-focus"
("focus relâché"), si la souris est déplacée sur la fenêtre racine, la dernière fenêtre à avoir eu le
focus le conserve. Avec le mode focus relâché, le focus n’est modifié que si le pointeur passe sur
une nouvelle fenêtre, et non pas quand il quitte la fenêtre actuelle. Dans la politique "click-to-
focus", la fenêtre active est sélectionnée par un clic de la souris. La fenêtre peut être remontée
au premier plan au-dessus des autres fenêtres. Toutes les frappes au clavier seront désormais
dirigées vers cette fenêtre, même si le curseur est déplacé vers une autre fenêtre.
155
Les différents gestionnaires de fenêtres supportent différents modes pour le focus. Tous
supportent le clic pour obtenir le focus, et une grande majorité supporte également d’autres
politiques. Consultez la documentation du gestionnaire de fenêtres pour déterminer quels
modes sont disponibles.
Le paquet pré-compilé peut être installé rapidement mais avec moins d’options de
personnalisation:
# cd /usr/ports/x11/xorg
# make install clean
Chacune de ces deux méthodes d’installation installera une version complète d’Xorg. La version en
paquets pré-compilés reste la meilleure option pour la plupart des utilisateurs.
Une plus petite version du système X adaptée aux utilisateurs expérimentés est disponible dans le
paquet x11/xorg-minimal. La plupart des documentations, des bibliothèques, et des applications ne
sera pas installée. Certaines applications ont besoin de ces composants additionnels pour
fonctionner.
Xorg supporte les cartes graphiques, les claviers et les périphériques de pointage les plus courants.
156
-configure en dehors d’un échec de la configuration automatique.
1. Si Xorg a déjà été utilisé sur cet ordinateur avant, déplacez ou supprimez les fichiers existants:
# mv /etc/X11/[Link] ~/[Link]
# mv /usr/local/etc/X11/[Link] ~/[Link]
2. Ajouter au groupe video ou wheel l’utilisateur qui exécutera Xorg pour activer l’accélération 3D
quand elle est disponible. Pour ajouter l’utilisateur jru aux groupes disponibles:
3. Le gestionnaire de fenêtres twm est inclu par défaut. Il est lancé quand Xorg démarre:
% startx
4. Sur certaines anciennes versions de FreeBSD, la console système doit être configurée en vt(4)
avant que le retour à la console texte puisse correctement fonctionner. Consultez Kernel Mode
Setting (KMS).
L’accès à /dev/dri est nécessaire pour autoriser l’accélération 3D sur les cartes graphiques. Il est en
général plus simple d’ajouter l’utilisateur qui exécutera X soit au groupe video soit au groupe wheel.
Ici, pw(8) est utilisé pour ajouter l’utilisateur slurms au groupe video, ou au groupe wheel s’il n’y a
pas de groupe video:
Quand l’ordinateur bascule de l’affichage sur la console vers une définition d’écran plus haute pour
X, il doit fixer le mode de sortie graphique. Les versions récentes de Xorg utilisent un système
présent dans le noyau pour effectuer ces changements de manière la plus efficace. Les anciennes
versions de FreeBSD utilisent sc(4) qui n’a pas connaissance du système KMS. La conséquence est
qu’après avoir fermé X, l’affichage de la console système sera vide même si elle reste fonctionnelle.
La nouvelle console vt(4) évite ce problème.
[Link]=vt
157
5.4.4. Fichiers de configuration
Une configuration manuelle n’est généralement pas nécessaire. Ne créez pas de fichiers de
configuration à la main à moins que la configuration automatique ne fonctionne pas.
[Link]. Répertoire
Xorg recherche ses fichiers de configuration dans plusieurs répertoires. /usr/local/etc/X11/ est le
répertoire recommandé pour ces fichiers sous FreeBSD. L’utilisation de ce répertoire permet de
conserver une séparation entre les fichiers des applications et ceux du système d’exploitation.
Stocker les fichiers de configuration dans le répertoire /etc/X11/ originel fonctionne toujours.
Cependant, cela a pour conséquence de mélanger des fichiers concernant des applications avec
ceux du système de base FreeBSD et n’est pas recommandé.
Il est plus simple d’utiliser plusieurs fichiers qui chacun individuellement s’occupe de la
configuration d’un paramètre précis plutôt qu’un seul fichier [Link] traditionnel. Ces fichiers
sont stockés dans le sous-répertoire [Link].d/ du répertoire principal de configuration. Son
chemin d’accès complet est en général /usr/local/etc/X11/[Link].d/.
Des exemples de ces fichiers sont présentés plus bas dans cette section.
Le fichier unique traditionnel [Link] fonctionne toujours mais n’est ni clair ni aussi flexible que
plusieurs fichiers dans le sous-répertoire [Link].d/.
En raison de changements effectués dans les versions récentes de FreeBSD, il est désormais possible
d’utiliser les pilotes de périphériques graphiques proposés dans le catalogue des logiciels portés ou
sous forme pré-compilé. Par conséquent, les utilisateurs peuvent utiliser un des pilotes disponibles
à partir du logiciel graphics/drm-kmod.
L’accélération 2D et 3D sont supportées par la plupart des anciennes cartes graphiques Radeon
KMS driver en provenance d’AMD.
L’accélération 2D et 3D sont supportées par la plupart des nouvelles cartes graphiques AMD KMS
driver en provenance d’AMD.
158
List_of_Intel_graphics_processing_units ou
[Link] pour une liste des GPUs
supportés.
Intel®
L’accélération 3D est supportée sur la plupart des cartes graphiques Intel® jusqu’au Ivy Bridge
(HD Graphics 2500, 4000, et P4000), y compris Iron Lake (HD Graphics) et Sandy Bridge (HD
Graphics 2000).
AMD® Radeon
L’accélération 2D et 3D sont supportées par les cartes Radeon jusqu’à la série HD6000 comprise.
NVIDIA
Plusieurs pilotes NVIDIA sont disponibles dans la catégorie x11 du catalogue des logiciels portés.
Installez le pilote correspondant à la carte graphique.
L’implémentation de ces systèmes graphiques hybrides varie, et Xorg sous FreeBSD n’est pas en
mesure de faire fonctionner toutes les versions.
Certains ordinateurs fournissent une option du BIOS pour désactiver une de ces cartes
graphiques ou pour sélectionner un mode discret qui peut être utilisé avec un des pilotes
graphiques standard. Par exemple, il est parfois possible de désactiver le GPU NVIDIA dans un
système Optimus. La partie graphique Intel® peut alors être utilisée avec un pilote Intel®.
Les paramètres du BIOS dépendent du modèle d’ordinateur. Dans certaines situations, les deux
GPU peuvent être laissés actifs, mais la création d’un fichier de configuration utilisant seulement
le GPU principal dans la partie Device est suffisant pour qu’un tel système fonctionne.
159
Les cartes qui ne sont pas supportées par un pilote précis pourront toujours être utilisables avec
le pilote x11-drivers/xf86-video-vesa. Ce pilote est installé par x11/xorg. Il peut également être
installé manuellement en tant que x11-drivers/xf86-video-vesa. Xorg tente d’utiliser ce pilote
quand un pilote spécifique à la carte graphique n’est pas trouvé.
/usr/local/etc/X11/[Link].d/[Link]
Section "Device"
Identifier "Card0"
Driver "intel"
# BusID "PCI:1:0:0"
EndSection
Si plus d’une carte graphique est présente, l’identifiant BusID peut être décommenté et
paramétré pour sélectionné la carte désirée. Une liste des IDs des cartes graphiques peut
être obtenu avec pciconf -lv | grep -B3 display.
/usr/local/etc/X11/[Link].d/[Link]
Section "Device"
Identifier "Card0"
Driver "radeon"
EndSection
/usr/local/etc/X11/[Link].d/[Link]
Section "Device"
Identifier "Card0"
Driver "vesa"
160
EndSection
Pour configurer le pilote scfb pour une utilisation avec un ordinateur UEFI ou ARM®:
/usr/local/etc/X11/[Link].d/[Link]
Section "Device"
Identifier "Card0"
Driver "scfb"
EndSection
5.4.6. Moniteurs
Presque tous les moniteurs supportent la norme Extended Display Identification Data (EDID). Xorg
utilise EDID pour communiquer avec le moniteur et détecter les définitions et les taux de
rafraichissement supportés. Ensuite, il sélectionne la combinaison de paramètres la plus adaptée
pour le moniteur.
Les autres définitions supportées par le moniteur peuvent être sélectionnées en indiquant celle
désirée dans les fichiers de configuration, ou à l’aide de xrandr(1) après avoir lancé le serveur X.
Utilisation de xrandr(1)
Exécutez xrandr(1) sans aucun paramètre pour voir la liste des sorties vidéos et des modes
détectés du moniteur:
% xrandr
Screen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192
DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis)
495mm x 310mm
1920x1200 59.95*+
1600x1200 60.00
1280x1024 85.02 75.02 60.02
1280x960 60.00
1152x864 75.00
1024x768 85.00 75.08 70.07 60.00
832x624 74.55
800x600 75.00 60.32
640x480 75.00 60.00
720x400 70.08
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
Ceci montre que la sortie DVI-0 est utilisée actuellement pour afficher une définition d’écran de
1920x1200 pixels à une fréquence de rafraichissement d’environ 60 Hz. Il n’y a pas de moniteur
161
branché aux connecteurs DisplayPort-0 et HDMI-0.
N’importe quel autre mode d’affichage peut être choisi avec xrandr(1). Par exemple, pour
basculer sur 1280x1024 à 60 Hz:
Une opération courante est d’utiliser une sortie vidéo externe sur un ordinateur portable pour
un vidéo-projecteur.
Le type et le nombre de connecteurs de sortie varient en fonction des systèmes, et le nom donné
à chaque sortie varie d’un pilote graphique à l’autre. Ce qu’un pilote appelle HDMI-1, un autre
l’appellera HDMI1. Aussi la première chose à faire est de lancer xrandr(1) pour lister toutes les
sorties disponibles.
% xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x
193mm
1366x768 60.04*+
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
VGA1 connected (normal left inverted right x axis y axis)
1280x1024 60.02 + 75.02
1280x960 60.00
1152x864 75.00
1024x768 75.08 70.07 60.00
832x624 74.55
800x600 72.19 75.00 60.32 56.25
640x480 75.00 72.81 66.67 60.00
720x400 70.08
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
Quatre sorties ont été trouvées: l’écran intégré LVDS1, et les connecteurs externes VGA1, HDMI1, et
DP1.
Le projecteur a été connecté à la sortie VGA1. xrandr(1) est maintenant utilisé pour régler cette
sortie sur la définition native de ce vidéo-projecteur et pour ajouter l’espace d’affichage
supplémentaire à droite du bureau:
162
une définition de 1024x768 qui est réglée avec --mode 1024x768.
xrandr(1) est souvent exécuté à partir de .xinitrc pour régler le mode adapté quand X est lancé.
/usr/local/etc/X11/[Link].d/[Link]
Section "Screen"
Identifier "Screen0"
Device "Card0"
SubSection "Display"
Modes "1024x768"
EndSubSection
EndSection
Les quelques moniteurs ne supportant pas l’EDID peuvent être configurés en paramétrant
HorizSync et VertRefresh avec les plages de fréquences supportées par le moniteur.
/usr/local/etc/X11/[Link].d/[Link]
Section "Monitor"
Identifier "Monitor0"
HorizSync 30-83 # kHz
VertRefresh 50-76 # Hz
EndSection
[Link]. Claviers
Une disposition des touches américaine est celle utilisée par défaut. Pour sélectionner une
disposition différente, configurez les options XkbLayout et XkbVariant dans une section
InputClass. Cette configuration sera appliquée à tous les périphériques d’entrée qui
correspondent à cette classe.
163
Cet exemple sélectionne une disposition de touches française.
/usr/local/etc/X11/[Link].d/[Link]
Section "InputClass"
Identifier "KeyboardDefaults"
MatchIsKeyboard "on"
Option "XkbLayout" "fr"
EndSection
/usr/local/etc/X11/[Link].d/[Link]
Section "InputClass"
Identifier "All Keyboards"
MatchIsKeyboard "yes"
Option "XkbLayout" "us, es, ua"
EndSection
/usr/local/etc/X11/[Link].d/[Link]
Section "InputClass"
Identifier "KeyboardDefaults"
MatchIsKeyboard "on"
Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
164
[Link]. Souris et périphériques de pointage
Si vous utilisez xorg-server 1.20.8 ou les versions suivantes sous FreeBSD 12.1 et
que vous n’utilisez pas moused(8), ajoutez la ligne [Link].rcpt_mask=12 au
fichier /etc/[Link].
Plusieurs paramètres de la souris peuvent être réglés avec les options de configuration. Consultez la
page de manuel mousedrv(4) pour une liste complète.
Butons de la souris
Le nombre de boutons d’une souris peut être configuré dans la section InputDevice du fichier
[Link]. Pour fixer le nombre de boutons à 7:
/usr/local/etc/X11/[Link].d/[Link]
Section "InputDevice"
Identifier "Mouse0"
Option "Buttons" "7"
EndSection
Dans certains cas, la configuration automatique d’Xorg ne fonctionne pas avec un matériel
spécifique, ou une configuration différente est recherchée. Pour ces cas, un fichier de configuration
personnalisé peut être créé.
Un fichier de configuration basé sur le matériel détecté peut être généré par Xorg. Ce fichier est un
point de départ utile pour une configuration personnalisée.
# Xorg -configure
165
Une fois que la nouvelle configuration a été ajustée et testée, elle peut être divisée en plus petits
fichiers dans les emplacements habituels, /usr/local/etc/X11/[Link].d/.
Les polices de caractères livrées par défaut avec Xorg sont loin d’être idéales pour des applications
de type publication. Les grandes polices utilisées pour les présentations présentent un aspect en
escalier et peu professionnel, et les petites polices sont presque complètement illisibles. Cependant,
il existe de nombreuses polices Type1 (PostScript®) gratuites, de hautes qualités qui peuvent être
aisément utilisées avec Xorg.. Par exemple, la collection de polices de caractères URW (x11-
fonts/urwfonts) comprend une version haute qualité des polices de caractères standards type1
(Times Roman™, Helvetica™, Palatino™ et autres). La collection Freefonts (x11-fonts/freefonts)
comprend beaucoup plus de polices de caractères, mais la plupart d’entre elles sont destinées à être
utilisées avec des logiciels graphiques comme Gimp, et ne sont pas suffisamment complètes pour
servir de polices de caractères d’affichage. De plus Xorg peut être configuré pour utiliser les polices
de caractères TrueType® avec un minimum d’effort. Pour plus de détails à ce sujet, consultez la
page de manuel X(7) ou la section Polices de caractères TrueType®.
Pour installer les collections de polices de caractères Type1 précédentes à partir des paquets
binaires, lancez les commandes suivantes:
Pour les compiler à partir du catalogue des logiciels portés, lancez les commandes suivantes:
# cd /usr/ports/x11-fonts/urwfonts
# make install clean
Et de même pour la collection Freefont ou d’autres. Pour que le serveur X détecte ces polices,
ajoutez une ligne appropriée au fichier de configuration du serveur X (/etc/X11/[Link]), du type:
FontPath "/usr/local/share/fonts/URW/"
Cela fonctionnera mais la configuration sera perdue quand la session X sera fermée, à moins de
l’ajouter dans le fichier de démarrage (~/.xinitrc pour une session startx classique, ou dans
~/.xsession quand on s’attache au système par l’intermédiaire d’un gestionnaire de session
graphique comme XDM). Une troisième méthode est d’utiliser le nouveau fichier
166
/usr/local/etc/fonts/[Link]: comme montré dans la section Polices de caractères anticrénelage.
Xorg dispose d’un support intégré pour le rendu des polices TrueType®. Il y a deux différents
modules qui peuvent activer cette fonctionnalité. Le module freetype est utilisé dans cet exemple
parce qu’il est plus compatible avec les autres moteurs de rendu des polices de caractères. Pour
activer le module freetype ajoutez juste la ligne suivante dans la section "Module" du fichier
/etc/X11/[Link].
Load "freetype"
# cd /usr/local/share/fonts/TrueType
# mkfontscale
Maintenant ajoutez le répertoire des polices TrueType® au chemin des polices de caractères. Cela
est identique à ce qui est décrit dans la section Polices de caractères Type1:
Désormais Gimp, LibreOffice, et toutes les autres applications X devraient maintenant reconnaître
les polices de caractères TrueType® installées. Les polices très petites (comme le texte de page web
visualisé sur un écran haute résolution) et les très grandes polices (dans LibreOffice) auront un
rendu bien meilleur maintenant.
Toutes les polices de caractères sous Xorg se trouvant dans les répertoires /usr/local/share/fonts/ et
~/.fonts/ sont automatiquement disponibles pour l’anticrénelage avec les applications compatibles
Xft. La plupart des application sont compatibles Xft, comme KDE, GNOME, et Firefox.
167
Afin de contrôler quelles polices de caractères sont anticrénelées, ou pour configurer les propriétés
de l’anticrénelage, créez (ou éditez, s’il existe déjà) le fichier /usr/local/etc/fonts/[Link]. Plusieurs
caractéristiques avancées du système de fontes Xft peuvent être ajustées par l’intermédiaire de ce
fichier; cette section ne décrit que des possibilités simples. Pour plus de détails, consultez la page de
manuel fonts-conf(5).
Ce fichier doit être dans le format XML. Faites attention à la casse des caractères, et assurez-vous
que toutes les balises sont correctement fermées. Le fichier débute avec l’entête XML classique
suivie par une définition DOCTYPE, puis de la balise fontconfig:
?xml version="1.0"?
!DOCTYPE fontconfig SYSTEM "[Link]"
fontconfig
dir/chemin/vers/mes/fontes/dir
Après l’ajout de nouvelles polices, et tout particulièrement de nouveaux répertoires de polices, vous
devrez exécuter la commande suivante pour reconstituer le cache des polices de caractères:
# fc-cache -f
L’anticrénelage rend les bords légèrement flous, ce qui rend le texte très petit plus lisible et enlève
l’effet "d’escalier" des grands textes, mais peut provoquer une fatigue visuelle si c’est appliqué au
texte de taille normale. Pour exclure les tailles de polices inférieures à 14 points de l’anticrénelage,
ajoutez ces lignes:
match target="font"
test name="size" compare="less"
double14/double
/test
edit name="antialias" mode="assign"
boolfalse/bool
/edit
/match
match target="font"
test name="pixelsize" compare="less" qual="any"
double14/double
/test
edit mode="assign" name="antialias"
boolfalse/bool
/edit
168
/match
L’espacement pour certaines polices de caractères à chasse fixe peut également être inapproprié
avec l’anticrénelage. Cela semble être un problème avec KDE, en particulier. Une solution possible
pour cela est de forcer l’espacement pour de telles polices de caractères à 100. Ajoutez les lignes
suivantes:
(ceci ajoute un alias "mono" pour les autres noms communs des polices de caractères fixes), puis
ajoutez:
Certaines polices de caractères, comme Helvetica, peuvent présenter des problèmes lors de
l’anticrénelage. Généralement cela se manifeste par l’impression que la fonte semble coupée en
deux verticalement. Au pire cela peut provoquer des crashs avec certaines applications. Pour éviter
cela, pensez à ajouter ce qui suit au fichier [Link]:
169
/edit
/match
Une fois l’édition de [Link] achevée, assurez-vous que le fichier se termine par la balise
/fontconfig. Si ce n’est pas le cas, tous vos changements seront ignorés.
Les utilisateurs peuvent ajouter leurs propres paramètres par l’intermédiaire de leur propre fichier
~/.config/fontconfig/[Link]. Ce fichier doit utiliser le même format XML décrit précédemment.
Un dernier point: avec un écran LCD, un échantillonnage "sub-pixel" peut être désiré.
Fondamentalement, ceci traite les composantes rouge, verte et bleu séparément (horizontalement
séparées) pour améliorer la résolution horizontale; les résultats peuvent être dramatiques. Pour
activer cela, ajoutez quelque part dans le fichier [Link] les lignes:
match target="font"
test qual="all" name="rgba"
constunknown/const
/test
edit name="rgba" mode="assign"
constrgb/const
/edit
/match
En fonction de type d’écran, le terme rgb pourra devoir être changé pour bgr, vrgb
ou vbgr: expérimentez pour déterminer lequel fonctionne le mieux.
Cette section montre comment configurer le gestionnaire de connexion graphique X sous FreeBSD.
Certains environnements de bureau fournissent leur propre gestionnaire de connexion graphique.
Se référer à la GNOME pour des instructions sur comment configurer le gestionnaire de connexion
graphique GNOME et à la KDE pour des instructions concernant la configuration du gestionnaire de
connexion graphique KDE.
Pour installer XDM, utilisez le logiciel porté ou la version pré-compilée x11/xdm. Une fois installé,
XDM peut être configuré pour être lancé au démarrage de la machine en modifiant la ligne
suivante dans /etc/ttys:
170
Modifiez le off pour on et sauvegardez la modification. Le champ ttyv8 sur cette ligne indique que
XDM démarrera sur le neuvième terminal virtuel.
Fichier Description
171
Fichier Description
Par défaut, seuls les utilisateurs sur le même système peuvent ouvrir une session en utilisant XDM.
Pour permettre aux utilisateurs d’autres système de se connecter au gestionnaire d’affichage, éditez
les règles de contrôle d’accès et activez l’écoute des demandes de connexion.
Pour configurer XDM pour l’écoute des demandes de connexions distantes, commentez la ligne
[Link] dans le fichier /usr/local/etc/X11/xdm/xdm-config en ajoutant un !
devant:
Sauvegardez et relancez XDM. Pour restreindre l’accès à distance, consultez les exemples dans
/usr/local/etc/X11/xdm/Xaccess ainsi que la page de manuel xdm(1) pour plus d’informations
5.7.1. GNOME
GNOME est un environnement de bureau convivial. Il comprend un panneau ("panel") pour lancer
des applications et afficher des états, un bureau, un ensemble d’outils et d’applications, et un
ensemble de conventions qui rendent aisée la coopération et la cohérence entre applications. Plus
d’informations concernant GNOME sous FreeBSD peuvent être trouvées sur
[Link] Le site contient de la documentation supplémentaire sur
l’installation, la configuration, et l’administration de GNOME sous FreeBSD.
Cet environnement de bureau peut être installé à partir d’un paquet pré-compilé:
172
Pour plutôt compiler GNOME à partir du catalogue des logiciels portés, utilisez la commande qui
suit. GNOME est une application importante en taille et qui demandera un temps notable pour être
compilée, et cela, même sur un ordinateur rapide.
# cd /usr/ports/x11/gnome3
# make install clean
GNOME a besoin que /proc soit monté. Ajoutez la ligne suivante au fichier /etc/fstab pour monter ce
système de fichiers automatiquement au démarrage:
GNOME utilise D-Bus et HAL comme bus des messages et couche d’abstraction matérielle. Ces
applications sont automatiquement installées comme dépendances à GNOME. Activez-les dans
/etc/[Link] pour qu’elles soient lancées au démarrage du système:
dbus_enable="YES"
hald_enable="YES"
Après l’installation, il faut configurer Xorg pour lancer GNOME. La manière la plus simple de faire
cela est d’activer le gestionnaire d’affichage de GNOME, GDM, qui est installé par défaut comme
élément du paquet pré-compilé ou du logiciel porté GNOME. Il peut être activé en ajoutant la ligne
suivante au fichier /etc/[Link]:
gdm_enable="YES"
Il est souvent intéressant de lancer également tous les services GNOME. Pour accomplir cela,
ajoutez une seconde ligne à /etc/[Link]:
gnome_enable="YES"
Une deuxième méthode de lancement de GNOME est de taper startx à partir de la ligne de
commande après avoir configuré le fichier ~/.xinitrc. Si ce fichier existe déjà, remplacez la ligne qui
lance le gestionnaire de fenêtres actuel par une qui exécute /usr/local/bin/gnome-session. Si ce
fichier n’existe pas, créez-le avec la commande:
Une troisième méthode est d’utiliser XDM comme gestionnaire d’affichage. Dans ce cas, créez un
exécutable ~/.xsession:
173
% echo "exec /usr/local/bin/gnome-session" > ~/.xsession
5.7.2. KDE
KDE est un autre environnement de bureau simple d’utilisation. Ce bureau propose une suite
d’applications avec une apparence et une prise en main commune, des menus et des barres d’outils,
des raccourcis clavier, des couleurs et une régionalisation standardisés, ainsi qu’un système de
configuration de l’environnement centralisé. Plus d’informations sur KDE peuvent être trouvées
sur [Link] Pour des informations spécifiques à FreeBSD, consultez
[Link]
Pour plutôt compiler KDE à partir du catalogue des logiciels portés, utilisez la commande qui suit.
L’installation du logiciel porté proposera un menu pour sélectionner quel composant à installer.
KDE est une application importante en taille et qui demandera un temps notable pour être
compilée, et cela, même sur un ordinateur rapide.
# cd /usr/ports/x11/kde5
# make install clean
KDE a besoin que /proc soit monté. Ajoutez la ligne suivante au fichier /etc/fstab pour monter ce
système de fichiers automatiquement au démarrage:
KDE utilise D-Bus et HAL comme bus des messages et couche d’abstraction matérielle. Ces
applications sont automatiquement installées comme dépendances à KDE. Activez-les dans
/etc/[Link] pour qu’elles soient lancées au démarrage du système:
dbus_enable="YES"
hald_enable="YES"
Depuis KDE Plasma 5, le gestionnaire d’affichage KDE, KDM, n’est plus développé. Un
remplacement possible est SDDM. Pour l’installer, tapez:
174
sddm_enable="YES"
Une deuxième méthode de lancement de KDE Plasma est de taper startx à partir de la ligne de
commande. Pour que cela fonctionne, la ligne suivante est requise dans ~/.xinitrc:
Une troisième méthode de lancement de KDE Plasma utilise XDM. Dans ce cas, créez un exécutable
~/.xsession comme indiqué:
Une fois KDE Plasma lancée, consultez son système d’aide intégrée pour plus d’informations sur
comment utiliser ses différents menus et applications.
5.7.3. XFce
XFce est un environnement de bureau basé sur le "toolkit" GTK+ utilisé par GNOME. Cependant, il
est plus léger et offre un bureau simple, efficace et simple d’utilisation. Il est complètement
configurable, dispose d’une barre principale avec des menus, des petites applications et des
lanceurs d’applications, il fournit un gestionnaire de fichiers et un gestionnaire du son, et il est
personnalisable avec des thèmes. Puisqu’il est rapide, léger et efficace, il est idéal pour les machines
anciennes ou lentes avec des limitations en mémoire. Plus d’informations sur XFce peuvent être
trouvées sur le site [Link]
# cd /usr/ports/x11-wm/xfce4
# make install clean
Xfce utilise D-Bus comme bus des messages. Cette application est automatiquement installée
comme dépendance à Xfce. Activez-la dans /etc/[Link] pour qu’elle soit lancée au démarrage du
système:
dbus_enable="YES"
Contrairement à GNOME ou KDE, Xfce ne fournit pas son propre gestionnaire de session. Afin de
lancer Xfce à partir de la ligne de commande en tapant startx, créez d’abord le fichier ~/.xinitrc à
l’aide de la ligne:
175
% echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc
Une méthode alternative est d’utiliser XDM. Pour configurer cette méthode, créez un exécutable
~/.xsession:
L’installation du paquet binaire Compiz Fusion est simple, mais sa configuration demande quelques
étapes qui ne sont pas décrites dans la documentation du logiciel porté.
Les effets visuels dans l’environnement de bureau peuvent être à l’origine d’une charge non-
négligeable pour la carte graphique. Pour les cartes graphiques nVidia, le pilote de périphérique
propriétaire est nécessaire pour obtenir de bonnes performances. Les utilisateurs d’autres cartes
graphiques peuvent sauter cette section et poursuivre avec la partie sur la configuration
d'[Link].
Pour déterminer quel pilote nVidia est requis, consultez la FAQ à ce sujet.
Après avoir déterminé le pilote correct à utiliser pour votre carte, l’installation est aussi simple que
d’installer n’importe quel autre paquet binaire.
Le pilote créera un module noyau, qui doit être chargé au démarrage du système. Ajoutez la ligne
suivante au fichier /boot/[Link]:
nvidia_load="YES"
Avec le module noyau chargé, seul la modification d’une ligne dans [Link] est nécessaire pour
activer le pilote propriétaire:
176
Trouvez la ligne suivante dans /etc/X11/[Link]:
Driver "nv"
et modifiez-la pour:
Driver "nvidia"
Lancez l’interface graphique comme vous en avez l’habitude, et vous devriez être accueilli par le
logo nVidia. Tout devrait fonctionner comme à l’accoutumée.
Section "Extensions"
Option "Composite" "Enable"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
...
DefaultDepth 24
Option "AddARGBGLXVisuals" "True"
Recherchez la partie "Subsection" faisant référence à la définition de l’écran que vous voulez
utiliser. Par exemple, si vous voulez utiliser une définition de 1280x1024, recherchez la partie
comme ci-dessous. Si la définition voulue n’apparaît nulle part, vous devrez ajouter l’entrée
correspondante à la main:
SubSection "Display"
Viewport 0 0
Modes "1280x1024"
EndSubSection
177
Une profondeur de couleurs de 24 bits est requise pour un bureau utilisant la composition,
modifiez la section précédente pour:
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x1024"
EndSubSection
Et enfin, vérifiez que les modules "glx" et "extmod" sont chargés dans la section "Module":
Section "Module"
Load "extmod"
Load "glx"
...
Ce qui précède peut être effectué automatiquement avec x11/nvidia-xconfig en exécutant (en tant
que root):
# nvidia-xconfig --add-argb-glx-visuals
# nvidia-xconfig --composite
# nvidia-xconfig --depth=24
L’installation de Compiz Fusion est aussi simple que celle de n’importe quel paquet binaire:
Quand l’installation est achevée, lancez votre environnement de bureau et, à un terminal, entrez
les commandes suivantes (sous l’utilisateur normal):
Votre écran devrait clignoter quelques secondes, étant donné que votre gestionnaire de fenêtres
(par exemple Metacity si vous utilisez GNOME) est remplacé par Compiz Fusion. Emerald
s’occupera de la décoration des fenêtres (c’est à dire, les boutons de fermeture, de réduction,
d’agrandissement, les barres de titres etc.).
Vous avez la possibilité de convertir tout cela en une procédure à exécuter automatiquement au
démarrage (par exemple en l’ajoutant à "Sessions" dans le cas d’un bureau GNOME):
#! /bin/sh
178
compiz --replace --sm-disable --ignore-desktop-hints ccp
emerald --replace
Sauvegardez ce fichier dans votre répertoire personnel sous le nom, par exemple, start-compiz et
rendez-le exécutable:
% chmod +x ~/start-compiz
Utilisez ensuite l’interface graphique pour l’ajouter au menu Startup Programs (situé dans System,
Preferences, Sessions dans le cas d’un environnement de bureau GNOME).
Pour sélectionner tous les effets visuels désirés et leurs paramètres, exécutez (toujours en tant
qu’utilisateur normal) le programme Compiz Config Settings Manager:
% ccsm
Sous GNOME, il peut être trouvé dans le menu System, puis Preferences.
Si vous avez sélectionné "gconf support" lors de la compilation, vous pourrez également voir ces
paramètres en utilisant gconf-editor sous apps/compiz.
[Link]. J’ai installé Compiz Fusion, et après avoir lancé les commandes que vous
mentionnez, mes fenêtres n’ont plus de barre de titre et de boutons. Qu’est-ce qui ne va pas?
Il vous manque probablement une configuration dans /etc/X11/[Link]. Relisez avec attention ce
fichier et contrôlez tout particulièrement les directives DefaultDepth et AddARGBGLXVisuals.
Si vous contrôlez le contenu du fichier /var/log/[Link], vous trouverez surement des messages
d’erreur lors du démarrage de X. Les plus courants seront:
(EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
(EE) NVIDIA(0): log file that the GLX module has been loaded in your X
(EE) NVIDIA(0): server, and that the module is the NVIDIA GLX module. If
(EE) NVIDIA(0): you continue to encounter problems, Please try
(EE) NVIDIA(0): reinstalling the NVIDIA driver.
C’est généralement le cas quand vous mettez à jour Xorg. Vous devrez réinstaller le paquet
x11/nvidia-driver afin que le module glx soit compilé à nouveau.
179
Partie II: Tâches courantes
Maintenant que les bases sont maîtrisées, cette partie du Manuel va traiter de certaines
fonctionnalités de FreeBSD fréquemment utilisées. Ces chapitres:
• Présentent des applications de bureautique populaires et utiles: des navigateurs, des outils de
productivité, des lecteurs de documents, etc.
Certains de ces chapitres conseillent des lectures préalables, ceci est noté dans le synopsis au début
de chaque chapitre.
180
Chapitre 6. Bureautique
6.1. Synopsis
FreeBSD peut faire fonctionner une large variété d’applications de bureautique, comme des
navigateurs et des traitements de textes. La plupart de ces derniers sont disponibles sous forme
pré-compilée ou peuvent être compilé automatiquement à partir du catalogue des logiciels portés.
De nombreux utilisateurs s’attendent à trouver ces types d’applications dans leur environnement
de travail. Ce chapitre vous montrera comment installer quelques unes des applications de
bureautique les plus populaires sans trop d’effort, soit à partir de versions pré-compilées soit à
partir du catalogue des logiciels portés.
Notez que lorsque l’on installe des programmes à partir du catalogue des logiciels portés, ils sont
compilés à partir des sources. Cela peut prendre un temps relativement long, en fonction de ce que
vous compilez et de la puissance de votre machine. Si la compilation à partir des sources requiert
un temps prohibitif, vous pouvez installer la plupart des programmes de l’arbre des ports à partir
de version pré-compilées.
Comme FreeBSD dispose d’un système de compatibilité avec les binaires Linux, de nombreuses
applications développées à l’origine pour Linux sont disponibles pour votre environnement de
travail. Il est vivement recommandé que vous lisiez le Compatibilité binaire avec Linux® avant
d’installer des applications Linux. De nombreux logiciels portés utilisant la compatibilité binaire
Linux débutent avec le terme "linux-". Souvenez-vous de cela quand vous recherchez un logiciel
porté bien particulier, par exemple à l’aide de whereis(1). Dans le reste de ce chapitre on suppose
que vous avez activé la compatibilité Linux avant d’installer des applications Linux.
• Savoir comment installer des logiciels tiers (Installer des applications. les logiciels pré-compilés
et les logiciels portés).
• Savoir comment installer des logiciels pour Linux (Compatibilité binaire avec Linux®).
Pour des informations sur comment mettre en place un environnement multimédia, lisez le
Multimédia. Si vous désirez configurer et utiliser le courrier électronique, veuillez vous référer au
Courrier électronique.
6.2. Navigateurs
FreeBSD n’est pas livré avec un navigateur particulier installé. Au lieu de cela, le répertoire www
181
du catalogue des logiciels portés contient de nombreux navigateurs prêts à être installés. Si vous
n’avez pas le temps de tout compiler (cela peut prendre un temps relativement long dans certains
cas) nombres d’entre eux sont disponibles sous forme pré-compilée.
KDE et GNOME fournissent déjà un navigateur HTML. Veuillez vous référer au Environnements de
bureau pour plus d’information sur comment configurer ces environnements de travail.
Si vous êtes à la recherche de navigateurs légers, vous devriez consulter le catalogue des logiciels
portés pour www/dillo, www/links, ou www/w3m.
6.2.1. Mozilla
Mozilla est un navigateur moderne et stable, dont le portage FreeBSD est complet: il présente un
moteur d’affichage HTML qui respecte vraiment les normes; il intègre un lecteur de courrier
électronique et de forums de discussion. Il possède même un éditeur HTML si vous projetez d’écrire
vous-même quelques pages Web. Les utilisateurs de getenv(3) trouveront des similitudes avec la
suite Communicator, étant donné que les deux navigateurs partagent certains développements
passés.
Sur les machines lentes, avec une vitesse de processeur de moins de 233MHz ou avec moins de
64MO de RAM, Mozilla peut être trop consommateur en ressources pour être vraiment utilisable.
Vous pourrez vouloir essayer à la place le navigateur Opera décrit plus tard dans ce chapitre.
Si vous ne pouvez ou ne voulez compiler Mozilla, pour une quelconque raison, l’équipe GNOME de
FreeBSD l’a déjà fait pour vous. Installez juste la version pré-compilée à partir du réseau avec:
# pkg_add -r mozilla
Si la version pré-compilée n’est pas disponible, et que vous avez suffisamment de temps et d’espace
disque, vous pouvez obtenir les sources pour Mozilla, le compiler et l’installer sur votre système.
Cela s’effectue en faisant:
182
# cd /usr/ports/www/mozilla
# make install clean
Une fois que vous avez achevé l’installation de Mozilla, vous n’avez plus besoin d’être sous root.
Vous pouvez lancer Mozilla en tant que navigateur en tapant:
% mozilla
Vous pouvez lancer directement les lecteurs de courrier électronique et de forums comme montré
ci-dessous:
% mozilla -mail
6.2.2. Firefox
Firefox est la génération suivante de navigateurs basés sur le code de Mozilla. Mozilla est une suite
complète d’applications, comme un navigateur, un client de messagerie, un client de discussion et
bien plus. Firefox est juste un navigateur, ce qui le rend plus petit et plus rapide.
# pkg_add -r firefox
Vous pouvez également utiliser le catalogue des logiciels portés si vous désirez effectuer la
compilation à partir des sources:
# cd /usr/ports/www/firefox
# make install clean
Dans cette section et la suivante, nous supposerons que vous avez déjà installé
Firefox ou Mozilla.
La fondation FreeBSD a acquis auprès de Sun Microsystems une licence de distribution des binaires
FreeBSD pour le Java Runtime Environment (JRE™) et le Java Development Kit (JDK™). Les
paquetages binaires pour FreeBSD sont disponibles sur le site de la fondation FreeBSD.
183
Pour ajouter le support Java™ à Firefox ou Mozilla, vous devez installer tout d’abord le logiciel
porté java/javavmwrapper. Ensuite, téléchargez le paquetage Diablo JRE™ à l’adresse
[Link] et installez-le à l’aide de pkg_add(1).
Lancez votre navigateur et tapez about:plugins dans la barre d’adresse et appuyez sur Entrée . Une
page listant les greffons installés s’affichera; le greffon Java™ devrait désormais apparaître dans la
liste. Si ce n’est pas le cas, en tant que root, exécutez la commande suivante:
# ln -s /usr/local/diablo-jre1.5.0/plugin/i386/ns7/libjavaplugin_oji.so \
/usr/local/lib/browser_plugins/
Le greffon Macromedia® Flash™ n’est pas disponible pour FreeBSD. Cependant il existe une couche
logicielle ("wrapper") pour utiliser la version Linux du greffon. Ce "wrapper" supporte également
les greffons Adobe® Acrobat®, RealPlayer® et plus.
L’étape suivante est l’installation du logiciel porté www/linux-flashplugin7. Une fois le logiciel
installé, le greffon doit être installé par chaque utilisateur à l’aide de la commande nspluginwrapper:
% nspluginwrapper -v -a -i
Lancez ensuite votre navigateur, tapez about:plugins dans la barre d’adresse et appuyez sur Entrée .
Une liste des greffons actuellement disponibles devrait apparaître.
6.2.5. Opera
Opera est un navigateur complet respectant les standards. Il intègre un lecteur de courrier
électronique et de forums de discussion, un client IRC, un lecteur de flux RSS/Atom et beaucoup
plus. Malgré cela, Opera reste relativement léger et très rapide. Il est disponible en deux versions:
une version "native" pour FreeBSD et une version utilisant l’émulation Linux.
Pour naviguer sur le Web avec la version FreeBSD d’Opera, installez la version pré-compilée:
# pkg_add -r opera
Certains sites FTP n’ont pas toutes les versions pré-compilées, mais Opera peut également être
obtenu avec le catalogue des logiciels portés en tapant:
# cd /usr/port/www/opera
184
# make install clean
Pour installer la version Linux d’Opera, utilisez linux-opera à la place d'opera dans les exemples
précédents. La version Linux est utile dans les situations demandant l’utilisation de greffons qui
sont uniquement disponibles pour Linux, comme Acrobat Reader®. Dans tous les autres aspects, les
versions FreeBSD et Linux devraient être identiques.
6.2.6. Konqueror
Konqueror fait partie de KDE mais peut être également utilisé en dehors de KDE en installant
x11/kdebase3. Konqueror est plus qu’un navigateur, c’est également un gestionnaire de fichiers et
une visionneuse multimedia
Konqueror supporte également Flash™; un tutorial pour avoir le support de Flash™ sous Konqueror
est disponible à l’adresse [Link]
6.3. Productivité
Quand on parle de productivité, les nouveaux utilisateurs recherchent souvent une bonne suite
bureautique ou un traitement de texte convivial. Bien que certains environnements de travail
comme KDE fournissent déjà une suite de bureautique, il n’y a pas de logiciels de productivité par
défaut. FreeBSD fournit tout ce qui est nécessaire, indépendamment de votre environnement de
travail.
6.3.1. KOffice
La communauté KDE propose son environnement de travail avec une suite de bureautique qui peut
être utilisée en dehors de KDE. Elle comprend quatre composants standard que l’on peut trouver
dans d’autres suites. KWord est le traitement de texte, KSpread est le tableur, KPresenter est le
programme pour gérer des présentations, et Kontour vous permet de créer des documents
graphiques.
Avant d’installer la dernière version de KOffice, soyez sûr d’avoir une version à jour de KDE.
185
# pkg_add -r koffice
Si la version pré-compilée n’est pas disponible, vous pouvez utiliser le catalogue des logiciels portés.
Par exemple, pour installer KOffice pour KDE3, faites:
# cd /usr/ports/editors/koffice-kde3
# make install clean
6.3.2. AbiWord
AbiWord est un traitement de texte gratuit similaire au niveau de l’apparence et de la prise en main
à Microsoft® Word. Il convient pour taper des lettres, des rapports, des mémos, et ainsi de suite. Il
est très rapide, dispose de nombreuses fonctions, et très convivial.
AbiWord peut importer et exporter dans de nombreux formats de fichiers, dont certains formats
propriétaires comme le .doc de Microsoft®.
AbiWord est disponible sous forme pré-compilée. Vous pouvez l’installer avec:
# pkg_add -r abiword
Si la version pré-compilée n’est pas disponible, il peut être compilé à partir du catalogue des
logiciels portés. Le catalogue devra être plus à jour. Cela peut être fait de cette façon:
# cd /usr/ports/editors/abiword
# make install clean
Pour la création et la retouche d’image The GIMP est un programme de manipulation d’image très
sophistiqué. Il peut être utilisé comme un simple programme de dessin ou comme une suite de
retouche d’image de qualité photo. Il supporte un grand nombre de modules additionnels et
présente une interface de création de procédures. The GIMP peut lire et écrire dans un très grand
nombre de formats de fichiers. Il supporte l’interfaçage avec des scanners et des tablettes
graphiques.
# pkg_add -r gimp
Si votre site FTP ne dispose pas de la version pré-compilée, vous pouvez utiliser le catalogue des
logiciels portés. Le répertoire graphics du catalogue contient également le Manuel de The Gimp.
Voici comment les installer:
186
# cd /usr/ports/graphics/gimp
# make install clean
# cd /usr/ports/graphics/gimp-manual-pdf
# make install clean
6.3.4. [Link]
Le traitement de texte d’[Link] utilise un format de fichier natif en XML pour augmenter la
portabilité et la flexibilité. Le tableur dispose d’un langage de macro et il peut être interfacé avec
des bases de données extérieures. [Link] est déjà stable et fonctionne en natif sous
Windows®, Solaris™, Linux, FreeBSD, et Mac OS® X. Plus d’information à propos d’[Link]
peut être trouvé sur le site Web d’[Link]. Pour une information spécifique à FreeBSD, et
pour télécharger directement les versions précompilées, utilisez le site Web de l’Equipe FreeBSD de
portage d’[Link].
# pkg_add -r [Link]
Une fois l’installation effective, vous avez juste à taper la commande suivante pour exécuter
[Link]:
% [Link]
Si les version pré-compilées d’[Link] ne sont pas disponibles, vous avez toujours la
possibilité de compiler le logiciel porté. Cependant, vous devez garder à l’esprit que cela demande
187
beaucoup d’espace disque et un temps de compilation relativement long.
# cd /usr/ports/editors/[Link]-2
# make install clean
Une fois cela effectué, [Link] peut être lancé avec la commande:
% [Link]
De nombreux documents sont désormais distribués sous forme de fichiers PDF, qui signifie "Format
Portable de Document" - Portable Document Format. Un des lecteurs recommandé est Acrobat
Reader®, sorti par Adobe pour Linux. Comme FreeBSD peut exécuter les binaires Linux, il est
également disponible pour FreeBSD.
188
# cd /usr/ports/print/acroread7
# make install clean
6.4.2. gv
gv un lecteur de fichier PostScript® et PDF. Il est a l’origine basé sur ghostview mais présente un
plus bel aspect grâce à la bibliothèque Xaw3d. Il est rapide et son interface est simple. gv possède de
nombreuses fonctionnalités comme l’orientation, le format du papier, l’échelle, l’anticrénelage.
Presque toutes les opérations peuvent être effectuées soit à partir du clavier soit à la souris.
# pkg_add -r gv
Si vous ne pouvez obtenir la version pré-compilée, vous pouvez utiliser le catalogue des logiciels
portés:
# cd /usr/ports/print/gv
# make install clean
6.4.3. Xpdf
Si vous désirez un petit lecteur de fichiers PDF, Xpdf est léger et efficace. Il demande très peu de
ressources et est très stable. Il utilise les polices de caractères standards de X et ne requiert pas
Motif® ou tout autre ensemble d’éléments graphiques pour X.
# pkg_add -r xpdf
Si la version pré-compilée n’est pas disponible ou que vous préfériez utiliser le catalogue des
logiciels portés, faites:
# cd /usr/ports/graphics/xpdf
# make install clean
Une fois l’installation achevée, vous pouvez lancer Xpdf et utiliser le bouton droit de la souris pour
activer le menu.
6.4.4. GQview
GQview est un gestionnaire d’image. Vous pouvez visualiser un fichier avec un simple clic, lancer
189
un éditeur externe, obtenir une pré-visualisation par vignettes, et bien plus. Il propose également
un mode présentation et quelques possibilités d’opérations sur fichiers de base. Vous pouvez gérer
des collections d’images et trouver facilement les doublons. GQview supporte l’affichage plein
écran et l’internationalisation de l’interface.
# pkg_add -r gqview
Si la version pré-compilée n’est pas disponible ou que vous préférez utiliser le catalogue des
logiciels portés, faites:
# cd /usr/ports/graphics/gqview
# make install clean
6.5. Finance
Si, pour diverses raisons, vous voudriez gérer vos finances personnelles sous FreeBSD, il existe
quelques applications puissantes et simples d’emploi prêtes à être installées. Certaines d’entre elles
sont compatibles avec des formats de fichiers très répandus comme ceux utilisés par Quicken ou
Excel pour stocker des documents.
6.5.1. GnuCash
GnuCash fait partie de l’effort GNOME en vue de fournir des applications puissantes et conviviales
pour l’utilisateur final. Avec GnuCash, vous pouvez suivre vos crédits et débits, vos comptes
bancaires, et vos actions. Il présente une interface intuitive tout en restant très professionnel.
GnuCash fournit un registre intelligent, un système hiérarchique pour les comptes, de nombreux
raccourcis clavier et des systèmes d’autocomplémentation de la frappe au clavier. Il peut diviser
une simple transaction en plusieurs étapes plus détaillées. GnuCash peut importer et fusionner des
fichiers QIF de Quicken. Il supporte également la plupart des formats internationaux de date et de
monnaies.
190
# pkg_add -r gnucash
Si la version pré-compilée n’est pas disponible, vous pouvez utiliser le catalogue des logiciels
portés:
# cd /usr/ports/finance/gnucash
# make install clean
6.5.2. Gnumeric
Gnumeric est un tableur, faisant partie de l’environnement de travail GNOME. Il dispose d’un
système automatique "devinant" le type d’entrée de l’utilisateur en fonction du format de la cellule
avec un système de remplissage automatique pour de nombreuses séquences d’utilisation. Il peut
importer des fichiers de nombreux formats populaires comme ceux d’Excel, Lotus 1-2-3, ou Quattro
Pro. Gnumeric supporte l’affichage de graphiques grâce au programme de tracé math/guppi. Il
dispose d’un grand nombre de fonctions intégrées et permet tous les formats de cellule habituels
comme le format numérique, monétaire, date, temps, et bien plus.
# pkg_add -r gnumeric
Si la version pré-compilée n’est pas disponible, vous pouvez utiliser le catalogue des logiciels portés
en faisant:
# cd /usr/ports/math/gnumeric
# make install clean
6.5.3. Abacus
Abacus est un tableur léger et facile d’emploi. Il incorpore de nombreuses fonctions utiles dans
plusieurs domaines comme les statistiques, la finance, et les mathématiques. Il peut importer et
exporter en format Excel. Abacus peut produire des sorties en PostScript®.
# pkg_add -r abacus
Si la version pré-compilée n’est pas disponible, vous pouvez utiliser le catalogue des logiciels portés
en faisant:
# cd /usr/ports/deskutils/abacus
191
# make install clean
6.5.4. KMyMoney
KMyMoney est un programme de comptabilité personnelle pour KDE. KMyMoney a pour objectif de
fournir et d’incorporer toutes les fonctionnalités importantes que l’on retrouve dans les
applications de comptabilité personnelle commerciales. Il met également l’accent sur la facilité
d’utilisation et la mise en place d’une comptabilité en partie double. KMyMoney peut importer les
fichiers au format Quicken (QIF), suivre des placements, gérer plusieurs monnaies et fournir une
quantité de compte-rendus. La possibilité d’importer des fichiers au format OFX est également
disponible à l’aide d’un greffon séparé.
# pkg_add -r kmymoney2
Si le paquetage n’est pas disponible, vous pouvez utiliser le catalogue des logiciels portés:
# cd /usr/ports/finance/kmymoney2
# make install clean
6.6. Résumé
Alors que FreeBSD est populaire parmi les fournisseurs d’accès à Internet pour ses performances et
sa stabilité, il est quasiment prêt pour une utilisation quotidienne en tant que station de travail.
Avec plusieurs milliers d’applications disponibles sous forme pré-compilées ou dans le catalogue
des logiciels portés, vous pouvez vous construire l’environnement de travail qui vous conviendra le
mieux.
gv gv print/gv
192
Nom de l’application Nom du logiciel pré-compilé Nom du logiciel porté
193
Chapitre 7. Multimédia
7.1. Synopsis
FreeBSD supporte une grande variété de cartes son, vous permettant d’obtenir un son haute fidélité
à partir de votre ordinateur. Ceci inclut la possibilité d’enregistrer et de jouer les formats "MPEG
Audio Layer 3" (MP3), WAV et Ogg Vorbis aussi bien que de nombreux autres formats. Le catalogue
de logiciels portés de FreeBSD contient également des applications vous permettant d’éditer vos
enregistrements, rajouter des effets sonores, et contrôler des périphériques MIDI.
Avec un peu d’expérimentation, FreeBSD pourra lire des fichiers vidéo et des DVDs. Le nombre
d’applications pour encoder, convertir, et lire divers supports vidéo est plus limité que le nombre
d’applications équivalentes dans le domaine du son. Par exemple au moment de l’écriture de ces
lignes, il n’existe pas de bonne application d’encodage dans le catalogue des logiciels portés de
FreeBSD, qui pourra être utilisée pour convertir d’un format à un autre, comme peut le faire pour
le son le programme audio/sox. Cependant, le paysage logiciel dans ce domaine évolue rapidement.
Ce chapitre décrira les étapes nécessaires pour configurer votre carte son. La configuration et
l’installation d’X11 (Le système X Window) ont déjà pris soin des problèmes matériel de votre carte
vidéo, bien qu’il puisse y avoir quelques réglages à ajuster pour obtenir une meilleure lecture des
vidéos.
• Comment configurer votre système afin que votre carte son soit reconnue.
• Quelques logiciels portés qui donnent de bon résultats pour lire/encoder de la vidéo.
Essayer de monter des CDs audio avec la commande mount(8) aura pour résultat
une erreur, au moins, et une panique du noyau, au pire. Ces supports ont des
codages spécifiques qui diffèrent du système de fichiers ISO classique.
194
7.2. Configurer une carte son
7.2.1. Configuration du système
Avant que vous commenciez, vous devriez connaître le modèle de carte son que vous avez, la puce
qu’elle utilise, et si c’est une carte PCI ou ISA. FreeBSD supporte une grande variété de cartes PCI et
ISA. Consultez la liste des périphériques audio supportés des notes de compatibilité matériel pour
voir si votre carte est supportée. Ces notes indiqueront également quel pilote supporte votre carte.
Pour utiliser votre carte son, vous devrez charger le pilote de périphérique approprié. Cela peut
être fait de deux façons. La plus simple est de charger le module pour votre carte son avec
kldload(8), ce qui peut être soit fait à partir de la ligne de commande:
# kldload snd_emu10k1
snd_emu10k1_load="YES"
Ces exemples concernent la carte Creative SoundBlaster® Live!. Les autres modules son
chargeables sont listés dans /boot/defaults/[Link]. Si vous n’êtes pas sûr du pilote à utiliser,
vous pouvez tenter de charger le pilote snd_driver:
# kldload snd_driver
C’est un méta-pilote chargeant directement les pilotes les plus courants. Cela accélère la recherche
du pilote adapté. Il est également possible de charger l’intégralité des pilotes de cartes son en
utilisant le système /boot/[Link].
Si vous voulez connaître le pilote sélectionné lors du chargement du méta-pilote snd_driver, vous
pouvez consulter le fichier /dev/sndstat à cet effet, et cela à l’aide de la commande cat /dev/sndstat.
Une seconde méthode est de compiler le support pour votre carte son en statique dans votre noyau.
La section ci-dessous fournit les informations nécessaires pour ajouter le support de votre matériel
de cette manière. Pour plus d’informations au sujet de la recompilation de votre noyau, veuillez
consulter le Configurer le noyau de FreeBSD.
La première chose à effectuer est d’ajouter au noyau le pilote de périphérique audio générique
sound(4); pour cela vous devrez ajouter la ligne suivante au fichier de configuration du noyau:
device sound
Ensuite, vous devez ajouter le support pour votre carte son. Par conséquent, vous devez savoir quel
195
pilote supporte la carte. Consultez la liste des périphériques audio supportés des notes de
compatibilité matériel pour déterminer le pilote correct pour votre carte son. Par exemple, une
carte son Creative SoundBlaster® Live! est supportée par le pilote snd_emu10k1(4). Pour ajouter le
support pour cette carte, utilisez ce qui suit:
device snd_emu10k1
Les cartes son ISA non-PnP pourront nécessiter de fournir au noyau des informations sur le
paramétrage de la carte (IRQ, port d’E/S, etc.), comme c’est en général le cas pour toutes les cartes
ISA non-PnP. Cela s’effectue par l’intermédiaire du fichier /boot/[Link]. Au démarrage du
système, le chargeur (loader(8)) lira ce fichier et passera les paramètres au noyau. Par exemple, une
vieille carte ISA non-PnP Creative SoundBlaster® 16 utilisera le pilote snd_sbc(4) de paire avec
snd_sb16, on ajoutera alors la ligne suivante au fichier de configuration du noyau:
device snd_sbc
device snd_sb16
[Link]="isa"
[Link]="0x220"
[Link]="5"
[Link]="1"
[Link]="0x15"
La syntaxe utilisée dans le fichier /boot/[Link] est abordée dans la page de manuel du pilote
sound(4) ainsi que celle du pilote spécifique à la carte son.
Les paramètres donnés ci-dessus sont ceux par défaut. Dans certains cas, vous pouvez avoir besoin
de modifier l’IRQ ou tout autre paramètre en fonction de votre carte son. Consultez la page de
manuel snd_sbc(4) pour plus d’informations au sujet de cette carte.
Après avoir redémarré avec le noyau modifié, ou après avoir chargé le module nécessaire, la carte
son devrait apparaître dans le tampon des messages du système (dmesg(8)) d’un manière proche de
la suivante:
196
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>
L’état de la carte son peut être contrôlée par l’intermédiaire du fichier /dev/sndstat:
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)
Le résultat pourra être différent sur votre système. Si aucun périphérique pcm n’apparaît,
retournez en arrière et revoyez ce qui a été fait précédemment. Contrôlez à nouveau votre fichier
de configuration du noyau et vérifiez que vous avez choisi le périphérique correct. Les problèmes
courants sont listés dans la Problèmes courants.
Si tout va bien, vous devriez avoir maintenant une carte son qui fonctionne. Si la sortie audio de
votre lecteur de CD-ROM ou de DVD-ROM est correctement reliée à votre carte son, vous pouvez
introduire un CD dans le lecteur et le jouer avec cdcontrol(1):
Diverses applications, comme audio/workman offrent une meilleure interface. Vous pouvez vouloir
installer une application comme audio/mpg123 pour écouter des fichiers audio MP3.
Une autre méthode rapide pour tester la carte est d’envoyer des données au /dev/dsp, de la manière
suivante:
où filename peut être n’importe quel fichier. Cette ligne de commande devrait produire des sons,
confirmant le bon fonctionnement de la carte son.
Les niveaux du mixer de la carte son peuvent être modifiés par la commande mixer(8). Plus de
détails peuvent être trouvés dans la page de manuel mixer(8).
Erreur Solution
sb_dspwr(XX) timed out Le port d’E/S n’est pas configuré correctement.
bad irq XX L’IRQ sélectionnée est incorrecte. Vérifiez que
l’IRQ choisie et l’IRQ de la carte son sont les
mêmes.
197
Erreur Solution
xxx: gus pcm not attached, out of memory Il n’y a pas suffisamment de mémoire disponible
pour utiliser ce périphérique.
xxx: can’t open /dev/dsp! Vérifiez avec la commande fstat | grep dsp si
une autre application maintient le périphérique
ouvert. Souvent à l’origine de ce type de
problème on trouve esound et le support son de
KDE.
Il est souvent intéressant de pouvoir jouer simultanément du son à partir de multiples sources,
comme lorsque esound ou artsd ne supportent pas le partage du périphérique son avec certaines
applications.
FreeBSD vous permet de le faire par l’intermédiaire de Canaux Sonores Virtuels, qui peuvent être
activés avec la fonction sysctl(8). Les canaux virtuels vous permettent de multiplexer la sortie de
votre carte son en mixant le son au niveau du noyau.
Pour configurer le nombre de canaux virtuels, il existe deux paramètres de sysctl qui, si vous avez
les privilèges de l’utilisateur root, peuvent être configurés comme ceci:
# sysctl [Link]=4
# sysctl [Link]=4
L’exemple ci-dessus alloue quatre canaux virtuels, ce qui est un nombre suffisant pour une
utilisation classique. [Link] est le nombre de canaux virtuels que possède pcm0, et est
configurable une fois que le périphérique a été attaché au système. [Link] est le
nombre de canaux virtuels alloués à un nouveau périphérique audio quand il est attaché à l’aide de
kldload(8). Comme le module pcm peut être chargé indépendamment des pilotes de périphériques,
[Link] peut stocker combien de canaux virtuels seront alloués à chaque
périphérique attaché par la suite.
Si vous n’utilisez pas devfs(5), vous devrez faire pointer vos applications sur /dev/dsp0.x, où x est 0
à 3 si [Link] est fixé à 4. Sur un système utilisant devfs(5), ce qui précède sera
automatiquement effectué de façon transparente pour le programme qui réclame le périphérique
/dev/dsp0.
7.2.4. Définir les valeurs par défaut du mixeur des différents canaux
Les valeurs par défaut du mixeur des différents canaux sont fixées en dur dans le code source du
198
pilote pcm(4). Il existe plusieurs applications et "daemons" qui vous permettent de fixer les valeurs
du mixeur qui seront mémorisées entre chaque invocation, mais ce n’est pas une solution idéale. Il
est possible régler les valeurs par défaut au niveau du pilote - ceci se fait en définissant les valeurs
adéquates dans le fichier /boot/[Link]. Par exemple:
[Link]="50"
Cela fixera le volume du canal à une valeur par défaut de 50; dès que le module pcm(4) est chargé.
De loin, le plus populaire des lecteurs MP3 pour X11 est XMMS (X Multimedia System). Les thèmes
(skins) de Winamp peuvent être utilisés avec XMMS dès lors que l’interface est quasiment identique
à celle du Winamp de Nullsoft. XMMS dispose aussi d’un support natif pour modules externes
(plug-in).
XMMS peut être installé à partir du catalogue de logiciels portés multimedia/xmms ou de la version
pré-compilée.
L’interface d’XMMS est intuitive, avec une liste de lecture, un égaliseur graphique, et plus. Ceux qui
sont familiers avec Winamp trouveront XMMS simple d’utilisation.
Le logiciel porté audio/mpg123 est une alternative, un lecteur de MP3 en ligne de commande.
mpg123 peut être utilisé en spécifiant le périphérique sonore et le fichier MP3 sur la ligne de
commande, comme montré ci-dessous:
/dev/dsp1.0 devrait être remplacé par le périphérique dsp correspondant sur votre système.
Avant d’encoder la totalité d’un CD ou une piste en MP3, les données audio doivent être extraites et
transférées sur le disque dur. Cela se fait en copiant les données brutes CDDA (CD Digital Audio) en
199
fichiers WAV.
L’utilitaire cdda2wav, qui fait partie de la suite sysutils/cdrtools, est utilisé pour extraire les données
audio de CDs et les informations rattachées.
Avec le CD audio dans le lecteur, la commande suivante peut être utilisée (en tant que root) pour
convertir l’intégralité d’un CD en fichiers WAV (un par piste):
# cdda2wav -D 0,1,0 -B
cdda2wav supportera également les lecteurs de CDROM ATAPI (IDE). Pour faire l’extraction à partir
d’un lecteur IDE, précisez le nom du périphérique à la place de l’unité SCSI. Par exemple, pour
extraite la piste 7 à partir d’un lecteur IDE:
# cdda2wav -D /dev/acd0 -t 7
Le -D 0,1,0 spécifie le périphérique SCSI 0,1,0, qui correspond à ce qui est donné par la commande
cdrecord -scanbus.
# cdda2wav -D 0,1,0 -t 7
Cet exemple extrait la septième piste du CD audio. Pour extraire un ensemble de pistes, par
exemple, de la piste 1 à 7, précisez un intervalle:
L’utilitaire dd(1) peut également être utilisé pour extraire des pistes audios à partir de lecteurs
ATAPI, consultez la Dupliquer des CDs Audio pour plus d’informations sur cette possibilité.
De nos jours, l’encodeur mp3 à utiliser est lame. Lame peut être trouvé dans le catalogue de
logiciels portés: audio/lame.
En utilisant les fichiers WAV extraits, la commande suivante convertira le fichier [Link] en
audio01.mp3:
# lame -h -b 128 \
--tt "La chanson XY" \
--ta "Artiste XY" \
--tl "Album XY" \
--ty "2001" \
--tc "Extrait et encodé par XY" \
200
--tg "Genre" \
[Link] audio01.mp3
128 kbits semble être le taux standard actuel du débit audio utilisé pour les MP3s. Nombreux sont
ceux qui préfèrent des taux de haute qualité: 160 ou 192. Plus le débit audio est élevé plus l’espace
disque utilisé par le fichier MP3 sera grand mais la qualité sera meilleure. L’option -h active le
mode "haute qualité, mais un peu plus lent". Les options commençant par --t indiquent des balises
ID3, qui généralement contiennent les informations sur le morceau, devant être intégrées au fichier
MP3. D’autres informations sur l’encodage peuvent être trouvées en consultant la page de manuel
de Lame.
Afin de pouvoir graver un CD audio à partir de fichiers MP3, ces derniers doivent être convertis
dans le format WAV non compressé. XMMS et mpg123 supportent tous les deux la sortie de fichiers
MP3 en format de fichier non compressé.
1. Lancez XMMS.
7. Chargez le fichier MP3 dans XMMS comme à l’accoutumé, avec le volume à 100% et
l’égaliseur (EQ settings) désactivé.
8. Appuyez sur Play - XMMS devrait se comporter comme s’il jouait le MP3, mais aucun son
ne sera audible. Il est en fait en train de "jouer" le MP3 dans un fichier.
9. Vérifiez que vous avez rétabli l’option "Output Plugin" à sa valeur de départ afin de pouvoir
écouter à nouveau des MP3s.
XMMS crée un fichier au format WAV, tandis que mpg123 convertit le fichier MP3 en données audio
PCM brutes. Ces deux formats peuvent être utilisés avec cdrecord pour créer des CDs audio. Vous
devez utiliser des fichiers PCM bruts avec burncd(8). Si vous utilisez des fichiers WAV, vous noterez
un petit parasite au début de chaque piste, ce son est l’entête du fichier WAV. Vous pouvez
simplement retirer l’entête d’un fichier WAV avec l’utilitaire SoX (il peut être installé à partir du
logiciel porté audio/sox ou de la version pré-compilée):
201
% sox -t wav -r 44100 -s -w -c 2 [Link] [Link]
Lisez la Création et utilisation de supports optiques (CDs) pour plus d’informations sur l’utilisation
d’un graveur de CD sous FreeBSD.
Avant que vous ne commenciez, vous devrez connaître le modèle de carte vidéo dont vous disposez
ainsi que le circuit intégré qu’elle utilise. Alors qu’Xorg et XFree86™ supportent une large variété de
cartes vidéo, seul un petit nombre d’entre elles donne de bonnes performances en lecture de
vidéos. Pour obtenir la liste des extensions supportées par le serveur X utilisant votre carte
employez la commande xdpyinfo(1) durant le fonctionnement d’X11.
C’est une bonne idée d’avoir un court fichier MPEG qui pourra être utilisé comme fichier test pour
évaluer divers lecteurs et leurs options. Comme certains programmes de lecture de DVD
chercheront un support DVD sur /dev/dvd par défaut, ou ont ce périphérique fixé définitivement
dans leur code, vous pourrez trouver utile de créer des liens symboliques vers les périphériques
corrects:
Notez qu’en raison de la nature du système devfs(5), les liens créés à la main comme les précédents
ne seront pas conservés si vous redémarrez le système. Afin de créer automatiquement les liens
symboliques dès que vous redémarrez votre système, ajoutez les lignes suivantes au fichier
/etc/[Link]:
De plus, le décodage de DVD, qui nécessite de faire appel à des fonctions spéciales du lecteur de
DVD, demande d’avoir la permission d’écrire sur les périphériques DVD.
Pour augmenter la mémoire partagée pour l’interface X11, il est recommandé que les valeurs de
certaines variables sysctl(8) soient augmentées:
[Link]=67108864
[Link]=32768
202
7.4.1. Déterminer les capacités vidéo
Il y a plusieurs manières possibles pour afficher de la vidéo sous X11. Ce qui fonctionnera vraiment
est énormément dépendant du matériel. Chaque méthode décrite ci-dessous donnera différents
résultats en fonction du matériel. De plus, le rendu de la vidéo sous X11 est un sujet recevant
beaucoup d’attention dernièrement, et avec chaque nouvelle version d’Xorg, ou d’XFree86™, il
pourra y avoir des améliorations significatives.
2. XVideo: une extension de l’interface X11 qui supporte la vidéo sur n’importe quelle partie de
l’écran contrôlé par X11.
[Link]. XVideo
Xorg et XFree86™ 4.X disposent d’une extension appelée XVideo (également connue sous les termes
Xvideo, Xv, ou xv) qui permet d’afficher directement de la vidéo à travers une accélération
spécifique. Cette extension fournit une très bonne qualité de rendu même sur les machines bas de
gamme.
% xvinfo
203
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
204
red, green, blue masks: 0x0, 0x0, 0x0
Notez également que les formats listés (YUV2, YUV12, etc…) ne sont pas présents dans chaque
implémentation d’XVideo et leur absence pourra gêner certains programmes.
Si le résultat ressemble à:
Si XVideo n’est pas supporté pour votre carte, cela signifie seulement qu’il sera plus difficile pour
votre système d’affichage de répondre aux demandes du rendu vidéo en termes de puissance de
calcul. En fonction de votre carte vidéo et de votre processeur, vous pourriez encore obtenir de
bons résultats. Vous devriez probablement vous documenter sur les méthodes pour améliorer les
performances en lisant la Lectures supplémentaires.
La couche simple d’accès directe au média, SDL, a été prévue pour être une couche de portage entre
Microsoft® Windows®, BeOS, et UNIX®, permettant à des applications "cross-platform" qui font un
usage efficace du son et du graphique d’être développées. La couche SDL fournit une abstraction de
bas niveau vers le matériel qui peut parfois être plus efficace que l’interface X11.
L’accès direct au graphique est une extension X11 qui permet à un programme de bypasser le
serveur X et d’accéder directement au matériel. Comme il repose sur une copie bas niveau de la
mémoire, les programmes l’utilisant doivent être exécutés avec les privilèges de l’utilisateur root.
L’extension DGA et ses performances peuvent être testées avec dga(1). Quand dga est exécuté, il
changera les couleurs de l’affichage à chaque appui sur une touche. Pour quitter, utilisez la touche
q.
Cette section traite des logiciels disponibles dans le catalogue des logiciels portés de FreeBSD qui
peuvent être utilisés pour lire de la vidéo. Les applications vidéos sont un domaine de
développement très actif, et les capacités de diverses applications seront sujettes à des divergences
avec la description donnée ici.
Premièrement, il est important de savoir que plusieurs des applications vidéos fonctionnant sous
FreeBSD ont été développées comme des applications pour Linux. Plusieurs de ces applications sont
encore considérées comme étant de qualité bêta. Parmi les problèmes que l’on peut rencontrer
205
avec les applications vidéos sous FreeBSD, nous trouvons:
1. Une application ne peut pas lire un fichier produit par une autre application.
3. La même application sur deux machines différentes, recompilée sur chaque machine pour la
machine elle-même, jouera le fichier différemment.
6. La documentation n’est pas installée avec le logiciel porté et peut être trouvée sur Internet ou
dans le répertoire work du logiciel porté.
Parmin ces applications, nombreuses sont celles qui peuvent présenter des "Linuxismes". Aussi, il y
peut y avoir des problèmes résultants de la façon dont certaines bibliothèques standards sont
implémentées dans les distributions Linux, ou certaines caractéristiques du noyau Linux qui ont
été employées par les auteurs des applications. Ces problèmes ne sont pas toujours remarqués et
contournés par les responsables du portage du logiciel ce qui peut mener vers quelques ennuis
comme ceux-ci:
2. Une mauvaise utilisation des "threads" qui provoque le blocage de programme au lieu de se
terminer complètement.
3. Des logiciels habituellement utilisés en conjonction avec l’application ne sont pas encore dans le
catalogue des logiciels portés.
Jusqu’ici, les développeurs de ces applications ont été coopératifs avec les responsables des logiciels
portés pour minimiser les modifications nécessaires au portage.
[Link]. MPlayer
MPlayer est une application pour lire des vidéos récemment et rapidement développée. Les
objectifs de l’équipe de MPlayer sont la rapidité et la flexibilité sur Linux et autre UNIX®. Le projet
fut démarré quand le fondateur de l’équipe en eu assez des mauvaises performances en lecture des
autres lecteurs disponibles. Certains diront que l’interface graphique a été sacrifiée pour une
conception rationalisée. Cependant, une fois que vous avez les options en ligne de commande et les
combinaisons de touches en main, cela fonctionne très bien.
# cd /usr/ports/multimedia/mplayer
206
# make
N - O - T - E
Les options par défaut du logiciel porté devraient être suffisantes pour la plupart des utilisateurs.
Cependant si vous avez besoin du codec XviD, vous devez spécifier l’option WITH_XVID dans la ligne
de commande. Le périphérique DVD par défaut peut également être défini avec l’option
WITH_DVD_DEVICE, par défaut /dev/acd0 sera utilisé.
La documentation HTML de MPlayer est très complète. Si le lecteur trouve l’information sur le
matériel vidéo et les interfaces manquante dans ce chapitre, la documentation de MPlayer est une
alternative très complète. Vous devriez certainement prendre le temps de lire la documentation de
MPlayer, si vous êtes à la recherche d’informations sur le support vidéo sous UNIX®.
Chaque utilisateur de MPlayer doit créer un sous-répertoire .mplayer dans son répertoire
d’utilisateur. Pour créer ce sous-répertoire nécessaire, vous pouvez taper ce qui suit:
% cd /usr/ports/multimedia/mplayer
% make install-user
Les options de commande de mplayer sont données dans la page de manuel. Pour plus de détails il y
a la documentation HTML. Dans cette section, nous décrirons que quelques unes des utilisations les
plus courantes.
Pour lire à un fichier, comme [Link] en utilisant une des diverses interfaces vidéo utilisez
l’option -vo:
207
% mplayer -vo x11 [Link]
Cela vaut la peine d’essayer toutes ces options, comme leur performance relative dépend de
nombreux facteurs et variera de façon significative avec le matériel.
Pour lire un DVD, remplacez [Link] par dvd://N -dvd-device DEVICE où N est le numéro du titre
à jouer et DEVICE est le fichier spécial de périphérique correspondant au lecteur de DVD. Par
exemple, pour jouer le titre 3 depuis /dev/dvd:
Le périphérique DVD par défaut peut être défini lors de la compilation du logiciel
porté MPlayer par l’intermédiaire de l’option WITH_DVD_DEVICE. Par défaut, ce
périphérique est /dev/acd0. Plus de détails peuvent être trouvés dans le Makefile
du logiciel porté.
Pour arrêter, avancer, etc…, consultez les combinaisons de touches, qui sont données en exécutant
mplayer -h ou lisez la page de manuel.
D’autres options importantes pour la lecture sont: -fs -zoom qui active le mode plein écran et
-framedrop qui aide au niveau des performances.
Pour que la ligne de commande à taper ne devienne pas trop longue, l’utilisateur peut créer un
fichier .mplayer/config et y fixer les options par défaut:
vo=xv
fs=yes
zoom=yes
Enfin, mplayer peut être utilisé pour extraire une piste du DVD dans un fichier .vob. Pour récupérer
la seconde piste vidéo d’un DVD, tapez ceci:
Le fichier de sortie, [Link], sera du MPEG et peut être manipulé par les autres logiciels décrits
dans cette section.
208
[Link].3. mencoder
Avant d’utiliser mencoder c’est une bonne idée de vous familiariser avec les options données par la
documentation HTML. Il existe une page de manuel, mais elle n’est pas très utile sans la
documentation en HTML. Il y a d’innombrables façons d’améliorer la qualité, diminuer le débit
binaire, et modifier les formats, et certaines de ces options peuvent faire la différence entre de
bonnes et mauvaises performances. Voici quelques exemples pour y arriver. Tout d’abord une
simple copie:
De mauvaises combinaisons d’options peuvent conduire à des fichiers illisibles même par mplayer.
Aussi, si vous voulez juste extraire un fichier, restez sur l’option -dumpfile de mplayer.
Pour convertir [Link] au format MPEG4 avec un codage audio MPEG3 (audio/lame est
nécessaire):
[Link] peut être remplacé par dvd://1 -dvd-device /dev/dvd et exécuté en tant que root pour ré-
encoder directement un titre DVD. Puisque vous êtes susceptible de ne pas être satisfait du résultat
la première fois, il est recommandé d’extraire le titre vers un fichier et de travailler sur le fichier.
Le lecteur xine est un projet de grande envergure visant non seulement à être une solution vidéo
tout-en-un, mais également de produire une bibliothèque de base réutilisable et un exécutable
modulaire qui peut être étendu grâce à des greffons. Il est fourni sous forme pré-compilée et de
logiciel porté, multimedia/xine.
Le lecteur xine est encore un peu brut, mais c’est clairement un bon début. Dans la pratique, xine
demande soit un processeur rapide avec une carte vidéo rapide, soit l’extension XVideo. L’interface
graphique est utilisable, mais peu pratique.
Au moment de l’écriture de ces lignes, il n’y a pas de module d’entrée fourni avec xine qui lira les
DVDs codés en CSS. Il existe des versions tiers qui ont des modules à cet effet intégrés, mais aucune
de ces dernières ne se trouve dans le catalogue des logiciels portés de FreeBSD.
Comparé à MPlayer, xine fait plus pour l’utilisateur, mais au même moment, rend inaccessible à
l’utilisateur certains contrôles bien précis. Le lecteur xine se comporte le mieux sur les interfaces
XVideo.
Par défaut, le lecteur xine lancera une interface graphique. Les menus peuvent alors être utilisés
pour ouvrir un fichier précis:
209
% xine
Alternativement, le lecteur peut être invoqué pour jouer directement un fichier sans l’interface
graphique avec la commande:
% xine -g -p [Link]
Le logiciel transcode n’est pas un lecteur, mais une suite d’outils pour ré-encoder les fichiers audio
et vidéo. Avec transcode, on a la capacité de fusionner des fichiers vidéos, réparer les fichiers
endommagés, en utilisant les outils en ligne de commande avec des interfaces de flots stdin/stdout.
Un grand nombre d’options peut être précisé lors de la compilation du logiciel porté
multimedia/transcode, nous recommandons d’utiliser la ligne de commande suivante pour
compiler transcode:
Pour illustrer les capacités de transcode, voici un exemple montrant comment convertir un fichier
DivX en fichier MPEG-1 en standard PAL (VCD PAL):
Le fichier MPEG résultant, output_vcd.mpg, peut être directement lu avec MPlayer. Vous pourrez
même le graver sur un CD pour créer ainsi un Vidéo CD; dans ce cas vous devrez installer et utiliser
les programmes multimedia/vcdimager et sysutils/cdrdao.
Il existe une page de manuel pour transcode, mais il est conseillé de consulter également le wiki de
transcode pour plus d’information et des exemples.
Les différents logiciels vidéo pour FreeBSD se développent rapidement. Il est fort possible que dans
un futur proche plusieurs des problèmes abordés ici seront résolus. Entre temps ceux qui veulent
tirer partie des possibilités audio/vidéo de FreeBSD devront se débrouiller avec des connaissances
extraites de plusieurs FAQs et guides et utiliser différentes applications. Cette section existe pour
fournir au lecteur des références sur ces documentations additionnelles.
210
vidéo et UNIX®. La liste de diffusion de MPlayer est hostile à toute personne qui n’a pas pris la
peine de lire la documentation, aussi si vous projetez de leur envoyer des rapports de bogue, lisez la
documentation!
Le HOWTO de xine contient un chapitre sur l’amélioration des performances qui est général à tous
les lecteurs de vidéo.
• Xtheater
Les cartes TV vous permettent de regarder sur votre ordinateur la télévision par voie hertzienne ou
par câble. La plupart d’entre elles acceptent de la vidéo composite par l’intermédiaire de
connecteurs RCA ou S-video et certaines de ces cartes disposent d’un tuner radio FM.
FreeBSD founit le support pour les cartes TV PCI utilisant un circuit de capture video Brooktree
Bt848/849/878/879 ou Conexant CN-878/Fusion 878a à l’aide du pilote bktr(4). Vous devez également
vous assurer que la carte dispose d’un tuner supporté, consultez la page de manuel bktr(4) pour
une liste des tuners supportés.
Pour utiliser votre carte, vous devrez charger le pilote bktr(4), cela peut être effectué en ajoutant la
ligne suivante au fichier /boot/[Link]:
bktr_load="YES"
Alternativement, vous pouvez compiler en statique dans le noyau le support pour la carte TV, dans
ce cas ajouter les lignes suivantes dans votre fichier de configuration du noyau:
device bktr
device iicbus
device iicbb
device smbus
Ces pilotes de périphériques supplémentaires sont nécessaires étant donné que les composants de
la carte sont interconnectés via un bus I2C. Compilez et installez, ensuite, un nouveau noyau.
Une fois que le support a été ajouté au système, vous devez redémarrer votre machine. Durant le
211
processus de démarrage, votre carte TV devrait apparaître de cette manière:
Bien évidemment ces messages peuvent varier en fonction de votre matériel. Cependant assurez-
vous que le tuner est correctement détecté; il est possible de forcer certains des paramètres détecté
à l’aide du système sysctl(8) et d’options de configuration du noyau. Par exemple, si vous désirez
forcer le tuner pour un tuner Philips SECAM, vous devrez ajouter la ligne suivante au fichier de
configuration du noyau:
options OVERRIDE_TUNER=6
# sysctl [Link]=6
Consultez la page de manuel bktr(4) et le fichier /usr/src/sys/conf/NOTES pour plus de détails sur les
options disponibles.
Pour utiliser votre carte TV, vous devrez installer une des applications suivantes:
• multimedia/xawtv est également une application pour regarder la télévision avec les mêmes
fonctionnalités que fxtv.
• audio/xmradio, un programme pour utiliser le tuner FM fourni avec certaines cartes TV.
• audio/wmtune, une application intégrable dans votre environnement de travail pour gérer les
tuners radio.
Plus d’applications sont disponibles dans le catalogue des logiciels portés de FreeBSD.
Si vous rencontrez un quelconque problème avec votre carte TV, vous devriez contrôler tout
d’abord que le circuit de capture video et le tuner sont vraiment supportés par le pilote bktr(4) et si
vous avez utilisé les bonnes options de configuration. Pour plus de support et pour les diverses
questions que vous pouvez vous poser à propos de votre carte TV, vous pouvez contacter et utiliser
212
les archives de la liste de diffusion liste de diffusion pour les discussions concernant le multimédia
sous FreeBSD.
7.6. Scanners
7.6.1. Introduction
Sous FreeBSD, l’accès aux scanners est possible grâce à l’APISANE (Scanner Access Now Easy)
disponible dans le catalogue des logiciels portés. SANE utilisera également certains pilotes de
périphériques FreeBSD pour accéder à la partie matérielle du scanner.
FreeBSD supporte les scanners SCSI et USB. Assurez-vous que votre scanner est supporté par SANE
avant d’effectuer une quelconque configuration. SANE dispose d’une liste des périphériques
supportés qui peut vous informer sur le support et son statut pour un scanner particulier. La page
de manuel uscanner(4) donne également une liste des scanners USB supportés.
Comme mentionné plus haut les interfaces SCSI et USB sont supportées. En fonction de l’interface
de votre scanner, différents pilotes de périphérique sont nécessaires.
Le noyau GENERIC inclut par défaut les pilotes nécessaires au support des scanners USB. Si vous
décidez d’utiliser un noyau personnalisé, assurez-vous que les lignes suivantes sont présentes dans
votre fichier de configuration du noyau:
device usb
device uhci
device ohci
device uscanner
En fonction du contrôleur USB présent sur votre carte mère, vous n’avez besoin que d’une des deux
lignes device uhci et device ohci, cependant avoir ces deux lignes simultanément dans la
configuration du noyau est sans risque.
Si vous ne désirez pas recompiler votre noyau et que votre noyau n’est pas le GENERIC, vous
pouvez directement charger le module du pilote uscanner(4) à l’aide de la commande kldload(8):
# kldload uscanner
Pour charger ce module à chaque démarrage du système, ajoutez la ligne suivante au fichier
/boot/[Link]:
uscanner_load="YES"
213
Après avoir redémarré avec le bon noyau, ou après avoir chargé le module nécessaire, branchez
votre scanner USB. Une ligne montrant la détection de votre scanner devrait apparaître dans le
tampon des messages du système (dmesg(8)):
Ceci nous indique que notre scanner utilise le fichier spécial de périphérique /dev/uscanner0.
Si votre scanner dispose d’une interface SCSI, il est important de connaître quelle carte contrôleur
SCSI vous utiliserez. En fonction du contrôleur sur la carte, vous devrez adapter votre configuration
du noyau. Le noyau GENERIC supporte les contrôleurs SCSI les plus courants. Assurez-vous d’avoir
lu le fichier NOTES et ajoutez la ligne adéquate dans votre fichier de configuration du noyau. En
plus du pilote de votre carte SCSI, vous avez besoin des lignes suivantes dans votre fichier de
configuration du noyau:
device scbus
device pass
Une fois que votre noyau a été correctement compilé et installé, vous devriez être en mesure de
voir les périphériques au démarrage:
Si votre scanner n’était pas alimenté au démarrage du système, il est encore possible de forcer sa
détection, en en sondant le bus SCSI avec la commande camcontrol(8):
# camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)
214
Plus de détails sur les périphériques SCSI sont disponibles dans les pages de manuel scsi(4) et
camcontrol(8).
Le système SANE est divisé en deux parties: les "backend"s (graphics/sane-backends) et les
"frontend"s (graphics/sane-frontends). Les "backend"s fournissent l’accès au scanner. La liste des
périphériques supportés par SANE indique quel "backend" supportera votre scanner. Il est
indispensable de déterminer correctement le "backend" relatif à votre scanner si vous voulez être
en mesure d’utiliser votre périphérique. La partie "frontend"s fournie l’interface graphique de
numérisation (xscanimage).
# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
Le résultat de la commande affichera le type d’interface utilisée par le scanner et le fichier spécial
de périphérique utilisé pour attacher le scanner au système. Le fabricant et le modèle peuvent ne
pas apparaître, cela n’est pas important.
Nous devons maintenant vérifier si le scanner sera identifié par un "frontend" de numérisation. Par
défaut, les "backend"s SANE sont fournies avec un outil en ligne de commande appelé sane(1). Cette
commande vous permet de lister les périphériques et d’effectuer une acquisition d’image à partir
de la ligne de commande. L’option -L est employée pour afficher les scanners présents sur le
système:
# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
Aucun résultat, ou un message disant qu’aucun scanner n’a été identifié indiquent que sane(1) est
incapable d’identifier le scanner. Si cela se produit, vous devrez éditer le fichier de configuration
du "backend" du scanner et définir le type de scanner utilisé. Le répertoire /usr/local/etc/sane.d/
contient tous les fichiers de configurations des "backend"s. Ce problème d’identification apparaît
essentiellement avec certains scanners USB.
Par exemple, avec le scanner USB utilisé dans la Interface USB, sane-find-scanner nous donne
l’information suivante:
# sane-find-scanner -q
215
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0
Le scanner est correctement détecté, il utilise l’interface USB et est attaché au fichier spécial de
périphérique /dev/uscanner0. Nous pouvons maintenant vérifier si le scanner est correctement
identifié:
# scanimage -L
Comme le scanner n’est pas identifié, nous devons éditer le fichier /usr/local/etc/sane.d/[Link].
Le scanner utilisé était un EPSON Perfection® 1650, nous en déduisons donc que ce scanner
utilisera le "backend" epson. Assurez-vous de bien lire les commentaires d’aide présents dans les
fichiers de configuration des "backend"s. Les modifications à faire sont relativement simples:
commentez toutes les lignes concernant une interface différente de celle utilisée par votre scanner
(dans notre cas, nous commenterons toutes les lignes débutant par le mot scsi étant donné que
notre scanner utilise une interface USB), ajoutez ensuite à la fin du fichier une ligne indiquant
l’interface et le fichier spécial de périphérique utilisé. Dans ce cas, nous ajoutons la ligne suivante:
usb /dev/uscanner0
Veuillez vous assurer de bien lire les commentaires fournis dans les fichiers de configurations des
"backend"s ainsi que les pages de manuel correspondantes pour plus de détails concernant la
syntaxe correcte à utiliser. Nous pouvons maintenant vérifier si le scanner est identifié:
# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner
Notre scanner a été identifié. Ce n’est pas important si la marque et le modèle ne correspondent pas
au scanner. L’important est le champ epson:/dev/uscanner0', qui nous donne le "backend" et le
fichier spécial de périphérique corrects.
Une fois que la commande scanimage -L est en mesure d’identifier le scanner, la configuration est
terminée. Le périphérique est prêt à effectuer sa première numérisation.
Bien que sane(1) permette d’effectuer une numérisation à partir de la ligne de commande, il est
préférable d’utiliser une interface graphique. SANE offre une interface graphique simple mais
efficace: xscanimage (graphics/sane-frontends).
Xsane (graphics/xsane) est une autre interface graphique de numérisation assez populaire. Ce
programme offre des fonctions avancées comme différents mode de numérisation (photocopie, fax,
etc.), la correction des couleurs, la numérisation par lots, etc. Ces deux applications sont utilisables
comme greffon pour GIMP.
216
7.6.4. Donner l’accès au scanner aux autres utilisateurs
Toutes les opérations précédentes ont été effectuées avec les privilèges root. Vous pourrez,
cependant, avoir besoin que d’autres utilisateurs puissent accéder au scanner. L’utilisateur devra
avoir les permissions de lecture et d’écriture sur le fichier spécial de périphérique /dev/uscanner0
dont le propriétaire est le groupe operator. L’ajout de l’utilisateur joe au groupe operator lui
autorisera l’accès au scanner:
Pour plus de détails, consultez la page de manuel de pw(8). Vous devez également fixer les
permissions d’écriture correctes (0660 or 0664) sur le fichier spécial de périphérique
/dev/uscanner0, par défaut le groupe operator n’a qu’un accès en lecture. Cela se fait en ajoutant les
lignes suivantes au fichier /etc/[Link]:
[system=5]
add path uscanner0 mode 660
devfs_system_ruleset="system"
Plus d’information concernant ces lignes peut être trouvée dans la page de manuel devfs(8).
Bien sûr, pour des raisons de sécurité, vous devriez réfléchir à deux fois avant
d’ajouter un utilisateur à n’importe quel groupe, tout particulièrement au groupe
operator.
217
Chapitre 8. Configurer le noyau de FreeBSD
8.1. Synopsis
Le noyau est le coeur du système d’exploitation FreeBSD. Il est responsable de la gestion de la
mémoire, de la mise en application des contrôles de sécurité, du réseau, des accès disque, et bien
plus. Bien que FreeBSD devienne de plus en plus configurable dynamiquement, il est toujours
nécessaire occasionnellement de reconfigurer et recompiler votre noyau.
Toutes les commandes listées dans les exemples de ce chapitre doivent être exécutées en tant que
root afin de fonctionner.
Aujourd’hui, FreeBSD s’oriente rapidement vers un modèle où une grande partie des fonctions du
noyau est contenue dans des modules qui peuvent être dynamiquement chargés et déchargés si
nécessaire. Cela permet au noyau de s’adapter au nouveau matériel devenant soudainement
disponible (comme les cartes PCMCIA dans un ordinateur portable), ou pour qu’une nouvelle
fonctionnalité qui n’était pas nécessaire lors de la compilation du noyau y soit intégrée. On appelle
cela un noyau modulaire.
En dépit de cela, il est encore nécessaire d’effectuer certaines configurations de noyau en statique.
Dans certains cas c’est parce que la fonctionnalité est si proche du noyau qu’elle ne peut être
rendue dynamiquement chargeable. Dans d’autres cas, cela peut tout simplement venir du fait que
personne n’a encore pris le temps d’écrire un module dynamiquement chargeable pour cette
fonctionnalité.
Compiler un noyau sur mesure est l’un des plus importants rites de passage que doit endurer tout
utilisateur BSD. Cette opération, tout en prenant du temps, apportera de nombreuses améliorations
à votre système FreeBSD. A la différence du noyau GENERIC, qui doit supporter une large gamme
de matériels, un noyau sur mesure ne contient que le support pour votre configuration matérielle.
218
Cela a de nombreux avantages, comme:
• Un temps de démarrage plus court. Comme le noyau ne recherchera que le matériel présent sur
votre système, le temps nécessaire au démarrage de votre système peut diminuer de façon
importante.
• Une utilisation plus faible de la mémoire. Un noyau sur mesure utilise souvent moins de
mémoire que le noyau GENERIC, ce qui est important car le noyau doit toujours résider en
mémoire. Pour cette raison, un noyau sur mesure est tout particulièrement utile sur un système
dont les ressources mémoire sont limitées.
Les exemples de ce chapitre supposent que vous utilisez l’architecture i386. Si ce n’est pas votre cas,
effectuez les ajustements appropriés au niveau des chemins d’accès pour votre architecture.
S’il n’y a pas de répertoire /usr/src/sys sur votre système, alors c’est que les sources
du noyau n’ont pas été installées. La manière la plus facile de les installer est
d’exécuter sysinstall en tant que root, et sélectionner Configure, puis
Distributions, src, puis base et sys. Si vous avez une aversion envers sysinstall et
que vous disposez d’un CDROM "officiel" de FreeBSD, alors vous pouvez installer
les sources depuis la ligne de commande:
# mount /cdrom
# mkdir -p /usr/src/sys
# ln -s /usr/src/sys /sys
# cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
# cat /cdrom/src/sbase.[a-d]* | tar -xzvf -
Ensuite allez dans le répertoire arch/conf et copiez le fichier de configuration GENERIC dans un
219
fichier qui portera le nom que vous voulez donner à votre noyau. Par exemple:
# cd /usr/src/sys/i386/conf
# cp GENERIC MONNOYAU
Par tradition, c’est un nom en majuscules, et si vous maintenez plusieurs machines FreeBSD avec
des configurations matérielles différentes, c’est une bonne idée de lui donner le même nom que la
machine. Nous l’appellerons MONNOYAU pour les besoins de cet exemple.
Vous voudrez peut être conserver votre fichier de configuration du noyau ailleurs
et alors créer un lien symbolique vers le fichier dans le répertoire i386.
Par exemple:
# cd /usr/src/sys/i386/conf
# mkdir /root/noyaux
# cp GENERIC /root/noyaux/MONNOYAU
# ln -s /root/noyaux/MONNOYAU
Editez maintenant MONNOYAU avec votre éditeur de texte préféré. Si vous venez tout juste de finir
l’installation, le seul éditeur disponible sera probablement vi, qui est trop complexe pour être décrit
ici, mais est bien expliqué dans de nombreux ouvrages de la bibliographie. Cependant, FreeBSD
offre un éditeur plus simple appelé ee qui, si vous êtes débutant, sera votre éditeur de choix.
N’hésitez pas à modifier les commentaires d’entête pour y décrire votre configuration ou les
modifications que vous avez apportés par rapport au noyau GENERIC.
Si vous avez déjà compilé un noyau sur SunOS™ ou tout autre système d’exploitation BSD,
l’essentiel de fichier vous sera familier. Si vous venez d’un système d’exploitation comme DOS, à
l’inverse, le fichier de configuration GENERIC vous paraîtra inintelligible, lisez alors lentement et
attentivement la section sur le fichier de configuration.
Si vous synchronisez votre arborescence des sources avec les toutes dernières
sources du projet FreeBSD, assurez-vous de toujours lire le fichier
/usr/src/UPDATING avant d’effectuer une quelconque opération de mise à jour. Ce
fichier décrit les problèmes importants ou les domaines demandant une attention
particulière dans le code mis à jour. /usr/src/UPDATING correspond toujours à
votre version des sources de FreeBSD, et est donc plus à jour que ce Manuel.
220
Procedure: Compiler un noya
# cd /usr/src
2. Compilez le noyau:
Par défaut, quand vous compilez un noyau personnalisé, tous les modules seront
également recompilés. Si vous désirez mettre à jour un noyau plus rapidement ou
compiler que certains modules, vous devez éditer le fichier /etc/[Link] avant
de compiler le noyau:
Cette variable définit une liste de modules à compiler à la place de l’intégralité des
modules.
Le nouveau noyau sera copié dans le répertoire /boot/kernel avec le nom /boot/kernel/kernel et
l’ancien noyau sera renommé en /boot/[Link]/kernel. Maintenant, arrêtez le système et
redémarrez pour utiliser votre nouveau noyau. Si quelque chose se passe mal, il y a quelques
instructions de dépannage à la fin de ce chapitre que vous pourrez trouver utiles. Assurez-vous de
lire la section qui explique comment revenir en arrière dans le cas où votre nouveau noyau ne
démarre pas.
Pour compiler un fichier contenant toutes les options possibles, en général pour
effectuer des tests, exécutez la commande suivante en tant que root:
# cd /usr/src/sys/i386/conf make LINT
Ce qui suit est un exemple de fichier de configuration du noyau GENERIC avec divers commentaires
aux endroits nécessaires pour un peu plus de clarté. Cet exemple devrait correspondre de façon
très proche à votre copie du fichier /usr/src/sys/i386/conf/GENERIC.
machine i386
C’est l’architecture de la machine. Elle doit être alpha, amd64, i386, ia64, pc98, powerpc, ou encore
sparc64.
cpu I486_CPU
cpu I586_CPU
cpu I686_CPU
Ce qui précède définit le type de CPU présent dans votre système. Il peut y avoir plusieurs
occurrences de la ligne CPU (si, par exemple, vous n’êtes pas sûr de devoir utiliser I586_CPU ou
I686_CPU), cependant, pour un noyau personnalisé, il est mieux de spécifier uniquement le CPU que
vous avez. Si vous n’êtes pas sûr du type, vous pouvez lister le fichier /var/run/[Link] pour
visualiser les messages de démarrage.
ident GENERIC
222
C’est l’identification du noyau. Vous devriez changer cela pour le nom, quel qu’il soit, que vous
donnez à votre noyau, par exemple MONNOYAU si vous avez suivi les instructions des exemples
précédents. La valeur que vous donnez à la chaîne ident s’affichera au démarrage du noyau, il est
donc utile de donner au nouveau noyau un nom différent si vous voulez le différencier de votre
noyau habituel (e.g., vous voulez compiler un noyau expérimental).
Le fichier [Link](5) est utilisé pour configurer les paramètres des pilotes de périphériques. Le
loader(8) recherchera le fichier /boot/[Link] au démarrage. En utilisant l’option hints vous
pouvez compiler ces valeurs en statique dans votre noyau. Il n’est alors pas utile de créer de fichier
[Link] dans /boot.
Permet aux processus légers présents dans le noyau d’être devancés par des processus de priorité
plus élevée. Cela améliore l’interactivité et permet aux processus d’interruption d’être exécutés le
plus tôt possible au lieu d’attendre leur tour.
Support réseau. Conservez-le, même si vous n’envisagez pas de vous connecter à un réseau. La
plupart des programmes utilisent le réseau "en boucle" (i.e., établissent des connexions réseau avec
le PC lui-même), cette option est donc quasiment obligatoire.
223
C’est le système de fichiers de base sur disque dur. Gardez ces options si vous démarrez depuis le
disque dur.
Cette option rajoutera le support des "Soft Updates" dans le noyau, ce qui aidera l’accélération des
accès en écriture sur les disques. Même quand cette fonction est fournit par le noyau, elle doit être
activée sur chaque disque. Regardez le résultat de la commande mount(8) pour voir si les "Soft
Updates" sont activées sur les disques de votre système. Si vous ne voyez pas apparaître l’option
soft-updates alors vous devrez l’activer en utilisant les commandes tunefs(8) (pour les systèmes de
fichiers existant) ou newfs(8) (pour les nouveaux systèmes de fichiers).
Cette option active le support des listes de contrôle d’accès au système de fichiers (ACL). Elles
reposent sur l’utilisation d’attributs étendus et d’UFS2, cette fonctionnalité est décrite dans la Listes
de contrôle d’accès au système de fichiers. Les ACLs sont activées par défaut, et leur support ne
devraient pas être retiré du noyau si elles ont été précédemment utilisées sur un système de
fichiers, étant donné que cela supprimera les listes de contrôle d’accès changeant alors la façon
dont sont protégés les fichiers d’une manière imprévisible.
Cette option inclut certaines fonctions pour accélérer les opérations disque sur de gros répertoires,
aux dépens d’employer de la mémoire supplémentaire. Vous conserverez normalement cela pour
un gros serveur, ou une station de travail très active, et vous l’enlèverez si vous utilisez FreeBSD sur
un petit système où la mémoire prime et la vitesse d’accès disque est moins importante, comme
pour un coupe-feu.
Cette option active le support pour des disques virtuels en mémoire utilisés comme périphérique
racine.
Le système de fichiers réseau. A moins que vous n’envisagiez de monter des partitions d’un serveur
de fichiers UNIX® par l’intermédiaire d’un réseau TCP/IP, vous pouvez mettre en commentaire ces
options.
224
options MSDOSFS #MSDOS Filesystem
Le système de fichiers MS-DOS®. A moins que vous n’envisagiez de monter une partition DOS d’un
disque dur au démarrage, vous pouvez sans risque commenter cette option. Le module sera
automatiquement chargé la première fois que vous monterez une partition DOS, comme décrit plus
haut. Par ailleurs, l’excellent logiciel emulators/mtools vous permet d’accéder à des disquettes DOS
sans avoir besoin de les monter (et ne requiert pas non plus MSDOSFS).
Le système de fichiers ISO 9660 pour les CDROMs. Commentez ces options si vous n’avez pas de
lecteur de CDROM ou que vous ne montez qu’occasionnellement des CDROMs (il sera chargé
dynamiquement dès que vous monterez un CDROM). Les CDROMs audios n’ont pas besoin de ce
système de fichiers.
Le système de fichiers pour les processus. C’est un "pseudo-système" de fichiers monté sur /proc qui
permet à des programmes comme ps(1) de vous fournir plus d’informations sur les processus qui
tournent sur le système. L’utilisation de PROCFS n’est pas nécessaire la plupart du temps, comme la
majeur partie des outils de débogage et de monitoring ont été adaptés pour s’exécuter sans PROCFS:
les nouvelles installations ne monteront pas par défaut ce système de fichiers.
Les noyaux 6.X faisant usage du système PROCFS doivent également inclure le support pour PSEUDOFS.
Cette option apporte la possibilité d’avoir un grand nombre de partitions sur un seul disque.
Compatibilité avec 4.3BSD. Conservez cette option; certains programmes auront un comportement
bizarre si vous la commentez.
Cette option est nécessaires aux systèmes i386™ et Alpha fonctionnant sous FreeBSD 5.X pour
supporter les applications compilées sur d’anciennes version de FreeBSD qui utilisent d’anciennes
interfaces d’appel système. Il est recommandé d’utiliser cette option sur tous les systèmes i386™ et
225
Alpha susceptibles d’exécuter d’anciennes applications; les plateformes apparues sous FreeBSD 5.0,
comme l’ia64 et sparc64, n’ont pas besoin de cette option.
Cette option est nécessaire sous FreeBSD 6.X et versions supérieures pour supporter les applications
compilées sous FreeBSD 5.X et qui utilisent les interfaces d’appel système FreeBSD 5.X.
Cette option oblige le noyau à attendre 5 secondes avant de rechercher les périphériques SCSI
présents sur votre système. Si vous n’avez que des disques IDE, vous pouvez l’ignorer, sinon vous
pouvez essayer de diminuer cette valeur, pour accélérer le démarrage du système. Bien sûr, si vous
le faites, et que FreeBSD a du mal à reconnaître vos périphériques SCSI, vous devrez l’augmenter à
nouveau.
Ceci permet de tracer le processus du noyau, ce qui est utile pour le débogage.
Cette option implémente la mémoire partagée System V. L’usage le plus courant qui en est fait est
l’extension XSHM d’X, dont de nombreux logiciels gourmants en graphique tireront
automatiquement parti pour fonctionner plus vite. Si vous utilisez X, vous utiliserez absolument
cette option.
Support des messages System V. Cette option n’augmente que de quelques centaines d’octets la taille
du noyau.
Support des sémaphores System V. D’un usage moins courant, mais n’augmente la taille du noyau
que de quelques centaines d’octets.
226
Extensions temps-réel ajoutées dans la norme POSIX® 1993. Certaines applications du catalogue
des logiciels portés les utilisent (comme StarOffice™).
Cette option concerne le clavier. Elle installe une entrée CDEV dans le répertoire /dev.
"Giant" est le nom d’un mécanisme d’exclusion mutuelle (un "mutex" dormant) qui protège l’accès à
un ensemble important de ressources du noyau. Aujourd’hui c’est un goulot d’étranglement des
performances inacceptable que l’on est en train de remplacer activement par des verrous qui
protègent les ressources individuelles. L’option ADAPTIVE_GIANT permet à Giant d’être inclus dans
l’ensemble des mutex lancés de manière adaptative. C’est à dire, quand un thread désire verrouiller
le mutex Giant, mais que ce dernier est déjà verrouillé par un thread sur un autre CPU, le premier
thread continuera à fonctionner et attendra la libération du verrou. Normalement, le thread
retournera à l’état dormant et attendra une nouvelle chance de pouvoir s’exécuter. Si vous n’êtes
pas sûr, laissez la configuration en l’état.
Le périphérique apic active l’utilisation de l’E/S APIC pour l’acheminement des interruptions. Le
périphérique apic peut être utilisé dans les noyaux UP (monoprocesseur) et SMP, mais est requis
pour les noyaux SMP. Ajoutez options SMP pour inclure le support pour plusieurs processeurs.
device eisa
Rajoutez cela si vous avez une carte mère EISA. Cela permet l’auto-détection et la configuration de
tous les périphériques présents sur le bus EISA.
device pci
Ajoutez cette option si vous avez une carte mère PCI. Cela permet l’auto-détection des cartes PCI et
gère l’interface entre les bus PCI et ISA.
# Floppy drives
device fdc
227
# ATA and ATAPI devices
device ata
Ce pilote supporte tous les périphériques ATA et ATAPI. Vous n’avez besoin que d’une seule ligne
device ata pour que le noyau détecte tous les périphériques PCI ATA/ATAPI sur les machines
modernes.
Ceci est requis avec device ata pour les disques ATA.
Ceci est nécessaire avec device ata pour les disques RAID ATA.
Ceci est nécessaire avec device ata pour le support des lecteurs de CDROM ATAPI.
Ceci est nécessaire avec device ata pour le support des lecteurs de disquettes ATAPI.
Ceci est nécessaire avec device ata pour le support des lecteurs de bande ATAPI.
Cela rend la numérotation des périphériques statique, sans cela l’allocation des numéros de
périphériques sera dynamique.
# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic family
228
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters
Contrôleurs SCSI. Mettez en commentaires ceux que vous n’avez pas sur votre système. Si vous
n’avez qu’un système IDE, vous pouvez supprimer toutes ces lignes. Les lignes *_REG_PRETTY_PRINT
sont des options de débogage pour leur pilote respectif.
# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)
Périphériques SCSI. A nouveau, mettez en commentaires tous ceux que vous n’avez pas, ou si vous
n’avez que du matériel IDE, vous pouvez tous les supprimer.
229
device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAID
Contrôleurs RAID supportés. Si vous n’avez aucun de ces derniers dans votre système, vous pouvez
les mettre en commentaires ou les supprimer.
Le contrôleur du clavier (atkbdc) permet de gérer les E/S du clavier AT et des périphériques de
pointage PS/2. Ce contrôleur est nécessaire au pilote de périphérique du clavier (atkbd) et celui des
périphériques de pointage PS/2 (psm).
Support de base pour le multiplexage de claviers. Si vous n’avez pas l’intention d’utiliser sur le
système plus d’un clavier, vous pouvez supprimer cette ligne sans risque.
230
# syscons is the default console driver, resembling an SCO console
device sc
sc est le pilote par défaut pour la console, qui ressemble à une console SCO. Comme la plupart des
programmes en mode plein-écran accèdent à la console par l’intermédiaire d’une base de données
de description des terminaux comme termcap, cela n’a guère d’importance que vous choisissiez ce
pilote ou vt, le pilote compatible VT220. Quand vous ouvrez une session, positionnez votre variable
d’environnement TERM à scoansi si vous avez des problèmes pour utiliser des programmes en mode
plein-écran avec cette console.
device agp
Ajoutez cette option si vous avez une carte AGP dans votre système. Cela activera le support AGP, et
l’AGP GART pour les cartes qui ont cette fonction.
"Advanced Power Management support" - gestion avancée de l’énergie. Utile pour les ordinateurs
portables, ceci est cependant désactivé par défaut dans le noyau GENERIC sous FreeBSD 5.X et
versions suivantes
Pilote du périphérique de gestion du temps pour les événements de la gestion de l’énergie, comme
l’APM ou l’ACPI.
231
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) bus
Cela représente les ports séries, appelés ports COM dans le monde MS-DOS®/Windows®.
Si vous avez un modem interne sur le port COM4 et un port série COM2, vous
devrez changer l’IRQ du modem en 2 (pour d’obscures raisons techniques, IRQ 2 =
IRQ 9) pour y accéder avec FreeBSD. Si vous avez une carte série multi-ports,
consultez la page de manuel de sio(4) pour plus d’informations sur les bonnes
valeurs à ajouter à votre fichier /boot/[Link]. Certaines cartes vidéo
(notamment celle à base de circuits S3) utilisent des adresses d’E/S sous la forme
0x*2e8, et comme de nombreuses cartes séries bon marché de décodent pas
complètement l’espace d’adresse d’E/S 16 bits, il y a aura des conflits avec ces
cartes, rendant le port COM4 pratiquement inutilisable.
Chaque port série doit avoir une IRQ unique (à moins que vous n’utilisiez une
carte multi-ports qui autorise le partage d’interruption), donc les IRQs par défaut
pour les ports COM3 et COM4 ne peuvent être utilisées.
# Parallel port
device ppc
Les trois lignes précédentes sont nécessaires pour permettre le support des
imprimantes parallèles.
232
C’est le pilote pour l’interface réseau sur port parallèle.
Ceci est pour le lecteur Zip de Iomega. Les options scbus et da sont également requises. Les
meilleures performances sont obtenues avec les ports configurés dans le mode EPP 1.9.
#device puc
Décommentez ce périphérique si vous disposez d’une carte PCI série ou parallèle "idiote" qui est
supportée par le pilote puc(4).
Divers pilotes de cartes réseaux PCI. Mettez en commentaires ou supprimer les lignes de celles qui
ne sont pas présentes sur votre système.
# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus support
Le support du bus MII est nécessaire pour certaines cartes Ethernet PCI 10/100, à savoir celles qui
utilisent des interfaces compatibles MII ou implémentent une gestion de l’interface opérant comme
le bus MII. Ajouter device miibus à la configuration du noyau intègre le support pour l’API miibus
générique et tous les pilotes d’interfaces PHY, incluant un pilote générique pour les interfaces PHYs
qui ne sont pas spécifiquements gérées par un pilote individuel.
233
device nve # nVidia nForce MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (Starfire)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit Ethernet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 EPIC)
device vge # VIA VT612x gigabit ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (Boomerang, Cyclone)
Pilotes pour les cartes Ethernet ISA. Consultez le fichier /usr/src/sys/i386/conf/NOTES pour savoir
quelles cartes sont supportées et par quel pilote.
Support 802.11 générique. Cette ligne est nécessaire pour le réseau sans fil.
Support pour le chiffrage pour les périphériques 802.11. Ces lignes sont nécessaires si vous avez
234
l’intention d’utiliser le chiffrage et les protocoles de sécurité 802.11i.
# Pseudo devices
device loop # Network loopback
C’est l’interface générique en boucle de TCP/IP. Si vous employez telnet ou FTP sur localhost (aussi
connu en tant qu’adresse [Link]) la réponse vous parviendra via ce pseudo-périphérique. Ceci
est obligatoire.
ether ne sert que si vous avez une carte Ethernet. Cela intègre le code générique pour le protocole
Ethernet.
sl est le support pour le protocole SLIP. Il a été presque entièrement supplanté par le protocole PPP,
plus facile à mettre en oeuvre, mieux adapté aux connexions par modem, et aussi plus puissant.
C’est le support intégré au noyau du protocole PPP pour les connexions par modem. Il y a aussi une
version de PPP sous forme de programme utilisateur qui utilise tun et offre plus de souplesse et de
possibilités comme la connexion à la demande.
235
Ceci est utilisé par le programme PPP en mode utilisateur. Voyez la section PPP de ce manuel pour
plus d’informations.
C’est un "pseudo-terminal" ou un port simulant une session. Il est utilisé par les sessions telnet et
rlogin entrantes, par xterm, et d’autres applications comme Emacs.
Ceci implémente l’encapsulation du protocole IPv6 par dessus l’IPv4, l’IPv4 par dessus l’IPv6,
l’encapsulation IPv4 par dessus l’IPv4, et IPv6 par dessus IPv6. Le périphérique `gif`"s’auto-
duplique", et créera les fichiers spéciaux de périphérique en fonction des besoins.
Ce pseudo-périphérique capture les paquets qui lui sont envoyés et les détourne vers le "daemon"
de translation IPv4/IPv6.
Le périphérique bpf(4) est également utilisé par dhclient(8) pour obtenir une
adresse IP du routeur par défaut (passerelle) et ainsi de suite. Si vous utilisez
DHCP, conservez cette ligne non commentée.
# USB support
device uhci # UHCI PCI-USB interface
device ohci # OHCI PCI-USB interface
device ehci # EHCI PCI-USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
236
device ugen # Generic
device uhid # Human Interface Devices
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device ural # Ralink Technology RT2500USB wireless NICs
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# USB Ethernet, requires mii
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB Ethernet
# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
Pour plus d’informations et pour avoir la liste de périphériques supplémentaires supportés par
FreeBSD, voyez le fichier /usr/src/sys/i386/conf/NOTES.
Les machines à configuration mémoire importante ont besoin de pouvoir accéder à plus d’espace
mémoire utilisateur et noyau que la limite des 4 gigaoctets de l’espace d’adresse noyau+utilisateur
("Kernel Virtual Address"-KVA). En raison de cette limite, Intel a ajouté le support d’adresses
physiques sur 36 bits pour l’espace d’adresses dans les familles de microprocesseurs Pentium® Pro
et suivantes.
L’extension de l’adressage physique-,"Physical Address Extension" (PAE) est une caractéristique des
microprocesseurs Intel® Pentium® Pro et suivants autorisant les configurations mémoires jusqu’à
64 gigaoctets. FreeBSD fournit un support pour cette caratéristique via l’option de configuration du
noyau PAE, disponible sous toutes les versions actuelles de FreeBSD. En raison des limitations de
l’architecture mémoire Intel®, aucune distinction n’est faite entre la mémoire au-dessus et en-
dessous de 4 gigaoctets. La mémoire allouée au-dessus de 4 gigaoctets est simplement ajoutée à
l’ensemble de la mémoire disponible.
Pour activer le support PAE dans le noyau, ajoutez simplement la ligne suivante dans votre fichier
de configuration du noyau:
237
options PAE
Le support PAE sous FreeBSD est uniquement disponible pour les processeurs IA-
32 d’Intel®. Il doit être noté que le support PAE sous FreeBSD n’a pas été
énormément testé, et devrait être considéré comme bêta comparé aux autres
fonctionnalités stables de FreeBSD.
• Les modules KLD ne peuvent être chargés dans un noyau avec PAE activé, en raison des
différences entre la structure d’un module et du noyau.
• Les pilotes de périphériques qui n’utilisent pas l’interface bus_dma(9) seront à l’origine de
corruption de données avec un noyau PAE et ne sont pas recommandés. Pour cette raison, le
fichier de configuration du noyau avec support PAE qui est fourni avec FreeBSD exclut tous les
pilotes connus pour ne pas fonctionner avec un noyau avec support PAE.
• Il pourra être nécessaire d’augmenter l’espace d’adressage virtuel du noyau ("kernel virtual
address"-KVA) ou de réduire le montant de la ressource spécifique du noyau qui est fortement
utilisée (voir plus haut) afin d’éviter l’épuisement de l’espace KVA. L’option du noyau KVA_PAGES
peut être employée pour augmenter l’espace KVA.
238
Vérifiez que la ligne est correctement écrite, en le comparant avec le noyau GENERIC ou une
autre référence.
Après avoir démarré avec un noyau en état de marche, vous pouvez revérifier votre fichier
de configuration et essayer de recompiler à nouveau votre noyau. Une ressource utile est le
fichier /var/log/messages qui enregistre, entre autres, tous les messages du noyau à chaque
démarrage réussi. En outre, la commande dmesg(8) affichera les messages du noyau pour le
dernier démarrage.
# mv /boot/kernel /boot/[Link]
# mv /boot/[Link] /boot/kernel
239
Chapitre 9. Imprimer
9.1. Synopsis
FreeBSD peut être utilisé pour imprimer sur une grande variété d’imprimantes, depuis la plus
ancienne des imprimantes matricielles jusqu’aux toutes dernières imprimantes laser, en passant
par tout ce qui peut exister entre les deux, et vous permet d’obtenir des impressions de haute
qualité avec les programmes que vous exécutez.
Il est également possible de configurer FreeBSD pour qu’il fasse office de serveur d’impression sur
un réseau; de cette manière FreeBSD peut recevoir des travaux d’impression ("jobs") en provenance
de différents ordinateurs, comprenant d’autres machines sous FreeBSD et des machines sous
Windows® ou Mac OS®. FreeBSD veillera à ce qu’un seul travail d’impression ne soit imprimé à la
fois, et pourra tenir des statistiques sur les utilisateurs et les machines lançant le plus
d’impressions, produire des pages d'"en-têtes" pour distinguer les impressions de chacun, et plus
encore.
• Comment installer des filtres d’impression, pour gérer des travaux d’impression particuliers de
manière différente, ce qui inclut la transformation de documents entrants en un format que vos
imprimantes comprennent.
• Comment inclure des en-têtes ou des pages bannière dans vos impressions.
• Comment gérer des restrictions d’impression, notamment comment limiter la taille des travaux
d’impression, et empêcher certains utilisateurs d’imprimer.
9.2. Introduction
Afin d’utiliser des imprimantes avec FreeBSD, vous avez la possibilité de les paramétrer pour
qu’elles utilisent le gestionnaire d’impression de Berkeley, également connu sous le nom de
gestionnaire d’impression LPD, ou tout simplement LPD. C’est le système contrôle d’imprimante par
défaut de FreeBSD. Ce chapitre présente LPD et vous assistera tout au long de sa configuration.
Si vous connaissez déjà LPD ou un autre système de gestion des impressions, vous pouvez
directement vous rendre à la section Paramétrage de base.
240
LPD contrôle tout ce qui relève des imprimantes. Il est responsable de plusieurs tâches:
• Il contrôle l’accès aux imprimantes directement connectées au système ainsi qu’à celles
connectées à d’autres machines via le réseau.
• Il permet aux utilisateurs de soumettre des fichiers à imprimer; ces requêtes sont connues sous
le nom de travaux.
• Il empêche l’accès simultané de plusieurs utilisateurs à une même imprimante, en gérant une
queue pour chaque imprimante.
• Il peut produire des pages d’en-tête (également connues sous le nom de pages bannières ou
encore cartouches) afin que les utilisateurs puissent facilement retrouver dans une pile
d’impressions celles correspondant aux travaux qu’ils ont soumis.
• Il s’occupe de paramétrer les communications lorsque les imprimantes sont connectées via un
port série.
• Il peut transmettre des travaux par réseau à un gestionnaire d’impression LPD situé sur une
autre machine.
• Il peut appliquer des filtres spéciaux afin d’assurer le formatage des travaux en fonction des
différents langages et caractéristiques des imprimantes.
Si vous êtes l’unique utilisateur de votre système, vous vous demandez sans doute pourquoi il vous
faudrait vous préoccuper du gestionnaire d’impression, alors que vous n’avez pas besoin de
contrôle d’accès, de pages d’en-tête ni de statistiques relatives à l’utilisation de l’imprimante. Quand
bien même il est possible de mettre en oeuvre l’accès direct à l’imprimante, vous devriez tout de
même utiliser le gestionnaire d’impression, parce que:
• LPD imprime les travaux en tâche de fond: vous n’êtes pas obligé d’attendre que les données
soient passées à l’imprimante.
• LPD peut commodément se charger d’appliquer des filtres à un travail pour adjoindre une en-
tête contenant la date et l’heure, ou convertir un fichier au format particulier (comme un fichier
DVI TeX) en un format que l’imprimante comprenne. Ainsi, vous n’aurez pas à vous charger de
ces manipulations à la main.
241
9.3. Configuration de base
Pour utiliser des imprimantes avec le gestionnaire d’impression, il vous faudra configurer à la fois
la partie matérielle (c’est à dire les imprimantes) et la partie logicielle (c’est à dire LPD). Ce
document présente deux niveaux de configuration:
Cette section vous apprendra à configurer l’imprimante et LPD. Elle présente les bases:
Si vous mettez en oeuvre une imprimante réceptionnant les données à imprimer via un protocole
réseau plutôt que par les interfaces locales de l’ordinateur, lisez la section Imprimantes avec des
interfaces utilisant des flux réseau.
Bien que cette section soit intitulée "Configuration simple de l’imprimante", elle s’avère en réalité
plutôt complexe. La partie la plus difficile consiste à faire fonctionner l’imprimante avec votre
ordinateur et LPD. Les options avancées telles les pages d’en-tête ou les statistiques sont
relativement faciles à mettre en oeuvre une fois que l’imprimante fonctionne.
Cette section détaille les différentes manières de connecter une imprimante à votre PC. Elle discute
les types de ports et de câbles, et de la configuration noyau dont vous pourriez avoir besoin afin
que FreeBSD puisse communiquer avec l’imprimante.
Si vous avez déjà connecté votre imprimante et réussi à imprimer sous un autre système
d’exploitation, vous pouvez probablement passer à la section Configuration logicielle.
Les imprimantes pour PC vendues aujourd’hui sont en général pourvues d’une ou plusieurs des
trois interfaces suivantes:
• Les interfaces série, également connues sous les noms RS-232 ou ports COM, utilisent un port
série sur votre ordinateur pour envoyer des données à l’imprimante. Les interfaces série sont
courantes, dans l’industrie informatique, et les câbles sont à la fois disponibles et faciles à
réaliser. Elles réclament parfois des câbles spéciaux et peuvent nécessiter le paramétrage
242
d’options de communication assez complexes. La plupart des ports série PC ont une vitesse de
transmission maximale de 115200 bps, ce qui rend l’impression de travaux comportant
beaucoup de graphismes malaisée.
• Les interfaces parallèles utilisent un port parallèle sur votre ordinateur pour envoyer des
données à l’imprimante. Les interfaces parallèles sont courantes dans l’industrie informatique
et plus rapides que les interfaces série RS-232. Les câbles sont disponibles mais sont moins
faciles à fabriquer à la main. En général, il n’y a aucune option de communication à paramétrer
avec ces interfaces, ce qui rend leur configuration particulièrement simple.
Les interfaces parallèles sont parfois appelées "Centronics", nom tiré du type de connecteur de
l’imprimante
• Les interfaces USB, tenant leur nom de "Universal Serial Bus", ou "Bus Série Universel",
s’avèrent plus véloces encore que les interfaces parallèles ou série RS-232. Les câbles sont
simples et peu onéreux. L’USB surpasse les interfaces série RS-232 et parallèles pour
l’impression, mais son support par les systèmes UNIX® n’est pas aussi bon. Une façon d’éviter
ce problème est d’acheter une imprimante qui dispose à la fois d’une interface USB et d’une
interface parallèle, comme beaucoup de modèles.
En règle générale, les interfaces parallèles n’offrent qu’une communication unidirectionnelle (de
l’ordinateur vers l’imprimante) alors que les interfaces série et USB permettent un échange
bidirectionnel. Les imprimantes et ports parallèles plus récents (EPP et ECP) peuvent communiquer
dans les deux sens sous FreeBSD lorsque l’on a recourt à un câble conforme à la norme IEEE-1284.
Les travaux PostScript® sont en fait des programmes envoyés à l’imprimante. Ils ne génèrent pas
nécessairement de sortie papier et peuvent retourner leurs résultats directement à l’ordinateur.
PostScript® utilise aussi la communication bidirectionnelle pour avertir l’ordinateur de problèmes,
comme des erreurs dans le programme PostScript® ou des bourrages papier. Vos utilisateurs
apprécieraient certainement de telles informations. De surcroît, la meilleure façon de tenir des
statistiques sérieusement avec une imprimante PostScript® nécessite la communication
bidirectionnelle: on demande à l’imprimante quel est son compteur de pages (combien en a-t-elle
imprimées depuis sa fabrication), puis on lui envoie le travail de l’utilisateur, enfin on lui
redemande son compteur de pages. La différence entre les deux valeurs donne la consommation de
papier que vous pouvez attribuer à cet utilisateur.
Pour raccorder une imprimante utilisant une interface parallèle, branchez le câble Centronics sur
l’imprimante et sur l’ordinateur. Les instructions accompagnant l’imprimante, l’ordinateur, ou les
deux, devraient parfaitement vous renseigner.
Souvenez-vous du port parallèle que vous avez utilisé sur l’ordinateur. Pour FreeBSD, le premier se
nomme ppc0; le deuxième, ppc1, et ainsi de suite. Le nom du fichier spécial de périphérique de
243
l’imprimante suit les mêmes règles: /dev/lpt0 pour celle connectée sur le premier port parallèle, etc.
Pour raccorder une imprimante utilisant une interface série, branchez le câble série adéquat sur
l’imprimante et sur l’ordinateur. Les instructions accompagnant l’imprimante, l’ordinateur, ou les
deux, devraient parfaitement vous renseigner.
Si vous n’êtes pas sûr de savoir quel est le bon câble, voici ce que vous pouvez essayer:
• Un câble modem relie chacune des broches du connecteur depuis l’une des extrémités du câble
directement à la broche lui correspondant dans le connecteur de l’autre extrémité. Ce type de
câble est également connu sous le nom de câble "DTE-to-DCE".
• Un câble null-modem relie certaines des broches directement, en intervertit d’autres (par
exemple, "émission de données" et "réception de données"), et en court-circuite d’autres en
interne sur chacun des sertissages des connecteurs. Ce type de câble est également connu sous
le nom de câble "DTE-to-DTE".
• Un câble série pour imprimante, requis par certaines imprimantes peu conventionnelles,
ressemble au câble null-modem, à ceci près qu’il envoie certains signaux à l’autre extrémité au
lieu de les court-circuiter en interne.
Vous devriez également définir les paramètres de communication pour l’imprimante, d’ordinaire
en utilisant les contrôles sur la face avant ou les commutateurs sur l’imprimante. Choisissez la
valeur la plus élevée de bps (bits par seconde, encore appelés "vitesse de transmission") autorisée
conjointement par votre ordinateur et votre imprimante. Choisissez 7 ou 8 bits de données; aucun
contrôle de parité ou un bit de parité paire ou impaire; et 1 ou 2 bits d’arrêt. Choisissez également
un protocole de contrôle de flux: soit aucun, soit XON/XOFF (également appelé "in-band", ou encore
"contrôle logiciel"). Retenez ces paramètres pour la configuration logicielle, dans la section qui suit.
Cette section détaille la configuration logicielle nécessaire pour imprimer sous FreeBSD avec le
gestionnaire d’impression LPD.
1. Configurez le noyau, si nécessaire, pour utiliser le port sur lequel vous raccorderez votre
imprimante; la section Configurer le noyau de FreeBSD vous donnera la marche à suivre.
Le noyau du système d’exploitation est compilé avec le support d’un certain ensemble de
244
périphériques. Les interfaces série ou parallèle de votre imprimante en font partie. De ce fait, vous
pourriez avoir à ajouter le support d’un port série ou parallèle supplémentaire si votre noyau n’a
pas déjà été configuré en ce sens.
Pour savoir si le support d’une interface série est activé dans le noyau que vous êtes en train
d’utiliser, entrez:
Il se pourrait que vous ayez à reconfigurer le noyau afin que le système détecte et puisse utiliser un
port parallèle ou série auquel vous avez connecté votre imprimante.
Pour ajouter le support d’un port série, voyez la section sur la configuration du noyau. Pour ajouter
le support du port parallèle, voyez cette même section et celle qui suit.
Lorsque vous utilisez l’interface parallèle, vous avez le choix entre deux modes de communication
avec l’imprimante: par interruption, ou par polling (interrogation régulière ou scrutation). Le pilote
d’imprimante générique (lpt(4)) de FreeBSD utilise le système ppbus(4), qui contrôle le chipset du
port via le pilote ppc(4).
• Le mode par interruption est le mode par défaut avec un noyau GENERIC. De cette manière, le
système d’exploitation utilise une ligne d’interruption (IRQ) pour déterminer si l’imprimante est
prête à recevoir des données.
245
• Le mode par scrutation enjoint au système d’exploitation d’interroger à intervalles réguliers
l’imprimante pour savoir si elle est prête à recevoir d’autres données. Lorsqu’elle répond par
l’affirmative, le noyau lui en envoie plus.
Le mode par interruption est en général nettement plus rapide, mais consomme une précieuse
ligne d’interruption (IRQ). On rapporte que certaines imprimantes HP récentes ne fonctionneraient
pas correctement en mode par interruption, apparemment à cause d’un problème (pas encore très
bien identifié) d’horloge. Ces imprimantes nécessitent le recours au mode par scrutation. Utilisez
celui des deux qui fonctionne. Certaines imprimantes fonctionnent dans les deux modes, mais
s’avèrent désagréablement lentes en mode par interruption.
1. Editez le fichier de configuration de votre noyau. Cherchez une entrée ppc0. Si vous voulez
configurer le deuxième port parallèle, cherchez plutôt ppc1. Ou ppc2 pour le troisième, et
ainsi de suite.
[Link]="N"
device ppc
◦ Si vous souhaitez activer le mode par scrutation, ôtez la ligne suivante de votre fichier
/boot/[Link]:
[Link]="N"
Dans certains cas, positionner le port en mode scrutation sous FreeBSD n’est pas
suffisant. La plupart du temps cela vient du pilote acpi(4), ce dernier étant capable de
sonder et d’attacher des périphériques, et donc de contrôler le mode d’accès au port de
l’imprimante. Vous devrez donc vérifier votre configuration acpi(4) pour résoudre ce
problème.
246
1. Entrez:
# lptcontrol -i -d /dev/lptN
2. Entrez:
# lptcontrol -p -d /dev/lptN
Vous pouvez placer ces commandes dans votre fichier /etc/[Link] pour sélectionner le mode à
chaque démarrage du système. Consultez lptcontrol(8) pour obtenir plus d’informations.
Avant de passer à la configuration du gestionnaire d’impression, vous devriez vous assurer que le
système d’exploitation fait parvenir avec succès des données à l’imprimante. Il est beaucoup plus
facile de déboguer séparément la communication avec l’imprimante et la configuration du
gestionnaire d’impression.
Pour tester l’imprimante, nous allons lui envoyer du texte. Pour les imprimantes qui peuvent
immédiatement imprimer les caractères qui leur sont envoyés, le programme lptest(1) est parfait: il
génère les 96 caractères ASCII imprimables sur 96 lignes.
Pour une imprimante PostScript® (ou basée sur un autre langage), il va nous falloir un test plus
sophistiqué. Un petit programme PostScript®, tel que celui qui suit, devrait suffire:
%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpage
Le code PostScript® ci-dessus peut être placé dans un fichier et utilisé comme indiqué dans les
exemples qui apparaissent dans les sections suivantes.
247
[Link].1. Tester une imprimante parallèle
Cette section vous apprendra à vérifier si FreeBSD peut communiquer avec une imprimante
connectée sur un port parallèle.
# lptest /dev/lptN
# cat /dev/lptN
Tapez ensuite le programme, ligne à ligne et attentivement, car vous ne pouvez plus
éditer une ligne une fois que vous avez appuyé sur la touche Retour Chariot ou Entrée.
Une fois terminé, faites CONTROL+D, ou la combinaison correspondant à votre fin de
fichier.
Une autre manière de procéder est de placer le programme dans un fichier et d’entrer:
Vous devriez voir quelque chose s’imprimer. Ne vous inquiétez pas si l’apparence du texte n’est pas
satisfaisante; nous remédierons à ce genre de soucis plus tard.
Dans cette section vous apprendrez à vérifier si FreeBSD parvient à communiquer avec une
imprimante connectée à un port série.
248
printer:dv=/dev/port:br#bps-rate:pa=parity
Où port représente le fichier de périphérique du port série (ttyd0, ttyd1, etc.), bps-rate
représente la vitesse en bits-par-seconde à laquelle l’imprimante communique, et parity
représente la parité réclamée par l’imprimante (even pour paire, odd pour impaire, none
pour aucune, ou zero pour zéro).
Voici un exemple d’entrée pour une imprimante connectée à 19200 bps, sans parité, sur le
troisième port série:
printer:dv=/dev/ttyd2:br#19200:pa=none
# tip printer
Si cette étape ne fonctionne pas, éditez le fichier /etc/remote à nouveau et essayez d’utiliser
/dev/cuaaN au lieu de /dev/ttydN.
% $lptest
Une autre manière de procéder est de placer le programme dans un fichier et d’entrer:
% >fichier
Où fichier est le nom du fichier contenant le programme. Après avoir envoyé le fichier
avec tip(1), appuyez sur la touche de fin de fichier appropriée.
Vous devriez voir quelque chose s’imprimer. Ne vous inquiétez pas si l’apparence du texte n’est pas
satisfaisante; nous remédierons à ce genre de soucis plus tard.
249
[Link]. Mettre en place le gestionnaire d’impression: le fichier /etc/printcap
A ce stade, votre imprimante doit être branchée, votre noyau configuré pour communiquer avec
elle (si cela est nécessaire); et vous avez réussi à faire parvenir des données simples à l’imprimante.
Nous sommes maintenant prêts à paramétrer LPD pour qu’il contrôle l’accès à l’imprimante.
Le format du fichier printcap(5) est explicite. Utilisez votre éditeur favori pour modifier
/etc/printcap. Le format est identique aux autres fichiers de configuration comme
/usr/shared/misc/termcap et /etc/remote. Pour obtenir des informations complètes concernant ce
format, consultez cgetent(3).
1. Choisissez un nom (et quelques alias appropriés) pour l’imprimante, et placez-les dans
/etc/printcap; lisez la section Nommer l’imprimante pour plus d’informations sur le
nommage.
2. Désactivez les pages d’en-tête (elles sont activées par défaut) en insérant le paramètre sh;
lisez la section Supprimer les pages d’en-tête pour plus d’informations.
3. Créez un répertoire de file d’attente, et précisez son chemin d’accès avec le paramètre sd;
lisez la section Créer le répertoire de fil d’attente pour obtenir plus d’informations.
4. Sélectionnez l’entrée dev à utiliser pour l’imprimante, et notez la dans /etc/printcap avec le
paramètre lp; lisez la section Identifier le périphérique d’imprimante pour obtenir plus
d’informations. De plus, si l’imprimante est reliée par un port série, précisez les
paramètres de communication avec le paramètre ms#, qui est détaillé dans la section
Configurer les paramètres de communication du gestionnaire d’impression.
5. Installez un filtre d’entrée sous forme de fichier texte simple; lisez la section Installer le
filtre texte pour obtenir plus de détails.
Les utilisateurs s’attendent souvent à pouvoir imprimer du texte simple sur n’importe laquelle des
imprimante installées sur votre système. Les applications qui s’en remettent à LPD pour imprimer
s’y attendent en général elles aussi. Si vous installez ce genre d’imprimante et désirez pouvoir
imprimer à la fois des travaux dans le langage de l’imprimante et des travaux en texte simple, vous
êtes instamment prié d’ajouter une étape supplémentaire à la configuration simple esquissée ci-
250
dessus: installez un programme de conversion automatique texte simple vers PostScript® (ou tout
autre langage d’imprimante). La section Prendre en charge des travaux texte sur des imprimantes
PostScript® vous apprendra à le faire.
La première étape (facile) est de choisir un nom pour l’imprimante. Que vous choisissiez un nom
fonctionnel ou fantaisiste n’a aucune importance puisque vous pouvez également fournir une série
d’alias.
Au moins l’une des imprimantes définies dans le fichier /etc/printcap devrait avoir pour alias lp.
C’est le nom de l’imprimante par défaut. Si les utilisateurs n’ont pas positionné la variable
d’environnement PRINTER et ne spécifient pas le nom d’une imprimante lorsqu’ils utilisent une ligne
de commande relative à LPD, lp sera l’imprimante par défaut utilisée.
Par ailleurs, l’usage commun veut que le dernier alias d’une imprimante en soit une description
complète, en incluant le fabricant et le modèle.
Une fois le nom et des alias communs choisis, placez-les dans le fichier /etc/printcap. Le nom de
l’imprimante devrait commencer dans la colonne la plus à gauche. Séparez chaque alias par une
barre verticale et mettez le caractère deux-points après le dernier alias.
Dans l’exemple suivant, nous commençons avec le squelette d’un /etc/printcap qui définit deux
imprimantes (une Diablo 630 et une imprimante PostScript® laser Panasonic KX-P4455):
#
# /etc/printcap for host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
Dans cet exemple, la première imprimante se nomme rattan et possède les alias suivants: line,
diablo, lp et Diablo 630 Line Printer. Puisque l’alias lp lui est attribué, elle est également
l’imprimante par défaut. La seconde s’appelle bamboo et possède les alias suivants: ps, PS, S,
panasonic et Panasonic KX-P4455 PostScript v51.4.
Par défaut, le gestionnaire d’impression LPD imprime une page d’en-tête pour chaque impression.
Celle-ci mentionne le nom de l’utilisateur qui a demandé l’impression, la machine qui l’a envoyé, et
le nom de l’impression, en grands et jolis caractères. Malheureusement, tout ce texte
supplémentaire parasite le débogage d’une configuration simple de l’imprimante, aussi
supprimerons-nous ces pages d’en-têtes.
Pour cela, ajoutez le paramètre sh à l’entrée de l’imprimante dans /etc/printcap. Voici un exemple
de /etc/printcap où sh a été ajouté:
251
# /etc/printcap for host rose - no header pages anywhere
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
Observez la façon dont nous avons respecté le format correct: la première ligne commence dans la
colonne la plus à gauche, et les lignes suivantes sont indentées. Toutes les lignes d’une entrée sauf
la dernière se terminent par un antislash.
A cause de la nature variable des répertoires de file d’attente, il est d’usage de les placer dans
/var/spool. Il n’est pas non plus nécessaire de sauvegarder leur contenu. Les recréer est aussi simple
que de faire un mkdir(1).
Il est également d’usage de créer le répertoire avec un nom identique à celui de l’imprimante,
comme dans l’exemple ci-dessous:
# mkdir /var/spool/nom-de-l-imprimante
Toutefois, si votre réseau comporte beaucoup d’imprimantes, vous pouvez préférer placer les
répertoires de file d’attente dans un unique répertoire que vous réserverez à l’impression avec
LPD. C’est ce que nous allons faire pour les deux imprimantes de notre exemple, rattan et bamboo:
# mkdir /var/spool/lpd
# mkdir /var/spool/lpd/rattan
# mkdir /var/spool/lpd/bamboo
Si la confidentialité des travaux imprimés par les utilisateurs vous importe, vous
souhaiterez certainement protéger le répertoire de file d’attente afin qu’il ne soit
pas accessible par tout le monde. Les répertoires de file d’attente doivent
appartenir, être accessibles en lecture et écriture et pouvoir être parcourus par
l’utilisateur daemon et le groupe daemon, et personne d’autre. C’est ce que nous allons
faire pour les deux imprimantes de notre exemple:
252
# chmod 770 /var/spool/lpd/bamboo
Pour finir, vous devez avertir LPD de l’existence de ces répertoires en utilisant le fichier
/etc/printcap. Vous spécifiez le chemin du répertoire file d’attente avec le paramètre sd:
#
# /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
Notez que le nom de l’imprimante commence dans la première colonne mais que toutes les autres
entrées décrivant l’imprimante doivent être indentées et que chaque fin de ligne doit être protégée
par un antislash.
Si vous ne précisez pas de répertoire de file d’attente avec sd, le gestionnaire d’impression utilisera
/var/spool/lpd par défaut.
Dans la section Entrées des périphériques nous avons identifié l’entrée du répertoire /dev que
FreeBSD utiliserait pour communiquer avec l’imprimante. Maintenant, nous allons passer cette
information à LPD. Quand le gestionnaire d’impression aura une impression à effectuer, il ouvrira
le périphérique spécifié au nom du programme de filtre (qui est responsable de la transmission des
données à l’imprimante).
Positionnez l’entrée pour le chemin d’accès /dev dans le fichier /etc/printcap en utilisant le
paramètre lp.
Dans notre exemple, supposons que rattan est sur le premier port parallèle, et que bamboo est sur un
sixième port série; voici les ajouts à apporter à /etc/printcap:
#
# /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:
Si dans votre /etc/printcap vous ne précisez pas le paramètre lp pour une imprimante, LPD utilisera
253
/dev/lp par défaut. A l’heure actuelle, il n’existe pas d’entrée /dev/lp sous FreeBSD.
Si l’imprimante que vous êtes en train d’installer est connectée à un port parallèle, vous pouvez
directement vous rendre à la section Installer le filtre texte. Sinon, assurez-vous de suivre les
instructions de la section qui suit.
Pour les imprimantes connectées au port série, LPD peut configurer la vitesse en bps, la parité, et
d’autres paramètres de communication série, pour le compte du programme de filtre qui envoie les
données à l’imprimante. C’est avantageux dans la mesure où:
• Cela vous laisse essayer divers paramètres simplement en éditant le fichier /etc/printcap; vous
n’avez pas besoin de recompiler le programme de filtre.
Les paramètres /etc/printcap suivants contrôlent les options de communication série pour le
périphérique spécifié dans le paramètre lp:
br#vitesse-bps
Positionne la vitesse de transmission du périphérique à vitesse-bps, où vitesse-bps peut prendre
l’une des valeurs suivantes: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600,
19200, 38400, 57600, ou 115200 bits par seconde.
ms#stty-mode
Positionne les options du périphérique de terminal après l’avoir ouvert. stty(1) présente les
options disponibles.
Quand LPD ouvre le périphérique spécifié par le paramètre lp, il positionne les caractéristiques de
ce périphérique aux valeurs précisées par le paramètre ms#. Les modes suivants, détaillés dans
stty(1) sont particulièrement intéressants: parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts, et ixon.
Peaufinons notre exemple pour l’imprimante qui est connectée au sixième port série. Nous allons
paramétrer sa vitesse à 38400 bps. Quant au mode, nous allons spécifier aucune parité avec -parenb,
des caractères 8 bits avec cs8, aucun contrôle modem avec clocal et un contrôle de flux matériel
avec crtscts:
Nous sommes maintenant en mesure de dire à LPD quel filtre texte utiliser pour envoyer les
travaux à l’imprimante. Un filtre texte, également connu sous le nom de filtre d’entrée, est un
programme que LPD lance lorsqu’il a une impression à effectuer. Lorsque LPD exécute le filtre
texte pour une imprimante, il redirige l’entrée standard du filtre sur le travail d’impression, et la
254
sortie standard sur le fichier spécial de périphérique spécifié par le paramètre lp. On attend du
filtre qu’il lise le travail d’impression sur son entrée standard, effectue les transformations
nécessaires pour l’imprimante, et écrive le résultat sur sa sortie standard, qui sera imprimée. Pour
plus d’informations sur les filtres texte, lisez la section Filtres.
Pour notre configuration simple de l’imprimante, le filtre texte peut être une petite procédure
d’interpréteur de commandes qui ne fera qu’exécuter /bin/cat pour envoyer le travail d’impression
à l’imprimante. Un autre filtre est livré avec FreeBSD, nommé lpf, qui se charge de faire des
suppressions arrière et des soulignements pour les imprimantes qui ne sauraient pas gérer
correctement ce genre de flux de caractères. Et bien sûr, vous pouvez utiliser un autre filtre, quel
qu’il soit. Le filtre lpf est détaillé dans la section lpf: un filtre texte.
Tout d’abord, composons le filtre /usr/local/libexec/if-simple qui sera un simple filtre texte. Ecrivez
ceci avec votre éditeur de texte favori:
#!/bin/sh
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout. Ignores all filter arguments.
/bin/cat exit 0
exit 2
Et avertissez LPD qu’il doit l’utiliser, en renseignant le paramètre if dans /etc/printcap. Nous
l’ajouterons aux deux imprimantes utilisées jusqu’ici dans notre /etc/printcap d’exemple:
#
# /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
255
[Link].7. Lancer LPD
lpd(8) se lance depuis /etc/rc, avec la variable de contrôle lpd_enable. Cette variable a NO pour valeur
par défaut. Si vous ne l’avez pas déjà fait, ajoutez la ligne:
lpd_enable="YES"
# lpd
Vous avez achevé la configuration simple de LPD. Malheureusement, les félicitations ne sont pas
encore à l’ordre du jour, puisque nous devons encore tester la configuration et résoudre tout
problème. Pour tester la configuration, essayez d’imprimer quelque chose. Pour imprimer avec le
système LPD, vous devez utiliser la commande lpr(1), qui soumet un travail d’impression.
Vous pouvez combiner lpr(1) au programme lptest(1), que nous avons présenté à la section Vérifier
la communication avec l’imprimante, pour produire du texte de test.
Entrez:
Où nom-de-l-imprimante représente le nom (ou l’alias) d’une imprimante tel que spécifié dans
/etc/printcap. Pour tester l’imprimante par défaut, tapez lpr(1) sans aucun argument -P. Encore une
fois, si vous faites ce test avec une imprimante qui s’attend à recevoir du PostScript®, envoyez un
programme PostScript® au lieu d’employer lptest(1). Vous pouvez le faire en plaçant le programme
dans un fichier et en entrant lpr fichier.
Pour une imprimante PostScript®, vous devriez obtenir le résultat du programme. Si vous utilisez
lptest(1), alors votre sortie devrait ressembler à ça:
!"#$%'()*+,-./01234
"#$%'()*+,-./012345
#$%'()*+,-./0123456
$%'()*+,-./01234567
%'()*+,-./012345678
Pour tester l’imprimante plus encore, téléchargez des programmes (pour les imprimantes basées
sur un langage spécifique) plus longs, ou lancez lptest(1) avec des arguments différents. Par
exemple, lptest 80 60 produira 60 lignes de 80 caractères chacune.
256
Si l’impression ne fonctionne pas, lisez la section Résolution des problèmes.
Bien que LPD gère les protocoles réseaux, les files d’attente, le contrôle d’accès et d’autres aspects
de l’impression, la plus grande partie du véritable travail intervient dans les filtres. Les filtres sont
des programmes qui communiquent avec l’imprimante et gèrent ses dépendances matérielles ainsi
que ses besoins particuliers. Dans la configuration simple de l’imprimante, nous avons installé un
filtre texte simple- un filtre particulièrement basique qui devrait fonctionner avec la plupart des
imprimantes (voir la section Installer le filtre texte).
Par ailleurs, il en est un livré avec FreeBSD, /usr/libexec/lpr/lpf, qui fonctionne avec beaucoup
d’imprimantes capables d’imprimer du texte brut. (Il gère les retours arrière et les tabulations dans
le fichier, effectue une comptabilisation, mais c’est à peu près tout). Vous trouverez également
d’autres filtres et composants de filtres dans le catalogue des logiciels portés de FreeBSD.
• La section Fonctionnement des filtres tâche de donner une vue générale du rôle des filtres dans
le processus d’impression. Il vous faut lire cette section pour comprendre ce qui se passe "sous
le capot" lorsque LPD utilise des filtres. Cette connaissance vous permettra d’anticiper et de
résoudre les problèmes que vous pourriez rencontrer quand vous installerez de plus en plus de
filtres pour chacune de vos imprimantes.
• LPD s’attend à ce que toutes les imprimantes sachent imprimer du texte brut par défaut. Cela
pose un problème pour les imprimantes PostScript® (ou les imprimantes basées sur un autre
langage) qui ne peut pas imprimer du texte brut directement. La section Gérer les travaux
d’impression de texte brut sur des imprimantes PostScript® vous indique la marche à suivre
pour résoudre ce problème. Vous devrez lire cette section si vous avez une imprimante
PostScript®.
• PostScript® est un format de sortie courant pour beaucoup d’applications. Certaines personnes
écrivent même du code PostScript® directement. Malheureusement, les imprimantes
PostScript® sont onéreuses. La section Emuler du PostScript® sur les imprimantes non-
PostScript® vous indiquera comment modifier un filtre texte pour qu’une imprimante non-
PostScript® accepte et imprime du PostScript®. Vous devrez lire cette section si vous ne
disposez pas d’une imprimante PostScript®.
257
• La section Filtres de conversion vous apprendra à automatiser la conversion de formats de
fichiers spécifiques, comme des graphiques ou des données de composition, en formats
compréhensibles par l’imprimante. Après avoir lu cette section, vous serez en mesure de
configurer vos imprimantes de telle sorte que vos utilisateurs pourront entrer la commande lpr
-t pour imprimer du troff, ou lpr -d pour imprimer le format DVI produit par TeX, ou lpr -v
pour imprimer des images en mode point, etc. Nous recommandons la lecture de cette section.
• La section Filtres de sortie révèle tout d’une fonctionnalité peu utilisée de LPD: les filtres de
sortie. A moins que vous n’imprimiez des pages d’en-têtes (voir la section Pages d’en-tête), vous
pouvez probablement complètement ignorer cette section.
• La section lpf: un filtre texte détaille lpf, un filtre texte destiné aux imprimantes en ligne (et aux
imprimantes laser se comportant comme telles) plutôt complet malgré sa simplicité, et livré
avec FreeBSD. Si vous avez besoin de mettre rapidement en place la comptabilisation de
l’utilisation de l’imprimante pour du texte brut, ou si vous avez une imprimante qui fume
lorsqu’elle voit passer des caractères de retour arrière, vous devez vraiment penser à lpf.
Une copie des différents scripts présentés ci-dessous se trouve dans le répertoire
/usr/shared/examples/printing.
Comme expliqué précédemment, un filtre est un programme exécutable lancé par LPD pour gérer
la partie de la communication avec l’imprimante qui est dépendante du périphérique.
Lorsque LPD veut imprimer un fichier d’un travail d’impression, il lance un programme de filtre. Il
redirige l’entrée standard du filtre sur le fichier à imprimer, sa sortie standard vers l’imprimante,
et l’erreur standard vers le fichier journal des erreurs (spécifié dans le paramètre lf du fichier
/etc/printcap, ou /dev/console par défaut).
Le filtre lancé par LPD ainsi que les paramètres qui lui sont donnés dépendent de ce qui est placé
dans le fichier /etc/printcap et des paramètres que l’utilisateur a passé sur la ligne de commande
lpr(1) pour ce travail d’impression. Par exemple, si l’utilisateur a entré lpr -t, LPD aurait lancé le
filtre troff, précisé par la paramètre tf pour l’imprimante de destination. Si l’utilisateur veut
imprimer du texte brut, il lancerait le filtre if (c’est vrai la plupart du temps: lisez la section Filtres
de sortie pour plus de détails).
Il existe trois types de filtres que vous pouvez spécifier dans /etc/printcap:
• Le filtre texte, confusément appelé filtre d’entrée dans la documentation LPD, gère l’impression
de texte classique. Considérez-le comme le filtre par défaut. LPD s’attend à ce que toutes les
imprimantes sachent imprimer du texte brut par défaut, et c’est au filtre texte de s’assurer que
les retours arrière, tabulations et autres caractères spéciaux ne trompent pas l’imprimante. Si
vous êtes dans un environnement où il vous faut rendre compte de l’utilisation de l’imprimante,
le filtre texte doit également comptabiliser les pages imprimées, généralement en comptant le
nombre de lignes imprimées et en le comparant avec le nombre de lignes par page supporté par
l’imprimante. Le filtre texte est exécuté avec la liste de paramètres suivante:
258
où
-c
apparaît si le travail d’impression est lancé par la commande lpr -l
largeur
est la valeur du paramètre pw ("page width", pour "largeur de page") spécifié dans
/etc/printcap, et possédant la valeur par défaut 132.
hauteur
est la valeur du paramètre pl ("page length", pour "hauteur de page"), par défaut: 66.
indentation
est le nombre d’indentations inséré par lpr -i, par défaut: 0.
utilisateur
est le nom du compte de l’utilisateur imprimant le fichier.
machine
est le nom de la machine depuis laquelle le travail d’impression a été soumis.
fichier_comptabilité
est le nom du fichier de comptabilisation spécifié par le paramètre af.
• Le filtre de sortie n’est utilisé que s’il n’y a pas de filtre texte, ou si les pages d’en-tête ont été
activées. D’après notre expérience, les filtres de sortie sont rarement employés. La section
Filtres de sortie les détaillera. Un filtre de sortie ne prend que deux paramètres:
exit 0
Si le filtre a imprimé avec succès le fichier.
259
exit 1
Si le filtre n’a pu imprimer le fichier, mais désire que LPD essaie de l’imprimer à nouveau. LPD
relancera un filtre s’il retourne avec ce code.
exit 2
Si le filtre n’a pu imprimer le fichier et ne veut pas que LPD retente l’impression. LPD rejettera le
fichier.
Le filtre texte livré avec FreeBSD, /usr/libexec/lpr/lpf, tire parti des paramètres de largeur et
hauteur de page pour savoir quand envoyer une instruction de saut de page et comment
comptabiliser l’utilisation de l’imprimante. Il utilise les paramètres nom d’utilisateur, nom de
machine, et fichier de comptabilisation pour enregistrer les entrées concernant la consommation.
Si vous recherchez des filtres, prenez garde à ce qu’ils soient compatibles avec LPD. Si c’est le cas,
ils doivent se conformer à la liste de paramètres décrite ci-dessus. Si vous songez à écrire des filtres
à usage général, alors faites en sorte qu’ils se conforment à ces mêmes listes de paramètres et de
codes de retour.
[Link]. Gérer les travaux d’impression de texte brut sur des imprimantes PostScript®
Si vous êtes l’unique utilisateur de votre ordinateur et de votre imprimante PostScript® (ou basée
sur un autre langage), et que vous promettez de ne jamais envoyer de texte brut à votre
imprimante et de ne jamais utiliser les fonctionnalités des divers programmes qui voudraient lui en
envoyer, alors vous pouvez tout à fait passer cette section l’esprit tranquille.
Toutefois, si vous désirez envoyer du PostScript® et du texte brut à l’imprimante, alors vous êtes
instamment priés de compléter la configuration de votre imprimante. Pour ce faire, nous
chargerons le filtre texte de détecter si le travail d’impression est du texte brut ou du PostScript®.
Tous les travaux d’impression PostScript® doivent débuter par %! (en ce qui concerne les autres
langages, référez-vous à la documentation de l’imprimante). Si ces deux caractères sont les deux
premiers du travail d’impression, il s’agit de PostScript® et le reste du travail d’impression peut
être passé directement à l’imprimante. Dans le cas contraire, alors le filtre convertit le texte en
PostScript® et imprime le résultat.
Comment procéder?
Si vous disposez d’une imprimante série, une bonne façon de faire est d’installer lprps. Il s’agit d’un
filtre d’impression PostScript® qui assure une communication en duplex avec l’imprimante. Il met
à jour le fichier d’état de l’imprimante avec des informations détaillées que cette dernière lui
fournit, de sorte que les utilisateurs et les administrateurs puissent connaître précisément l’état de
l’imprimante (par exemple niveau de toner bas ou bourrage papier). Mais plus important encore, il
inclut un programme nommé psif qui détecte si le travail d’impression qui vient d’arriver est du
texte brut et lance textps (un autre programme fourni avec lprps) pour le convertir en PostScript®.
Il utilise alors lprps pour envoyer le travail d’impression à l’imprimante.
lprps fait partie du catalogue des logiciels portés FreeBSD (lisez la section Le catalogue des logiciels
portés). Vous pouvez installer un des deux logiciels portés print/lprps-a4 et print/lprps-letter en
fonction du format de papier utilisé. Après avoir installé lprps, précisez simplement le chemin vers
le programme psif qui fait partie de lprps. Si vous avez installé lprps en recourant au catalogue des
260
logiciels portés, placez les valeurs suivantes pour l’entrée de l’imprimante série PostScript® dans
/etc/printcap:
:if=/usr/local/libexec/psif:
Vous devrez également renseigner le paramètre rw qui indique à LPD de requérir l’imprimante en
mode lecture/écriture.
Si vous disposez d’une imprimante PostScript® parallèle (et ne pouvez donc pas utiliser la
communication en duplex avec l’imprimante dont a besoin lprps), vous pouvez recourir à la
procédure suivante en tant que filtre texte:
#!/bin/sh
#
# psif - Imprime du PostScript ou du texte brut sur une imprimante PostScript
# Version script; CECI N'EST PAS la version fournie avec lprps
# Fichier /usr/local/libexec/psif
#
Dans la procédure ci-dessus, textps est un programme que nous avons installé séparément pour
convertir du texte en PostScript®. Vous pouvez recourir à n’importe quel programme texte-vers-
PostScript®, selon votre désir. Le catalogue des logiciels portés de FreeBSD (voir la section Le
catalogue des logiciels portés) comprend un programme de conversion texte-vers-PostScript®
complet nommée a2ps, qui pourrait vous intéresser.
PostScript® est le standard de fait pour l’impression et la composition de haute qualité. Cependant,
PostScript® est un standard onéreux. Heureusement, Aladdin Enterprises propose un succédané
gratuit de PostScript® nommé Ghostscript qui fonctionne sous FreeBSD. Ghostscript peut lire la
majorité des fichiers PostScript® et peut produire leurs pages sur une diversité de périphériques,
261
incluant beaucoup de marques d’imprimantes non-PostScript®. En installant Ghostscript et en
recourant à un filtre texte spécial, vous pouvez obtenir de votre imprimante non-PostScript®
qu’elle se comporte comme une véritable imprimante PostScript®.
Ghostscript fait partie du catalogue des logiciels portés, de nombreuses versions sont disponibles, la
version la plus couramment utilisée est print/ghostscript-gpl.
Pour émuler du PostScript®, il nous faut faire en sorte que le filtre texte détecte s’il imprime un
fichier PostScript®. Si ce n’est pas le cas, alors le filtre doit passer le fichier directement à
l’imprimante; sinon il recourra à Ghostscript pour tout d’abord le convertir dans un format que
l’imprimante saura interpréter.
Voici un exemple: la procédure suivante est un filtre texte pour les imprimantes Hewlett Packard
Deskjet 500. Pour d’autres modèles, changez le paramètre -sDEVICE de la commande gs
(Ghostscript). (Entrez gs -h pour obtenir une liste des périphériques reconnus par l’installation
actuelle de Ghostscript).
#!/bin/sh
#
# ifhp - Imprime du PostScript émulé par Ghostscript sur une DeskJet 500
# Fichier /usr/local/libexec/ifhp
#
# Traite LF comme CR+LF (pour éviter l'"effet d'escalier" sur les
# imprimantes HP/PCL):
#
printf "\033k2G" || exit 2
#
# Lit les deux premiers caractères du fichier
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
262
exit 2
Pour finir, vous devez communiquer à LPD le filtre utilisé en positionnant le paramètre if:
:if=/usr/local/libexec/ifhp:
Voilà. Vous pouvez entrer lpr [Link] et lpr [Link], et chacune des deux commandes
devrait imprimer avec succès.
Après avoir mené à bien la configuration basique décrite à la section Configuration simple de
l’imprimante, la première chose que vous souhaiterez probablement faire sera d’installer des filtres
de conversion pour vos formats de fichiers favoris (le simple texte ASCII mis à part).
Les filtres de conversion facilitent l’impression de différentes sortes de fichiers. Par exemple,
supposons que nous travaillions énormément avec le système de composition TeX, et que nous
ayons une imprimante PostScript®. Chaque fois que nous générerons un fichier DVI à partir de
TeX, nous ne pouvons l’imprimer directement avant d’avoir converti ce fichier DVI en PostScript®.
La séquence de commandes serait la suivante:
% dvips [Link]
% lpr [Link]
En installant un filtre de conversion pour fichiers DVI, nous pouvons à chaque fois nous passer de
l’étape de conversion manuelle en chargeant LPD de le faire à notre place. Maintenant, à chaque
fois que nous avons un fichier DVI, nous ne sommes plus qu’à un pas de l’impression:
% lpr -d [Link]
Nous faisons en sorte que LPD se charge de la conversion du fichier DVI à notre place en
positionnant l’option -d. La section Options de conversion et de formatage donne la liste des options
de conversion.
Pour chacune des options de conversion que vous voulez faire accepter par une imprimante,
installez un filtre de conversion et indiquez son chemin d’accès dans /etc/printcap. Un filtre de
conversion ressemble au filtre texte de notre configuration de base (voir la section Installer le filtre
texte), à ceci près qu’au lieu d’imprimer du texte brut, le filtre convertit le fichier en un format
compréhensible par l’imprimante.
Vous devez installer les filtres de conversion que vous vous attendez à utiliser. Si vous imprimez
beaucoup de données DVI, alors un filtre de conversion DVI est dans la logique des choses. Si vous
263
devez imprimer beaucoup de troff, alors vous aurez sûrement besoin d’un filtre troff.
Le tableau suivant récapitule les filtres avec lesquels LPD fonctionne, leurs paramètres
/etc/printcap, et comment les invoquer avec la lpr:
cifplot cf -c
DVI df -d
plot gf -g
ditroff nf -n
code FORTRAN rf -f
troff tf -f
Dans notre exemple, utiliser lpr -d veut dire que l’imprimante a besoin du paramètre df dans
l’entrée /etc/printcap la concernant.
Aussi fortement que certains puissent s’en émouvoir, des formats comme le code FORTRAN ou le
plot sont probablement obsolètes. Sur votre site, vous pouvez attribuer de nouvelles significations à
ces options ou à toute autre option de formatage en installant simplement des filtres personnalisés.
Par exemple, supposons que vous aimeriez imprimer des fichiers Printerleaf directement (fichiers
issus du programme de publication assistée par ordinateur Interleaf), mais jamais de fichiers plot.
Vous pourriez alors installer un filtre de conversion Printerleaf sous le paramètre gf et ensuite
informer vos utilisateurs que lpr -g veut dire "imprimer des fichiers Printerleaf".
Etant donné que les filtres de conversion sont des applications qui ne font pas partie du système
FreeBSD de base, vous devriez les installer dans /usr/local. Le répertoire /usr/local/libexec est une
destination de choix, car ce sont des programmes spécialisés que seul LPD lancera; les utilisateurs
ordinaires ne devraient jamais avoir à les lancer.
Pour activer un filtre de conversion, précisez son chemin d’accès dans le paramètre relatif à
l’imprimante de destination dans /etc/printcap.
Dans notre exemple, nous allons ajouter le filtre de conversion DVI pour l’imprimante nommée
bamboo. Revoici le fichier /etc/printcap d’exemple, avec le nouveau paramètre df pour l’imprimante
bamboo:
#
# /etc/printcap pour la machine rose - ajout du filtre df pour bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
264
:if=/usr/local/libexec/if-simple:
#!/bin/sh
#
# psdf - filtre DVI vers imprimante PostScript
# Fichier /usr/local/libexec/psdf
#
# Appelé par lpd quand l'utilisateur lance lpr -d
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"
Cette procédure lance dvips en mode filtre (cela correspond au paramètre -f) sur l’entrée standard,
qui est le travail d’impression à exécuter. Ensuite, elle lance le filtre pour imprimante PostScript®
lprps (voir la section Gérer les travaux d’impression de texte brut sur des imprimantes PostScript®)
avec les paramètres que LPD lui a passés. Le programme lprps utilisera ces paramètres pour
comptabiliser les pages imprimées.
Il n’existe pas de procédure figée pour l’installation des filtres de conversion, des exemples
fonctionnels sont présentés dans cette section. Inspirez-vous de ces exemples pour créer vos
propres filtres. Utilisez les tels quels s’il s’avèrent adéquats.
Cet exemple présente un filtre de conversion d’image en mode point (en fait un fichier GIF) pour
une imprimante Hewlett-Packard LaserJet III-Si:
#!/bin/sh
#
# hpvf - Convertit des fichiers GIF en HP/PCL, puis les imprime
# Fichier /usr/local/libexec/hpvf
Son fonctionnement est le suivant: il convertit le fichier GIF en un format portable universel, puis
en format portable en niveau de gris, et ensuite en bitmap portable, qu’il convertit enfin en
données compatibles LaserJet/PCL.
265
Voici le /etc/printcap comportant une entrée pour une imprimante recourant au filtre ci-dessus:
#
# /etc/printcap pour la machine orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:
La procédure suivante est un filtre de conversion de données troff du système de composition groff
pour l’imprimante PostScript® bamboo:
#!/bin/sh
#
# pstf - Convertit des données troff de groff en PS, puis imprime.
# Fichier /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"
La procédure ci-dessus emploie de nouveau lprps pour gérer la communication avec l’imprimante.
S’il s’agissait d’une imprimante sur port parallèle, nous utiliserions plutôt la procédure suivante:
#!/bin/sh
#
# pstf - Convertit des données troff de groff en PS, puis imprime.
# Fichier /usr/local/libexec/pstf
#
exec grops
C’est tout. Voici l’entrée qu’il faut ajouter dans /etc/printcap pour activer le filtre:
:tf=/usr/local/libexec/pstf:
Voici un exemple qui pourrait faire rougir les vieux briscards de FORTRAN. C’est un filtre de code
FORTRAN pour toute imprimante sachant imprimer du texte brut. Nous l’installerons pour
l’imprimante teak:
#!/bin/sh
#
# hprf - filtre texte FORTRAN pour LaserJet 3si:
# Fichier /usr/local/libexec/hprf
#
266
exit 0
exit 2
Et nous ajouterons cette ligne dans /etc/printcap pour l’imprimante teak afin d’activer le filtre:
:rf=/usr/local/libexec/hprf:
Voici un dernier exemple, quelque peu complexe. Nous allons ajouter un filtre DVI pour
l’imprimante LaserJet teak présentée ci-dessus. Tout d’abord, la partie facile: mettre à jour
/etc/printcap avec l’emplacement du filtre DVI:
:df=/usr/local/libexec/hpdf:
Et maintenant, la partie difficile: écrire le filtre. Pour cela, nous avons besoin d’un programme de
conversion DVI-vers-LaserJet/PCL. Le catalogue des logiciels portés (voyez la section Le catalogue
des logiciels portés) en possède un: print/dvi2xx. Installer ce logiciel porté nous fournira le
programme dont nous avons besoin, dvilj2p, qui convertit le DVI en code compatible LaserJet IIp,
LaserJet III et LaserJet 2000.
L’utilitaire dvilj2p rend le filtre hpdf assez complexe, parce que dvilj2p ne sait pas lire l’entrée
standard. Il lui faut un nom de fichier. Pire encore, le nom du fichier doit se terminer par .dvi, ce
qui rend l’utilisation de /dev/fd/0 pour l’entrée standard problématique. Nous pouvons contourner
cette difficulté en créant un lien symbolique temporaire (se terminant par .dvi) pointant vers
/dev/fd/0, obligeant ainsi dvilj2p à lire l’entrée standard.
Le seul petit accroc restant est que nous ne pouvons pas utiliser /tmp pour le lien temporaire. Les
liens symboliques ont pour propriétaire l’utilisateur et le group bin. Le filtre est lancé sous
l’utilisateur daemon. Et le bit "sticky" est positionné sur le répertoire /tmp. Le filtre peut créer le lien,
mais il ne pourra pas nettoyer lorsqu’il aura fini et supprimer ce lien puisqu’il appartient à un
utilisateur différent.
Au lieu de ça, le filtre créera le lien dans le répertoire courant, qui est le répertoire de la file
d’attente des travaux d’impression (précisé par le paramètre sd dans /etc/printcap). C’est l’endroit
idéal pour faire travailler les filtres, particulièrement parce qu’il y a (parfois) plus d’espace disque
libre dans ce répertoire que sous /tmp.
#!/bin/sh
#
# hpdf - Imprime des données DVI sur une imprimante HP/PCL
# Fichier /usr/local/libexec/hpdf
#
# Définit une fonction de nettoyage de nos fichiers temporaires. Ils prennent place
267
# dans le répertoire courant, qui sera le répertoire
# de file d'attente
# de l'imprimante.
#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Définit une fonction de gestion des erreurs fatales: affiche le message
# d'erreur et retourne 2. Ce code d'erreur de 2 indique à LPD
# de ne pas essayer de réimprimer le travail d'impression
#
fatal() {
echo "$@" 12
cleanup
exit 2
}
#
# Si l'utilisateur enlève le travail d'impression, LPD envoie SIGINT, donc
# il faut capturer le signal SIGINT
# (et quelques autres signaux) pour nettoyer après notre passage.
#
trap cleanup 1 2 15
#
# Assurons-nous qu'il n'y ait pas conflit ce nom avec des fichiers existants.
#
cleanup
#
# Lien du fichier DVI vers l'entrée standard (fichier à imprimer).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
#
# Conversion LF = CR+LF
#
printf "\033k2G" || fatal "Cannot initialize printer"
#
# Conversion et impression. Le code de retour de dvilj2p ne semble
# pas fiable: ignorons-le.
#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Nettoyage et sortie de la procédure
#
cleanup
268
exit 0
Tous ces filtres de conversion apportent beaucoup à votre environnement d’impression, mais
nécessitent que l’utilisateur précise (dans la ligne de commande lpr(1)) lequel utiliser. Si vos
utilisateurs ne sont pas particulièrement versés en informatique, préciser une option de filtre sera
problématique. Mais ce qui s’avère pire encore est qu’une option de filtre mal choisie peut lancer
un filtre sur un type de fichier erroné et causer l’impression de centaines de pages.
Plutôt que d’installer quelque filtre de conversion que ce soit, vous préférerez sans doute laisser le
filtre texte (puisque c’est le filtre par défaut) déterminer le type de fichier qu’on lui a demandé
d’imprimer et lancer automatiquement le filtre de conversion approprié. Des outils comme file
peuvent s’avérer utiles dans ce cas. Bien entendu, il sera difficile d’établir les différences entre
certains types de fichiers-et vous pouvez toujours, bien sûr, fournir des filtres de conversion
uniquement pour eux.
Le catalogue des logiciels portés FreeBSD contient un filtre texte, nommé apsfilter (print/apsfilter),
qui sait effectuer la conversion automatique. Il peut reconnaître le texte brut, le PostScript® les
fichiers DVI et quasiment n’importe quelle sorte de fichier, effectuer les conversions appropriées et
imprimer.
Le gestionnaire d’impression LPD reconnaît un autre type de filtre dont nous n’avons pas encore
discuté: le filtre de sortie. Un filtre de sortie est destiné à l’impression de texte brut seulement,
comme le filtre texte, mais avec de nombreuses simplifications. Si vous utilisez un filtre de sortie
mais pas de filtre texte, alors:
• LPD lance un filtre de sortie une seule fois par travail d’impression, au lieu d’une fois pour
chacun des fichiers du travail d’impression.
• LPD ne fournit rien pour permettre au filtre de sortie de repérer le début ou la fin des fichiers
du travail d’impression.
• LPD ne passe pas le nom de l’utilisateur ou le nom de la machine au filtre, qui n’est donc pas
prévu pour effectuer la comptabilisation de l’impression. En fait, il ne reçoit que deux
paramètres:
Ne vous laissez pas séduire par la simplicité d’un filtre de sortie. Si vous désirez que chaque fichier
d’un travail d’impression commence sur une page différente, un filtre de sortie ne conviendra pas.
Utilisez un filtre texte (également appelé filtre d’entrée); voir la section Installer le filtre texte. De
plus, le filtre de sortie se révèle en fait plus complexe en ce sens qu’il doit examiner le flux d’octets
qui lui est envoyé pour y rechercher des caractères spéciaux et qu’il doit s’envoyer à lui-même des
signaux comme s’ils provenaient de LPD.
269
Toutefois, un filtre de sortie s’avère nécessaire si vous désirez des pages d’en-tête et avez besoin
d’envoyer des séquences d’échappement ou d’autres chaînes d’initialisation afin de pouvoir
imprimer la page d’en-tête. (Mais il est également futile si vous voulez imputer les pages d’en-tête
au compte de l’utilisateur, puisque LPD ne livre pas d’information sur l’utilisateur ou la machine au
filtre de sortie).
Sur une seule imprimante, LPD permet à la fois un filtre de sortie et des filtres texte ou autres. Dans
de tels cas, LPD ne lancera le filtre de sortie que pour imprimer la page d’en-tête (consultez la
section Pages d’en-tête). LPD attend alors que le filtre de sortie s’arrête par lui-même en envoyant
deux octets au filtre: ASCII 031 suivi d’ASCII 001. Lorsqu’un filtre de sortie lit ces deux octets
(031,001), il devrait s’arrêter en s’envoyant à lui-même un SIGSTOP. Lorsque LPD a fini d’exécuter les
autres filtres, il relance le filtre de sortie en lui envoyant un SIGCONT.
S’il y a un filtre de sortie mais aucun filtre texte et que LPD s’occupe d’un travail d’impression
concernant du texte brut, alors LPD utilise le filtre de sortie pour réaliser ce travail d’impression.
Comme exposé plus haut, le filtre de sortie imprimera chacun des travaux d’impression
séquentiellement sans que des sauts de page ou autres formes d’avancement du papier ne
surviennent, et ce n’est vraisemblablement pas ce que vous désirez. Dans presque tous les cas, il
vous faut un filtre texte.
Le programme lpf, que nous avons présenté précédemment comme un filtre texte, peut également
fonctionner en tant que filtre de sortie. Si vous avez besoin d’un filtre de sortie vite-fait-bien-fait
mais ne voulez pas écrire le code d’examen d’octets et d’envoi de signal, essayez lpf. Vous pouvez
également inclure lpf dans une procédure pour prendre en charge tout code d’initialisation qui
pourrait être requis par l’imprimante.
Le programme /usr/libexec/lpr/lpf qui est fourni avec la distribution binaire FreeBSD est un filtre
texte (un filtre d’entrée) qui sait indenter la sortie (un travail d’impression soumis avec lpr -i),
laisse passer les caractères littéraux (travail d’impression soumis avec lpr -l), ajuste la position
d’impression des retours arrière et des tabulations dans le travail d’impression, et comptabilise les
pages imprimées. Il peut également servir de filtre de sortie.
Le filtre lpf convient à de nombreux environnements d’impression. Et bien qu’il ne puisse pas
envoyer de séquences d’initialisation à une imprimante, il est aisé d’écrire une procédure pour
effectuer l’initialisation nécessaire et ensuite exécuter lpf.
Afin que lpf mène à bien la comptabilisation des pages, il faut que des valeurs correctes soient
indiquées pour les paramètres pw et pl dans le fichier /etc/printcap. Il utilise ces valeurs pour
déterminer combien de texte peut être imprimé sur une page et combien de pages ont été
imprimées dans le travail d’impression d’un utilisateur. Pour plus d’informations sur la
comptabilisation de l’impression, lisez la section Comptabiliser l’utilisation de l’imprimante.
Si vous avez beaucoup d’utilisateurs, et que tous utilisent des imprimantes diverses, alors vous allez
certainement envisager les pages d’en-tête comme un mal nécessaire.
270
Les pages d’en-tête, également appelées bannières ou burst page, identifient à qui appartiennent les
travaux d’impression après qu’ils aient été imprimés. Elles sont en général imprimées en caractères
de grande taille et en gras, peuvent comporter des bordures décorées, de sorte qu’elles contrastent
dans une pile d’impressions avec les véritables documents formant les travaux d’impression des
utilisateurs. Elles leur permettent de retrouver facilement leurs travaux d’impression.
L’inconvénient majeur d’une page d’en-tête est qu’elle représente une page supplémentaire à
imprimer pour chacun des travaux d’impression, son utilité éphémère ne dépasse pas quelques
minutes, et elle termine au recyclage du papier ou dans une corbeille. (Notez que une page d’en-tête
est liée à chaque travail d’impression et non à chaque fichier dans un travail d’impression: il se
pourrait donc que le gâchis de papier ne soit pas si grand.)
Le système LPD peut fournir des pages d’en-tête automatiquement pour vos impressions si votre
imprimante sait imprimer directement du texte brut. Si vous disposez d’une imprimante
PostScript®, il vous faudra un programme externe pour générer la page d’en-tête; lisez la section
Les pages d’en-tête sur les imprimantes PostScript®.
Dans la section Configuration simple de l’imprimante, nous avons désactivé les pages d’en-tête en
positionnant le paramètre sh (ce qui signifie "suppress header", soit "suppression des en-têtes")
dans /etc/printcap. Pour activer les pages d’en-tête sur une imprimante, il suffit d’enlever ce
paramètre sh.
C’est vrai. Il se pourrait que vous ayez à fournir un filtre de sortie pour envoyer des chaînes
d’initialisation à l’imprimante. Voici un exemple de filtre sortie pour les imprimantes Hewlett-
Packard compatibles-PCL:
#!/bin/sh
#
# hpof - filtre de sortie pour les imprimantes Hewlett Packard compatibles PCL
# Fichier /usr/local/libexec/hpof
Spécifiez le chemin d’accès au filtre de sortie avec le paramètre of. Lisez la section Filtres de sortie
pour plus de détails.
Voici un fichier /etc/printcap d’exemple pour l’imprimante teak que nous avons présentée plus
haut; nous avons activé les pages d’en-tête et ajouté le fichier de sortie ci-dessus:
#
# /etc/printcap pour la machine orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
271
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:\
:of=/usr/local/libexec/hpof:
Désormais, lorsque les utilisateurs lancent des travaux d’impression avec teak, ils obtiennent une
page d’en-tête avec chaque travail d’impression. Si vos utilisateurs désirent perdre du temps à
rechercher leurs impressions, ils peuvent omettre la page d’en-tête en soumettant le travail
d’impression avec la commande lpr -h; lisez la section Options des pages d’en-tête pour connaître
plus d’options lpr(1).
LPD imprime un caractère de saut de page après une page d’en-tête. Si votre
imprimante utilise un autre caractère ou séquence de caractères différente pour
éjecter une page, précisez-le avec le paramètre ff dans /etc/printcap.
Une fois les pages d’en-tête activées, LPD produira un en-tête long, c’est à dire une page entière de
grands caractères identifiant l’utilisateur, le nom de la machine et le travail d’impression. Voici un
exemple (kelly a lancé le travail d’impression nommé "outline" depuis la machine rose):
k ll ll
k l l
k l l
k k eeee l l y y
k k e e l l y y
k k eeeeee l l y y
kk k e l l y y
k k e e l l y yy
k k eeee lll lll yyy y
y
y y
yyyy
ll
t l i
t l
oooo u u ttttt l ii n nnn eeee
o o u u t l i nn n e e
o o u u t l i n n eeeeee
o o u u t l i n n e
o o u uu t t l i n n e e
oooo uuu u tt lll iii n n eeee
272
Job: outline
Date: Sun Sep 17 [Link] 1995
LPD ajoute un saut de page à ce texte de sorte que le travail d’impression commence sur une
nouvelle page (à moins que sf (supprimer les sauts de page) ne soit dans l’entrée correspondant à
l’imprimante dans /etc/printcap).
Si vous préférez, LPD peut générer des en-tête courts; ajoutez le paramètre sb (en-tête court) dans le
fichier /etc/printcap. La page d’en-tête ressemblera à ceci:
Par défaut également, LPD imprime d’abord la page d’en-tête, puis le travail d’impression. Pour
inverser ce comportement, placez le paramètre hl (en-tête à la fin) dans /etc/printcap.
Utiliser les pages d’en-tête fournies par LPD provoque un comportement particulier lorsqu’il s’agit
de comptabiliser l’utilisation de l’imprimante: les pages d’en-tête doivent être gratuites.
Pourquoi?
Parce que le filtre de sortie est le seul programme externe pouvant tenir les comptes qui aura le
contrôle lors de l’impression de la page d’en-tête, et qu’aucune information sur l’utilisateur ou le
nom de la machine ne lui est donnée ni aucun fichier de comptabilisation, par conséquent il ne sait
pas à qui attribuer le coût de l’utilisation de l’imprimante. Il ne suffit pas non plus de simplement
"ajouter une page" au filtre texte ou un quelconque filtre de conversion (qui, eux, possèdent des
informations sur l’utilisateur et la machine) puisque les utilisateurs peuvent supprimer les pages
d’en-tête avec lpr -h. Ils pourraient toujours se voir imputer des pages d’en-tête qu’ils n’auraient
pas imprimées. En somme, lpr -h demeurera l’option favorite des utilisateurs soucieux de
l’environnement, mais vous ne pouvez aucunement les inciter à l’utiliser.
Il ne suffit pas non plus de laisser chacun des filtres générer ses propres pages d’en-tête (ce qui
permettrait de savoir à qui imputer les coûts). Si les utilisateurs désiraient omettre les pages d’en-
tête avec lpr -h, ils les obtiendraient quand même et le coût leur serait attribué puisque LPD ne
donne aucun renseignement sur l’emploi de l’option -h à aucun des filtres.
Vous pouvez:
• Ecrire un filtre de sortie intelligent. Normalement, un filtre de sortie n’est pas censé faire plus
que d’initialiser une imprimante ou exécuter une conversion simple de caractères. Il convient
273
aux pages d’en-tête et aux travaux d’impression de texte brut (lorsqu’il n’y a aucun filtre
(d’entrée) texte). Mais, s’il existe un filtre texte pour les travaux d’impression de texte, alors LPD
ne lancera le filtre de sortie que pour les pages d’en-tête. Le filtre de sortie peut également
analyser le texte de la page d’en-tête généré par LPD pour déterminer quels sont l’utilisateur et
la machine à qui il faut attribuer le coût de cette page d’en-tête. Le seul autre problème avec
cette méthode est que le filtre de sortie ne sait toujours pas quel fichier de comptabilisation
utiliser (le nom du fichier spécifié par le paramètre af ne lui est pas fourni), mais si vous
disposez d’un fichier de comptabilisation bien identifié, vous pouvez le coder en dur dans le
filtre de sortie. Afin de faciliter l’étape d’analyse, utilisez le paramètre sh (en-tête courte) dans
/etc/printcap. D’un autre côté, tout cela pourrait bien représenter beaucoup de dérangement, et
les utilisateurs apprécieront certainement davantage l’administrateur généreux qui propose la
gratuité des pages d’en-tête.
Comme décrit précédemment, LPD est en mesure de générer des pages d’en-tête texte convenant
pour de nombreuses d’imprimantes. Bien entendu, PostScript® ne peut pas imprimer du texte
directement, donc la fonctionnalité de page d’en-tête offerte par LPD est inutilisable ou presque.
Une solution manifeste est de faire générer la page d’en-tête par tous les filtres de conversion et le
filtre texte. Les filtres devraient employer les paramètres utilisateur et nom de machine pour
générer une page d’en-tête convenable. L’inconvénient de cette méthode est que les utilisateurs
obtiendront toujours une page d’en-tête, même s’ils soumettent leurs travaux d’impression avec lpr
-h.
Examinons cette méthode. La procédure ci-dessous prend trois paramètres (le nom de l’utilisateur,
le nom de la machine et celui du travail d’impression) et réalise une page d’en-tête simple en
PostScript®:
#!/bin/sh
#
# make-ps-header - génére une page d'en-tête PostScript sur la sortie standard
# Fichier /usr/local/libexec/make-ps-header
#
#
# Ce sont des unités PostScript (72 par pouce). A modifier pour A4 ou
# tout autre format papier employé:
#
page_width=612
page_height=792
border=72
#
# Vérification des paramètres
#
if [ $# -ne 3 ]; then
echo "Usage: `basename $0` user host job" 12
exit 1
274
fi
#
# Mémorisation des paramètres, pour la lisibilité du PostScript, plus bas.
#
user=$1
host=$2
job=$3
date=`date`
#
# Envoi du code PostScript sur stdout.
#
exec cat EOF
%!PS
%
% Assurons-nous qu'il n'y a pas d'interférence avec le travail
% utilisateur qui suivra
%
save
%
% Applique une grosse bordure désagréable autour
% du bord de la page.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray
%
% Affiche le nom de l'utilisateur, de façon jolie, grande et proéminente
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show
%
% Maintenant, les détails ennuyant:
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall
275
[ ($job) ($host) ($date) ] {
270 y moveto show /y y 18 sub def
} forall
%
% C'est tout
%
restore
showpage
EOF
Désormais, chacun des filtres de conversion et le filtre texte peuvent appeler cette procédure pour
d’abord générer la page d’en-tête, et ensuite imprimer le travail d’impression de l’utilisateur. Voici
le filtre de conversion DVI déjà mentionné plus haut dans ce document, modifié afin de générer
une page d’en-tête:
#!/bin/sh
#
# psdf - filtre DVI vers imprimante PostScript
# Fichier /usr/local/libexec/psdf
#
# Appelé par lpd quand l'utilisateur lance lpr -d
#
orig_args="$@"
fail() {
echo "$@" 12
exit 2
}
Observez que le filtre doit analyser la liste des paramètres pour déterminer le nom de l’utilisateur
276
et celui de la machine. L’analyse menée par les autres filtres de conversion est identique. Toutefois,
le filtre texte réclame un ensemble de paramètres légèrement différent (voyez la section
Fonctionnement des filtres).
Comme précédemment exposé, cette solution, quoique relativement simple, invalide l’option de
"suppression de page d’en-tête" (l’option -h) de lpr. Si les utilisateurs désiraient épargner la vie d’un
arbre (ou économiser quelques centimes, si vous faites payer les pages d’en-tête), ils ne seraient pas
en mesure de le faire, puisque chaque filtre va imprimer une page d’en-tête avec chaque travail
d’impression.
Pour permettre aux utilisateurs de désactiver les pages d’en-tête en fonction du travail
d’impression, il vous faudra recourir à l’une des astuces de la section Comptabiliser les pages d’en-
tête: écrire un filtre de sortie qui analyse la page d’en-tête générée par LPD et produit une version
PostScript®. Si l’utilisateur soumet le travail d’impression avec lpr -h alors ni LPD ni votre filtre de
sortie ne généreront de page d’en-tête. Sinon, votre filtre de sortie lira le texte en provenance de
LPD et enverra la page d’en-tête PostScript® appropriée à l’imprimante.
Si vous disposez d’une imprimante PostScript® sur une interface série, vous pouvez utiliser lprps,
qui est livré avec un filtre de sortie, psof, qui réalise ce que nous venons d’exposer ci-dessus. Notez
que psof n’assume pas la tenue de comptes pour les pages d’en-tête.
FreeBSD gère l’impression via un réseau: c’est à dire en envoyant les travaux d’impression à des
imprimantes distantes. L’impression via un réseau désigne deux choses différentes:
• Accéder à une imprimante connectée à une machine distante. Vous installez une imprimante
disposant d’une interface conventionnelle, série ou parallèle, sur une machine. Puis vous
configurez LPD pour permettre l’accès à l’imprimante depuis d’autres machines du réseau. La
section Imprimantes installées sur des machines distantes en détaillera la mise en œuvre.
◦ Elle peut comprendre le protocole LPD et sait même gérer une file d’attente de travaux
d’impression provenant de machines distantes. En ce cas, elle se comporte comme une
machine normale qui exécuterait LPD. Suivez la même procédure que celle exposée à la
section Imprimantes installées sur des machines distantes afin de configurer une
imprimante de ce genre.
◦ Elle peut savoir gérer un flux de données au travers d’une connexion réseau. Dans ce cas,
vous pouvez "attacher" l’imprimante à l’une des machines du réseau en la rendant
responsable de la gestion de la file d’impression et de l’envoi des travaux d’impression à
l’imprimante. La section Imprimantes avec des interfaces utilisant des flux réseau donne
quelque indications sur l’installation d’imprimantes de ce type.
Le gestionnaire d’impression LPD dispose des fonctions pour gérer l’envoi des travaux
d’impression à d’autres machines exécutant également LPD (ou un système qui lui est compatible).
277
Cette fonctionnalité vous permet d’installer une imprimante sur une machine, puis de la rendre
accessible depuis les autres machines. Cela fonctionne également avec les imprimantes disposant
d’interfaces réseau comprenant le protocole LPD.
Pour activer ce type d’impression à distance, installez d’abord une imprimante sur une machine,
qui sera la machine d’impression, en suivant les instructions de configuration basique décrites à la
section Configuration simple de l’imprimante. Réalisez toute étape de la configuration avancée de
l’imprimante dont vous pourriez avoir besoin. Veillez à tester l’imprimante et vérifiez qu’elle
fonctionne avec les paramètres de LPD que vous avez activés. Assurez-vous également que la
machine locale est autorisée à utiliser le service LPD sur la machine distante (lisez la section
Restreindre les impressions à distance).
Si vous utilisez une imprimante avec une interface réseau qui est compatible avec LPD, alors la
machine d’impression dans le texte ci-dessous est l’imprimante elle-même, et le nom de l’imprimante
est le nom que vous avez paramétré pour l’imprimante. Lisez la documentation livrée avec votre
imprimante ou l’interface réseau-imprimante.
Si vous utilisez une Hewlett Packard Laserjet, alors le nom d’imprimante text
réalisera la conversion LF en CRLF automatiquement, de sorte que vous n’aurez
pas besoin de la procédure hpif.
Ensuite, sur les autres machines pour lesquelles vous désirez autoriser l’accès à l’imprimante, créez
une ligne dans leur /etc/printcap avec les paramètres suivants:
1. Nommez cette entrée comme vous le voulez. Par souci de simplicité, cependant, vous préférerez
certainement employer les mêmes nom et alias que ceux utilisés sur la machine de
d’impression.
3. Créez un répertoire de file d’impression et indiquez son chemin d’accès dans le paramètre sd.
C’est là où LPD entreposera les travaux d’impression avant leur envoi vers la machine
d’impression.
C’est tout. Il n’est pas nécessaire de préciser la liste des filtres de conversion, les dimensions de la
page, ou quoique ce soit d’autre dans le fichier /etc/printcap.
Voici un exemple. La machine rose dispose de deux imprimantes, bamboo et rattan. Nous allons
permettre aux utilisateurs de la machine orchid d’imprimer avec ces imprimantes. Voici le fichier
/etc/printcap pour orchid (apparu dans la section Activer les pages d’en-tête). Il contenait déjà une
entrée pour l’imprimante teak; nous avons ajouté celles pour les deux imprimantes sur la machine
rose:
#
# /etc/printcap pour la machine orchid - ajout d'imprimantes (distantes)
# sur rose
#
278
#
# teak est locale; connectée directement à orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
#
# rattan est connectée à rose; envoie les travaux pour rattan
# à rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
#
# bamboo est également connectée à rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:
Ensuite, nous n’avons qu’à créer les répertoires de file d’impression sur orchid:
Maintenant les utilisateurs d'orchid peuvent imprimer sur rattan et bamboo. Par exemple, si un
utilisateur sur orchid entrait:
le système LPD sur orchid copierait le travail d’impression dans le répertoire de file d’impression
/var/spool/lpd/bamboo et relèverait qu’il s’agit d’un travail d’impression DVI. Dès que la machine
rose dispose d’assez de place dans son répertoire de file d’impression, les deux LPD transfèrent le
fichier à rose. Le fichier reste en attente dans la file de rose jusqu’à son impression. Il sera converti
de DVI en PostScript® (puisque bamboo est une imprimante PostScript®) sur rose.
Bien souvent, lorsque vous achetez une carte d’interface réseau pour une imprimante, vous avez le
choix entre deux versions: l’une qui émule un gestionnaire d’impression (la version la plus
onéreuse), ou une autre qui ne vous permet que de lui envoyer des données comme s’il s’agissait
d’un port série ou parallèle (c’est la version la moins chère). Cette section vous indique comment
utiliser cette seconde version moins onéreuse. Pour la plus chère, lisez la section précédente
279
Imprimantes installées sur des machines distantes.
Le format du fichier /etc/printcap vous permet de préciser quelle interface série ou parallèle vous
souhaitez utiliser, et (si vous employez une interface série) à quelle vitesse de transmission, s’il faut
employer le contrôle de flux, les temporisations pour les tabulations, la conversion des sauts de
lignes, et plus encore. Mais il n’existe aucun moyen de préciser une connexion à une imprimante
qui écoute sur un port TCP/IP ou un autre port réseau.
Pour envoyer des données à une imprimante mise en réseau, il vous faut développer un
programme de communication qui puisse être appelé par les filtres textes et de conversion. Voici
un exemple: la procédure netprint récupère toutes les données sur l’entrée standard et les envoie à
une imprimante connectée au réseau. Nous précisons le nom de machine de l’imprimante dans le
premier paramètre et le numéro de port auquel se connecter dans le deuxième paramètre de
netprint. Notez qu’il ne gère que la communication unidirectionnelle (dans le sens FreeBSD vers
imprimante); de nombreuses imprimantes réseau supporte la communication bidirectionnelle, et
vous désirerez certainement en tirer parti (afin de connaître le statut de l’imprimante, de
comptabiliser l’utilisation, etc.).
#!/usr/bin/perl
#
# netprint - Filtre texte pour imprimante connectée au réseau
# Fichier /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 printer-hostname port-number";
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require 'sys/[Link]';
Nous pouvons maintenant utiliser cette procédure avec différents filtres. Supposons que nous
ayons une imprimante Diablo 750-N connectée au réseau. Elle reçoit les données à imprimer sur le
port 5100. Le nom de machine de l’imprimante est scrivener. Voici le filtre texte pour cette
imprimante:
#!/bin/sh
280
#
# diablo-if-net - Filtre texte pour l'imprimante Diablo `scrivener' écoutant
# le port 5100. Fichier /usr/local/libexec/diablo-if-net
#
exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
Cette section fournit des informations sur la restriction de l’utilisation de l’imprimante. Le système
LPD vous permet de contrôler quels utilisateurs peuvent accéder à une imprimante, tant
localement qu’à distance, s’il leur est autorisé d’imprimer en plusieurs exemplaires, quelles sont les
tailles maximales de leurs travaux d’impression et des files d’impression.
Le système LPD facilite l’impression de plusieurs copies d’un même fichier par les utilisateurs. Ils
peuvent imprimer leur travail avec lpr -#5 (par exemple) et obtenir cinq exemplaires de chaque
fichier du travail d’impression. Le fait de savoir s’il s’agit là d’une bonne idée vous appartient.
Si vous estimez que les copies multiples provoquent charge et usure inutiles pour vos imprimantes,
vous pouvez désactiver l’option - de lpr(1) en ajoutant le paramètre sc au fichier
/etc/printcap. Lorsque des utilisateurs soumettront un travail d’impression avec l’option -, ils
obtiendront cet affichage:
Notez que si vous avez mis en œuvre l’accès à une imprimante distante (voir la section
Imprimantes installées sur des machines distantes), il faut que le paramètre sc soit positionné sur
les /etc/printcap distants également, sinon vos utilisateurs auront toujours la possibilité d’imprimer
des copies multiples en passant par une autre machine.
Voici un exemple. C’est le /etc/printcap pour la machine rose. L’imprimante rattan est plutôt
robuste, et autorisera donc les copies multiples, par contre l’imprimante laser bamboo est quant à
elle plus délicate, nous interdiront donc les impressions multiples en ajoutant le paramètre sc:
#
# /etc/printcap pour la machine rose - restreint les impressions en plusieurs
exemplaires sur bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
281
:df=/usr/local/libexec/psdf:
Maintenant, il nous faut également ajouter le paramètre sc dans le fichier /etc/printcap de orchid (et
tant que nous y sommes, désactivons les copies multiples pour l’imprimante teak):
#
# /etc/printcap pour la machine orchid - pas d'impression en
# plusieurs exemplaires pour
# l'imprimante locale teak ou l'imprimante distante bamboo
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
En recourant au paramètre sc, nous empêchons l’utilisation de lpr -#, mais cela n’empêche
toujours pas les utilisateurs de lancer lpr(1) à plusieurs reprises, ou de soumettre le même fichier
plusieurs fois en un seul travail, de cette façon:
Il existe plusieurs moyens de prévenir ces abus (y compris les ignorer) que vous êtes libres
d’essayer.
Vous pouvez contrôler qui a le droit d’imprimer sur quelles imprimantes en utilisant le mécanisme
des groupes UNIX® et le paramètre rg dans /etc/printcap. Placez simplement les utilisateurs à qui
vous voulez donner l’accès à une imprimante dans un groupe, et précisez ce groupe avec le
paramètre rg.
Les utilisateurs n’appartenant pas au groupe (root inclus) se verront gratifiés d’un lpr: Not a
member of the restricted group s’ils essaient d’imprimer avec l’imprimante contrôlée.
De même que pour le paramètre sc (supprimer les exemplaires multiples), il vous faut activer rg
sur les machines distantes qui eux aussi ont accès à vos imprimantes, si vous estimez que c’est
approprié (voir la section Imprimantes installées sur des machines distantes).
Dans notre exemple, nous allons permettre l’accès à rattan à quiconque, mais seuls les membres du
groupe artists pourront utiliser bamboo. Voici l’habituel /etc/printcap pour la machine rose:
282
#
# /etc/printcap pour la machine rose - restreint au groupe pour bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
Ne nous préoccupons pas de l’autre fichier /etc/printcap (pour la machine orchid). Bien entendu,
n’importe qui sur orchid peut imprimer avec bamboo. Selon le cas, nous pourrons autoriser que
certains utilisateurs sur orchid, et leur donner accès à l’imprimante. Ou non.
Si beaucoup de vos utilisateurs accèdent aux imprimantes, vous aurez sans doute besoin de fixer
une limite supérieure à la taille des fichiers qu’ils peuvent soumettre à l’impression. Après tout, le
système de fichiers hébergeant les répertoires de file d’impression ne peut offrir que l’espace libre
dont il dispose, et vous devez également vous assurer que de la place existe pour les travaux
d’impression des autres utilisateurs.
LPD vous permet de fixer la taille maximale en octets qu’un fichier d’un travail d’impression peut
atteindre avec le paramètre mx. Les unités sont exprimées en blocs de BUFSIZ, valant 1024 octets. Si
vous donnez la valeur 0 à ce paramètre, la taille ne sera pas du tout limitée; en revanche, si aucun
paramètre mx n’est défini, alors une limite par défaut de 1000 blocs sera utilisée.
La limite s’applique aux fichiers dans un travail d’impression, et non pas à la taille
totale du travail d’impression.
LPD ne refusera pas un fichier dont la taille excède la limite que vous fixez pour une imprimante.
Au lieu de cela, il placera les octets du fichier dans la file jusqu’à ce que la limite soit atteinte, puis
imprimera. Les octets supplémentaires seront ignorés. S’il s’agit là d’un comportement approprié
est un choix qui vous appartient.
Ajoutons des limites pour nos imprimantes d’exemple, rattan et bamboo. Puisque les fichiers
PostScript® des utilisateurs du groupe artists ont tendance à être volumineux, nous allons les
limiter à cinq mégaoctets. Nous ne fixerons aucune limite pour l’imprimante texte:
#
# /etc/printcap pour la machine rose
#
283
#
# Pas de limite sur la taille des travaux:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:mx#0:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
#
# Limite de cinq mégaoctets:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:
Là encore, les limites ne s’appliquent qu’aux utilisateurs locaux. Si vous avez mis en place un accès
distant à vos imprimantes, les utilisateurs distants ne seront pas contraints par ces limites. Il vous
faudra positionner le paramètre mx dans les fichiers /etc/printcap distants également. Lisez la
section Imprimantes installées sur des machines distantes pour obtenir plus d’informations sur
l’impression à distance.
Il existe une autre manière spécifique pour limiter la taille des travaux d’impression sur les
imprimantes à distance; lisez la section Restreindre les impressions à distance.
Le format de ces fichiers est simple: un nom de machine par ligne. Notez que /etc/[Link] est
également utilisé par le protocole ruserok(3), et qu’il a un impact sur des programmes comme
rsh(1) et rcp(1), aussi soyez prudent.
orchid
violet
[Link]
Cela signifie que rose accepte les requêtes provenant des machines orchid, violet et
284
[Link]. Si une quelconque autre machine tente d’accéder au LPD de rose, le travail
d’impression sera refusé.
Cela vous permet de vous assurer que des utilisateurs distants ne rempliront pas votre système
de fichiers. Vous pouvez également vous en servir pour accorder une certaine priorité aux
utilisateurs locaux: ils pourront placer des travaux d’impression dans la file bien après que
l’espace libre soit tombé sous le seuil indiqué dans le fichier minfree.
Par exemple, ajoutons un fichier minfree pour l’imprimante bamboo. Nous examinons
/etc/printcap pour trouver le répertoire de file d’impression pour cette imprimante; voici
l’entrée concernant bamboo:
Le répertoire de file d’impression est précisé par le paramètre sd. Nous placerons à trois méga-
octets (soit 6144 blocs disque) la limite d’espace libre devant exister sur le système de fichiers
pour que LPD accepte les travaux d’impression distants:
285
9.4.5. Comptabiliser l’utilisation de l’imprimante
Donc vous voulez faire payer vos impressions. Et pourquoi pas? Le papier et l’encre coûtent de
l’argent. Et puis, il y a les coûts de maintenance-les imprimantes sont constituées de pièces mobiles
et ont tendance à tomber en panne. Vous avez étudié vos imprimantes, vos modes d’utilisation et
factures de maintenance, et avez abouti à un coût par page (ou par pied, par mètre, ou par ce que
vous voulez). Maintenant, comment commencer à comptabiliser les impressions, dans les faits?
Eh bien, la mauvaise nouvelle est que le gestionnaire d’impression LPD ne vous aide pas beaucoup
dans ce domaine. La comptabilisation dépend fortement du type d’imprimante que vous employez,
des formats que vous imprimez et de vos besoins pour ce qui est de faire payer l’utilisation de
l’imprimante.
Pour mettre en œuvre la comptabilisation, il vous faut modifier le filtre texte de l’imprimante (pour
faire payer les travaux d’impression de texte brut) et ses filtres de conversion (pour faire payer les
autres formats de fichiers), pour compter les pages ou demander à l’imprimante combien elle en a
imprimées. Vous ne pouvez pas vous en tirer en utilisant le filtre de sortie simple, puisqu’il ne peut
pas gérer la comptabilisation. Voir la section Les filtres.
• La comptabilisation périodique est la plus habituelle, probablement parce que la plus facile.
Chaque fois que quelqu’un imprime un travail, le filtre enregistre l’utilisateur, la machine et le
nombre de pages dans un fichier de comptabilisation. Tous les mois, semestres, années ou toute
autre échéance que vous désirez, vous récupérez les fichiers de comptabilisation des diverses
imprimantes, établissez les pages imprimées par les utilisateurs, et faites payer l’utilisation.
Purgez ensuite tous les fichiers de comptabilisation, pour commencer à zéro la nouvelle
période.
• La comptabilisation à la volée est moins répandue, peut-être parce qu’elle s’avère plus difficile.
Cette méthode laisse les filtres s’occuper de taxer les utilisateurs pour les impressions dès qu’ils
utilisent les imprimantes. Tout comme les quotas disques, la comptabilisation est immédiate.
Vous pouvez empêcher les utilisateurs d’imprimer quand leur compte est dans le rouge, et
pourriez leur fournir un moyen de vérifier et ajuster leurs "quotas d’impression". Cependant,
cette méthode nécessite la mise en oeuvre d’une base de données afin de tracer les utilisateurs
et leurs quotas.
Le gestionnaire d’impression LPD gère les deux méthodes facilement: puisque vous devez fournir
les filtres (enfin, la plupart du temps), vous devez également fournir le code de comptabilisation.
Mais il y a un bon côté: vous disposez d’une énorme flexibilité dans vos méthodes de
comptabilisation. Par exemple, vous avez le choix entre les comptabilisations périodique et à la
volée. Vous avez le choix des informations à tracer: noms d’utilisateurs, noms de machines, types
des travaux d’impression, pages imprimées, surface de papier utilisée, durée d’impression du
travail, etc. Et vous le faites en modifiant les filtres afin d’enregistrer ces informations.
Deux programmes sont livrés avec FreeBSD qui vous permettent de mettre en place une
comptabilisation périodique simple immédiatement. Il s’agit du filtre texte lpf, détaillé dans la
section lpf: un filtre texte, et de pac(8), un programme qui rassemble et fait le total des entrées
286
contenues dans des fichiers de comptabilisation d’impressions.
Comme indiqué dans la section sur les filtres (Fonctionnement des filtres), LPD lance les filtres texte
et de conversion avec le nom du fichier de comptabilisation à employer fourni en argument. Les
filtres peuvent utiliser ce paramètre pour savoir où écrire un enregistrement de comptabilisation.
Le nom de ce fichier provient du paramètre af dans /etc/printcap, et si le chemin donné n’est pas
absolu, alors c’est un chemin d’accès relatif au répertoire de file d’impression.
LPD lance lpf avec les paramètres de largeur et hauteur de page (qui correspondent aux
paramètres pw et pl). Le filtre lpf les utilise pour déterminer combien de papier sera consommé.
Après avoir envoyé le fichier à l’imprimante, il enregistre ensuite une entrée dans le fichier de
comptabilisation. Les entrées ressemblent à ceci:
2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhang
Vous devriez utiliser un fichier de comptabilisation séparé pour chaque imprimante, lpf ne
disposant pas de mécanisme de verrouillage des fichiers, deux lpf pourraient corrompre leurs
entrées respectives s’ils essayaient d’écrire dans le même fichier en même temps. Une manière
aisée de s’assurer d’un fichier de comptabilisation séparé pour chaque imprimante est de recourir
au paramètre af=acct dans /etc/printcap. Dès lors, un fichier de comptabilisation, nommé acct, sera
placé dans le répertoire de file d’impression de chaque imprimante.
Lorsque vous serez prêts à faire payer les utilisateurs pour leurs impressions, lancez le programme
pac(8). Placez-vous simplement dans le répertoire de file d’impression de l’imprimante pour
laquelle vous voulez collecter les informations, et tapez pac. Vous obtiendrez un récapitulatif en
dollars ressemblant à ceci:
-Pimprimante
Pour quelle imprimante effectuer un récapitulatif. Cette option ne fonctionne que si un chemin
d’accès absolu est donné dans le paramètre af de /etc/printcap.
287
-c
Trier selon le coût plutôt qu’alphabétiquement par nom d’utilisateur.
-m
Ignorer le nom de la machine dans les fichiers de comptabilisation. Avec cette option,
l’utilisateur smith sur la machine alpha est le même que l’utilisateur smith sur la machine gamma.
Sans elle, ils représentent des utilisateurs distincts.
-pprix
Calculer le coût en comptant un prix en dollars par page ou par pied au lieu du prix indiqué par
le paramètre pc dans /etc/printcap, ou deux cents (la valeur par défaut). Vous pouvez préciser le
prix en nombre à virgule flottante.
-r
Inverser l’ordre du tri.
-s
Créer un fichier de rapport et tronquer le fichier de comptabilisation.
nom …
N’imprimer des statistiques que pour les utilisateurs dont les noms sont donnés.
Dans le récapitulatif produit par défaut par pac(8), vous pouvez lire le nombre de pages imprimées
par chaque utilisateur depuis les différentes machines. Si, sur votre site, la machine n’a pas
d’importance (parce que les utilisateurs peuvent utiliser n’importe quelle machine), lancez pac -m,
afin de produire le récapitulatif ci-dessous:
Afin de calculer le montant dû en dollars, pac(8) utilise le paramètre pc de /etc/printcap (200 par
défaut, c’est à dire 2 cents par page). Précisez avec ce paramètre le prix par page ou par pied,
exprimé en centièmes de cents, que vous voulez imputer aux impressions. Vous pouvez spécifier
cette valeur lorsque vous lancez pac(8) avec l’option -p. Cependant, avec cette option, les unités sont
exprimées en dollars, et non en centièmes de cents. Par exemple,
# pac -p1.50
fait en sorte que chaque page coûte un dollar et cinquante cents. Vous pouvez vraiment faire des
bénéfices en utilisant cette option.
288
Enfin, lancer pac -s enregistrera les informations du récapitulatif dans un fichier, dont le nom sera
le même que le fichier de comptabilisation de l’imprimante mais avec le suffixe _sum. Il procède
alors à la troncature du fichier de comptabilisation. Lorsque vous exécutez pac(8) à nouveau, il relit
le fichier récapitulatif pour établir les totaux de départ, puis ajoute les informations du fichier de
comptabilisation normal.
Afin de réaliser une comptabilisation précise et cela même à distance, vous devez pouvoir
déterminer combien un travail d’impression consomme de papier. C’est le problème principal de la
comptabilisation des impressions.
Pour du texte brut, ce problème n’est pas compliqué à résoudre: vous comptez combien un travail
d’impression comporte de lignes et comparez avec le nombre de lignes par page que gère votre
imprimante. N’oubliez pas de tenir compte des retours arrière dans le fichier, qui superposent les
lignes, ou des longues lignes qui s’étendent sur une ou plusieurs lignes physiques supplémentaires.
Le filtre texte lpf (présenté à la section lpf: un filtre texte) prend ces éléments en considération
lorsqu’il effectue la comptabilisation. Si vous écrivez un filtre texte qui doit effectuer une
comptabilisation, vous pouvez vous inspirer du code source de lpf.
Mais ces méthodes connaissent un défaut: il se peut que l’imprimante n’imprime pas toutes ces
pages. Par exemple, un bourrage peut se produire, l’imprimante peut arriver à cours d’encre, ou
exploser - et l’utilisateur serait tout de même débité.
Il n’existe qu’une seule méthode sûre pour procéder à une comptabilisation précise. Prenez une
imprimante qui sache dire combien de papier elle utilise, et reliez-la par un câble série ou une
connection réseau. Presque toutes les imprimantes PostScript® gèrent cela. D’autres types et
modèles également (les imprimantes laser réseau Imagen, par exemple). Modifiez les filtres pour
ces imprimantes afin d’obtenir la consommation de pages après chaque travail d’impression et
faites en sorte qu’elles enregistrent des informations de comptabilisation basées sur cette seule
valeur. Nul besoin de compter les lignes ou d’une analyse de fichier susceptible d’être erronée.
Bien entendu, vous pouvez toujours être généreux et rendre toutes les impressions gratuites.
289
9.5.3. Removing Jobs
290
Chapitre 10. Compatibilité binaire avec
Linux
10.1. Synopsis
FreeBSD fournit en option une compatibilité binaire avec Linux®, permettant aux utilisateurs
d’installer et d’exécuter desapplications Linux, sans avoir à les modifier, sur un système FreeBSD.
Cette option est disponible pour les architectures i386, amd64, et arm64.
Certaines caractéristiques spécifiques au système Linux ne sont pas encore supportées sous
FreeBSD; cela concerne principalement des fonctionnalités spécifiques au matériel ou relatives à la
gestion du système, comme les cgroups ou les espaces de noms.
linux_enable="YES"
Une fois activée, elle peut être lancée sans redémarrer en exécutant:
La procédure /etc/rc.d/linux changera les modules noyau nécessaires et montera sous /compat/linux
les systèmes de fichiers attendus par les applications Linux. Ceci est suffisant pour faire
fonctionner les binaires Linux statiques. Ils peuvent être lancés de la même manière qu’un binaire
natif FreeBSD; ils se comportent exactement de la même manière que des processus natifs et
peuvent être suivis et debogués avec les méthodes habituelles.
Les binaires Linux liés de manière dynamique (c’est la vaste majorité des cas) demandent à ce que
les bibliothèques dynamiques partgées Linux soient installées - ils peuvent être exécutés par le
noyau FreeBSD, mais ne peuvent pas utiliser les bibliothèques FreeBSD; c’est semblable au principe
291
des binaires 32bits qui ne peuvent pas utiliser les bibliothèques natives 64bits. Il existe plusieurs
méthodes pour mettre à disposition ces bibliothèques: on peut les copier à partir d’une installation
Linux existante utilisant la même architecture, les installer à partir des paquets binaires FreeBSD,
ou les installer en utilisant deboostrap(8) (à partir de sysutils/debootstrap), etc.
La méthode la plus simple pour installer les bibliotèques Linux est d’installer la version pré-
compilée ou la version compilée à partir du catalogue des logiciels portés emulators/linux_base-c7,
qui placera le système de base dérivé de CentOS 7 dans le répertoire /compat/linux:
FreeBSD fournit les paquets des binaires Linux de certaines applications. Par exemple, pour
installer Sublime Text 4, avec les bibliothèques Linux nécessaires, exécuter la commande suivante:
Après cette installation, utilisez chroot(8) dans le répertoire nouvellement créé et installez le
logiciel suivant la manière classique sous la distribution Linux installée, par exemple:
Il est possible d’utiliser debootstrap dans le répertoire /compat/linux, mais cela est déconseillé pour
éviter les colisions avec les fichiers installés à partir des logiciels portés ou pré-compilés FreeBSD. A
la place, utilisez un nom de répertoire dérivé du nom ou de la version de la distribution, e.g.,
/compat/ubuntu. Si l’instance debootstrap est destinée à fournir des bibliothèques partagées Linux
sans utiliser explicitement chroot ou les jails, on peut faire pointer le noyau dessus en modifiant le
paramètre sysctl [Link].emul_path et en ajoutant une ligne comme ce qui suit au fichier
/etc/[Link]:
292
[Link].emul_path="/compat/ubuntu"
Tous les paramètres sysctl(8) relatifs à Linux peuvent être trouvés dans la page de manuel linux(4).
Certaines applications ont besoin que des systèmes de fichiers spécifiques soient montés. Cela est
normalement géré par la procédure /etc/rc.d/linux, mais peut être désactivé en ajoutant la ligne
suivante au fichier /etc/[Link]:
linux_mounts_enable="NO"
Les systèmes de fichiers montés par la procédure rc ne fonctionneront pas pour les processus
Linux à l’intérieur de jail ou chroot; si nécessaire, configurez-les dans /etc/fstab:
Depuis qu’à été ajouté le support pour l’exécution des binaires Linux 32 et 64 bits à la couche de
compatibilité Linux (sur les hôtes 64 bits de type x86), il n’est plus possible d’ajouter l’émulation en
statique dans un noyau personnalisé.
Si une application Linux se plaint de l’absence d’une bibliothèque partagée après avoir configuré la
compatibilité binaire Linux, déterminez quelle est la bibliothèque partagée nécessaire au binaire
Linux et installez-la à la main.
A partir d’un système Linux utilisant un processeur de même architecture, la commande ldd peut
être utilisée pour déterminer quelles sont les bibliothèques partagées dont l’application a besoin.
293
Par exemple, pour contrôler quelles bibliothèques partagées sont nécessaires à linuxdoom, exécuter
cette commande à partir d’un système Linux où est installé Doom:
% ldd linuxdoom
[Link].3 (DLL Jump 3.1) => /usr/X11/lib/[Link].3.1.0
[Link].3 (DLL Jump 3.1) => /usr/X11/lib/[Link].3.1.0
[Link].4 (DLL Jump 4.5pl26) => /lib/[Link].4.6.29
Ensuite, copier tous les fichiers mentionnés dans la dernière colonne, du système sous Linux vers
/compat/linux sur le système FreeBSD. Une fois copiés, créer les liens symboliques vers les noms de
fichiers donnés dans la première colonne. Cet exemple donnera lieu aux fichiers suivants sur le
système FreeBSD:
/compat/linux/usr/X11/lib/[Link].3.1.0
/compat/linux/usr/X11/lib/[Link].3 -> [Link].3.1.0
/compat/linux/usr/X11/lib/[Link].3.1.0
/compat/linux/usr/X11/lib/[Link].3 -> [Link].3.1.0
/compat/linux/lib/[Link].4.6.29
/compat/linux/lib/[Link].4 -> [Link].4.6.29
Si une bibliothèque Linux partagée existe avec le même numéro de version majeure que celle
indiquée par la première colonne du résultat de la commande ldd, il est inutile de la copier vers le
nom de fichier donné par la dernière colonne, la bibliothèque déjà existante devrait fonctionner. Il
est cependant recommandé de copier malgré tout la bibliothèque partagée si c’est une version
récente. L’ancienne version peut être supprimée, du moment que le lien symbolique pointe sur la
nouvelle.
Par exemple, les bibliothèques suivantes existent déjà sur le système FreeBSD:
/compat/linux/lib/[Link].4.6.27
/compat/linux/lib/[Link].4 -> [Link].4.6.27
Etant donné que la bibliothèque existante n’a qu’une ou deux versions de retard sur le dernier
digit, le programme devrait fonctionner avec la version légèrement plus ancienne. Il est,
néanmoins, plus sûr de remplacer la [Link] existante avec la version plus récente:
/compat/linux/lib/[Link].4.6.29
/compat/linux/lib/[Link].4 -> [Link].4.6.29
Généralement, vous ne devrez chercher à savoir de quelles bibliothèques partagées dépendent les
294
binaires Linux que les premières fois que vous installerez des programmes Linux sur le système
FreeBSD. Au bout d’un moment, il y aura un ensemble suffisant de bibliothèques partagées Linux
sur le système pour être en mesure d’exécuter les binaires Linux nouvellement importés sans effort
supplémentaire.
Le noyau FreeBSD utilise plusieurs méthodes pour déterminer si le binaire à exécuter est pour
Linux: il contrôle le marquage dans l’entête ELF du fichier, recherche les chemins connus vers
l’interpréteur ELF et contrôle les notes dans le fichier ELF; enfin, par défaut, les exécutables ELF
non marqués sont considérés comme étant pour Linux. Si toutes ces méthodes échouent, une
tentative pour exécuter le binaire pourra générer une erreur:
% ./mon-binaire-elf-linux
ELF binary type not known
Abort
Pour que le noyau FreeBSD puisse distinguer un binaire ELF FreeBSD d’un binaire Linux, vous
devez employer l’utilitaire brandelf(1):
Pour installer une application Linux basée sur RPM, installer en premier le logiciel précompilé ou
porté archivers/rpm4. Une fois installé, root peut utiliser la commande suivante pour installer un
.rpm:
# cd /compat/linux
# rpm2cpio /path/to/[Link] | cpio -id
Si nécessaire, utiliser brandelf sur les binaires ELF installés. Il faut noter que cela empêchera une
desinstallation propre.
295
multi on
Cela indique qu’il faut tout d’abord regarder dans le fichier /etc/hosts puis interroger le DNS. Quand
le fichier /compat/linux/etc/[Link] n’existe pas, les applications Linux trouvent le fichier
/etc/[Link] et se plaignent de sa syntaxe FreeBSD incompatible. Supprimez bind si un serveur de
noms n’est pas configuré avec le fichier /etc/[Link].
10.5.5. Divers
Cette section décrit comment la compatibilité binaire avec Linux fonctionne, et est basée sur un
courrier électronique de Terry Lambert tlambert@[Link] envoyé à la liste de diffusion pour
la discussion de sujets non-techniques en rapport avec FreeBSD (Message ID:
199906020108.SAA07001@[Link]).
FreeBSD possède une abstraction appelée "chargeur de classe d’exécution". C’est une portion de
l’appel système execve(2).
Plus tard, une modification a été faite sur sh(1) pour examiner les deux premiers caractères, et s’ils
étaient :\n, alors elle invoquait l’interpréteur de commandes csh(1) à la place.
FreeBSD possède désormais une liste de chargeurs, avec un chargeur par défaut, #!, pour exécuter
les interpréteurs ou les procédures de commandes.
Pour le support de l’ABI Linux, FreeBSD voit le nombre magique comme un binaire ELF. Le
chargeur ELF recherche une marque spécifique, qui se trouve dans une section de commentaires
dans l’image ELF, et qui n’est pas présente dans les binaires SVR4/Solaris™ ELF.
Pour que les binaires Linux puissent fonctionner, ils doivent être marqués sous le type Linux avec
brandelf(1):
Lorsque le chargeur ELF voit le marquage Linux, le chargeur remplace un pointeur dans la
structure proc. Tous les appels système sont indexés par l’intermédiaire de ce pointeur (dans un
système UNIX traditionnel, cela serait la structure sysent[], contenant les appels système). De plus,
le processus est marqué pour une gestion spéciale du vecteur d’interruption ("trap") pour le signal
de code "trampoline", et plusieurs autres corrections (mineures) qui sont gérées par le noyau Linux.
Le vecteur d’appel système Linux contient, entre autres, une liste des entrées sysent[] dont les
adresses résident dans le noyau.
296
Quand un appel système est effectué par le binaire Linux, le code "trap" déréférence de la structure
proc le pointeur de la fonction de l’appel système, et utilise les points d’entrée Linux, et non pas
FreeBSD, de l’appel système.
Le mode Linux redéfinit dynamiquement l’origine des requêtes. C’est, en effet, équivalent à l’option
union de montage des systèmes de fichiers. Tout d’abord, une tentative est faite pour rechercher le
fichier dans le répertoire /compat/linux/chemin-origine. Si cela échoue, la recherche est effectuée
dans le répertoire /chemin-origine. Cela permet de s’assurer que les binaires nécessitant d’autres
binaires puissent s’exécuter. Par exemple, l’ensemble des outils Linux peuvent tourner sous l’ABI
Linux. Cela signifie également que les binaires Linux peuvent charger et exécuter les binaires
FreeBSD, s’il n’y a pas de binaires Linux correspondant présents, et vous pourriez placer une
commande uname(1) dans l’arborescence /compat/linux pour vous assurer que les binaires Linux
ne puissent pas dire qu’ils ne tournent pas sous Linux.
En effet, il y a un noyau Linux dans le noyau FreeBSD. Les diverses fonctions sous-jacentes qui
implémentent tous les services fournis par le noyau sont identiques entre les deux tables d’entrées
des appels systèmes FreeBSD et Linux: les opérations sur les systèmes de fichiers, les opérations sur
la mémoire virtuelle, la gestion des signaux, iet l’IPC System V. La seule différence est que les
binaires FreeBSD utilisent les fonctions glue de FreeBSD, et les binaires Linux celles de Linux. Les
fonctions glue de FreeBSD sont liées en statique dans le noyau, les fonctions glue Linux peuvent être
liées statiquement, ou l’on peut y accéder via un module du noyau.
Techniquement, ce n’est pas vraiment de l’émulation, c’est l’implémentation d’une interface binaire
pour les applications (ABI). Cela est parfois appelé "émulation Linux" parce que l’implémentation a
été faite à une époque où il n’y avait pas vraiment d’autres mots pour décrire ce qui était en
développement. Dire que FreeBSD exécutait les binaires Linux n’était pas vrai, jusqu’à ce le code de
support Linux soit compilé ou le module soit chargé.
297
Chapitre 11. WINE
11.1. Synopsis
WINE, qui signifie Wine Is Not an Emulator, car c’est en fait un programme faisant office de
surcouche d’interprétation des instructions système. Celui-ci permet l’installation et l’utilisation de
programmes à l’origine prévus pour fonctionner sous Windows® sur FreeBSD (mais aussi sous
d’autres systèmes d’exploitation).
Il fonctionne par l’interception des appels systèmes, ou des requêtes venant d’un programme vers
le système d’exploitation, et transforme les appels systèmes Windows® en appels systèmes que
FreeBSD peut comprendre. Il fera également en sorte de traduire dans le sens inverse les nouvelles
instructions afin que le programme Windows® fonctionne comme espéré. Alors oui dans un
certain sens, il émule bien un environnement Windows®, car il fournit bons nombres des
ressources nécessaires au bon fonctionnement des applications Windows®.
Cependant, il ne s’agit pas d’un émulateur au sens strict du terme. En effet, dans la plupart des
émulateurs, le fonctionnement est sensiblement différent. Ces derniers simulent des composants
physiques informatiques afin de faire tourner des logiciels. C’est le cas notamment des solutions de
virtualisation (comme: emulators/qemu). L’un des bénéfices notables de cette approche est la
capacité d’installation d’un système d’exploitation entier. Cela signifie, que du point de vue des
applications exécutées au sein de cet émulateur, tout se passe comme sur un véritable système non
émulé. De cette manière les programmes ont de bonnes chances de fonctionner comme escomptés.
Le mauvais côté inhérent à cette approche est tout simplement qu’un programme simulant du
matériel informatique est forcément plus lent que ledit matériel qu’il tente de reproduire. Le
système émulé (appelé invité) a besoin des ressources de la machine physique (appelée hôte), et
réserve ces ressources tant qu’il fonctionne.
D’un autre côté, le projet WINE, est plus économe en ressources système. Il fera en sorte de traduire
des instructions systèmes à la volée. Ce n’est en théorie pas aussi rapide qu’un véritable système
Windows®, mais la différence de vitesse d’exécution reste minime. D’un autre côté, WINE essaie
d’interpréter au mieux les différentes évolutions des systèmes Windows® pour rester compatible
avec les applications originellement conçues pour ces systèmes. C’est une tâche complexe, ce qui
veut dire qu’il faut garder en tête le fait que de nombreuses applications puissent ne pas
fonctionner comme espéré sous WINE, ne marchent pas du tout, voire ne s’installent même pas.
De cette manière, WINE constitue une autre option dans le but d’essayer de faire fonctionner un
programme Windows® sous FreeBSD. Il peut servir de première solution, si cela fonctionne, car
cela peut permettre de lancer l’application escomptée sans pour autant monopoliser toutes les
ressources du système hôte FreeBSD.
Ce chapitre va décrire:
• Comment WINE fonctionne et quelles sont ses différences vis-à-vis des autres alternatives
comme la virtualisation.
298
• Comment installer des interfaces graphiques pour assister à la configuration de WINE.
Comme nous l’avons déjà vu dans le Synopsis de ce chapitre, WINE constitue une surcouche de
compatibilité logicielle permettant l’utilisation d’applications Windows® sur d’autres systèmes
d’exploitation. En théorie, cela signifie que ces programmes pourront être exécutés sous des
systèmes comme FreeBSD, macOS et Android.
• Tout d’abord, WINE implémente un environnement qui imite celui de diverses versions de
Windows®. Par exemple, si une application demande l’accès à une ressource de la machine
comme la RAM, WINE possède une interface mémoire qui ressemble et se comporte (en tout cas
pour l’application en question) comme Windows®.
• Ensuite, une fois que l’application utilise cette interface, WINE reçoit les requêtes d’adressage
mémoire et les transforme en instructions compatibles avec le système hôte. À l’inverse, lorsque
l’application sous WINE veut obtenir des données, elles sont converties pour être exploitées par
cette application Windows®.
• Un certain nombre d’exécutables Windows®, qui sont (ou en tout cas imitent) les programmes
courants (comme /lib/wine/[Link], qui fournit l’éditeur de texte standard de
299
Windows®).
Comme dans le monde de FreeBSD, les terminaux sont extrêmement courants, il est naturel de
penser que WINE possède une excellente prise en charge des programmes en mode texte.
Cependant, la majorité des applications pour Windows®, surtout les applications les plus
populaires, sont conçues pour une utilisation avec une interface utilisateur graphique. De ce fait,
les outils de WINE sont conçus pour lancer par défaut des programmes possédant une interface
graphique.
Néanmoins, il existe trois méthodes disponibles pour lancer ces programmes en interface
utilisateur console:
• L’approche sortie directe qui affichera directement sur la sortie standard d’un terminal.
• La wineconsole qui est un outil qui peut être utilisé avec les options user ou curses afin d’utiliser
certaines améliorations que fournit le système de WINE pour les applications consoles.
Ces méthodes sont détaillées en profondeur sur cette page : Wiki du projet WINE.
WINE est en lui-même un projet open source mature, de ce fait, ce n’est pas étonnant qu’il serve de
base à d’autres solutions logicielles plus complexes.
Un certain nombre d’entreprises ont utilisé WINE comme base centrale d’un de leur propre produit
propriétaire (sachant que la licence LGPL permet ceci). Voici deux solutions populaires basées sur
le projet WINE:
• CrossOver de Codeweavers
Cette solution propose des installations en un clic de différentes versions de WINE contenant
différentes améliorations et optimisations (l’entreprise contribue au projet WINE en partageant
certaines de ses améliorations). La principale préoccupation de Codeweavers est de faire en sorte
que la plupart des applications les plus populaires puissent s’installer et s’exécuter parfaitement.
Bien que l’entreprise ait par le passé produit une version native de CrossOver pour FreeBSD, ce
n’est plus le cas depuis longtemps. Certaines références en ligne sont encore disponibles (comme ici
sur un forum dédié), cela fait cependant un certains temps qu’elles ne sont plus mises à jour.
• Proton de Steam
Steam qui distribue principalement des jeux vidéo utilise aussi WINE afin de permettre
l’installation et l’exécution de jeux prévus pour Windows® sur d’autres systèmes d’exploitation.
300
Cela vise surtout à la base les systèmes de type Linux, bien qu’une certaine prise en charge de
macOS existe également.
Tandis que Steam ne propose pas de version FreeBSD de leur client, il existe plusieurs options pour
utiliser la versions Linux® du client en utilisant la surcouche de compatibilité Linux de FreeBSD.
Aux solutions propriétaires, nous pouvons ajouter d’autres projet ayant publié des applications
conçues pour fonctionner en tandem avec la version standard et open source de WINE. Le but de
ces solutions va de rendre l’installation de WINE plus facile à la simplification de l’installation des
programmes les plus populaires.
Ces solutions sont abordées avec plus de détails dans une partie ultérieure de ce chapitre:
interfaces graphiques pour la gestion de WINE , avec notamment:
• winetricks
• Homura
• Le double-amorçage: Une solution évidente est de directement lancer les programmes conçus
pour Windows® sur ce dernier. Cela veut bien sûr dire qu’il faudra quitter FreeBSD afin de
démarrer sous Windows®, aussi cette méthode n’est pas envisageable si l’accès aux
programmes des deux systèmes en simultané est nécessaire.
• Les machines virtuelles: les machines virtuelles (ou VMs), comme mentionné plus tôt dans ce
chapitre, sont des procédés logiciels qui émulent un ensemble complet de matériels
informatiques, sur lequel un autre système d’exploitation (comprenant Windows®) peut être
installé et utilisé. Les outils modernes rendent les VMs simples à créer et à gérer, mais cette
méthode a un coût. En effet, une bonne portion des ressources du système hôte doit être allouée
à chaque VM, sachant que ces ressources ne pourront pas être libérées tant que la VM est en
fonctionnement. Il existe plusieurs solutions de gestion de machines virtuelles disponibles sous
FreeBSD, les solutions open source comme qemu, bhyve et VirtualBox en sont un bon exemple.
Voir le chapitre sur la Virtualisation pour plus de détails.
• L’accès distant: Comme beaucoup d’autres systèmes de type UNIX®, FreeBSD est capable
d’utiliser un ensemble d’applications permettant aux utilisateurs d’accéder à des ordinateurs
Windows® à distance afin d’utiliser leurs programmes et données. En plus des clients comme
xrdp qui sont compatibles avec le protocole de bureau distant (RDP) standard de Windows®, il
existe d’autres standards open source comme vnc pouvant aussi être utilisé (si un serveur
compatible est présent à l’autre bout).
301
11.3.1. WINE les prérequis
Avant de procéder à l’installation de WINE lui-même, il convient d’avoir préinstallé ce qui suit:
La plupart des programmes Windows® s’attendent à pouvoir interagir avec une interface
graphique. Si WINE est installé sans une interface graphique déjà présente, ses dépendances
comprendront également le compositeur Wayland, et de ce fait, une interface graphique sera
effectivement installée aux côtés de WINE. Cela dit, il vaut mieux installer au préalable une
interface graphique de votre choix, configurée et fonctionnelle avant de procéder à l’installation de
WINE.
• wine-gecko
Pendant une longue période Windows® avait, par défaut, pré-installé le navigateur Web: Internet
Explorer. Par conséquent, certaines applications s’exécuteront en partant du principe qu’il y aura
toujours quelque chose capable d’afficher des pages Web. Dans le but de fournir cette
fonctionnalité, la surcouche logicielle de WINE inclue un navigateur Internet basique utilisant le
moteur de rendu Web Gecko issu du projet Mozilla. Lorsque WINE sera lancé pour la première fois,
une fenêtre de dialogue apparaîtra pour proposer le téléchargement et l’installation de Gecko. Il
existe un certain nombre de raisons pour vouloir procéder ainsi (cela sera abordé plus loin). Mais,
il peut aussi être installé avant même d’installer WINE ou en parallèle de l’installation de ce
dernier.
Pour installer ce programme en version pré-compilée, il faut procéder comme ce qui suit:
# cd /usr/ports/emulator/wine-gecko
# make install
• wine-mono
MONO est une implémentation open source de la plateforme de développement .NET de Microsoft.
Installer MONO devrait rendre plus facile l’installation et l’utilisation des applications écrites en
.NET sous FreeBSD.
# cd /usr/ports/emulator/wine-mono
302
# make install
Une fois les prérequis installés, il suffit de procéder à l’installation de WINE via la commande
suivante:
ou alors, WINE peut être compilé depuis le catalogue de logiciels portés avec les commandes
suivantes:
# cd /usr/ports/emulator/wine
# make install
Comme la plupart des applications, les programmes Windows®, sont, eux aussi, passés de
l’ancienne architecture 32 bits à l’architecture 64 bits. La plupart des logiciels récents sont écrits
pour des systèmes d’exploitation 64 bits, cependant, les systèmes d’exploitation modernes peuvent
parfois continuer d’utiliser des programmes plus anciens en 32 bits. FreeBSD ne diffère en rien sur
ce point, il supporte effectivement les architectures 64 bits depuis les versions 5.X du système.
Ainsi, le fait que les programmes les plus anciens ne soient plus pris en charge, peut justifier
l’emploi d’émulateurs. Les utilisateurs se tournent bien souvent vers WINE afin de pouvoir jouer à
des jeux et utiliser divers programmes qui ne fonctionnent plus correctement sur du matériel
moderne. Heureusement, FreeBSD prend en charge les trois cas de figures:
• Pour une machine moderne 64 bits sur laquelle vous désirez lancer une application 64 bits
Windows®, il suffit de procéder à l’installation des outils WINE comme détaillés dans les
rubriques précédentes. En procédant ainsi, le système installera automatiquement la version 64
bits de Wine.
• Si jamais, un utilisateur possède une vieille machine prenant en charge exclusivement les
architectures 32 bits, il peut installer une version 32 bits de FreeBSD et ensuite procéder à
l’installation de WINE comme indiqué précédemment.
303
Ces applications de types "portables" constituent de bons choix pour procéder à ce genre de tests,
tout comme les programmes pouvant s’exécuter en s’appuyant sur un unique fichier exécutable.
Il existe deux méthodes différentes pour lancer des programmes Windows depuis un émulateur de
terminal. La première et la plus directe, est de naviguer dans le répertoire contenant l’exécutable
du programme en question (.EXE) et de taper ce qui suit:
% wine [Link]
Pour les applications qui acceptent des arguments en ligne de commande, il suffit de les ajouter
après l’exécutable comme habituellement:
Il est aussi possible de fournir le chemin complet vers l’exécutable afin de l’utiliser dans un script,
par exemple:
% wine /home/user/bin/[Link]
Après l’installation de WINE, les environnements graphiques doivent être configurés pour associer
les fichiers exécutables Windows® (.EXE) avec WINE. Il sera ensuite possible de parcourir le
système avec un gestionnaire de fichiers, puis de lancer une application Windows® de la même
manière que n’importe quel autre programme (avec un clic ou en double-cliquant selon la manière
dont est configurée l’interface graphique).
Sur la plupart des environnements de bureau, il suffit de vérifier que l’association est correcte en
faisant un clic droit sur le fichier, puis de chercher une option de lancement correspondante dans
le menu. Une des options (normalement celle par défaut) devrait être lancer avec Wine - Chargeur
de programmes Windows, comme dans la capture d’écran ci-dessous:
304
Dans l’éventualité où le programme ne se lancerait pas comme escompté, essayez de le lancer
depuis un terminal afin de voir si un éventuel message d’erreur apparaît, vous donnant ainsi un
indice pour débloquer la situation. Dans le cas où WINE ne serait pas l’application par défaut pour
ouvrir les fichiers .EXE après l’installation, veuillez vérifier les associations MIME pour cette
extension de fichier dans l’environnement de bureau courant, l’interface système ou bien le
gestionnaire de fichiers.
Un préfixe WINE est un répertoire, il se trouve généralement (par défaut) ici: $HOME/.wine mais
peut aussi se situer ailleurs. Le préfixe est un ensemble de configurations et de fichiers utilisés par
WINE pour configurer et utiliser l’environnement Windows® dont a besoin une application
donnée. Par défaut, une installation toute fraîche de WINE va mettre en place la structure suivante
lors de la première utilisation par un utilisateur:
305
exemple, après une nouvelle installation de WINE, ce répertoire devrait contenir au moins deux
éléments permettant l’accès au système de fichiers de FreeBSD en utilisant le modèle de
Windows®, c’est-à-dire avec les lecteurs associés à des lettres:
• drive_c/: émule le disque principal d’un système Windows® (c’est-à-dire: C:). Il contient une
arborescence de répertoires et fichiers imitant celui d’un système Windows® standard. Un
préfixe WINE fraîchement créé devrait contenir les répertoires Windows® 10 comme Users et
Windows qui contiennent le système d’exploitation lui-même. Par la suite, les applications qui
seront installées au sein de ce préfixe se situeront soit dans Program Files ou Program Files
(x86), en fonction de leurs architectures respectives.
• [Link]: Ce fichier de registres contient les informations sur l’installation de Windows®, qui
est dans le cas de WINE, l’environnement se trouvant dans drive_c.
Alors que WINE créera par défaut un préfixe dans le répertoire utilisateur $HOME/.wine/, il est
possible de mettre en place plusieurs préfixes. Il existe plusieurs raisons de procéder ainsi:
• La raison la plus courante à cela est d’émuler différentes versions de Windows®, en fonctions
des besoins en compatibilité de divers logiciels.
• De façon similaire, cela peut aussi servir dans l’optique de tests. En effet, on peut très bien
dupliquer le préfixe par défaut pour réaliser divers tests de compatibilité sans risquer de
compromettre le préfixe principal.
% WINEPREFIX="/home/username/.wine-new" winecfg
Ce qui lancera l’utilitaire de configuration des préfixes winecfg (nous verrons ceci de façon plus
approfondie dans la section ultérieure). En définissant un chemin de répertoire pour la variable
WINEPREFIX, un nouveau préfixe sera créé à cet endroit, à supposer qu’un préfixe ayant un nom
identique ne se trouve pas déjà là.
306
% WINEPREFIX="/home/username/.wine-new" wine [Link]
Comme expliqué plus haut, WINE inclut winecfg un outil qui permet la configuration des préfixes
depuis une interface graphique. Il comprend plusieurs fonctionnalités qui sont détaillées dans les
sections suivantes. Quand winecfg est lancé depuis un préfixe, ou bien lancé en combinaison avec
l’emplacement d’un préfixe dans la variable WINEPREFIX, cela autorisera la configuration de préfixe
ainsi sélectionné comme décrit plus loin.
Les sélections faites dans l’onglet Applications affecterons la portée des changements effectués dans
les onglets Libraries et Graphics, cela signifie que les changements apportés seront cantonnés aux
applications sélectionnées. Voir Utiliser Winecfg sur le Wiki de WINE pour plus d’informations.
[Link]. Applications
L’onglet Applications permet d’associer des programmes avec une version particulière de
Windows®. Au premier démarrage de WINE, cet onglet contiendra simplement une seule entrée:
Default Settings. Cela correspond à toutes les configurations par défaut du préfixe, cette entrée
(comme l’implique le bouton Remove application désactivé) ne peut être pas supprimée du préfixe.
Mais, des applications additionnelles peuvent être ajoutées en suivant le procédé ci-dessous:
307
2. Utilisez la fenêtre qui apparaît alors pour sélectionner l’exécutable du programme voulu;
WINE fourni par défaut un ensemble de bibliothèques open source reproduisant les mêmes
fonctionnalités que leurs équivalent Windows®. Cependant, comme vu précédemment dans ce
chapitre, le projet WINE fait en sorte de s’adapter au rythme des mise à jour de ces bibliothèques.
De ce fait, les versions fournies avec WINE peuvent ne pas disposer de certaines fonctionnalités
attendues par les programmes Windows® les plus récents.
Il est toutefois possible, grâce à winecfg, de remplacer spécifiquement les bibliothèques de bases de
WINE, tout particulièrement si une installation de Windows® est disponible sur la machine hôte.
Pour chaque dépendance ayant besoin d’être remplacée, il suffit de procéder comme indiqué en
dessous:
1. Ouvrez le menu déroulant New override for library et sélectionnez la bibliothèque à remplacer;
3. Le nouveau remplacement apparaîtra dans la liste Existing overrides, notez les mentions native,
builtin entre parenthèses;
308
celle intégrée par défaut dans WINE.
L’onglet Graphics fournit des options permettant à la fenêtre du programme lancé via WINE de
fonctionner avec des performances optimales sous FreeBSD:
• Autoriser le gestionnaire de fenêtre de FreeBSD à contrôler les fenêtres des applications WINE,
cela concerne les fonctionnalités telles que redimensionner une fenêtre;
• Créer un bureau virtuel émulé dans lequel seront lancés tous les programmes WINE. Une fois
cette option cochée, il est possible de définir la taille de ce bureau virtuel via les zones de saisie
en face de Desktop size;
309
Cet onglet permet la configuration des éléments suivants:
• Les paramètres de thème et d’aspect visuel pour les programmes lancés via WINE;
• Si le sous-système WINE doit gérer les associations MIME (utilisé pour déterminer quelle
application ouvre tel type de fichier particulier) de manière interne ou non;
• La correspondance des répertoires de la machine FreeBSD hôte avec les répertoires utiles au
sein de l’environnement Windows®. Afin de changer les associations présentes par défaut,
sélectionnez l’élément voulu et cliquez sur Browse, puis sélectionnez un répertoire dans la
fenêtre qui apparaît.
310
L’onglet Drives permet de créer un lien d’un répertoire du système hôte FreeBSD vers une lettre de
lecteurs de l’environnement Windows®. Les valeurs par défaut devraient être familières, car elles
affichent le contenu de dosdevices/ dans le préfixe WINE courant. Les changements effectués dans
cet onglet se répercuteront dans dosdevices, et les liens correctement formatés présents dans ce
répertoire apparaîtront dans cet onglet également.
Pour créer une nouvelle entrée, par exemple pour un CD-ROM (monté dans /mnt/cdrom), il suffit
réaliser les étapes suivantes:
4. Remplissez la zone de saisie Path soit en tapant le chemin vers la ressource, soit en cliquant sur
Browse pour sélectionner la ressource en question.
Par défaut, WINE détecte le type de ressource liée, mais cela peut être changé manuellement si
besoin. Voir la section correspondante dans le Wiki de WINE pour plus de détails sur les options
avancées.
[Link]. Audio
311
Cet onglet comprend des options configurable afin de router le son depuis les programmes
Windows® vers le système de son natif de FreeBSD, notamment:
• La sélection du pilote;
• Un test audio.
312
Le dernier onglet contient des informations à propos du projet WINE, comme un lien vers le site
Web. Cet onglet contient par ailleurs des champs de saisies pour les informations de l’utilisateur
(complètement optionnel), bien que ces informations ne soient envoyées absolument nulle part au
contraire d’autres systèmes d’exploitation.
11.6.1. Winetricks
Le programme winetricks est un assistant multiplate-forme et complet pour WINE. Il n’est pas
développé par le projet WINE, mais est maintenu par un groupe de contributeurs sur Github. Il
contient "recettes" automatisées pour faire fonctionner un certain nombre d’applications
communes sous WINE, en optimisant à la fois les paramètres et en installant certaines DLL
automatiquement.
Pour installer winetricks sur FreeBSD en version pré-compilée, utilisez la commande suivante
313
(notez que cela nécessite que le paquet i386-wine ou bien i386-wine-devel soit installé, par
conséquent ils seront installés automatiquement avec d’autres dépendances):
Pour compiler winetricks depuis les sources, tapez les commandes suivantes:
# cd /usr/ports/emulators/i386-wine
# make install
# cd /usr/ports/emulators/winetricks
# make install
Si une installation manuelle est requise, référez-vous la page suivante pour des instructions:
Github.
% winetricks
Notez qu’un préfixe WINE en 32 bits doit être présent pour lancer effectivement winetricks. Lancer
winetricks aura pour effet de faire apparaître une fenêtre proposant un certain nombre de choix,
comme celle-ci:
Sélectionner soit Install an application, soit Install a benchmark, ou encore Install a game affichera
une liste avec une liste d’options prises en charge, comme ci-dessous pour les applications:
314
Sélectionner un ou plusieurs éléments et cliquer sur OK démarrera automatiquement leur(s)
processus d’installation. Au début, certains messages qui ont l’air d’être des erreurs peuvent
apparaître, mais il s’agit en fait d’informations et d’alertes mentionnant la manière de contourner
certains problèmes éventuels pour certaines applications:
Une fois ces messages contournés, l’installation des applications en question sera effectivement
lancée:
315
Une fois l’installation terminée, le nouveau logiciel Windows® devrait être disponible depuis le
menu de l’environnement de bureau (comme ici, avec l’environnement de bureau LXQT):
316
Une fenêtre Windows® apparaîtra pour lister tous les programmes et composants installés au sein
de ce préfixe. Choisissez l’application à supprimer, puis cliquez sur le bouton Modify/Remove:
317
Cela lancera l’installateur interne de l’application en question, qui devrait également comprendre
une option pour la désinstallation:
318
11.6.2. Homura
Homura est une application qui ressemble à winetricks, mais ce dernier s’inspire surtout de Lutris,
qui est un système axé sur le jeu vidéo pour les plateformes Linux. Bien que cela soit centré sur le
jeu vidéo, il y a aussi des applications n’étant pas des jeux qui sont disponibles pour l’installation au
sein d’Homura.
Homura est aussi disponible via le catalogue de logiciels portés de FreeBSD. Cependant, au
contraire de WINE ou winetricks, il se trouve dans la section games plutôt que dans la section
emulators.
# cd /usr/ports/games/homura
# make install
319
[Link]. Utiliser Homura
L’utilisation d’Homura est relativement similaire à celle de winetricks. Lorsque vous le lancez pour
la première fois, via une ligne de commande (ou via un lanceur de votre environnement de
bureau):
% Homura
Cela devrait afficher le message d’accueil du programme. Cliquez sur OK pour continuer.
Le logiciel proposera la création d’un raccourci dans le menu des environnements de bureaux
compatibles:
320
La fenêtre principale de l’application devrait désormais apparaître, elle correspond plus ou moins à
une sorte de menu principal avec toutes ses options. Nombre de ces éléments sont identiques à
ceux trouvés dans winetricks, néanmoins, Homura en propose également des nouveaux, comme
une option utile pour ouvrir le répertoire des données (Open Homura Folder) ou de lancer un
programme particulier au sein du préfixe (Run a executable in prefix).
321
Pour choisir une application prise en charge et l’installer, sélectionnez Installation, puis cliquez sur
OK. Cela affichera une liste d’applications qu’Homura pourra installer automatiquement.
Choisissez-en une, puis cliquez sur OK pour en commencer l’installation.
322
Homura commencera d’abord par télécharger l’application en question. Dans un environnement de
bureau le prenant en charge, une notification est susceptible d’apparaître.
De plus, le programme se chargera de générer un nouveau préfixe pour l’application. Une fenêtre
standard de WINE devrait apparaître avec ce message:
Ensuite, Homura se chargera d’installer tous les prérequis pour ledit programme. Ce qui peut
impliquer le téléchargement et l’extraction d’un certain nombre de fichiers, les détails de ces
actions apparaîtront dans une fenêtre comme ceci:
Les paquets téléchargés seront automatiquement extraits et installés en fonction des besoins.
323
L’installation peut se solder par une simple notification de bureau ou un message dans le terminal,
en fonction de la manière dont Homura a été lancé. Mais dans tous les cas, Homura devrait de
nouveau afficher son écran principal. Afin de vérifier si l’installation a effectivement été menée à
bien, choisissez Launcher, puis cliquez sur OK.
324
Cela affichera une liste des programmes installés.
325
Pour lancer le nouveau programme, sélectionnez le depuis la liste, puis cliquez sur OK. Afin de
procéder à la désinstallation d’une application, choisissez Uninstallation depuis le menu principal,
ce qui devrait afficher une liste similaire. Choisissez un programme à supprimer, puis cliquez sur
OK.
326
11.6.3. Utiliser plusieurs outils graphiques de gestion
Il est à noter que l’installation d’un outil n’exclut pas l’utilisation d’un autre. Il est totalement
possible, et même intéressant, d’avoir plusieurs outils installés en même temps, comme ils offrent
le support de différents programmes.
Cependant, assurez-vous au préalable qu’ils n’accèdent pas au même préfixe WINE. Chacun de ces
logiciels applique des solutions de contournement et appliquent des changements aux registres en
fonction de problèmes connus au sein de WINE afin de permettre la bonne exécution d’un
programme. Utiliser wintricks et Homura sur le même préfixe WINE pourrait compromettre ces
changements et rendre ainsi certaines applications instables.
327
11.7. WINE sur un système FreeBSD avec plusieurs
utilisateurs
11.7.1. Problèmes avec l’utilisation d’un préfixe WINE commun
Comme la plupart des systèmes d’exploitation de type UNIX®, FreeBSD est conçu de sorte que
plusieurs utilisateurs puissent être connectés et peuvent travailler sur la même machine en même
temps. D’un autre côté, Windows® est aussi un système multi-utilisateurs, mais dans le sens où il
peut y avoir plusieurs comptes utilisateur sur un même système. Mais, l’objectif est qu’un seul
utilisateur à la fois se serve de la machine physique (ordinateur portable ou fixe).
Les récentes versions grand public de Windows® ont amélioré l’utilisation du système dans le cas
d’un scénario multi-utilisateurs. Mais le système reste largement structuré pour une utilisation
mono-utilisateur. De plus, les mesures prises par le projet WINE afin de créer un environnement
compatible Windows® impliquent, contrairement à aux applications FreeBSD (y compris WINE lui-
même), qu’il s’approchera d’un environnement mono-utilisateur.
Ce qui veut dire, dans cette optique, que chaque utilisateur devra gérer son propre ensemble de
configurations, ce qui est potentiellement une bonne chose. Cela dit, il peut être avantageux
d’installer certaines applications une seule fois, notamment les plus lourdes, comme les suites de
bureautique ou les jeux vidéo. Deux raisons évidentes pour vouloir procéder ainsi: la maintenance
(les mises à jour ne devront être effectuées qu’une seule fois) et l’efficacité en termes d’espace
disque (pas de duplications de fichiers).
Il existe deux stratégies dans le but de minimiser l’impact de plusieurs utilisateurs WINE sur le
système.
Comme montré dans la section sur la configuration de WINE, ce dernier fourni la possibilité
d’intégrer des disques supplémentaires à un préfixe donné. De cette manière, les applications
peuvent être installées à un endroit commun, alors que les utilisateurs pourront toujours avoir un
préfixe avec leurs configurations propres (selon le programme). C’est un bon choix, s’il y a peu
d’applications devant être partagées entre les utilisateurs, et s’il y a des programmes qui n’ont
besoin que de configurations minimes de leur préfixe pour leur permettre de fonctionner.
1. Premièrement, mettre en place un répertoire partagé sur le système avec lequel seront stockés
les fichiers, comme /mnt/windows-drive_d/. Créer un nouveau dossier, cela est détaillé dans la
page de manuel de mkdir(1).
2. Puis, définir les permissions pour ce nouveau répertoire afin d’autoriser l’accès uniquement
aux utilisateurs voulus. Une manière de procéder est de créer un nouveau groupe, "windows"
par exemple, ajouter les utilisateurs en question à ce groupe (voir la sous-section sur les
groupes dans la section Gestion des comptes et des utilisateurs de ce manuel), puis définir les
permissions du répertoire sur 770 (la section sur les permissions sous FreeBSD illustre ce
processus).
328
3. Enfin, ajouter ce répertoire au préfixe de l’utilisateur en utilisant winecfg comme décrit plus
haut, dans la section sur la configuration de WINE.
Une fois ceci terminé, les applications pourrons être installées à cet emplacement, et ensuite être
lancées en utilisant la lettre de lecteur assignée (ou bien en utilisant le chemin standard façon
UNIX®. Cependant, comme noté plus haut, un seul utilisateur devrait utiliser ces applications (qui
pourraient accéder à des fichiers dans leur répertoire d’installation) à la fois. Il se peut que
certaines applications présentent un comportement inattendu lorsqu’elles seront exécutées par un
utilisateur qui n’en n’est pas le propriétaire, malgré le fait que ce dernier appartienne bien au
groupe ayant les permissions "lecture/écriture/exécution" pour tout le répertoire.
Si jamais beaucoup d’applications doivent être partagées, ou bien qu’elles nécessitent des réglages
spéciaux pour fonctionner correctement, une autre approche peut être requise. Dans cette
méthode, un autre utilisateur est créé tout spécialement dans le but de stocker les préfixes WINE et
les applications installées. Chaque utilisateur voulu sera autorisé à lancer les programmes en tant
que ce nouvel utilisateur en utilisant la commande sudo(8). Cela a pour résultat, que ces utilisateurs
peuvent désormais lancer une application WINE comme ils le feraient en temps normal, cela agira
simplement comme si cette dernière était lancée par l’utilisateur nouvellement crée, et donc
utilisera le préfixe centralisé contenant les configurations ainsi que les programmes. Pour parvenir
à cela, il faut suivre les étapes suivantes:
# adduser
Entrez le nom d’utilisateur (par exemple windows) et le nom complet ("Microsoft Windows").
Ensuite acceptez les options par défauts pour les questions restantes. Puis, installez l’utilitaire sudo
en version pré-compilé avec la commande suivante:
329
# Defaults
Defaults:WINDOWS_USERS env_reset
Defaults:WINDOWS_USERS env_keep += DISPLAY
Defaults:WINDOWS_USERS env_keep += XAUTHORITY
Defaults !lecture,tty_tickets,!fqdn
# Members of the admin user_alias, defined above, may gain root privileges
ADMIN ALL=(ALL) ALL
# The WINDOWS_USERS may run WINDOWS programs as user windows without a password
WINDOWS_USERS ALL = (windows) NOPASSWD: WINDOWS
Cela permet aux utilisateurs nommés dans la section User_Alias de lancer les programmes listés à la
section Cmnd Alias en utilisant les ressources listées dans la section Defaults (sur l’affichage en
cours d’utilisation) comme s’il s’agissait de l’utilisateur listé dans la dernière ligne du fichier.
Autrement dit, les utilisateurs désignés comme WINDOWS_USERS peuvent lancer les applications
WINE et winecfg comme étant l’utilisateur windows. De plus, cette configuration signifie que les
utilisateurs membres de ce groupe n’auront pas à entrer le mot de passe pour l’utilisateur windows.
Ensuite, il faut donner l’accès à l’affichage pour l’utilisateur windows, sachant que c’est sous cet
utilisateur que les programmes WINE seront lancés:
% xhost +local:windows
C’est une commande qui devrait être ajoutée à la liste des commandes lancées à la connexion ou au
démarrage de l’environnement de bureau. Une fois que tout ceci est prêt, un utilisateur configuré
comme un de WINDOW_USERS dans sudoers peut lancer les programmes en utilisant le préfixe en
commun avec la commande suivante:
Il faut noter cela dit, que si plusieurs utilisateurs accèdent à cet environnement partagé en même
temps, cela présente toujours un risque. Cependant, il faut aussi garder en tête que cet
environnement partagé peut contenir plusieurs préfixes WINE. De cette manière, un
administrateur peut créer, tester et vérifier un ensemble de programmes, chacun dans son propre
préfixe. Dans le même temps, un utilisateur peut jouer à un jeu pendant qu’un autre utilise une
suite bureautique sans pour autant multiplier des installations redondantes.
330
11.8.1. Installation et utilisation basique
[Link]. Comment installer la version 32 bits et la versions 64 bits sur le même système?
Comme déjà mentionné, les paquets wine et i386-wine entrent en conflit s’ils sont installés
normalement sur le même système. Néanmoins, plusieurs types d’installations peuvent être mis en
place en utilisant des mécanismes comme chroots/jails, ou en compilant WINE directement depuis
les sources (hors catalogue de logiciels portés de FreeBSD).
Théoriquement oui, car ce sont des programmes en interfaces console comme nous l’avons vu plus
haut. Cela dit, il existe une méthode plus adaptée à cela, il suffit d’utiliser DOSBox. Bien sûr, cela ne
coûte rien d’essayer. Créez simplement un nouveau préfixe WINE, installez le programme et si cela
ne marche pas, supprimez le préfixe.
[Link]. Est-ce que le paquet emulators/wine-devel doit être installé pour pouvoir utiliser la
version en développement de WINE à la place de la version stable?
Oui, cette version installe la version développement de WINE. Comme avec les versions 32 et 64 bits
de WINE, la version développement ne peux pas être installée en même temps que la version stable
sans mesures additionnelles.
Notez qu’il existait aussi une version "Staging" de WINE, contenant les mises à jour les plus récentes
du projet. Cette version était disponible dans le catalogue de logiciels portés de FreeBSD, mais a
depuis été supprimée. Cette version est toujours compilable depuis les sources cela dit.
[Link]. Comment les pilotes (de carte graphique par exemple) Windows® sont pris en
charge?
Les pilotes de périphériques se chargent de transférer des commandes depuis une application vers
le matériel de la machine. WINE émule un environnement Windows®, ce qui inclut les pilotes, qui
utilisent ensuite les pilotes natifs de FreeBSD pour effectuer ce transfert. Il n’est pas recommandé
d’installer des pilotes Windows®, car WINE est conçu de manière à interagir avec les pilotes du
système hôte. Si par exemple, des pilotes de cartes graphiques améliorent ses performances,
veuillez plutôt installer la version FreeBSD et non leur équivalent Windows®.
Un utilisateur sur le forum FreeBSD propose cette configuration pour régler l’apparence des polices
Windows® qui sont par défaut légèrement pixélisées.
Selon ce post sur le forum FreeBSD, ajouter ce qui suit au fichier .config/fontconfig/[Link]
devrait ajouter de l’anti-crenélage et rendre le texte plus lisible.
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "[Link]>"
331
<fontconfig>
[Link]. Installer Windows® ailleurs sur le système peut-il aider WINE à fonctionner?
C’est possible, en fonction de l’application devant être exécutée. Comme mentionné dans la section
sur winecfg, certaines DLLs intégrées par défaut avec WINE et d’autres bibliothèques peuvent être
remplacés en fournissant le chemin de versions alternatives. Si la partition ou le disque Windows®
est montée et accessible pour l’utilisateur sous FreeBSD, il est alors possible de remplacer certaines
DLL de WINE par les versions natives du système Windows®, diminuant potentiellement le risque
de fonctionnement inattendus de certaines applications.
[Link]. Quel est le meilleur endroit pour savoir si une application fonctionne sous WINE?
La première étape pour savoir si une application est compatible doit être le site WINE AppDB. Il
s’agit d’un site qui répertorie les programmes fonctionnant ou non sous WINE sur toutes les
plateformes supportées, et les solutions pour les faire fonctionner, solutions qui sont souvent
applicables sur d’autres plateformes.
Peut-être. Beaucoup de jeux Windows® se basent sur DirectX, une surcouche graphique
propriétaire de Microsoft. Cependant, il existe des projets open source qui tentent d’implémenter
une prise en charge pour cette technologie.
Le projet dxvk, est une tentative d’implémenter DirectX en utilisant le sous-système graphique
Vulkan compatible avec FreeBSD. Bien que ce système soit avant tout conçu pour fonctionner pour
la version Linux de WINE; il est apparemment possible d’utiliser ce système sur FreeBSD selon
certains utilisateurs du forum FreeBSD.
De plus, des initiatives sont en cours pour intégrer WINE Proton. Cela devrait amener la version de
Valve, développeur de la plateforme de jeux vidéo Steam, sur FreeBSD. Proton est une version de
WINE spécialement conçue pour que nombre de jeux Windows® puissent tourner avec un
minimum de manipulation de la part de l’utilisateur.
[Link]. Où les utilisateurs de WINE sous FreeBSD se ressemblent pour échanger des conseils
et astuces?
Il existe pas mal d’endroits où les utilisateurs FreeBSD discutent de problèmes liés à WINE, qui
332
peuvent être utilisés pour rechercher des solutions:
• Le forum FreeBSD, tout particulièrement les sections Installation and Maintenance of Ports or
Packages ou Emulation and virtualization.
• Les canaux IRC de FreeBSD, dont #freebsd (pour un support général), #freebsd-games, ou
autres.
• Le serveur discord: The BSD World, notamment les canaux bsd-desktop, bsd-gaming, bsd-wine, et
autres.
• Le Wiki de WINE sur lequel se trouve des tonnes d’informations relatives à l’utilisation de
WINE, qui sont bien souvent applicables à tous les systèmes d’exploitation pris en charge par
WINE;
• De plus, la documentation d’autre systèmes d’exploitation peut aussi s’avérer utile comme la
page WINE sur le Wiki de la distribution Arch Linux, bien que certaines applications tierces
(i.e., "companion applications") ne soient bien évidemment pas disponibles sous FreeBSD;
• Enfin, Codeweavers (le développeur d’une version commerciale de WINE) est un contributeur
actif au projet WINE. Souvent, les réponses aux questions sur leur forum peuvent également
être utiles pour dépanner des problèmes avec la version open source de WINE.
333
Partie III: Administration Système
Les chapitres restant couvrent tous les aspects de l’administration système de FreeBSD. Chaque
chapitre débute en décrivant ce qui sera appris à la lecture du chapitre, et détaille également ce que
le lecteur est sensé connaître avant de l’aborder.
Ces chapitres sont conçus pour être consultés dès qu’une information est nécessaire. Il n’est pas
nécessaire de les lire suivant un ordre particulier, ni tous les lire avant de pouvoir utiliser FreeBSD.
334
Chapitre 12. Configuration et optimisation
12.1. Synopsis
La configuration correcte d’un système peut sensiblement réduire la quantité de travail impliquée
dans la maintenance et la mise à jour. Ce chapitre décrit certains des aspects de la configuration des
systèmes FreeBSD.
Ce chapitre décrira également certains paramètres qui peuvent être modifiés pour configurer un
système FreeBSD pour des performances optimales.
• Comment optimiser les performances des disques et modifier les limitations du noyau.
Un administrateur devrait ajouter des entrées dans le fichier [Link] pour remplacer les valeurs par
défaut du fichier /etc/defaults/[Link]. Les fichiers de valeurs par défaut ne devraient pas être
copiés directement tels quels dans /etc - ils contiennent des valeurs par défaut, et non pas des
exemples. Tout changement spécifique au système devrait être fait dans le fichier [Link].
Un certain nombre de stratégies peuvent être appliquées dans le cas d’applications en grappe pour
séparer la configuration d’un site de celle d’un système afin de réduire le travail d’administration.
L’approche recommandée est de placer la configuration propre au site dans le fichier
/etc/[Link]. Par exemple:
• /etc/[Link]:
sshd_enable="YES"
335
keyrate="fast"
defaultrouter="[Link]"
• /etc/[Link]:
hostname="[Link]"
ifconfig_fxp0="inet [Link]/8"
Le fichier [Link] peut être distribué à l’ensemble des systèmes en utilisant rsync ou un programme
semblable, tandis que le fichier [Link] reste unique.
Mettre à jour le système en employant sysinstall(8) ou make world n’écrasera pas le fichier [Link],
les informations de configuration du système ne seront donc pas perdues.
Le fichier de configuration /etc/[Link] est analysé par sh(1). Cela permet aux administrateurs
système d’ajouter un certain niveau de logique à ce fichier, ce qui peut aider à créer des scénaris de
configuration complexes. Veuillez consulter [Link](5) pour plus d’information sur ce sujet.
Ces fichiers sont généralement installés dans le répertoire /usr/local/etc. Dans le cas où une
application possède un grand nombre de fichiers de configuration, un sous-répertoire sera créé
pour les héberger.
Normalement, quand un logiciel porté ou pré-compilé est installé, des exemples de fichiers de
configuration sont également installés. Ces derniers sont généralement identifiés par un suffixe
".default". Si aucun fichier de configuration n’existe pour l’application, on les créera en copiant les
fichiers .default.
Les tailles des fichiers indiquent que seul le fichier [Link] a été modifié. Une mise à jour, plus
336
tard, du logiciel Apache ne devrait pas écraser le fichier modifié.
Sous FreeBSD, la plupart des services offerts, comme cron(8), sont lancés par l’intermédiaire des
procédures de démarrage du système. Ces procédures peuvent varier en fonction de la version de
FreeBSD, ou du fournisseur; cependant, l’aspect le plus important à considérer est que leur
configuration de démarrage peut être gérée à l’aide de procédures de démarrage simples.
Maintenant que FreeBSD dispose du système rc.d, la configuration du démarrage des applications
est plus simple, et propose plus de possibilités. En utilisant les mots clés présentés dans la section
sur le système rc.d, les applications peuvent désormais être paramétrées pour démarrer après
certains services, par exemple le DNS, des paramètres supplémentaires peuvent être passés par
l’intermédiaire de [Link] au lieu d’utiliser des paramètres fixes dans les procédures de démarrage,
etc. Une procédure de base pourra ressembler à ce qui suit:
#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# KEYWORD: shutdown
. /etc/[Link]
name=utility
rcvar=utility_enable
command="/usr/local/sbin/utility"
load_rc_config $name
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/[Link] FILE
#
utility_enable=${utility_enable-"NO"}
pidfile=${utility_pidfile-"/var/run/[Link]"}
run_rc_command "$1"
337
Cette procédure s’assurera que l’application utility sera lancée après le le service DAEMON. Elle
fournie également une méthode de suivi du PID, ou encore ID (identifiant) de processus.
Cette application pourra alors avoir la ligne suivante la concernant dans le fichier /etc/[Link]:
utility_enable="YES"
Cette méthode permet également une manipulation plus aisée des arguments en ligne de
commande, l’inclusion des fonctions offertes par défaut dans /etc/[Link], offre une compatibilité
avec l’utilitaire rcorder(8) et fournie une configuration plus aisée par l’intermédiaire du fichier
[Link].
Certains services, comme les serveurs POP3, IMAP, etc., peuvent être démarrés en utilisant inetd(8).
Cela implique d’installer le service à partir du catalogue des logiciels portés et avec une ligne de
configuration ajoutée au fichier /etc/[Link], ou en décommentant une des lignes de
configuration déjà présentes. L’utilisation d’inetd et sa configuration sont décrits en profondeur
dans la section concernant inetd.
Dans certains cas, il peut être plus approprié d’utiliser le "daemon" cron(8) pour démarrer des
services. Cette approche présente un certain nombre d’avantages parce que cron exécute ces
processus sous les privilèges du propriétaire de la table crontab. Cela permet aux utilisateurs
normaux de lancer et maintenir certaines applications.
L’utilitaire cron offre une fonction unique, @reboot, qui peut être utilisée en remplacement de la
date d’exécution. Cela provoquera l’exécution de la tâche quand cron(8) est lancé, normalement
lors de l’initialisation du système.
L’utilitaire cron utilise deux types différents de fichiers de configuration, le fichier crontab système
et les crontabs des utilisateurs. Ces deux formats diffèrent à partir du sixième champ. Dans le
fichier crontab système, cron exécutera la commande en tant que l’utilisateur indiqué dans le
sixième champ. Dans le fichier crontab d’un utilisateur, toutes les commandes sont exécutées sous
l’utilisateur qui a créé ce fichier crontab, aussi le sixième champ est le dernier champ; c’est un
aspect sécurité important. Le dernier champ est toujours la commande à exécuter.
338
Le super-utilisateur root peut posséder un fichier crontab utilisateur comme tout
autre utilisateur. Ce fichier est différent de /etc/crontab (le crontab système). Etant
donné que le fichier crontab système invoque les commandes spécifiées en tant
que root, il n’y a généralement pas besoin d’un fichier crontab utilisateur pour
root.
② Tout d’abord, les variables d’environnement doivent être définies. Le caractère égal (=) est utilisé
pour définir tout paramètre concernant l’environnement, comme dans notre exemple où il a été
utilisé pour les variables SHELL, PATH, et HOME. Si la ligne concernant l’interpréteur de commande
est omise, cron utilisera celui par défaut, qui est sh. Si la variable PATH est omise, il n’y aura pas
de valeur par défaut utilisée et l’emplacement des fichiers devra être absolu. Si HOME est omise,
cron utilisera le répertoire personnel de l’utilisateur qui l’invoque.
③ Cette ligne définie un total de sept champs. Sont listés ici les valeurs minute, heure, date, mois,
jour, utilisateur, et commande. Ces champs sont relativement explicites. minute représente l’heure
en minute à laquelle la commande sera exécutée. L’option heure est semblable à l’option minute,
mais en heures. Le champ date précise le jour dans le mois. mois est similaire à heure et minute
mais désigne le mois. L’option jour représente le jour de la semaine. Tous ces champs doivent
être des valeurs numériques, et respecter un format horaire de vingt quatre heures. Le champ
utilisateur est spécial, et n’existe que dans le fichier /etc/crontab. Ce champ précise sous quel
utilisateur sera exécutée la commande. Le dernier champ désigne la commande à exécuter.
④ Cette dernière ligne définie les valeurs discutées ci-dessus. Nous avons ici */5 suivi de plusieurs
caractères \*. Ces caractères * signifient "premier-dernier", et peuvent être interprétés comme
voulant dire à chaque instance. Aussi, d’après cette ligne, il apparaît que la commande atrun sera
invoquée par l’utilisateur root toutes les cinq minutes indépendamment du jour ou du mois.
Pour plus d’informations sur la commande atrun, consultez la page de manuel de atrun(8).
339
N’importe quel nombre d’indicateur peut être passé à ces commandes; cependant, les
commandes qui s’étendent sur de multiples lignes doivent être "cassées" avec le caractère,
contre-oblique \, de continuation de lignes.
Ceci est la configuration de base pour chaque fichier crontab, bien qu’il y ait une différence dans
celui présenté ici. Le sixième champ, où est précisé le nom d’utilisateur, n’existe que dans le fichier
système /etc/crontab. Ce champ devrait être omis pour les fichiers crontab d’utilisateur.
Pour installer un fichier crontab utilisateur fraîchement rédigé, tout d’abord utilisez votre éditeur
favori pour créer un fichier dans le bon format, ensuite utilisez l’utilitaire crontab. L’usage le plus
typique est:
# crontab fichier-crontab
Dans cet exemple, fichier-crontab est le nom d’un fichier crontab qui a été précédemment créé.
Il existe également une option pour afficher les fichiers crontab installés, passez simplement le
paramètre -l à crontab et lisez ce qui est affiché.
Pour les utilisateurs désirant créer leur fichier crontab à partir de zéro, sans utiliser de modèle,
l’option crontab -e est disponible. Cela invoquera l’éditeur par défaut avec un fichier vide. Quand le
fichier est sauvegardé, il sera automatiquement installé par la commande crontab.
Afin d’effacer le fichier crontab utilisateur complètement, utiliser la commande crontab avec
l’option -r.
# /etc/rc.d/sshd restart
Cette procédure est similaire pour d’autres services. Bien sûr, les services sont généralement lancés
automatiquement au démarrage dès qu’ils sont spécifiés dans le fichier [Link](5). Par exemple,
activer le "daemon" de translation d’adresses au démarrage est aussi simple que d’ajouter la ligne
suivante au fichier /etc/[Link]:
340
natd_enable="YES"
Si une ligne natd_enable="NO" est déjà présente, modifiez alors le NO par YES. Les procédures rc
chargeront automatiquement les autres services dépendants lors du prochain redémarrage comme
décrit ci-dessous.
Comme le système rc.d est à l’origine destiné pour lancer/arrêter les services au démarrage/à l’arrêt
du système, les options standards start, stop et restart ne seront effectives que si les variables
appropriées sont positionnées dans le fichier /etc/[Link]. Par exemple, la commande sshd restart
ci-dessus ne fonctionnera que si sshd_enable est fixée à YES dans /etc/[Link]. Pour lancer, arrêter ou
redémarrer un service indépendemment des paramétrages du fichier /etc/[Link], les commandes
doivent être précédées par "one". Par exemple pour redémarrer sshd indépendemment du
paramétrage du fichier /etc/[Link], exécutez la commande suivante:
# /etc/rc.d/sshd onerestart
Il est facile de contrôler si un service est activé dans le fichier /etc/[Link] en exécutant la procédure
rc.d appropriée avec l’option rcvar. Ainsi, un administrateur peut contrôler que sshd est réellement
activé dans /etc/[Link] en exécutant:
# /etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YES
La seconde ligne (# sshd) est la sortie de la commande sshd et non pas une console
root.
Pour déterminer si un service est actif, une option appelée status est disponible. Par exemple pour
vérifier que sshd a réellement été lancé:
# /etc/rc.d/sshd status
sshd is running as pid 433.
Dans certains cas, il est également possible de recharger un service avec l’option reload. Le système
tentera d’envoyer un signal à un service individuel, le forçant à recharger ses fichiers de
configuration. Dans la plupart des cas cela signifie envoyer un signal SIGHUP au service. Le support
de cette fonctionnalité n’est pas disponible pour chaque service.
Le système rc.d n’est pas uniquement utilisée pour les services réseaux, elle participe à la majeure
partie de l’initialisation du système. Prenez par exemple le fichier bgfsck. Quand cette procédure
est exécutée, il affichera le message suivant:
341
Donc ce fichier est utilisé pour les vérifications du système de fichiers en arrière plan, qui sont
uniquement effectuées lors de l’initialisation du système.
De nombreux services système dépendent d’autres services pour fonctionner correctement. Par
exemple, NIS et les autres services basés sur les RPCs peuvent échouer s’ils sont lancés après le
lancement du service rpcbind (portmapper). Pour résoudre ce problème, l’information concernant
les dépendances et autres méta-données est inclue dans les commentaires au début de chaque
procédure de démarrage. Le programme rcorder(8) est alors utilisé pour analyser ces
commentaires lors de l’initialisation du système en vue de déterminer l’ordre dans lequel les
services système seront invoqués pour satisfaire les dépendances.
Les mots suivants doivent être présents en tête de tous les fichiers de démarrage (ils sont
nécessaires pour que [Link](8) active les procédures de démarrages):
Les mots clés suivants peuvent être ajoutés au début de chaque fichier de démarrage. Ils ne sont
pas strictement nécessaires, mais sont utiles comme aide pour rcorder(8):
• REQUIRE: liste les fichiers dont dépend ce service. Ce fichier sera exécuté après les services
indiqués.
• BEFORE: liste les services qui dépendent du service présent. Ce fichier sera exécuté avant les
services indiqués.
En utilisant avec soin ces mots clés pour chaque fichier de démarrage, un administrateur dispose
d’un niveau de contrôle très fin de l’ordre d’exécution des procédures de démarrage sans les
inconvénients des "runlevels" comme sur d’autres systèmes d’exploitation UNIX®.
Des informations supplémentaires concernant le système rc.d peuvent être trouvées dans les pages
de manuel rc(8) et [Link](8). Si vous êtes intéressé par l’écriture de vos propres procédures rc.d ou
pour l’amélioration des procédures existantes, vous trouverez cette article utile.
Avant de commencer, vous devez connaître le modèle de la carte dont vous disposez, le circuit
qu’elle utilise, et si c’est une carte PCI ou ISA. FreeBSD supporte une large variété de cartes PCI et
ISA. Consultez la liste de compatibilité matérielle pour votre version de FreeBSD afin de voir si
votre carte est supportée.
Une fois que vous êtes sûrs que votre carte est supportée, vous devez déterminer le bon pilote de
périphérique pour la carte. Les fichiers /usr/src/sys/conf/NOTES et /usr/src/sys/arch/conf/NOTES
vous donneront la liste des pilotes de périphériques pour cartes réseaux avec des informations sur
les cartes/circuits supportés. Si vous avez des doutes au sujet du bon pilote, lisez la page de manuel
du pilote. La page de manuel vous donnera plus d’information sur le matériel supporté et même les
342
éventuels problèmes qui pourront apparaître.
Si vous possédez une carte courante, la plupart du temps vous n’aurez pas à chercher trop loin
pour trouver un pilote. Les pilotes pour les cartes réseaux courantes sont présents dans le noyau
GENERIC, aussi votre carte devrait apparaître au démarrage, comme suit:
Dans cet exemple, nous voyons que deux cartes utilisant le pilote de périphérique dc(4) sont
présentes sur le système.
Si le pilote de votre carte n’est pas présent dans le noyau GENERIC, vous devrez charger le module
approprié pour pouvoir utiliser votre carte. Cela peut être effectué de deux manières différentes:
• La méthode la plus simple est de charger le module pour votre carte réseau avec kldload(8), ou
automatiquement au démarrage du système en ajoutant la ligne appropriée au fichier
/boot/[Link]. Tous les pilotes de cartes réseau ne sont pas disponibles sous forme de
modules; les cartes ISA sont un bon exemple de périphériques pour lesquels les modules
n’existent pas.
• Alternativement, vous pouvez compiler en statique le support pour votre carte dans votre
noyau. Consultez /usr/src/sys/conf/NOTES, /usr/src/sys/arch/conf/NOTES et la page de manuel du
pilote de périphérique pour savoir ce qu’il faut ajouter au fichier de configuration de votre
noyau. Pour plus d’information sur la recompilation de votre noyau, veuillez lire le Configurer
le noyau de FreeBSD. Si votre carte a été détectée au démarrage par votre noyau (GENERIC)
vous n’avez pas à compiler un nouveau noyau.
343
Grâce aux contributions de Bill Paul (wpaul), il existe un support "natif" pour la spécification
d’interface des pilotes de périphérique réseau (Network Driver Interface Specification-NDIS). Le
NDISulator FreeBSD (connu également sous le nom de Project Evil) prend un pilote binaire réseau
Windows® et lui fait penser qu’il est en train de tourner sous Windows®. Etant donné que le pilote
ndis(4) utilise un binaire Windows®, il ne fonctionne que sur les systèmes i386™ et amd64. Les
périphériques PCI, CardBus, PCMCIA (PC-Card), et USB sont supportés.
Recherchez les fichiers spécifiques à votre carte. Généralement, ils peuvent être trouvés sur les CDs
livrés avec la carte ou sur le site du fabricant. Dans les exemples qui suivent nous utiliseront les
fichiers [Link] et [Link].
Le type de pilote doit correspondre à la version de FreeBSD. Pour FreeBSD/i386, utiliser un pilote
Windows® 32bits. Pour FreeBSD/amd64, un pilote Windows® 64bits est nécessaire.
L’étape suivante est de compiler le pilote binaire dans un module chargeable du noyau. En tant que
root, utilisez ndisgen(8):
# kldload ./W32DRIVER_SYS.ko
Avec le module généré, vous devez également charger les modules [Link] et if_ndis.ko. Cela devrait
être fait automatiquement quand vous chargez un module qui dépend de ndis(4). Si vous désirez
les charger manuellement, utilisez les commandes suivantes:
# kldload ndis
# kldload if_ndis
La première commande charge le pilote d’interface NDIS, la seconde charge l’interface réseau.
ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: [Link]
344
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps
A partir de là vous pouvez traiter le périphérique ndis0 comme n’importe quelle interface réseau
(par exemple dc0).
Vous pouvez configurer le système pour charger les modules NDIS au démarrage du système de la
même manière que pour n’importe quel autre module. Tout d’abord, copiez le module généré,
W32DRIVER_SYS.ko, dans le répertoire /boot/modules. Ajoutez ensuite la ligne suivante au fichier
/boot/[Link]:
W32DRIVER_SYS_load="YES"
Une fois que le bon pilote de périphérique pour la carte réseau est chargé, la carte doit être
configurée. Comme beaucoup d’autres choses, la carte aura pu être configurée à l’installation par
sysinstall.
Pour afficher la configuration des interfaces réseaux de votre système, entrer la commande
suivante:
% ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether [Link]
inet [Link] netmask 0xffffff00 broadcast [Link]
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether [Link]
inet [Link] netmask 0xffffff00 broadcast [Link]
media: Ethernet 10baseT/UTP
status: no carrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet [Link] netmask 0xff000000
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
345
FreeBSD utilise le nom du pilote de périphérique suivi par un chiffre représentant l’ordre dans
lequel la carte est détectée au démarrage du noyau pour nommer la carte. Par exemple sis2 serait la
troisième carte sur le système utilisant le pilote de périphérique sis(4).
Dans cet exemple, le périphérique dc0 est actif et en fonctionnement. Les indicateurs importants
sont:
6. La sélection du média est sur le mode d’autosélection (media: Ethernet autoselect (100baseTX
full-duplex)). Nous voyons que dc1 a été configurée pour utiliser un matériel de type
10baseT/UTP. Pour plus d’information sur le type de matériel disponible pour un pilote de
périphérique, référez-vous à sa page de manuel.
7. La liaison (status) est active, i.e. la porteuse est détectée. Pour dc1, nous lisons status: no
carrier. Cela est normal lorsqu’aucun câble n’est branché à la carte.
Pour configurer votre carte, vous avez besoin des privilèges de l’utilisateur root. La configuration
de la carte réseau peut être faite à partir de la ligne de commande avec ifconfig(8) mais vous aurez
à répéter cette opération à chaque redémarrage du système. Le fichier /etc/[Link] est l’endroit où
ajouter la configuration de la carte réseau.
Ouvrez le fichier /etc/[Link] dans votre éditeur favori. Vous devez ajouter une ligne pour chaque
carte réseau présente sur le système, par exemple dans notre cas, nous avons ajouté ces lignes:
Vous devez remplacer dc0, dc1, et ainsi de suite, avec le périphérique correspondant pour vos
cartes, et les adresses avec celles désirées. Vous devriez lire les pages de manuel du pilote de
périphérique et d’ifconfig(8) pour plus de détails sur les options autorisées et également la page de
manuel de [Link](5) pour plus d’information sur la syntaxe de /etc/[Link].
346
Si vous avez configuré le réseau à l’installation, des lignes concernant la/les carte(s) réseau
pourront être déjà présentes. Contrôler à deux fois le fichier /etc/[Link] avant d’y ajouter des
lignes.
Vous devrez également éditer le fichier /etc/hosts pour ajouter les noms et les adresses IP des
diverses machines du réseau local, si elles ne sont pas déjà présentes. Pour plus d’information
référez-vous à la page de manuel hosts(5) et au fichier /usr/shared/examples/etc/hosts.
S’il n’y a pas de serveur DHCP et qu’un accès à Internet est nécessaire, configurez
manuellement la passerelle par défaut et le serveur de noms:
Une fois les modifications nécessaires du fichier /etc/[Link] effectuées, vous devrez redémarrer
votre système. Cela permettra la prise en compte de la ou les modifications au niveau des
interfaces, et permettra de vérifier que le système redémarre sans erreur de configuration. Sinon,
une autre méthode pour faire prendre en compte les modifications au niveau de la gestion du
réseau consiste à utiliser la commande:
Si une passerelle par défaut a été configurée dans /etc/[Link], lancez également
cette commande:
# service routing restart
Une fois que le système a été redémarré, vous testez les interfaces réseau.
Pour vérifier qu’une carte Ethernet est configurée correctement, vous devez essayer deux choses.
Premièrement, "pinguer" l’interface, puis une autre machine sur le réseau local.
347
--- [Link] ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms
Vous pourrez utiliser le noms de la machine à la place de [Link] si vous avez configuré le
fichier /etc/hosts.
[Link]. Dépannage
Le dépannage de matériels ou de logiciels est toujours une tâche relativement pénible, mais qui
peut être rendue plus aisée en vérifiant en premier lieu certaines choses élémentaires. Votre câble
réseau est-il branché? Avez-vous correctement configuré les services réseau? Le coupe-feu est-il
bien configuré? Est-ce que la carte réseau est supportée par FreeBSD? Consultez toujours les notes
concernant le matériel avant d’envoyer un rapport de bogue. Mettez à jour votre version de
FreeBSD vers la dernière version STABLE. Consultez les archives des listes de diffusion, et faites
même des recherches sur l’Internet.
Si la carte fonctionne mais les performances sont mauvaises, une lecture de la page de manuel
tuning(7) peut valoir la peine. Vous pouvez également vérifier la configuration du réseau puisque
des paramètres réseau incorrects peuvent donner lieu à des connexions lentes.
Certains utilisateurs peuvent voir apparaître un ou deux messages device timeout, ce qui est
normal pour certaines cartes. Si ces messages se multiplient, assurez-vous que la carte n’est pas en
conflit avec un autre périphérique. Contrôlez à deux fois les câbles de connexion. Peut-être que
vous avez juste besoin d’une autre carte.
Parfois, des utilisateurs sont confrontés à des messages d’erreur watchdog timeout. La première
chose à faire dans ce cas est de vérifier votre câble réseau. De nombreuses cartes demandent un
slot PCI supportant le "Bus Mastering". Sur certaines cartes mère anciennes, seul un slot PCI le
permet (la plupart du temps le slot 0). Consultez la documentation de la carte réseau et de la carte
mère pour déterminer si cela peut être à l’origine du problème.
Les messages No route to host surviennent si le système est incapable de router un paquet vers la
348
machine de destination. Cela peut arriver s’il n’y a pas de route par défaut de définie, ou si le câble
réseau est débranché. Vérifiez la sortie de la commande netstat -nr et assurez-vous qu’il y a une
route valide en direction de la machine que vous essayez d’atteindre. Si ce n’est pas le cas, lisez la
Administration réseau avancée.
Les messages d’erreur ping: sendto: Permission denied sont souvent dus à un coupe-feu mal
configuré. Si ipfw est activé dans le noyau mais qu’aucune règle n’a été définie, alors la politique
par défaut est de refuser tout trafic, même les requêtes "ping"! Lisez Firewalls pour plus
d’informations.
Parfois les performances de la carte ne sont pas bonnes, ou en dessous de la moyenne. Dans ce cas
il est recommandé de passer la sélection du média du mode autoselect au mode adéquat. Alors que
cela fonctionne généralement pour la plupart du matériel, il se peut que cela ne résolve pas le
problème pour tout de monde. Encore une fois, contrôlez les paramétrages réseau et consultez la
page de manuel tuning(7).
Une interface réseau donnée possède une adresse "réelle", et peut avoir n’importe quel nombre
d’adresses "alias". Ces alias sont normalement ajoutés en plaçant les entrées correspondantes dans
le fichier /etc/[Link].
Notez que les entrées d’alias doivent commencer avec alias0 et continuer en ordre croissant, (par
exemple, _alias1, _alias2, et ainsi de suite). Le processus de configuration s’arrêtera au premier
nombre absent.
Le calcul des masques de réseau est important, mais heureusement assez simple. Pour une
interface donnée, il doit y avoir une adresse qui représente correctement le masque de réseau de
votre réseau. Tout autre adresse appartenant à ce réseau devra avoir un masque de réseau avec
chaque bit à 1 (exprimé soit sous la forme [Link] soit 0xffffffff).
Par exemple, considérez le cas où l’interface fxp0 est connectée à deux réseaux, le réseau [Link]
avec un masque de réseau de [Link] et le réseau [Link] avec un masque de
[Link]. Nous voulons que le système apparaisse de [Link] jusqu’à [Link] et à
[Link] jusqu’à [Link]. Comme noté plus haut, seule la première adresse dans un
intervalle réseau donné (dans ce cas, [Link] et [Link]) devrait avoir un masque de sous-
réseau réel; toutes les autres adresses ([Link] à [Link] et [Link] jusqu’à [Link])
doivent être configurées avec un masque de sous-réseau de [Link].
Les entrées suivantes du fichier /etc/[Link] configurent la carte correctement pour cet
349
arrangement:
350
12.9.2. Nom d’hôtes
[Link]. /etc/[Link]
search [Link]
nameserver [Link]
nameserver [Link]
Si vous utilisez DHCP, dhclient(8) réécrit habituellement [Link] avec l’information reçue du
serveur DHCP.
[Link]. /etc/hosts
/etc/hosts est une simple base de données texte, une réminiscence des débuts d’Internet. Il travaille
en conjonction avec les serveurs DNS et NIS pour fournir les correspondances nom vers adresse IP.
Les ordinateurs locaux reliés par l’intermédiaire d’un réseau local peuvent être ajoutés dans ce
fichier pour une résolution de noms simple plutôt que de configurer un serveur named(8). De plus
/etc/hosts peut être utilisé pour fournir un enregistrement local de correspondances de nom,
réduisant ainsi le besoin de requêtes vers l’extérieur pour les noms auxquels on accède
couramment.
# $FreeBSD$
#
#
# Host Database
#
# This file should contain the addresses and aliases for local hosts that
# share this file. Replace '[Link]' below with the domainname of your
# machine.
351
#
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/[Link] for the resolution order.
#
#
::1 localhost [Link]
[Link] localhost [Link]
#
# Imaginary network.
#[Link] [Link] myname
#[Link] [Link] myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# [Link] - [Link]
# [Link] - [Link]
# [Link] - [Link]
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers. Do not try to invent your own network
# numbers but instead get one from your network provider (if any) or
# from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)
#
Par exemple:
[Link]. [Link]
# $FreeBSD$
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
352
# may want to use only tabs as field separators here.
# Consult the [Link](5) manual page.
*.err;[Link];[Link];[Link] /dev/console
*.notice;[Link];[Link];[Link];[Link] /var/log/messages
security.* /var/log/security
[Link] /var/log/maillog
[Link] /var/log/lpd-errs
cron.* /var/log/cron
*.err root
*.notice;[Link] root
*.alert root
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/[Link]
#[Link] /var/log/[Link]
# uncomment this to enable logging of all log messages to /var/log/[Link]
#*.* /var/log/[Link]
# uncomment this to enable logging to a remote log host named loghost
#*.* @loghost
# uncomment these if you're running inn
# [Link] /var/log/news/[Link]
# [Link] /var/log/news/[Link]
# [Link] /var/log/news/[Link]
!startslip
*.* /var/log/[Link]
!ppp
*.* /var/log/[Link]
[Link]. [Link]
[Link] indique quels fichiers de traces doivent être gérés, combien doivent être conservés,
et quand ils doivent être modifiés. Les fichiers de traces peuvent être réorganisés et/ou archivés
quand ils ont soit atteint une certaine taille, soit à une certaine période/date.
353
/var/log/[Link] 644 10 * 168 B
/var/log/messages 644 5 100 * Z
/var/log/[Link] 600 7 * @T00 Z
/var/log/[Link] 600 3 100 * Z
/var/log/[Link] 600 3 100 * Z
/var/log/security 600 10 100 * Z
/var/log/wtmp 644 3 * @01T05 B
/var/log/[Link] 640 7 * @T00 Z
/var/log/[Link] 640 5 1 $W6D0 Z
/var/log/[Link] 640 12 * $M1D0 Z
/var/log/[Link] 640 5 100 * Z
12.9.4. [Link]
[Link] ressemble à [Link]. Les valeurs sont fixées sous la forme variable=value. Les valeurs
spécifiées sont positionnées après que le système soit passé dans le mode multi-utilisateurs. Toutes
les variables ne sont pas paramétrables dans ce mode.
Pour désactiver l’enregistrement des signaux fatals de fin de processus et empêcher les utilisateurs
de voir les processus lancés par les autres, les variables suivantes peuvent être paramétrées dans
[Link]:
% sysctl -a
354
% sysctl [Link]
[Link]: 1044
# sysctl [Link]=5000
[Link]: 2088 -> 5000
Les valeurs des variables sysctl sont généralement des chaînes de caractères, des nombres, ou des
booléens (un variable booléenne étant 1 pour oui ou un 0 pour non).
Dans certains cas, il peut être nécessaire de modifier des variables sysctl(8) en lecture seule. Bien
que cela soit parfois inévitable, cela ne peut être fait qu’au (re)démarrage de la machine.
Par exemple sur certains modèles d’ordinateurs portables le périphérique cardbus(4) ne sondera
pas le système à la recherche des zones mémoires, et échouera avec des erreurs du type:
Des cas comme le précédent demandent généralement la modification de paramètres sysctl(8) par
défaut qui sont en lecture seule. Pour palier à ces situations un utilisateur peut placer un
paramétrage ("OID"-Object IDentifier) sysctl(8) dans le fichier local /boot/[Link]. Les
paramétrages par défaut se trouvent dans le fichier /boot/defaults/[Link].
[Link]. [Link]
La variable sysctl [Link] peut être positionnée soit à 0 (désactivée) soit à 1 (activée); elle
est a 1 par défaut. Cette variable spécifie comment les répertoires sont cachés par le système. La
plupart des répertoires sont petits, utilisant juste un simple fragment du système de fichiers
(typiquement 1KO) et moins dans le cache en mémoire (typiquement 512 octets). Avec cette
variable désactivée (à 0), le cache en mémoire ne cachera qu’un nombre fixe de répertoires même
355
si vous disposez d’une grande quantité de mémoire. Activée (à 1), cette variable sysctl permet au
cache en mémoire d’utiliser le cache des pages de mémoire virtuelle pour cacher les répertoires,
rendant toute la mémoire disponible pour cacher les répertoires. Cependant, la taille minimale de
l’élément mémoire utilisé pour cacher un répertoire est une page physique (typiquement 4KO)
plutôt que 512 octets. Nous recommandons de conserver de cette option activée si vous faites
fonctionner des services qui manipulent un grand nombre de fichiers. De tels services peuvent être
des caches web, d’importants systèmes de courrier électronique, et des systèmes serveurs de
groupe de discussion. Conserver cette option activée ne réduira généralement pas les performances
même avec la mémoire gaspillée mais vous devriez faire des expériences pour le déterminer.
[Link]. vfs.write_behind
La variable sysctl vfs.write_behind est positionnée par défaut à 1 (activée). Elle demande au
système de fichiers d’effectuer les écritures lorsque des grappes complètes de données ont été
collectées, ce qui se produit généralement lors de l’écriture séquentielle de gros fichiers. L’idée est
d’éviter de saturer le cache tampon avec des tampons sales quand cela n’améliorera pas les
performances d’E/S. Cependant, cela peut bloquer les processus et dans certaines conditions vous
pouvez vouloir désactiver cette fonction.
[Link]. [Link]
Il existent d’autres variables sysctl relatives aux caches tampons et aux pages VM. Nous ne
recommandons pas de modifier ces valeurs, le système VM effectue un très bon travail d’auto-
optimisation.
[Link]. vm.swap_idle_enabled
356
[Link]. [Link]
FreeBSD 4.3 a flirté avec la désactivation du cache en écriture des disques IDE. Cela réduisit la
bande passante en écriture des disques IDE mais fut considéré comme nécessaire en raison de
sérieux problèmes de cohérence de données introduits par les fabricants de disques durs. Le
problème est que les disques IDE mentent sur le moment où une écriture est réellement terminée.
Avec le cache en écriture IDE activé, les disques durs IDE non seulement n’écriront pas les données
dans l’ordre, mais parfois retarderont l’écriture de certains blocs indéfiniment sous une charge
disque importante. Un crash ou une coupure secteur pourra être à l’origine de sérieuses
corruptions du système de fichiers. Par précaution le paramétrage par défaut de FreeBSD fut
modifié. Malheureusement, le résultat fut une telle perte de performances que nous avons réactivé
le cache en écriture après cette version de FreeBSD. Vous devriez contrôler la valeur par défaut sur
votre système en examinant la variable sysctl [Link]. Si le cache en écriture des disques IDE est
désactivé, vous pouvez le réactiver en positionnant la variable à 1. Cela doit être fait à partir du
chargeur au démarrage. Tenter de le faire après le démarrage du noyau n’aura aucun effet.
L’option de configuration du noyau SCSI_DELAY peut être utilisée pour réduire le temps de
démarrage du système. Le délai par défaut est important et peut être responsable de plus de 15
secondes d’attente lors du processus de démarrage. Réduire ce délai à 5 secondes est généralement
suffisant (tout particulièrement avec les disques modernes). L’option de démarrage
[Link].scsi_delay devrait être utilisée. Cette option de démarrage et celle de configuration du
noyau acceptent des valeurs en millisecondes et non pas en secondes.
Le programme tunefs(8) peut être utilisé pour régler finement un système de fichiers. Ce
programme dispose de nombreuses options différentes, mais pour l’instant nous nous
intéresserons uniquement à l’activation et la désactivation des "Soft Updates", ce qui fait avec:
Un système de fichiers ne peut être modifié avec tunefs(8) tant qu’il est monté. Un bon moment
pour activer les "Soft Updates" est avant que les partitions ne soient montées en mode mono-
utilisateur.
Les "Soft Updates" améliorent de façon drastique les performances sur les méta-données,
principalement la création et la suppression de fichier, par l’utilisation d’un cache mémoire. Nous
recommandons d’activer les "Soft Updates" sur tous vos systèmes de fichiers. Il y a deux
inconvénients aux "Soft Updates" que vous devez connaître: tout d’abord, les "Soft Updates"
garantissent la cohérence du système de fichiers en cas de crash mais pourront facilement être en
retard de quelques secondes (voir même une minute!) dans la mise à jour du disque. Si votre
système plante il se peut que vous perdiez plus de travail que dans d’autres cas. Deuxièmement, les
"Soft Updates" retardent la libération des blocs du système de fichiers. Si vous avez un système de
357
fichiers (comme le système de fichiers racine) qui est presque plein, effectuer une mise à jour
majeure, comme un make installworld, peut mener à un manque d’espace sur le système de fichiers
et faire échouer la mise à jour.
Il y a deux approches traditionnelles pour écrire les méta-données d’un système de fichiers sur le
disque (mise à jour des méta-données et mise à jour des éléments sans données comme les inodes
ou les répertoires).
Historiquement, le comportement par défaut était d’écrire les mises à jour des méta-données de
façon synchrone. Si un répertoire a été modifié, le système attendait jusqu’à ce que le changement
soit effectivement écrit sur le disque. Les tampons des données de fichier (contenu du fichier)
passaient par le cache mémoire et étaient copiés sur le disque plus tard de façon asynchrone.
L’avantage de cette implémentation est qu’elle est effectuée sans risque. S’il y a un problème durant
une mise à jour, les méta-données sont toujours dans un état consistant. Un fichier est soit créé
complètement soit pas du tout. Si les blocs de données d’un fichier n’ont pas trouvé leur chemin du
cache mémoire vers le disque au moment du crash, fsck(8) est capable de s’en apercevoir et de
réparer le système de fichiers en fixant la taille du fichier à 0. De plus, l’implémentation est claire et
simple. L’inconvénient est que la modification des méta-données est lente. Un rm -r, par exemple,
touche à tous les fichiers dans un répertoire séquentiellement, mais chaque modification du
répertoire (effacement d’un fichier) sera écrite de façon synchrone sur le disque. Cela comprend les
mises à jour du répertoire lui-même, de la table des inodes, et éventuellement celles sur des blocs
indirects alloués par le fichier. Des considérations semblables s’appliquent à la création
d’importantes hiérarchies ((tar -x).
Le deuxième cas est la mise à jour asynchrone des méta-données. C’est le comportement par défaut
de Linux/ext2fs et de l’usage de mount -o async pour l’UFS des systèmes BSD. Toutes les mises à jour
des méta-données passent également par l’intermédiaire d’un cache mémoire, c’est à dire, qu’elles
seront mélangées aux mises à jour des données du contenu du fichier. L’avantage de cette
implémentation est qu’il n’y a pas besoin d’attendre jusqu’à l’écriture sur le disque de chaque mise
à jour de méta-données, donc toutes les opérations qui sont à l’origine d’une grande quantité de
mise à jour de méta-données fonctionnent bien plus rapidement que dans le cas synchrone. De
plus, l’implémentation est toujours claire et simple, il y a donc peu de risque qu’un bogue se cache
dans le code. L’inconvénient est qu’il n’y a aucune garantie du tout sur la cohérence du système de
fichiers. S’il y a un problème durant une opération qui met à jour une grande quantité de méta-
données (comme une coupure secteur, ou quelqu’un appuyant sur le bouton reset), le système de
fichiers sera laissé dans un état imprévisible. Il n’y a aucune opportunité d’examiner l’état du
système de fichiers quand le système est à nouveau relancé; les blocs de données d’un fichier
pourraient déjà avoir été inscrits sur le disque alors que la mise à jour de la table des inodes ou du
répertoire associé n’a pas été faite. Il est en fait impossible d’implémenter un fsck qui est capable
de nettoyer le chaos résultant (parce que l’information nécessaire n’est pas disponible sur le
disque). Si le système de fichiers a été endommagé irrémédiablement, le seul choix est de le recréer
avec newfs(8) et de récupérer les données à partir de sauvegardes.
La solution commune pour ce problème fut d’implémenter une région de trace, dont on fait souvent
référence sous le terme de journalisation, bien que ce terme ne soit pas toujours utilisé de façon
cohérente et est occasionnellement utilisé pour d’autres formes de transaction avec trace. Les mises
à jour des méta-données sont toujours écrites de façon synchrone, mais seulement sur une petite
358
région du disque. Elles seront plus tard déplacées vers leur emplacement correct. Parce que la
région de trace est une petite région contiguë sur le disque, il n’y a pas de grandes distances de
déplacement pour les têtes des disques, même durant les opérations importantes, donc ces
opérations sont plus rapides que les mises à jour synchrones. De plus la complexité de
l’implémentation est relativement limitée, donc le risque de présence de bogues est faible. Un
inconvénient est que toutes les méta-données sont écrites deux fois (une fois dans la région de trace
et une fois sur l’emplacement correct) donc pour un fonctionnement normal, une baisse des
performances pourra en résulter. D’autre part, dans le cas d’un crash, toutes les opérations sur les
méta-données en attente peuvent rapidement être annulées ou complétées à partir de la zone de
trace après le redémarrage du système, ayant pour résultat un démarrage rapide du système de
fichiers.
Kirk McKusick, le développeur du FFS de Berkeley, a résolu le problème avec les "Soft Updates":
toutes les mises à jour des méta-données sont conservées en mémoire et inscrites sur le disque
selon une séquence ordonnée ("mise à jour ordonnée des méta-données"). Ceci a pour effet, dans le
cas d’un nombre d’opérations sur les méta-données important, que les dernières mises à jour sur
un élément "attrapent" les premières si ces dernières sont encore en mémoire et n’ont pas encore
été inscrites sur le disque. Donc toutes les opérations sur, par exemple, un répertoire sont
généralement effectuées en mémoire avant que la mise à jour ne soit écrite sur le disque (les blocs
de données sont ordonnés en fonction de leur position de sorte à ce qu’ils ne soient pas sur le
disque avant leur méta-données). Si le système crash, cela provoque un "retour dans les traces"
implicite: toutes les opérations qui n’ont pas trouvé leur chemin vers le disque apparaissent comme
si elles n’avaient jamais existé. Un état cohérent du système de fichiers est maintenu et apparaît
comme étant celui de 30 ou 60 secondes plus tôt. L’algorithme utilisé garantie que toutes les
ressources utilisées soient marquées avec leur bons "bitmaps": blocs et inodes. Après un crash, les
seules erreurs d’allocation de ressources qui apparaissent sont les ressources qui ont été marquées
comme "utilisées" et qui sont en fait "libre". fsck(8) reconnaît cette situation, et libère les ressources
qui ne sont plus utilisées. On peut ignorer sans risque l’état "sale" d’un système de fichiers après un
crash en forçant son montage avec mount -f. Afin de libérer les ressources qui peuvent être
inutilisées, fsck(8) doit être exécuté plus tard. C’est l’idée qu’il y a derrière le "background fsck" (fsck
en tâche de fond): au démarrage du système, seule un "snapshot" (photographie) du système de
fichiers est prise. La commande fsck peut être exécutée plus tard sur ce système de fichiers. Tous
les systèmes de fichiers peuvent être montés "sales", donc le système passe en mode multi-
utilisateurs. Ensuite, les fsck en tâche de fond seront programmés pour tous les systèmes de fichiers
pour lesquels c’est nécessaire, pour libérer les ressources qui peuvent être inutilisées (les systèmes
qui n’utilisent pas les "Soft Updates" ont toujours besoin du fsck en avant plan).
L’avantage est que les opérations sur les méta-données sont presque aussi rapides que les mises à
jour asynchrones (i.e. plus rapide qu’avec le "logging" - traçage, qui doit écrire les méta-données
deux fois). Les inconvénients sont la complexité du code (impliquant un haut risque de bogues dans
une zone qui est hautement sensible en raison de risque perte de données utilisateur), et une plus
grande consommation en mémoire. De plus il y a quelques particularités que l’on peut rencontrer
lors de l’utilisation. Après un crash, l’état du système apparaît être en quelque sorte "plus vieux".
Dans des situations où l’approche synchrone classique aurait donné lieu à des fichiers de taille
nulle restant après le fsck, ces fichiers n’existent pas du tout avec un système de fichiers utilisant
les "Soft Updates" parce que ni les méta-données ni les contenus de fichiers n’ont jamais été inscrits
sur le disque. L’espace disque n’est pas rendu tant que les mises à jour n’ont pas été inscrites sur le
disque, ce qui peut se produire quelques temps après l’exécution de rm. Cela peut être à l’origine de
359
problèmes quand on installe une grande quantité de données sur un système de fichiers qui ne
dispose pas de suffisamment d’espace pour contenir tous les fichiers deux fois.
[Link]. [Link]
Le paramètre [Link] peut être augmenté ou diminué en fonction des besoins du système.
Cette variable indique le nombre maximal de descripteurs de fichier sur votre système. Quand la
table de descripteurs de fichier est pleine, le message file: table is full s’affichera régulièrement
dans le tampon des messages système, qui peut être visualisé avec la commande dmesg.
Chaque fichier ouvert, chaque "socket", ou chaque emplacement en pile utilise un descripteur de
fichier. Un serveur important peut facilement demander plusieurs milliers de descripteurs de
fichiers, en fonction du type et du nombre de services s’exécutant en même temps.
Sous les anciennes versions de FreeBSD, la valeur par défaut de [Link] est fixée par l’option
maxusers dans votre fichier de configuration du noyau. [Link] augmente
proportionnellement avec la valeur de maxusers. Quand vous compilez un noyau sur mesure, il est
bon de paramétrer cette option en fonction de l’utilisation de votre système. Ce nombre fixe la
plupart des limites pré-définies du noyau. Même si une machine de production pourra ne pas avoir
en réalité 256 utilisateurs connectés simultanément, les ressources requises pourront être
semblables pour un serveur web important.
Sous les anciennes versions, le système auto-ajuste ce paramètre pour vous si vous le fixez
explicitement à 0. En paramétrant cette option, vous devrez fixer maxusers à 4 au moins, en
particulier si vous utilisez le système X Window ou compilez des logiciels. La raison de cela est que
la valeur la plus importante que dimensionne maxusers est le nombre maximal de processus, qui est
fixé à 20 + 16 * maxusers, donc si vous positionnez maxusers à 1, alors vous ne pouvez avoir que 36
processus en simultanés, comprenant les 18, environ, que le système lance au démarrage et les 15, à
peu près, que vous créerez probablement au démarrage du système X Window. Même une tâche
simple comme la lecture d’une page de manuel lancera jusqu’à neuf processus pour la filtrer, la
décompresser, et l’afficher. Fixer maxusers à 64 autorisera jusqu’à 1044 processus simultanés, ce qui
devrait suffire dans la plupart des cas. Si, toutefois, vous obtenez le message d’erreur tant redouté
quand vous tentez d’exécuter un nouveau programme, ou gérez un serveur avec un grand nombre
360
d’utilisateurs en simultanés (comme [Link]), vous pouvez toujours augmenter cette valeur
et recompiler le noyau.
maxusers ne limite pas le nombre d’utilisateurs qui pourront ouvrir une session sur
votre machine. Cette valeur dimensionne simplement différentes tables à des
valeurs raisonnables en fonction du nombre maximal d’utilisateur que vous aurez
vraisemblablement sur votre système et combien de processus chacun d’entre eux
pourra utiliser.
[Link]. [Link]
La variable sysctl [Link] limite la taille de la file d’attente acceptant les nouvelles
connexions TCP. La valeur par défaut de 128 est généralement trop faible pour une gestion robuste
des nouvelles connexions dans un environnement de serveur web très chargé. Pour de tels
environnements, il est recommandé d’augmenter cette valeur à 1024 ou plus. Le "daemon" en
service peut de lui-même limiter la taille de la file d’attente (e.g. sendmail(8), ou Apache) mais
disposera, la plupart du temps, d’une directive dans son fichier de configuration pour ajuster la
taille de la file d’attente. Les files d’attentes de grandes tailles sont plus adaptées pour éviter les
attaques par déni de service ().
L’literal du noyau NMBCLUSTERS fixe la quantité de "Mbuf";s disponibles pour le système. Un serveur
à fort trafic avec un nombre faible de "Mbuf";s sous-emploiera les capacités de FreeBSD. Chaque
"cluster" représente approximativement 2 Ko de mémoire, donc une valeur de 1024 représente 2
mégaoctets de mémoire noyau réservée pour les tampons réseau. Un simple calcul peut être fait
pour déterminer combien sont nécessaires. Si vous avez un serveur web qui culmine à 1000
connexions simultanées, et que chaque connexion consomme un tampon de réception de 16Ko et
un tampon d’émission de 16 Ko, vous avez approximativement besoin de 32 Mo de tampon réseau
pour couvrir les besoin du serveur web. Un bon principe est de multiplier ce nombre par 2, soit
2x32 Mo / 2 Ko = 64 Mo / 2 Ko =32768. Nous recommandons des valeurs comprises entre 4096 et
32768 pour les machines avec des quantités de mémoire plus élevées. Vous ne devriez, dans aucun
circonstance, spécifier de valeur élevée arbitraire pour ce paramètre étant donné que cela peut être
à l’origine d’un plantage au démarrage. L’option -m de netstat(1) peut être utilisée pour observer
l’utilisation des "clusters".
La variable [Link] configurable au niveau du chargeur est utilisée pour ajuster cela
au démarrage. Seules les anciennes versions de FreeBSD vous demanderont d’utiliser l’option de
configuration du noyau NMBCLUSTERS.
Pour les serveurs chargés qui font une utilisation intensive de l’appel système sendfile(2), il peut
être nécessaire d’augmenter le nombre de tampons sendfile(2) par l’intermédiaire de l’option de
configuration du noyau NSFBUFS ou en fixant sa valeur dans le fichier /boot/[Link] (consultez la
page de manuel loader(8) pour plus de détails). Un indicateur de la nécessité d’ajuster ce paramètre
est lorsque des processus sont dans l’état sfbufa. La variable sysctl [Link] est un aperçu
en lecture seule de la variable du noyau. Ce paramètre s’ajuste de façon optimale avec
[Link], il peut être cependant nécessaire de l’ajuster en fonction des besoins.
361
Même si une "socket" a été marquée comme étant non-bloquante, un appel de
sendfile(2) sur la "socket" non-bloquante peut résulter en un blocage de l’appel
sendfile(2) jusqu’à ce que suffisamment de struct sf_buf soient libérées.
[Link]. [Link].*
La limitation du produit délai-bande passante TCP est semblable au TCP/Vegas sous NetBSD. Elle
peut être activée en positionnant à 1 la variable [Link]. Le système tentera
alors de calculer le produit délai-bande passante pour chaque connexion et limitera la quantité de
données en attente à la quantité juste nécessaire au maintient d’un flux de sortie optimal.
Cette fonctionnalité est utile si vous diffusez des données par l’intermédiaire de modems, de
connexions Ethernet Gigabit, ou même de liaisons hauts débits WAN (ou toute autre liaison avec un
produit délai-bande passante élevé), tout particulièrement si vous utilisez également le
dimensionnement des fenêtres d’émission ou que vous avez configuré une fenêtre d’émission
importante. Si vous activez cette option, vous devriez également vous assurer que
[Link] est positionnée à 0 (désactive le débogage), et pour une utilisation en
production, fixer [Link] à au moins 6144 peut être bénéfique. Notez, cependant,
que fixer des minima élevés peut désactiver la limitation de bande passante selon la liaison. La
fonction de limitation diminue la quantité de données accumulées dans les files d’attente
intermédiaire de routage et de commutation, et diminue également la quantité de données
présentes dans les files d’attente de l’interface de la machine locale. Avec moins de paquets dans les
files d’attente, les connexions interactives, tout particulièrement sur des modems lents, seront en
mesure de fonctionner avec des temps d’aller-retour plus faible. Mais cette fonctionnalité n’affecte
que la transmission de données (transmission côté serveur). Ceci n’a aucun effet sur la réception de
données (téléchargement).
Modifier [Link] n’est pas recommandé. Ce paramètre est fixé par défaut à la
valeur 20, représentant au maximum 2 paquets ajoutés à la fenêtre de calcul du produit délai-
362
bande passante. La fenêtre supplémentaire est nécessaire pour stabiliser l’algorithme et améliorer
la réponse aux changements de conditions, mais il peut en résulter des temps de "ping" plus élevés
sur les liaisons lentes (mais cependant inférieurs à ce que vous obtiendriez sans l’algorithme de
limitation). Dans de tels cas, vous pouvez essayer de réduire ce paramètre à 15, 10, ou 5, et vous
pouvez avoir à réduire le paramètre [Link] (par exemple à 3500) pour obtenir
l’effet désiré. Ces paramètres ne doivent être réduits qu’en dernier ressort.
[Link]. [Link]
Un vnode est la représentation interne d’un fichier ou d’un répertoire. Augmenter le nombre de
vnodes disponibles pour le système d’exploitation diminue les accès disque. Cela est normalement
géré par le système d’exploitation et n’a pas besoin d’être modifié. Dans certains cas où les accès
aux disques sont un goulot d’étranglement pour le système et que ce dernier est à cours de vnodes,
ce nombre aura besoin d’être augmenté. La quantité de RAM libre et inactive sera prise en compte.
# sysctl [Link]
[Link]: 91349
# sysctl [Link]
[Link]: 100000
Si l’utilisation actuelle des vnodes est proche du maximum, augmenter de 1000 [Link] est
probablement une bonne idée. Gardez un oeil sur le nombre [Link]. S’il approche à nouveau
le maximum, [Link] devra être augmenté de manière plus conséquente. Une modification
dans votre utilisation de la mémoire devrait être visible dans top(1). Une plus grande quantité de
mémoire devrait être annoncée comme active.
Pour des informations sur comment chiffrer l’espace de pagination, quelles options existent pour
mener à bien cette tâche et pourquoi on devrait le faire, veuillez vous référer à la Chiffrage de
l’espace de pagination du Manuel.
363
12.13.1. Espace de pagination sur un nouveau disque dur ou une partition
existante
Utiliser la commande swapon pour ajouter une partition de pagination au système. Par exemple:
# swapon /dev/ada1s1b
Pour ajouter cette partition de pagination automatiquement au démarrage, ajouter une entrée au
fichier /etc/fstab:
Consulter fstab(5) pour plus d’explications sur les entrées du fichier /etc/fstab. Plus d’informations
sur swapon sont disponibles dans swapon(8).
L’espace de pagination sur NFS n’est recommandé que si vous n’avez pas de disque dur local sur
lequel avoir l’espace de pagination; la pagination sur NFS sera limitée par la bande passante du
réseau et sera un fardeau supplémentaire pour le serveur NFS.
Vous pouvez créer un fichier d’une taille spécifique pour l’utiliser comme fichier de pagination.
Dans notre exemple nous utiliserons un fichier de 64MO appelé /usr/swap0. Vous pouvez, bien sûr,
utiliser le nom de votre choix.
1. Le noyau GENERIC inclut déjà le pilote de disque mémoire (md(4)) nécessaire à cette
opération. Lors de la compilation d’un noyau sur mesures, assurez-vous d’inclure la ligne
suivante dans le fichier de configuration:
364
device md
Pour plus d’information sur la compilation du noyau, veuillez vous réferer à la Configurer
le noyau de FreeBSD.
Dans cette section, nous fournirons une information complète au sujet de l’ACPI. Il sera fait
référence à des documents supplémentaires en fin de section pour plus de détails.
365
interfaces "Plug and Play" antérieures à l’apparition de l’ACPI. L’ACPI est le descendant direct de
l’APM (Advanced Power Management - gestion avancée de l’énergie).
Le système de gestion avancée de l’énergie (APM) gère l’utilisation de l’énergie par un système en
fonction de son activité. Le BIOS APM est fourni par le fabricant (du système) et est spécifique à la
plateforme matérielle. Un pilote APM au niveau du système d’exploitation gère l’accès à l'interface
logicielle APM qui autorise la gestion des niveaux de consommation. L’APM devrait être toujours
utilisé pour les systèmes fabriqués en ou avant 2000.
L’APM présente quatre problèmes majeurs. Tout d’abord la gestion de l’énergie est effectuée par le
BIOS (spécifique au constructeur), et le système d’exploitation n’en a aucune connaissance. Un
exemple de ce problème, est lorsque l’utilisateur fixe des valeurs pour le temps d’inactivité d’un
disque dur dans le BIOS APM, qui une fois dépassé, provoque l’arrêt du disque (par le BIOS) sans le
consentement du système d’exploitation. Deuxièmement, la logique de l’APM est interne au BIOS, et
agit indépendamment du système d’exploitation. Cela signifie que les utilisateurs ne peuvent
corriger les problèmes de leur BIOS APM qu’en flashant un nouveau BIOS; c’est une opération
dangereuse, qui si elle échoue peut laisser le système dans un état irrécupérable. Troisièmement,
l’APM est une technologie spécifique au constructeur, ce qui veut dire qu’il y a beaucoup de
redondances (duplication des efforts) et de bogues qui peuvent être trouvées dans le BIOS d’un
constructeur, et qui peuvent ne pas être corrigées dans d’autres BIOS. Et pour terminer, le dernier
problème est le fait que le BIOS APM n’a pas suffisamment d’espace pour implémenter une
politique sophistiquée de gestion de l’énergie, ou une politique qui peut s’adapter parfaitement aux
besoins de la machine.
Le BIOS Plug and Play (PNPBIOS) n’était pas fiable dans de nombreuses situations. Le PNPBIOS est
une technologie 16 bits, le système d’exploitation doit utiliser une émulation 16 bits afin de faire
l'"interface" avec les méthodes PNPBIOS.
Le pilote [Link] est par défaut chargé par le loader(8) au démarrage et ne devrait pas être compilé
dans le noyau. La raison derrière cela est que les modules sont plus facile à manipuler, par exemple
pour passer à une autre version du module [Link] sans avoir à recompiler le noyau. Cela présente
l’avantage de rendre les tests aisés. Une autre raison est que lancer l’ACPI après qu’un système ait
terminé son lancement donne souvent lieu à des dysfonctionnements. Si des problèmes
surviennent, vous pouvez désactiver l’ACPI. Ce pilote ne devrait et ne peut être déchargé car le bus
système l’utilise pour différentes intéraction avec le matériel. L’ACPI peut être déactivé en ajoutant
[Link]="1" dans le fichier /boot/[Link] ou directement à l’invite du chargeur
(loader(8)).
L’ACPI peut être utilisé pour mettre en veille un système avec acpiconf(8), les options -s et 1-5. La
plupart des utilisateurs n’auront besoin que de 1 ou 3 (système suspendu en RAM). L’option 5
366
provoquera un arrêt de l’alimentation par logiciel, effet identique à un:
# halt -p
D’autres options sont disponibles via sysctl(8). Consultez les pages de manuel acpi(4) et acpiconf(8)
pour plus d’informations.
Ce document est destiné à vous permettre d’aider les développeurs du système ACPI sous FreeBSD à
identifier la cause originelle des problèmes que vous observez et à déboguer et développer une
solution. Merci de lire ce document et nous espérons pouvoir résoudre les problèmes de votre
système.
Pour ceux désirant soumettre directement un problème, veuillez faire parvenir les informations
suivantes à la liste freebsd-acpi@[Link]:
• La sortie de dmesg(8) après un boot -v, y compris tout message généré lors de la manifestation
du bogue.
• La sortie de dmesg(8) après un boot -v avec l’ACPI désactivé, si cette désactivation corrige le
problème.
• Une URL où peut être trouvé votre code source ACPI (ACPI Source Language-ASL). N’envoyez pas
directement l’ASL sur la liste de diffusion, ce fichier peut être très gros. Vous pouvez générer
une copie de votre ASL en exécutant la commande suivante:
367
(Remplacez name par votre nom d’utilisateur et system par celui du constructeur/modèle. Par
exemple: [Link])
La plupart des développeurs lisent la liste liste de diffusion à propos de la branche FreeBSD-
CURRENT mais soumettez également les problèmes rencontrés à la liste liste de diffusion
concernant ACPI sous FreeBSD afin d’être sûr qu’ils seront vus. Soyez patient, nous avons tous un
travail à plein temps qui nous attend ailleurs. Si votre bogue n’est pas immédiatement apparent,
nous vous demanderons probablement de soumettre un PR par l’intermédiaire de send-pr(1).
Quand vous remplirez un PR, veillez à inclure les mêmes informations que celles précisées
précédemment. Cela nous aidera à cerner et à résoudre le problème. N’envoyez pas de PR sans
avoir contacté auparavant la liste liste de diffusion concernant ACPI sous FreeBSD étant donné que
nous utilisons les PRs comme pense-bêtes de problèmes existants, et non pas comme mécanisme de
rapport. Il se peut que votre problème puisse avoir déjà été signalé par quelqu’un d’autre.
L’ACPI est présent sur tous les ordinateurs modernes compatibles avec l’une des architectures ia32
(x86), ia64 (Itanium), et amd64 (AMD). La norme complète définit des fonctionnalités comme la
gestion des performances du CPU, des contrôles des niveaux d’énergie, des zones de températures,
divers systèmes d’utilisation des batteries, des contrôleurs intégrés, et l’énumération du bus. La
plupart des systèmes n’implémentent pas l’intégralité des fonctionnalités de la norme. Par exemple,
un ordinateur de bureau n’implémentera généralement que la partie énumération de bus alors
qu’un ordinateur portable aura également le support de la gestion du refroidissement et de la
batterie. Les ordinateurs portables disposent également des modes de mise en veille et de réveil,
avec toute la complexité qui en découle.
Un système compatible ACPI dispose de divers composants. Les fabricants de BIOS et de circuits
fournissent des tables de description (FADT) fixes en mémoire qui définissent des choses comme la
table APIC (utilisée par les systèmes SMP), les registres de configuration, et des valeurs de
configuration simples. De plus, est fournie une table de "bytecode" (la table différenciée de
description du système-Differentiated System Description Table DSDT) qui spécifie sous forme d’une
arborescence l’espace des noms des périphériques et des méthodes.
Le pilote ACPI doit analyser les tables, implémenter un interpréteur pour le "bytecode", et modifier
les pilotes de périphériques et le noyau pour qu’ils acceptent des informations en provenance du
sous-système ACPI. Pour FreeBSD, Intel® fourni un interpréteur (ACPI-CA) qui est partagé avec
Linux et NetBSD. L’emplacement du code source de l’interpréteur ACPI-CA est
src/sys/contrib/dev/acpica. Le code "glu" permettant à ACPI-CA de fonctionner sous FreeBSD se
trouve dans src/sys/dev/acpica/Osd. Et enfin, les pilotes qui gèrent les différents périphériques ACPI
se trouvent dans src/sys/dev/acpica.
Pour un fonctionnement correct de l’ACPI, il faut que toutes les parties fonctionnent correctement.
Voici quelques problèmes courants, par ordre de fréquence d’apparition, et quelques
contournements ou corrections possibles.
368
[Link]. Problèmes avec la souris
Dans certains cas le réveil après une mise en veille sera à l’origine d’un dysfonctionnement de la
souris. Une solution connue est d’ajouter la ligne [Link]="0x3000" au fichier
/boot/[Link]. Si cela ne fonctionne pas, pensez à envoyer un rapport de bogue comme décrit
plus haut.
L’ACPI dispose de trois modes de mise en veille en RAM (STR-Suspend To RAM), S1 à S3, et un mode
de mise en veille vers le disque dur (STD-Suspend To Disk), appelé S4. Le mode S5 est un arrêt "soft"
et est le mode dans lequel se trouve votre système quand il est branché mais pas allumé. Le mode
S4 peut être implémenté de deux manières différentes. Le mode S4BIOS est une mise en veille vers
le disque assistée par le BIOS. Le mode S4OS est implémenté intégralement par le système
d’exploitation.
Commencez par examiner la sortie de sysctl [Link] à la recherche d’éléments concernant les
modes de mise en veille. Voici les résultats pour un Thinkpad:
[Link].supported_sleep_state: S3 S4 S5
[Link].s4bios: 0
Cela signifie que nous pouvons utiliser acpiconf -s pour tester les modes S3, S4OS, et S5. Si s4bios
était égal à 1, nous disposerions d’un support S4BIOS à la place de S4OS.
Quand vous testez la mise en veille et le réveil, commencez avec le mode S1, pour voir s’il est
supporté. Ce mode doit fonctionner dans la plupart des cas puisqu’il nécessite peu de support. Le
mode S2 n’est pas implémenté, mais si vous en disposez, il est similaire au mode S1. La chose
suivante à essayer est le mode S3. C’est le mode STR le plus avancé et il nécessite un support du
pilote important pour réinitialiser correctement votre matériel. Si vous avez des problèmes au
réveil de la machine, n’hésitez pas à contacter la liste liste de diffusion concernant ACPI sous
FreeBSD mais ne vous attendez pas à ce que le problème soit résolu puisqu’il y a de nombreux
pilotes/matériels qui nécessitent plus de tests et de développement.
Un problème courant avec la mise en veille/le réveil est que de nombreux pilotes de périphériques
ne sauvegardent pas, ne restaurent pas, ou ne réinitialisent pas leurs logiciel, registres ou mémoire
proprement. En premier lieu pour débogguer le problème, essayez:
# sysctl [Link]=1
# sysctl [Link].suspend_bounce=1
# acpiconf -s 3
Ce test émule le cycle de mise en veille/réveil de tous les pilotes de périphériques sans réellement
passer dans l’état S3. Dans certains cas, les problèmes comme la perte de l’état du périphérique, le
dépassement du délai du chien de garde du périphérique, les tentatives répétées, peuvent être
capturés avec cette méthode. Notez que le système n’entrera pas vraiment dans l’état S3, ce qui
signifie que les périphériques peuvent ne pas perdre leur alimentation, et nombreux
fonctionneront correctement même si les méthodes de mise en veille/réveil sont totalement
369
absentes, contrairement au cas d’un véritable état S3.
Les cas plus difficiles nécessitent un matériel supplémentaire, tel qu’un port série et un câble pour
débogguer à l’aide d’une console série, un port firewire et un câble pour l’utilisation de dcons(4), et
des compétences en debogguage du noyau.
Pour isoler le problème, retirez du noyau tous les pilotes de périphériques possibles. Si cela
fonctionne, vous pouvez alors identifier le pilote fautif en chargeant les pilotes un à un jusqu’à
l’apparition du problème. Généralement les pilotes binaires comme [Link], les pilotes
d’affichage X11, ou les pilotes USB seront victimes de la plupart des problèmes tandis que ceux
concernant les interfaces Ethernet fonctionneront normalement. Si vous pouvez charger/décharger
les pilotes de périphériques correctement, vous pouvez automatiser cela en ajoutant les
commandes appropriées dans les fichiers /etc/[Link] et /etc/[Link]. Il y a un exemple en
commentaire pour décharger ou charger un pilote. Essayez de fixer [Link].reset_video à zéro (0)
si votre affichage est corrompu après un réveil de la machine. Essayez des valeurs plus grandes ou
plus faibles pour [Link].sleep_delay pour voir si cela aide.
Une autre méthode est d’essayer de charger une distribution Linux récente avec le support ACPI et
tester la mise en veille et le réveil sur le même matériel. Si cela fonctionne sous Linux, c’est
probablement donc un problème de pilotes FreeBSD et déterminer quel pilote est responsable des
dysfonctionnements nous aidera à corriger le problème. Notez que les personnes qui maintiennent
l’ACPI sous FreeBSD ne s’occupe pas généralement des autres pilotes de périphériques (comme le
son, le système ATA, etc.), aussi tout rapport concernant un problème de pilote devrait
probablement en fin de compte être posté sur la liste liste de diffusion à propos de la branche
FreeBSD-CURRENT et communiqué au responsable du pilote. Si vous vous sentez une âme
d’aventurier, commencez à ajouter des printf(3)s de débogage dans un pilote problématique pour
déterminer à quel moment dans sa fonction de réveil il se bloque.
Enfin, essayez de désactiver l’ACPI et d’activer l’APM à la place, pour voir si la mise en veille et le
réveil fonctionnent avec l’APM, tout particulièrement dans le cas de matériel ancien (antérieur à
2000). Cela prend du temps aux constructeurs de mettre en place le support ACPI et le matériel
ancien aura sûrement des problèmes de BIOS avec l’ACPI.
La plupart des blocages système sont le résultat d’une perte d’interruptions ou d’une tempête
d’interruptions. Les circuits ont beaucoup de problèmes en fonction de la manière dont le BIOS
configure les interruptions avant le démarrage, l’exactitude de la table APIC (MADT), et le routage
du System Control Interrupt (SCI).
Les tempêtes d’interruptions peuvent être distinguées des pertes d’interruptions en contrôlant la
sortie de la commande vmstat -i en examinant la ligne mentionnant acpi0. Si le compteur
s’incrémente plusieurs fois par seconde, vous êtes victime d’une tempête d’interruptions. Si le
système semble bloqué, essayez de basculer sous DDB ( CTRL + ALT + ESC sous la console) et tapez show
interrupts.
Votre plus grand espoir quand vous faites face à des problèmes d’interruptions est d’essayer de
désactiver le support APIC avec la ligne [Link]="1" dans le fichier [Link].
370
[Link]. Paniques
Les paniques sont relativement rares dans le cas de l’ACPI et sont au sommet des priorités en
matière de problèmes à corriger. Le premier point est d’isoler les étapes nécessaires à la
reproduction de la panique (si possible) et d’obtenir une trace de débogage. Suivez l’aide sur
l’activation de options DDB et la configuration d’une console série (lire la Entering the DDB
Debugger from the Serial Line) ou la configuration d’une partition dump(8). Vous pouvez obtenir
une trace de débogage sous DDB avec la commande tr. Si vous devez recopier à la main la trace de
débogage, assurez-vous de relever les cinq dernières lignes et les cinq premières ligne de la trace.
Ensuite essayez d’isoler le problème en démarrant avec l’ACPI désactivé. Si cela fonctionne, vous
pouvez isoler le sous-système ACPI en utilisant différentes valeurs pour l’option [Link].
Consultez la page de manuel acpi(4) pour des exemples.
Si vous rencontrez d’autres problèmes avec l’ACPI (impossible de travailler avec une station
d’amarrage, périphériques non détectés, etc.), veuillez envoyer un courrier descriptif à la liste de
diffusion; cependant, certains de ces problèmes peuvent être relatifs à des partie incomplètes du
sous-système ACPI et qui pourront prendre du temps à être implémentées. Soyez patient et prêt à
tester les correctifs que nous pourront éventuellement vous envoyer.
Le problème le plus courant est le fait que les constructeurs fournissent des "bytecodes" erronés (ou
plus simplement bogués!). Cela se manifeste généralement sur la console par des messages du
noyau du type:
La plupart du temps vous pouvez corriger ces problèmes en mettant à jour votre BIOS avec la
dernière version disponible. La majorité des messages sur la console sont inoffensifs mais si vous
avez d’autres problèmes comme l’état de la batterie qui ne fonctionne pas, ce sont de bonnes
raisons pour commencer à jeter un oeil à ces problèmes dans l’AML. Le "bytecode", connu sous le
nom d’AML, est compilé à partir d’un langage source appelé ASL. L’AML se trouve dans une table
appelée DSDT. Pour obtenir une copie de votre ASL, utilisez acpidump(8). Vous devriez utiliser de
paire les options -t (qui affiche le contenu des tables fixes) et -d (qui désassemble l’AML en ASL).
Consultez la section Soumettre des informations de déboguage pour un exemple de syntaxe.
Le tout premier test que vous pouvez effectuer est de recompiler votre ASL à la recherche
371
d’erreurs. Les avertissements peuvent être généralement ignorés mais les erreurs sont des bogues
qui normalement empêchent l’ACPI de fonctionner correctement. Pour recompiler votre ASL,
utilisez la commande suivante:
# iasl [Link]
A long terme, notre objectif est que tout le monde puisse avoir un système ACPI fonctionnant sans
aucune intervention de l’utilisateur. Actuellement, nous sommes toujours en train de développer
des solutions pour contourner les erreurs courantes faites par les fabricants de BIOS. L’interpréteur
de Microsoft® ([Link] et [Link]) ne contrôle pas de façon stricte la conformité avec la norme,
et par conséquent de nombreux fabricants de BIOS qui testent l’ACPI uniquement sous Windows®
ne corrigent donc jamais leur ASL. Nous espérons poursuivre à identifier et documenter avec
exactitude les comportements non-standards autorisés par l’interpréteur de Microsoft® et les
reproduire de manière à permettre à FreeBSD de fonctionner sans obliger les utilisateurs à corriger
leur ASL. Comme solution et pour nous aider à identifier ces comportements, vous pouvez corriger
manuellement votre ASL. Si cela fonctionne pour vous, veuillez nous envoyer un diff(1) de l’ancien
et du nouveau ASL de façon à ce que nous puissions corriger le comportement incorrect dans ACPI-
CA et rendre donc inutile à l’avenir votre correctif.
Voici une liste des messages d’erreur courants, leur cause, et comment les corriger:
Certains AMLs supposent que le monde n’est fait de que différentes versions de Windows®. Vous
pouvez demander à FreeBSD de s’annoncer comme étant n’importe quel système d’exploitation
pour voir si cela corrige les problèmes que vous pouvez rencontrer. Une manière simple de faire
cela est de fixer la variable [Link]="Windows 2001" dans /boot/[Link] ou avec une autre
chaîne de caractères que vous trouvez dans l’ASL.
Certaines méthodes ne renvoient pas explicitement une valeur comme la norme le demande. Bien
qu’ACPI-CA ne gère pas cela, FreeBSD contourne ce problème en renvoyant implicitement la valeur.
Vous pouvez également ajouter des "Return statements" explicites où cela est nécessaire si vous
connaissez la valeur à renvoyer. Pour forcer iasl à compiler l’ASL, utilisez l’option -f.
Après avoir personnalisé [Link], vous voudrez le compiler, pour cela exécutez:
# iasl [Link]
Vous pouvez ajouter l’option -f pour forcer la création de l’AML, même s’il y a des erreurs lors de la
compilation. Rappelez-vous que certaines erreurs (e.g., missing Return statements) sont
automatiquement contournées par l’interpréteur.
372
[Link] est le fichier de sortie par défaut pour iasl. Vous pouvez le charger à la place de la
version boguée de votre BIOS (qui est toujours présent dans la mémoire flash) en éditant le fichier
/boot/[Link] comme suit:
acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/[Link]"
Le pilote ACPI dispose d’une fonction de débogage très flexible. Elle vous permet de spécifier un
ensemble de sous-systèmes ainsi que le niveau de verbosité. Les sous-systèmes que vous désirez
déboguer sont indiqués sous la forme de "couches" et sont divisés en composants ACPI-CA
(ACPI_ALL_COMPONENTS) et en supports matériel ACPI (ACPI_ALL_DRIVERS). La verbosité de la
sortie de débogage est spécifiée par un "niveau" et des intervalles de ACPI_LV_ERROR (rapporte
juste les erreurs) à ACPI_LV_VERBOSE (tout). Le "niveau" est un masque de bits séparés par des
espaces, aussi de nombreuses options peuvent être fixées à la fois. Dans la pratique, vous voudrez
utiliser un console série pour afficher la sortie si les informations de débogage sont si importantes
qu’elles dépassent le tampon des messages de la console. Une liste complète des couches
individuelles et des niveaux peut être trouvée dans la page de manuel acpi(4).
L’affichage des informations de débogage n’est pas activé par défaut. Pour l’activer, ajoutez la ligne
options ACPI_DEBUG à votre fichier de configuration du noyau si l’ACPI est compilé dans le noyau.
Vous pouvez ajouter la ligne ACPI_DEBUG=1 à votre fichier /etc/[Link] pour l’activer de façon
globale. Si l’ACPI est sous forme de module, vous pouvez recompiler votre module [Link] comme
suit:
# cd /sys/modules/acpi/acpi
&& make clean &&
make ACPI_DEBUG=1
Installez [Link] dans le répertoire /boot/kernel et indiquez le niveau et la couche désirée dans
[Link]. L’exemple suivant active les messages de débogage pour tous les composants ACPI-CA
et tous les pilotes de matériel ACPI (CPU, LID, etc.). Il n’affichera que les messages d’erreur, c’est le
niveau le moins verbeux.
[Link]="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
[Link]="ACPI_LV_ERROR"
Si l’information que vous voulez est déclenchée par un événement particulier (disons par exemple
une mise en veille suivi d’un réveil), vous pouvez abandonner les modifications dans [Link] et
utiliser à la place sysctl pour indiquer la couche et le niveau après le démarrage et préparer votre
système pour cet événement particulier. Les variables sysctl sont appelées de la même manière
que dans le fichier [Link].
373
12.15.7. Références
Plus d’information au sujet de l’ACPI peut être trouvé aux emplacements suivants:
• La spécification ACPI
• Ressource sur le débogage de la DSDT. (Utilise un exemple basé sur du matériel Compaq mais
qui est en général intéressant.)
374
Chapitre 13. Processus de démarrage de
FreeBSD
13.1. Synopsis
L’action de démarrer un ordinateur et de charger le système d’exploitation est désignée sous le nom
de "processus de bootstrap", ou simplement démarrage. Le processus de démarrage de FreeBSD
fournit une grande flexibilité en adaptant ce qui se passe quand vous démarrez le système, vous
permettant de choisir parmi les différents systèmes d’exploitation installés sur l’ordinateur, ou
même parmi les différentes versions du même système d’exploitation ou du noyau installées.
Ce chapitre détaille les options de configuration que vous pouvez paramétrer et comment
personnaliser le processus de démarrage de FreeBSD. Cela inclut tout ce qui se produit jusqu’au
démarrage du noyau FreeBSD, la détection des périphériques, et le démarrage d’init(8). Si vous
n’êtes pas tout à fait sûr du moment auquel cela arrive, cela se produit à l’instant où la couleur du
texte passe d’un blanc lumineux au gris.
• Quels sont les composants du système de démarrage de FreeBSD, et comment ils agissent les uns
sur les autres.
• Les options que vous pouvez passer aux composants du système de démarrage de FreeBSD pour
contrôler le processus.
x86 seulement
On peut faire le parallèle avec un événement du livre Les aventures du Baron Munchausen. Le
personnage tombe dans une bouche d’égout avec une partie du corps hors de la bouche, et il s’en
sort en attrapant les fixations de ses bottes ("bootstraps"), et en se soulevant ainsi. Dans les
premiers jours de l’informatique le terme bootstrap fut appliqué au mécanisme utilisé pour charger
le système d’exploitation, terme qui a été raccourci en "booting" (que l’on traduit par démarrage en
Français).
Sur l’architecture x86 c’est le BIOS ("Basic Input/Output System") qui est responsable du
375
chargement du système d’exploitation. Pour effectuer cela, le BIOS recherche sur le disque dur le
"Master Boot Record" - Secteur Principal de Démarrage (MBR), qui doit être placé à un endroit bien
précis sur le disque. Le BIOS dispose de suffisamment de connaissances pour charger et exécuter le
MBR, et suppose que le MBR peut alors effectuer le reste des tâches impliquées dans le chargement
du système d’exploitation, probablement avec l’aide du BIOS.
Pour parler du code contenu dans le MBR, on fait souvent référence aux termes de gestionnaire de
démarrage gestionnaire d’amorce, tout particulièrement quand il y a intéraction avec l’utilisateur.
Dans ce cas le code de ce gestionnaire occupe un espace plus important sur la première piste du
disque ou du système de fichier du système d’exploitation (le gestionnaire de démarrage est parfois
également appelé gestionnaire de chargement ou chargeur, "boot loader", sous FreeBSD ce terme
est utilisé pour une étape ultérieur du démarrage). Parmi les gestionnaire de démarrage populaire,
se trouvent boot0 (également connu sous le nom de Boot Easy, le gestionnaire de démarrage
standard de FreeBSD), Grub, GAG, et LILO (seul boot0 peut tenir entièrement dans l’espace du
MBR.).
Si vous n’avez qu’un seul système d’exploitation installé sur vos disques alors le MBR PC standard
sera suffisant. Ce MBR recherche la première tranche ("slice") amorçable (souvent appelée active)
sur le disque, et puis exécute le code sur cette tranche pour charger le reste du système
d’exploitation. Le MBR installé par fdisk(8) par défaut se comporte de cette manière. Il est basé sur
/boot/mbr.
Si vous avez installé plusieurs systèmes d’exploitation sur vos disques alors vous pouvez installer
un gestionnaire d’amorce différent, qui permet d’afficher une liste des différents systèmes
d’exploitation, et vous permet de sélectionner celui à partir duquel démarrer. Ceci est abordé dans
la sous-section suivante.
Le reste du système de démarrage de FreeBSD est divisé en trois étapes. La première étape est
exécutée par le MBR, qui en sait juste assez pour mettre l’ordinateur dans un état spécifique et
lancer la deuxième étape. La seconde étape peut en faire un peu plus, avant de lancer la troisième
étape. La troisième étape termine la tâche de chargement du système d’exploitation. La tâche a été
séparée en trois étapes parce que le standard PC impose des limites sur la taille des programmes
qui peuvent être exécutés aux étapes une et deux. L’enchaînement des tâches permet à FreeBSD de
fournir un chargeur plus flexible.
Le code contenu dans le MBR ou gestionnaire de démarrage ou d’amorce est parfois appelé étape
376
zéro du processus de démarrage. Cette section discute de deux gestionnaires de démarrage
précédemment mentionnés: boot0 et LILO.
Le gestionnaire d’amorce boot0: Le MBR installé par l’installateur FreeBSD ou par boot0cfg(8) est
basé sur /boot/boot0. (boot0 est très simple, puisque le programme dans le ne peut pas occuper plus
de 446 octets en raison de la table de partition principale et l’identifiant 0x55AA à la fin du MBR). Si
vous avez installé boot0 et plusieurs systèmes d’exploitation sur vos disques durs alors vous verrez
un affichage semblable à celui-ci au démarrage:
F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2
D’autres systèmes d’exploitation, en particulier Windows®, sont connus pour écraser le MBR
existant avec le leur. Si cela vous arrive, ou que vous désirez remplacer le MBR existant avec le
MBR de FreeBSD alors utilisez la commande suivante:
où device est le périphérique à partir duquel vous démarrez, comme ad0 pour le premier disque
IDE, ad2 pour le premier disque IDE sur le second contrôleur IDE, da0 pour le premier disque SCSI,
et ainsi de suite. Ou, si vous voulez une configuration sur mesure du MBR, employez boot0cfg(8).
other=/dev/hdXY
table=/dev/hdX
loader=/boot/chain.b
label=FreeBSD
Dans ce qui précède, précisez la partition primaire et le disque FreeBSD en utilisant les paramètres
propres à Linux, en remplaçant X avec la lettre correspondant au disque Linux et Y avec le numéro
de la partition primaire Linux. Si vous utilisez un disque SCSI, vous changerez /dev/hd pour quelque
chose de semblable à /dev/sd. La ligne loader=/boot/chain.b peut être omise si vous avez les deux
systèmes d’exploitation sur le même disque. Lancez maintenant la commande /sbin/lilo -v pour
entériner vos modifications; des messages de contrôle devraient s’afficher, vérifiant ces
modifications.
377
13.3.2. Etape une, /boot/boot1, et étape deux, /boot/boot2
Conceptuellement la première et la seconde étapes font partie du même programme, sur le même
emplacement du disque. Mais en raison de contraintes d’espace elles ont été divisées en deux, mais
vous les installerez toujours de paire. Elles sont copiées, à partir du fichier combiné /boot/boot, par
l’installateur ou bsdlabel (voir plus bas).
On les trouve en dehors des systèmes de fichiers, sur la première piste de la tranche de démarrage,
à partir du premier secteur. C’est l’endroit où boot0, ou tout autre gestionnaire de démarrage
s’attend à trouver le code à exécuter pour continuer le processus de démarrage. Le nombre de
secteurs utilisés est facilement déterminé à partir de la taille du fichier /boot/boot.
boot1 est très simple, puisqu’il est limité à 512 octets, et en sait juste assez du bsdlabel de FreeBSD,
qui contient l’information sur la tranche, pour trouver et lancer boot2.
boot2 est légèrement plus sophistiqué, et en connaît assez sur le système de fichiers de FreeBSD
pour y trouver des fichiers, et il peut également fournir une interface simple pour sélectionner un
noyau ou un chargeur à exécuter.
Comme le chargeur est beaucoup plus sophistiqué, et dispose d’une interface de configuration du
démarrage facile d’emploi, boot2 l’exécute habituellement, bien que précédemment, c’est lui qui
lançait directement le noyau.
# bsdlabel -B diskslice
où diskslice est le disque et la tranche à partir de laquelle vous démarrez, comme ad0s1 pour la
première tranche sur le premier disque IDE.
Le chargeur est la dernière étape du processus de démarrage en trois temps, et il réside sur le
système de fichiers, c’est habituellement le fichier /boot/loader.
378
Le chargeur a pour objet de fournir une méthode de configuration conviviale, en utilisant un jeu de
commandes faciles d’emploi, doublé d’un interpréteur plus puissant, avec un ensemble de
commandes plus complexes.
Le chargeur lira ensuite /boot/[Link], qui lui ira lire dans /boot/defaults/[Link] les valeurs
par défaut des variables à positionner et dans /boot/[Link] les variantes locales de ces
dernières. [Link] se sert de ces variables pour charger les modules et le noyau sélectionnés.
Finalement, par défaut, le chargeur attend 10 secondes l’appui sur une ou plusieurs touches, et
démarre le noyau s’il n’est pas interrompu. S’il est interrompu, une invite est alors affichée à
l’utilisateur, un jeu de commandes simples permet à l’utilisateur de modifier des variables, charger
ou décharger des modules, et enfin démarrer ou redémarrer.
Voici les commandes du chargeur les plus utilisées. Pour une information complète sur toutes les
commandes disponibles, veuillez consulter la page loader(8).
autoboot secondes
Démarre le noyau si elle n’est pas interrompue dans le laps de temps donné en secondes. Elle
affiche un compte à rebours, et le délai par défaut est de 10 secondes.
boot-conf
Passe par la même configuration automatique des modules basée sur des variables comme ce
qui se produit au démarrage. Cela n’a de sens que si vous utilisez unload en premier, et modifiez
certaines variables, généralement kernel.
help [sujet]
Affiche les messages d’aide contenus dans /boot/[Link]. Si le sujet donné est index, alors
c’est la liste de tous les sujets existants qui est donnée.
include nom_du_fichier …
Traite le fichier dont le nom est donné. Le fichier est lu, et interprété ligne par ligne. Une erreur
stoppe immédiatement le traitement.
379
ls [-l] [chemin_d_accès]
Affiche la liste des fichiers du répertoire donné, ou du répertoire racine, si le chemin d’accès
n’est pas précisé. Si l’option -l est utilisée, les tailles des fichiers seront également listées.
lsdev [-v]
Liste tous les périphériques depuis lesquels il sera possible de charger des modules. Si l’option -v
est utilisée, plus de détails seront donnés.
lsmod [-v]
Affiche la liste des modules chargés. Si l’option -v est utilisée, plus de détails seront donnés.
more nom_du_fichier
Affiche les fichiers indiqués, avec une pause toutes LINES lignes.
reboot
Redémarre immédiatement le système.
set variable
Positionne les variables d’environnement du chargeur.
unload
Retire de la mémoire tous les modules chargés.
boot -s
• Pour décharger votre noyau et modules habituels, puis charger votre ancien (ou un autre)
noyau:
unload
load [Link]
Vous pouvez utiliser [Link] pour faire référence au noyau générique du disque
d’installation, ou [Link] pour désigner votre noyau précédent (quand vous avez mis à jour
ou configuré votre propre noyau, par exemple).
Utilisez ce qui suit pour charger vos modules habituels avec un autre noyau:
unload
set kernel="[Link]"
boot-conf
380
• Pour charger une procédure de configuration du noyau (une procédure qui automatise ce que
vous faites normalement avec l’outil de configuration du noyau au démarrage):
-a
A l’initialisation du noyau, demande quel est le périphérique où se trouve le système de fichiers
racine.
-C
Démarre depuis le CDROM.
-c
Exécute UserConfig, l’outil de configuration du noyau au démarrage.
-s
Démarre en mode mono-utilisateur.
-v
Donne plus de détails lors du lancement du noyau.
Il existe d’autres options de démarrage, lisez la page de manuel boot(8) pour plus
d’informations.
Les "device hints" peuvent être spécifiés à l’invite du chargeur. Des variables peuvent être ajoutées
en utilisant la commande set, retirées avec la commande unset, et affichées avec la commande show.
381
Les variables positionnées dans le fichier /boot/[Link] peuvent être écrasées à cet endroit. Les
"device hints" entrés au niveau du chargeur ne sont pas permanents et seront oubliés au prochain
redémarrage.
Une fois le système démarré, la commande kenv(1) peut être utilisée pour afficher toutes les
variables.
La syntaxe du fichier /boot/[Link] est d’une variable par ligne, en utilisant le caractère "#"
comme signe de mise en commentaire. Les lignes sont présentées comme suit:
[Link]é.motclé="valeur"
set [Link]é.motclé=valeur
où pilote est le pilote de périphérique, unité est le numéro de l’unité et motclé est le mot-clé
correspondant à la variable. Le mot-clé pourra être une des options suivantes:
Les pilotes de périphérique pourront accepter (ou nécessiter) plus de variables non listées ici, il est
recommandé de lire leur page de manuel. Pour plus d’information, consultez les pages de manuel
[Link](5), kenv(1), [Link](5), et loader(8).
La séquence de redémarrage automatique vérifie que les systèmes de fichiers sont cohérents. S’ils
ne le sont pas, et que fsck(8) ne peut pas corriger les incohérences, init(8) place le système dans le
mode mono-utilisateur pour que l’administrateur système règle directement le problème.
382
13.6.2. Mode mono-utilisateur
Ce mode peut être atteint depuis la séquence de redémarrage automatique, ou quand l’utilisateur
démarre avec l’option -s ou en positionnant la variable boot_single du chargeur.
Si la console système est positionnée dans le mode insecure dans le fichier /etc/ttys, alors le système
demande le mot de passe de root avant de passer en mode mono-utilisateur.
Une console insecure (non sécurisée) signifie que vous considérez que la console
n’est pas sécurisée, et vous désirez que seul quelqu’un connaissant le mot passe de
root puisse utiliser le mode mono-utilisateur, et cela ne signifie pas que vous
utilisez une console sans sécurité. Donc, si vous voulez de la sécurité, choisissez
insecure, et non secure.
Si init(8) trouve vos systèmes de fichiers en état de marche, ou dès que l’utilisateur quitte le mode
mono-utilisateur, le système entre dans le mode multi-utilisateur, dans lequel il commence la
configuration de ses ressources.
Le système de configuration des ressources lit les valeurs par défaut dans /etc/defaults/[Link], et
les valeurs propres à la machine dans /etc/[Link], puis ensuite monte les systèmes de fichiers
mentionnés dans /etc/fstab, démarre les services réseau, divers autres "démons" système, et enfin
exécute les procédures de démarrage des logiciels installés localement.
La page de manuel rc(8) est une bonne référence au sujet du système de configuration des
ressources, de même que la lecture des procédures de démarrage elles-mêmes.
383
Pour éteindre une machine FreeBSD et cela sur des architectures ou des systèmes supportant la
gestion par logiciel de l’énergie, utilisez simplement la commande shutdown -p now pour arrêter et
couper l’alimentation de la machine. Pour juste redémarrer un système FreeBSD, utilisez shutdown
-r now. Vous devez être super-utilisateur (root) ou un membre du groupe operator pour pouvoir
exécuter shutdown(8). Les commandes halt(8) et reboot(8) peuvent également être utilisées,
veuillez consulter leur page de manuel ainsi que celle de shutdown(8) pour plus d’informations.
384
Chapitre 14. Gestion des comptes et des
utilisateurs
14.1. Synopsis
FreeBSD permet à de nombreux utilisateurs d’utiliser l’ordinateur en même temps. Evidemment,
seul un de ces utilisateurs peut être assis devant l’écran et le clavier à un instant donné , mais
n’importe quel nombre d’utilisateurs peut ouvrir une session par l’intermédiaire du réseau pour
mener à bien son travail. Pour utiliser le système chaque utilisateur doit posséder un compte.
• Les différences entre les divers comptes utilisateur sur un système FreeBSD.
• Comment modifier les paramètres d’un compte, comme le nom complet de l’utilisateur, ou
l’interpréteur de commandes préféré.
• Comment fixer des limites par compte, pour contrôler les ressources comme la mémoire et le
temps CPU auxquels les comptes et les groupes de comptes sont autorisés à accéder.
• Comment utiliser les groupes pour rendre la gestion de comptes plus aisée.
14.2. Introduction
Tout accès au système est effectué par l’intermédiaire de comptes, et tous les processus sont
exécutés par des utilisateurs, la gestion des comptes et des utilisateurs est capitale sur les systèmes
FreeBSD.
Chaque compte sur un système FreeBSD est associé avec un certain nombre d’informations utilisé
pour identifier le compte.
385
"User ID (UID)" - identifiant utilisateur
L’UID est un nombre compris entre 0 et 65535, utilisé pour identifier de façon unique un
utilisateur sur le système. Au niveau interne, FreeBSD utilise l’UID pour identifier les
utilisateurs-toute commande qui vous permet de spécifier un utilisateur convertira le nom
d’utilisateur en son UID avant de le traiter. Cela signifie que vous pouvez avoir plusieurs
comptes avec des noms d’utilisateurs différents mais le même UID. En ce qui concerne FreeBSD
ces comptes ne sont qu’un seul et unique utilisateur. Il est peu probable que vous ayez jamais à
faire cela.
386
Il y a trois principales sortes de comptes: le super-utilisateur, les utilisateurs système, et les comptes
utilisateur. Le compte super-utilisateur, normalement appelé root, est utilisé pour gérer le système
sans aucune limitation de privilèges. Les utilisateurs système exécutent des services. Et enfin, les
comptes utilisateur sont utilisés par de véritables utilisateurs, qui ouvrent des sessions, lisent leur
courrier électronique, et ainsi de suite.
Cela parce que le super-utilisateur, à la différence des comptes utilisateurs ordinaires, peut agir
sans aucune limite, et une mauvaise utilisation du compte super-utilisateur peut être à l’origine de
résultats catastrophiques. On ne peut pas endommager par erreur le système avec un compte
utilisateur, il est donc généralement préférable d’utiliser des comptes utilisateur ordinaires chaque
fois que c’est possible, à moins d’avoir particulièrement besoin de droits supplémentaires.
Vous devriez toujours vérifier et revérifier les commandes que vous tapez en tant que super-
utilisateur, parce qu’un espace en trop ou un caractère manquant peuvent signifier la perte
définitive de données.
Donc, la première chose que vous devriez faire, après la lecture de ce chapitre, est de vous créer un
compte utilisateur sans privilèges si vous n’en avez pas déjà. Cela s’applique aussi bien à une
machine multi-utilisateurs qu’à une machine mono-utilisateur. Plus loin dans ce chapitre, nous
expliquerons comment créer de nouveaux comptes, et comment passer d’un compte utilisateur
ordinaire au compte du super-utilisateur.
Des exemples d’utilisateurs système sont daemon, operator, bind (pour le serveur de noms de
domaine), news, et www.
nobody est l’utilisateur sans privilèges générique du système. Cependant, il est important de garder à
l’esprit que plus grand est le nombre de services utilisant nobody, plus grand sera le nombre de
fichiers et de processus associés à cet utilisateur, et par conséquent plus grand sera le nombre de
privilèges de cet utilisateur.
387
Chaque personne accédant à votre système ne devrait posséder que son propre et unique compte.
Cela vous permet de savoir qui fait quoi, empêche un utilisateur de désorganiser l’environnement
d’un autre ou de lire du courrier électronique qui ne lui est pas destiné, et ainsi de suite.
Chaque utilisateur peut configurer son propre environnement en fonction de ses besoins, pour
utiliser d’autres interpréteurs de commandes, éditeurs, raccourcis de clavier, et langues.
Commande Résumé
14.6.1. adduser
adduser(8) est un programme simple pour ajouter de nouveaux utilisateurs. Il crée les entrées dans
les fichiers système passwd et group. Il crée également le répertoire utilisateur pour le nouvel
utilisateur, y copie les fichiers de configuration par défaut ("dotfiles") à partir de /usr/shared/skel, et
peut éventuellement envoyer à l’utilisateur un courrier électronique de bienvenue.
# adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
388
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : jru
Password : ****
Full Name : J. Random User
Uid : 1001
Class :
Groups : jru wheel
Home : /home/jru
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
#
Le mot de passe que vous tapez n’apparaît pas à l’écran, et il n’y a pas non plus
d’astérisques affichés. Assurez-vous de ne pas vous tromper dans le mot de passe.
14.6.2. rmuser
Vous pouvez utiliser rmuser(8) pour supprimer complètement un utilisateur du système. rmuser(8)
effectue les opérations suivantes:
7. Supprime tous les fichiers temporaires appartenant à l’utilisateur des zones de stockages
temporaires comme /tmp.
8. Et enfin, supprime l’utilisateur de tous les groupes auxquels il appartient dans /etc/group.
Si un groupe est vide de ce fait et que le nom du groupe est le même que
celui de l’utilisateur, le groupe est supprimé; c’est la réciproque de la
création par adduser(8) d’un groupe propre pour chaque utilisateur.
rmuser(8) ne peut pas être employé pour supprimer des comptes super-utilisateur, car cela
entraînerait presque toujours des destructions massives.
389
Par défaut, la commande travaille en mode interactif, pour garantir que vous soyez sûr de ce que
vous faites.
# rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/[Link]: done.
#
14.6.3. chpass
chpass(1) modifie les informations de la base de données des utilisateurs comme les mots de passe,
les interpréteurs de commandes, et les informations personnelles.
Seuls les administrateurs système, comme le super-utilisateur, peuvent modifier les informations
concernant les autres utilisateurs et les mots de passe à l’aide de chpass(1).
Utilisé sans options, en dehors du nom facultatif de l’utilisateur, chpass(1) ouvre un éditeur
affichant les informations de l’utilisateur. Quand l’utilisateur quitte l’éditeur, la base de données
utilisateur est mise à jour avec les nouvelles informations.
On vous demandera votre mot de passe en quittant l’éditeur si vous n’êtes pas le
super-utilisateur.
390
Office Phone:
Home Phone:
Other information:
Un utilisateur ordinaire ne peut modifier qu’une partie de ces informations, et seulement celles qui
le concernent.
chfn(1) et chsh(1) sont juste des liens vers chpass(1), comme le sont ypchpass(1),
ypchfn(1), et ypchsh(1). NIS est supporté automatiquement, aussi spécifier yp avant
la commande n’est pas nécessaire. Si cela vous semble confus, ne vous inquiétez
pas, NIS sera abordé dans le chapitre Serveurs réseau.
14.6.4. passwd
passwd(1) est la méthode habituelle pour modifier son mot de passe, ou celui d’un autre utilisateur
si vous êtes le super-utilisateur.
% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done
Exemple 24. Modifier le mot de passe d’un autre utilisateur en tant que super-utilisateur
# passwd jru
391
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: done
Comme pour chpass(1), yppasswd(1) est juste un lien vers passwd(1), donc NIS
fonctionnera avec l’une des deux commandes.
14.6.5. pw
pw(8) est un utilitaire en ligne de commande pour créer, supprimer, modifier, et lister utilisateurs
et groupes. Il fonctionne comme une interface aux fichiers d’utilisateurs et de groupe. pw(8)
possède un ensemble puissant d’options qui le rende adapté à une utilisation dans des procédures,
mais les nouveaux utilisateurs pourront le trouver plus compliqué que les autres commandes
présentées ici.
Les quotas limitent l’utilisation des disques par les utilisateurs, et ils fournissent un moyen de
vérifier rapidement cette utilisation sans avoir à faire des calculs à chaque fois. Les quotas sont
abordés dans la Quotas d’utilisation des disques.
Les autres limites de ressource comprennent les moyens de limiter l’utilisation du CPU, de la
mémoire, et les autres ressources qu’un utilisateur peut consommer. Elles sont définies en
employant des classes de session et sont abordées ici.
Les classes de session sont définies dans /etc/[Link]. La sémantique précise sort du cadre de
cette section, mais est décrite en détail dans la page de manuel [Link](5). Il est suffisant de dire
que chaque utilisateur est assigné à une classe (default par défaut), et que chaque classe dispose
d’un ensemble de capacités associées. La forme utilisée pour ces capacités est une paire nom=valeur
où nom est un identifiant connu et valeur est une chaîne arbitraire dépendante du nom. Paramétrer
des classes et des capacités est plutôt direct et également décrit dans [Link](5).
392
# cap_mkdb /etc/[Link]
Les limites de ressource sont différentes des capacités standards des classes en deux points.
Premièrement, pour chaque limite, il existe une limite douce (actuelle) et limite dure. Une limite
douce peut être ajustée par l’utilisateur ou une application, mais jamais dépasser la limite dure.
Cette dernière peut être abaissée par l’utilisateur, mais jamais augmentée. Deuxièmement, la
plupart des limites de ressource s’applique par processus à un utilisateur spécifique, et non pas à
l’utilisateur dans sa totalité. Notez, cependant, que ces différences sont exigées par la manipulation
spécifique des limites, et non pas par l’implémentation du système des capacités des classes de
session utilisateur (i.e., elles ne sont vraiment pas un cas particulier des capacités des classes de
session).
Sans plus attendre, ci-dessous sont présentées les limites de ressource les plus souvent utilisées (le
reste, avec les autres capacités des classes de session, peut être trouvé dans [Link](5)).
coredumpsize
La limite sur la taille du fichier core généré par un programme est, pour d’évidentes raisons,
subordonnée aux autres limites sur l’utilisation du disque (e.g., filesize, ou les quotas de
disque). Néanmoins, elle est souvent employée comme méthode moins sévère pour contrôler la
consommation d’espace disque: puisque les utilisateurs ne génèrent pas de fichier core eux-
mêmes, et souvent ne les suppriment pas, paramétrer cela peut leur éviter de manquer d’espace
disque si un programme important (e.g., emacs) plante.
cputime
C’est la quantité maximale de temps CPU qu’un processus d’un utilisateur peut consommer. Les
processus la dépassant seront tués par le noyau.
C’est une limite sur le temps CPU consommé, non sur le pourcentage comme
affiché par certains champs de top(1) et ps(1). Une limite sur ce dernier est, au
moment de l’écriture de ces lignes, impossible, et serait plutôt inutile: un
compilateur-probablement une tâche légitime-peut aisément utiliser presque
100% du CPU pendant un certain temps.
filesize
C’est la taille maximale du plus gros fichier qu’un utilisateur peut posséder. Contrairement aux
quotas, cette limite ne s’applique qu’aux fichiers individuellement, et non pas sur l’ensemble lui-
même de tous les fichiers que possède un utilisateur.
maxproc
C’est le nombre maximal de processus que peut exécuter un utilisateur en même temps. Ceci
inclut les processus de premier plan et de tâche de fond. Pour d’évidentes raisons, il ne doit pas
être plus grand que les limites du système spécifiées par la variable sysctl(8) [Link]. Notez
en outre qu’une valeur trop basse peut gêner la productivité de l’utilisateur: il est souvent utile
d’ouvrir plusieurs sessions à la fois ou d’exécuter des opérations sous forme de "pipeline".
Certaines tâches, comme compiler un gros programme, engendrent également de multiples
processus (e.g., make(1), cc(1), et autres préprocesseurs).
393
memorylocked
C’est la quantité maximale de mémoire qu’un processus peut avoir demandé de verrouiller en
mémoire principale (e.g., voir mlock(2)). Certains programmes système critiques, comme
amd(8), sont verrouillés en mémoire principale de sorte qu’en cas de dépassement de la
mémoire de pagination, ils ne contribuent pas aux ennuis du système.
memoryuse
C’est la quantité maximale de mémoire qu’un processus peut consommer à un instant donné.
Cela inclus la mémoire principale et celle de pagination. Ce n’est pas le remède miracle pour
restreindre la consommation de mémoire, mais c’est un bon début.
openfiles
C’est le nombre maximal de fichiers qu’un processus peut avoir ouvert. Sous FreeBSD, des
fichiers sont également employés pour représenter les sockets et les canaux IPC, par conséquent
faites attention à ne fixer une valeur trop basse. La limite générale du système pour cela est
définie par la variable sysctl(8) [Link].
sbsize
C’est une limite sur la quantité de mémoire réseau, et donc de "mbufs", qu’un utilisateur peut
consommer. Ceci est à l’origine une réponse à une vielle attaque par refus de service en créant
de nombreuses sockets, mais peut être généralement employée pour limiter les communications
réseau.
stacksize
C’est la taille maximale de la pile d’un processus. Seule, cela n’est pas suffisant pour limiter la
quantité de mémoire que peut utiliser un programme, par conséquent, cette limite devra être
utilisée en même temps que d’autres limitations.
Il y a quelques éléments à se rappeler quand on fixe des limites de ressource. Quelques astuces
générales, suggestions, et commentaires divers:
• Les processus lancés au démarrage du système par /etc/rc sont assignés à la classe daemon.
• Bien que le fichier /etc/[Link] qui est fourni avec le système est une bonne source de valeurs
raisonnables pour la plupart des limites, seul vous, l’administrateur, peut savoir ce qui est
approprié à votre système. Fixer une limite trop haute peut laisser la porte ouverte aux abus,
alors qu’une limite trop basse peut être un frein à la productivité.
• Les utilisateurs du système X Window (X11) devraient se voir allouer plus de ressources que les
autres utilisateurs. X11 par lui-même utilise beaucoup de ressources, mais il encourage
également les utilisateurs à exécuter plus de programmes simultanément.
Pour de plus amples informations sur les limites et les classes de session et les capacités en général,
veuillez consulter les pages de manuel appropriées: [Link](1), getrlimit(2), [Link](5).
394
14.8. Groupes
Un groupe est simplement une liste d’utilisateurs. Les groupes sont identifiés par leur nom et leur
GID (identificateur de groupe). Dans FreeBSD (et la plupart des systèmes UNIX®), les deux éléments
que le noyau utilise pour décider si un processus est autorisé à faire quelque chose sont son ID
utilisateur et la liste des groupes auxquels il appartient. Différent d’un identificateur utilisateur, un
processus est associé à une liste de groupes. Vous pourrez entendre faire références au "group ID"
d’un utilisateur ou d’un processus; la plupart du temps on veut parler du premier groupe dans la
liste.
La table d’équivalence nom de groupe et identificateur de groupe se trouve dans /etc/group. C’est
un fichier texte avec quatre champs délimités par deux points. Le premier champ est le nom du
groupe, le second est le mot de passe crypté, le troisième est l’ID du groupe, et le quatrième est une
liste de membres séparés par des virgules. Ce fichier peut sans risque être édité à la main (en
supposant, bien sûr, que vous ne faites pas d’erreur de syntaxe!). Pour une description complète de
le syntaxe, voir la page de manuel group(5).
Si vous ne voulez pas éditer /etc/group à la main, vous pouvez utiliser la commande pw(8) pour
ajouter et éditer des groupes. Par exemple, pour ajouter un groupe appelé teamtwo et ensuite
vérifier qu’il existe bien vous pouvez utiliser:
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:
Le nombre 1100 ci-dessus est l’identificateur de groupe pour le groupe teamtwo. A cet instant teamtwo
n’a aucun membre, et est par conséquent plutôt inutile. Changeons cela en ajoutant jru au groupe
teamtwo.
Le paramètre ajouté à l’option -M est une liste, délimitée par des virgules, d’utilisateurs qui sont
membres du groupe. Des sections précédentes nous savons que le fichier des mots de passe contient
également un groupe pour chaque utilisateur. Le dernier (utilisateur) est automatiquement ajouté à
la liste des groupes par le système; l’utilisateur n’apparaîtra pas comme étant membre quand on
utilise l’option groupshow avec pw(8), mais apparaîtra quand l’information est demandée par
l’intermédiaire de id(1) ou un outil similaire. En d’autres termes, pw(8) manipule uniquement le
fichier /etc/group, il n’essaiera jamais de lire des données supplémentaires à partir du fichier
/etc/passwd.
395
Exemple 27. Utilisation de id(1) pour déterminer l’appartenance à un groupe
% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
Comme vous pouvez le voir, jru est membre des groupes jru et teamtwo.
Pour plus d’information sur pw(8), voir sa page de manuel, et pour d’information sur le format de
/etc/group, consultez la page de manuel group(5).
396
Chapitre 15. Sécurité
15.1. Synopsis
Ce chapitre sera une introduction aux concepts de base de la sécurité système, à certaines règles
empiriques, et à des sujets avancés sous FreeBSD. De nombreux sujets abordés ici peuvent être
appliqués à la sécurité système et à l’Internet en général. L’Internet n’est plus un endroit "amical"
dans lequel chacun désire être votre gentil voisin. Sécuriser votre système est impératif pour
protéger vos données, la propriété intellectuelle, votre temps, et bien plus des mains des "hackers"
et équivalents.
• Les différents mécanismes de chiffrement disponibles sous FreeBSD, comme DES et MD5.
• Comment mettre en place une authentification par mot de passe non réutilisable.
• Comment configurer IPsec et mettre en place un VPN entre machines FreeBSD et Windows®.
• Comment employer l’utilitaire Portaudit pour l’audit des logiciels tierce-partie installés à partir
du catalogue des logiciels portés.
D’autres sujets relatifs à la sécurité sont abordés par ailleurs dans ce Manuel. Par exemple, le
contrôle d’accès obligatoire est présenté dans le Mandatory Access Control et les coupe-feux
Internet sont développés dans le Firewalls.
15.2. Introduction
La sécurité est un domaine qui débute et se termine au niveau de l’administrateur système. Alors
que tous les systèmes multi-utilisateurs UNIX® BSD ont des sécurités inhérentes, la mise en place et
la maintenance des mécanismes supplémentaires de sécurité pour conserver des utilisateurs
397
"honnêtes" est probablement une des tâches les plus vastes de l’administrateur système. La sécurité
des machines est celle que vous voulez bien mettre en oeuvre, de plus les préoccupations en
matière de sécurité sont plus que jamais en concurrence avec les besoins de confort des
utilisateurs. Les systèmes UNIX® sont, en général, capables d’exécuter un nombre important de
processus simultanément et plusieurs de ces processus fonctionnent en tant que serveur - cela
signifiant que des entités extérieures peuvent se connecter et échanger avec ces processus. Comme
les mini-ordinateurs et les gros ordinateurs d’hier deviennent aujourd’hui nos ordinateurs de
bureau, et comme les ordinateurs sont désormais en réseau et reliés à Internet, la sécurité devient
d’autant plus un problème majeur.
La sécurité système concerne également la lutte contre les diverses formes d’attaque, y compris les
attaques destinées à faire planter, ou à rendre inutilisable le système, mais qui ne cherchent pas à
compromettre le compte root. Les problèmes de sécurité peuvent être divisés en plusieurs
catégories:
Une attaque par déni de service ("DoS") est une action qui prive la machine de ressources
nécessaires à son bon fonctionnement. Généralement, les attaques par déni de service sont des
mécanismes de force brute qui tentent de faire planter ou tout au moins de rendre inutilisable la
machine en saturant ses serveurs ou sa pile réseau. Certaines attaques par déni de service peuvent
se servir de bogues présents dans la pile réseau pour faire planter une machine avec un seul
paquet. Ces problèmes ne peuvent être corrigés que par l’application d’un correctif sur le noyau. On
peut souvent remédier aux attaques sur les serveurs en fixant correctement des options pour
limiter la charge que provoquent ces serveurs sur le système lors de conditions critiques. Les
attaques réseau par force brute sont plus difficiles à traiter. Une attaque par paquets usurpés
("spoofed-packet"), par exemple, est quasi-impossible à arrêter, à moins de déconnecter de
l’Internet votre système. Elle peut ne pas être en mesure de stopper votre machine, mais elle peut
saturer votre connexion Internet.
La compromission d’un compte utilisateur est bien plus fréquente qu’une attaque de type DoS. De
nombreux administrateurs utilisent toujours sur leurs machines les versions standards des
serveurs telnetd, rlogind, rshd, et ftpd. Par défaut, ces serveurs ne fonctionnent pas avec des
connexions chiffrées. Cela aura pour résultat si vous disposez d’un nombre d’utilisateurs
conséquent qu’un ou plusieurs de ces utilisateurs ayant l’habitude de se connecter à partir d’une
machine distante (ce qui représente la manière la plus courante et la plus pratique pour ouvrir une
session sur un système) auront leur mot de passe "sniffé". L’administrateur système méticuleux
analysera ses journaux de connexions effectuées à partir de machines distantes à la recherche
d’adresses sources suspectes même pour les ouvertures de sessions ayant réussies.
Il faut toujours supposer qu’une fois l’attaquant a l’accès à un compte utilisateur, il pourra
s’attaquer et avoir accès au compte root. Cependant, la réalité est que dans un système bien
sécurisé et surveillé, l’accès à un compte utilisateur ne donne pas nécessairement à l’attaquant
398
l’accès au compte root. Cette distinction est importante car sans accès aux droits de root, l’attaquant
ne peut généralement pas dissimuler ses traces et peut, dans le meilleur des cas, ne rien faire
d’autre que mettre la pagaille dans les fichiers de l’utilisateur ou faire planter la machine. La
compromission de comptes utilisateur est très fréquente parce que les utilisateurs n’ont pas
l’habitude de prendre les précautions que prennent les administrateurs système.
Les administrateurs doivent garder à l’esprit qu’il existe potentiellement de nombreuses manières
d’avoir accès au compte root sur une machine. L’attaquant peut connaître le mot de passe root,
l’attaquant peut trouver un bogue dans un serveur tournant avec les droits de root et être en
mesure de devenir root par l’intermédiaire d’une connexion réseau à ce serveur, ou l’attaquant
peut connaître un bogue dans un programme suid-root qui permet de devenir root une fois qu’il a
accédé à un compte utilisateur. Si un attaquant a trouvé un moyen de devenir root sur une
machine, il n’aura peut-être pas besoin d’installer une "backdoor" (porte dérobée). De nombreux
trous de sécurité root trouvés et fermés à temps demandent un travail considérable à l’attaquant
pour effacer ses traces, aussi la plupart des attaquants installe des portes dérobées. Une porte
dérobée offre à l’attaquant un moyen aisé d’avoir à nouveau accès aux droits de root sur le
système, mais cela donne également à l’administrateur système intelligent un bon moyen de
détecter l’intrusion. Rendre impossible à un attaquant l’installation d’une porte dérobée peut en
fait être préjudiciable à votre sécurité, parce que cela ne fermera pas le trou qu’a découvert en
premier lieu l’attaquant pour pénétrer sur le système.
Les solutions aux problèmes de sécurité devraient toujours être mises en place suivant l’approche
multi-couches de "la pelure d’oignon", elles peuvent être classées comme suit:
2. Sécuriser les serveurs exécutés avec les droits de root et les binaires suid/sgid.
7. La paranoïa.
La section suivante de ce chapitre abordera de manière plus approfondie les points énoncés ci-
dessus.
399
système d’exploitation lui-même ne connaît pas vraiment le mot de passe. Il ne connaît que la forme
chiffrée du mot de passe. La seule manière d’obtenir le mot de passe en clair est d’effectuer une
recherche par force brute de tous les mots de passe possibles.
Malheureusement, la seule méthode sécurisée pour chiffrer les mots de passe quand UNIX® a vu le
jour était basée sur DES, le "Data Encryption Standard" (standard de chiffrement des données).
C’était un problème mineur pour les utilisateurs résidants aux Etats-Unis, mais puisque le code
source de DES ne pouvait être exporté en dehors des Etats-Unis, FreeBSD dû trouver un moyen de
respecter la législation américaine et de rester compatible avec les autres systèmes UNIX® qui
utilisaient encore DES.
La solution fut de séparer les bibliothèques de chiffrement de façon à ce que les utilisateurs
américains puissent installer les bibliothèques DES et utiliser DES, mais que les utilisateurs
internationaux disposent d’une méthode de chiffrement non restreinte à l’exportation. C’est
comment FreeBSD est venu à utiliser MD5 comme méthode de chiffrement par défaut. MD5 est
reconnu comme étant plus sure que DES, l’installation de DES est proposée principalement pour
des raisons de compatibilité.
Avant FreeBSD 4.4 libcrypt.a était un lien symbolique pointant sur la bibliothèque utilisée pour le
chiffrement. FreeBSD 4.4 modifia libcrypt.a pour fournir une bibliothèque de hachage pour
l’authentification des mots de passe configurable. Actuellement la bibliothèque supporte les
fonctions de hachage DES, MD5 et Blowfish. Par défaut FreeBSD utilise MD5 pour chiffrer les mots
de passe.
Il est relativement facile d’identifier quelle méthode de chiffrement FreeBSD utilise. Examiner les
mots de passe chiffrés dans le fichier /etc/[Link] est une méthode. Les mots de passe MD5
sont plus longs que les mots de passe DES, et commencent par les caractères $1$. Les mots de passe
débutant par $2$ sont chiffrés suivant la méthode Blowfish. Les mots de passe DES n’ont pas de
caractéristique particulière, mais sont plus courts que les mots de passe MD5 et utilisent un
alphabet de 64 caractères qui ne contient pas le caractère $, aussi une chaîne relativement courte
qui ne commence pas par un dollar a donc de très fortes chances d’être un mot de passe DES.
Le format utilisé par les nouveaux mots de passe est contrôlé par la capacité de classe de session
passwd_format dans /etc/[Link], qui prend comme valeur des, md5 ou blf. Voir la page de manuel
[Link](5) pour plus d’information sur les capacités de classe de session.
Depuis la version 5.0 de FreeBSD, S/Key a été remplacé par la fonction équivalente OPIE ("One-time
Passwords In Everything" - Mots de passe non réutilisables dans toutes les applications). OPIE
utilise le hachage MD5 par défaut.
400
Il existe trois types de mots de passe dont nous parlerons dans ce qui suit. Le premier est votre mot
de passe UNIX® habituel ou mot de passe Kerberos; nous appellerons "mot de passe UNIX®". Le
deuxième type est le mot de passe généré par les programmes S/Key key ou OPIE opiekey(1) et
reconnu par les programmes keyinit ou opiepasswd(1) et l’invite de session; nous appellerons ceci
un "mot de passe non réutilisable". Le dernier type de mot de passe est le mot de passe secret que
vous donnez aux programmes key/opiekey (et parfois aux programmes keyinit/opiepasswd) qui
l’utilisent pour générer des mots de passe non réutilisable; nous l’appellerons "mot de passe secret"
ou tout simplement "mot de passe".
Le mot de passe secret n’a rien à voir avec votre mot de passe UNIX®; ils peuvent être identique,
mais c’est déconseillé. Les mots de passe secret S/Key et OPIE ne sont pas limités à 8 caractères
comme les anciens mots de passe UNIX®, ils peuvent avoir la longueur que vous désirez. Des mots
de passe de six ou sept mots de long sont relativement communs. La plupart du temps, le système
S/Key ou OPIE fonctionne de façon complètement indépendante du système de mot de passe
UNIX®.
En plus du mot de passe, deux autres types de données sont importantes pour S/Key et OPIE. L’une
d’elles est connue sous le nom de "germe" ("seed") ou "clé", formé de deux lettres et cinq chiffres.
L’autre est ce que l’on appelle le "compteur d’itérations", un nombre compris entre 1 et 100. S/Key
génère un mot de passe non réutilisable en concaténant le germe et le mot de passe secret, puis en
appliquant la fonction de hachage MD4/MD5 autant de fois qu’indiqué par le compteur d’itérations,
et en convertissant le résultat en six courts mots anglais. Ces six mots anglais constituent votre mot
de passe non réutilisable. Le système d’authentification (principalement PAM) conserve une trace
du dernier mot de passe non réutilisable utilisé, et l’utilisateur est authentifié si la valeur de
hachage du mot de passe fourni par l’utilisateur est la même que celle du mot de passe précédent.
Comme le hachage utilisé est irréversible, il est impossible de générer de mot de passe non
réutilisable si on a surpris un de ceux qui a été utilisé avec succès; le compteur d’itérations est
décrémenté après chaque ouverture de session réussie, de sorte que l’utilisateur et le programme
d’ouverture de session restent en phase. Quand le compteur d’itération passe à 1, S/Key et OPIE
doivent être réinitialisés.
Il y a trois programmes impliqués dans chacun des systèmes que nous aborderons plus bas. Les
programmes key et opiekey ont pour paramètres un compteur d’itérations, un germe, et un mot de
passe secret, et génère un mot de passe non réutilisable ou une liste de mots de passe non
réutilisable. Les programmes keyinit et opiepasswd sont utilisés pour initialiser respectivement
S/Key et OPIE, et pour modifier les mots de passe, les compteurs d’itérations, ou les germes; ils
prennent pour paramètres soit un mot de passe secret, soit un compteur d’itérations, soit un germe,
et un mot de passe non réutilisable. Le programme keyinfo ou opieinfo consulte le fichier
d’identification correspondant (/etc/skeykeys ou /etc/opiekeys) et imprime la valeur du compteur
d’itérations et le germe de l’utilisateur qui l’a invoqué.
Nous décrirons quatre sortes d’opérations. La première est l’utilisation du programme keyinit ou
opiepasswd sur une connexion sécurisée pour initialiser les mots de passe non réutilisables pour la
première fois, ou pour modifier votre mot de passe ou votre germe. La seconde opération est
l’emploi des programmes keyinit ou opiepasswd sur une connexion non sécurisée, en conjonction
avec key ou opiekey sur une connexion sécurisée, pour faire la même chose. La troisième est
l’utilisation de key/opiekey pour ouvrir une session sur une connexion non sécurisée. La quatrième
est l’emploi de key ou opiekey pour générer un certain nombre de clés qui peuvent être notées ou
imprimées et emportées avec vous quand vous allez quelque part ou il n’y a aucune connexion
401
sécurisée.
Pour initialiser S/Key pour la première fois, changer votre mot de passe, ou changer votre germe
quand vous êtes attaché sous votre compte par l’intermédiaire d’une connexion sécurisée (e.g., sur
la console d’une machine ou via ssh), utilisez la commande keyinit sans paramètres:
% keyinit
Adding unfurl:
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password:
Again secret password:
% opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
A l’invite Enter new secret pass phrase: ou Enter secret password:, vous devez entrer un mot de
passe ou une phrase. Rappelez-vous que ce n’est pas le mot de passe que vous utiliserez pour ouvrir
une session, mais celui utilisé pour générer vos clés non réutilisables. La ligne commençant par
"ID" liste les paramètres de votre instance: votre nom d’utilisateur, la valeur de votre compteur
d’itérations et votre germe. Quand vous ouvrirez une session, le système aura mémorisé ces
paramètres et vous les redonnera, vous n’avez donc pas besoin de les retenir. La dernière ligne
donne le mot de passe non réutilisable correspondant à ces paramètres et à votre mot de passe
secret; si vous devez vous reconnectez immédiatement, c’est ce mot de passe que vous utiliseriez.
Pour initialiser ou changer votre mot de passe secret par l’intermédiaire d’une connexion non
sécurisée, il faudra avoir déjà une connexion sécurisée sur une machine où vous pouvez exécuter
key ou opiekey; ce peut être depuis une icone sur le bureau d’un Macintosh ou depuis la ligne de
commande d’une machine sûre. Il vous faudra également donner une valeur au compteur
402
d’itération (100 est probablement une bonne valeur), et indiquer un germe ou utiliser la valeur
aléatoire générée par le programme. Sur la connexion non sécurisée (vers la machine que vous
initialisez), employez la commande keyinit -s:
% keyinit -s
Updating unfurl:
Old key: to17758
Reminder you need the 6 English words from the key command.
Enter sequence count from 1 to 9999: 100
Enter new key [default to17759]:
s/key 100 to 17759
s/key access password:
s/key access password:CURE MIKE BANE HIM RACY GORE
% opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
Pour accepter le germe par défaut (que le programme keyinit appelle key, ce qui prête à confusion),
appuyez sur Entrée . Ensuite avant d’entrer un mot de passe d’accès, passez sur votre connexion
sécurisée et donnez lui les mêmes paramètres:
Ou pour OPIE:
403
Retournez maintenant sur votre connexion non sécurisée, et copiez le mot de passe non réutilisable
généré par le programme adapté.
Une fois que vous avez initialisé S/Key ou OPIE, lorsque que vous ouvrez une session, une invite de
ce type apparaîtra:
% telnet [Link]
Trying [Link]...
Connected to [Link]
Escape character is '^]'.
login: <username>
s/key 97 fw13894
Password:
Ou pour OPIE:
% telnet [Link]
Trying [Link]...
Connected to [Link]
Escape character is '^]'.
login: <username>
otp-md5 498 gr4269 ext
Password:
Les invites S/Key et OPIE disposent d’une fonction utile (qui n’est pas illustrée ici): si vous appuyez
sur la touche Entrée lorsque l’on vous demande votre mot de passe, le programme active l’écho au
terminal, de sorte que vous voyez ce que vous êtes en train de taper. Ceci est très utile si vous
essayez de taper un mot de passe à la main, à partir d’un résultat imprimé par exemple.
A ce moment vous devez générer votre mot de passe non réutilisable pour répondre à cette invite
de session. Cela doit être effectué sur une machine de confiance sur laquelle vous pouvez exécuter
key ou opiekey (il y a des versions de ces programmes pour DOS, Windows et MacOS). Ces
programmes ont besoin du compteur d’itérations et du germe comme paramètres. Vous pouvez les
copier-coller de l’invite de session de la machine sur laquelle vous voulez ouvrir une session.
% key 97 fw13894
Reminder - Do not use this program while logged in via telnet or rlogin.
404
Enter secret password:
WELD LIP ACTS ENDS ME HAAG
Pour OPIE:
Maintenant que vous disposez de votre mot de passe non réutilisable vous pouvez continuer et
vous connecter:
login: <username>
s/key 97 fw13894
Password: <return to enable echo>
s/key 97 fw13894
Password [echo on]: WELD LIP ACTS ENDS ME HAAG
Last login: Tue Mar 21 [Link] from [Link] ...
Il faut parfois se rendre en des endroits où vous n’avez pas accès à une machine de confiance ou à
une connexion sécurisée. Dans ce cas, vous pouvez utiliser la commande key ou opiekey pour
générer plusieurs mots de passe non réutilisables que vous pouvez imprimer et transporter avec
vous. Par exemple:
% key -n 5 30 zz99999
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
26: SODA RUDE LEA LIND BUDD SILT
27: JILT SPY DUTY GLOW COWL ROT
28: THEM OW COLA RUNT BONG SCOT
29: COT MASH BARR BRIM NAN FLAG
30: CAN KNEE CAST NAME FOLK BILK
Ou pour OPIE:
% opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
405
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHI
L’option -n 5 demande cinq clés en séquence, l’option 30 indique quel doit être le rang de la
dernière itération. Notez que les clés sont imprimées dans l’ordre inverse de celui où elles seront
éventuellement utilisées. Si vous êtes vraiment paranoïaque, vous pouvez les recopier à la main,
sinon vous pouvez les copier-coller vers la commande lpr. Remarquez que chaque ligne liste le
compteur d’itération et le mot de passe non réutilisable; vous trouverez peut-être utile de rayer les
mots de passe au fur et à mesure de leur utilisation.
S/Key peut placer des restrictions sur l’utilisation des mots de passe UNIX® en fonction des noms de
machine, d’utilisateur, de la ligne utilisée par le terminal ou de l’adresse IP de la machine connectée
à distance. Ces restrictions peuvent être trouvées dans le fichier de configuration /etc/[Link].
La page de manuel [Link](5) donne de plus amples informations sur le format de ce fichier et
elle détaille également certains avertissements relatifs à la sécurité qu’il faut lire avant de se fier à
ce fichier pour sa sécurité.
S’il n’y a pas de fichier /etc/[Link] (ce qui est le cas par défaut sur les systèmes FreeBSD 4.X),
tous les utilisateurs pourront se servir de mots de passe UNIX®. Si le fichier existe, alors tous les
utilisateurs devront passer par S/Key, à moins qu’ils ne soient explicitement autorisés à ne pas le
faire par des instructions du fichier /etc/[Link]. Dans tous les cas l’usage des mots de passe
UNIX® est autorisé sur la console.
Voici un exemple de configuration du fichier [Link] qui illustre les trois types d’instructions les
plus courantes:
La première ligne (permit internet) autorise les utilisateurs dont l’adresse IP (ce qui rend
vulnérable en cas d’usurpation) appartient au sous-réseau spécifié à employer les mots de passe
UNIX®. Cela ne doit pas être considéré comme une mesure de sécurité, mais plutôt comme un
moyen de rappeler aux utilisateurs autorisés qu’ils sont sur un réseau non sécurisé et doivent
utiliser S/Key pour s’authentifier.
La seconde ligne (permit user) autorise l’utilisateur désigné, dans notre cas fnord, à employer
n’importe quand les mots de passe UNIX®. En général, il faut se servir de cette possibilité si les
personnes soit n’ont pas moyen d’utiliser le programme key, s’ils ont par exemple des terminaux
passifs, soit s’ils sont définitivement réfractaires au système.
La troisième ligne (permit port) autorise tous les utilisateurs d’un terminal sur une liaison
particulière à utiliser les mots de passe UNIX®; cela devrait être employé pour les connexions
téléphoniques.
OPIE peut restreindre l’usage des mots de passe UNIX® sur la base de l’adresse IP lors de
406
l’ouverture d’une session comme peut le faire S/Key. Le fichier impliqué est /etc/opieaccess, qui est
présent par défaut sous FreeBSD 5.0 et versions suivantes. Veuillez consulter la page de manuel
opieaccess(5) pour plus d’information sur ce fichier et certaines considérations sur la sécurité dont
vous devez être au courant en l’utilisant.
Cette ligne autorise les utilisateurs dont l’adresse IP (ce qui rend vulnérable en cas d’usurpation)
appartient au sous-réseau spécifié à employer les mots de passe UNIX® à tout moment.
Si aucune règle du fichier opieaccess ne correspond, le comportement par défaut est de refuser
toute ouverture de session non-OPIE.
L’encapsuleur TCP étend les capacités d’inetd au niveau du support pour chaque serveur sous son
contrôle. En utilisant cette méthode il est possible d’offrir le support des ouvertures de session, de
retourner des messages lors des connexions, de permettre à un "daemon" de n’accepter que les
connexions internes, etc. Bien que certaines de ces fonctionnalités peuvent être obtenues par
l’implémentation d’un coupe-feu, ce système ajoutera non seulement une couche supplémentaire
de protection mais ira plus loin dans le contrôle que ce que peut fournir un coupe-feu.
Les fonctionnalités apportées par l’encapsuleur TCP ne peuvent se substituer à l’utilisation d’un
bon coupe-feu. L’encapsuleur TCP peut être utilisé de paire avec un coupe-feu ou tout autre système
de sécurité et il pourra alors servir comme une couche supplémentaire de protection pour le
système.
Etant donné que ce programme est une extension à la configuration du programme inetd, le lecteur
est supposé avoir pris connaissance de la section de configuration d’inetd.
Bien que les programmes lancés par inetd(8) ne soient pas tout à fait des
"daemons", ils sont traditionnellement appelés "daemons". C’est le terme que nous
utiliserons également dans le reste de cette section.
407
15.6.1. Configuration initiale
Le seul pré-requis à l’utilisation de l’encapsuleur TCP sous FreeBSD est de s’assurer que le serveur
inetd est lancé à partir de [Link] avec l’option -Ww; c’est la configuration par défaut. Bien
évidemment une configuration correcte du fichier /etc/[Link] est également sous-entendue,
mais dans le cas contraire syslogd(8) émettra des messages d’avertissement dans les journaux du
système.
Dans la configuration la plus simple, la politique de connexion aux "daemons" est soit de tout
autoriser ou soit de tout bloquer en fonctions des options choisies dans /etc/[Link]. La
configuration par défaut sous FreeBSD est d’autoriser les connexions à chaque "daemon" lancé à
l’aide d’inetd. La modification de ce réglage par défaut sera discutée une fois que la configuration
de base aura été vue.
Une configuration de base prend en général la forme daemon : adresse : action. Où daemon est le
nom du "daemon" lancé par inetd. L'adresse peut être un nom de machine valide, une adresse IP ou
une adresse IPv6 entre crochets ([ ]). Le champ action pourra avoir comme valeur allow ou deny
pour autoriser ou interdire l’accès. Gardez à l’esprit que ce type de configuration fonctionne de
manière à honorer la première règle sémantique correspondante, cela signifie que le fichier de
configuration est parcouru à la recherche d’une règle correspondant à la requête. Quand une
correspondance est trouvée, la règle est appliquée et la recherche s’arrête.
Plusieurs autres options existent mais elles seront exposées dans une section ultérieure. Une simple
ligne de configuration peut être construite avec peu d’information. Par exemple, pour autoriser les
connexions POP3 via le "daemon"mail/qpopper, les lignes suivantes doivent être ajoutées au fichier
[Link]:
Après l’ajout de cette ligne, inetd devra être redémarré. Cela sera fait en utilisant la commande
kill(1), ou avec le passage du paramètre restart à la commande /etc/rc.d/inetd.
L’encapsuleur TCP dispose également d’options avancées; elles permettrons plus de contrôle sur la
manière dont sont gérées les connexions. Dans certains cas cela peut être une bonne idée de
renvoyer un commentaire à certaines machines ou lors de connexions à certains "daemon"s. Dans
d’autres cas, peut-être qu’un fichier journal pourrait être enregistré ou un courrier électronique
pourrait être envoyé à l’administrateur. D’autres situations peuvent nécessiter l’utilisation d’un
service uniquement pour les connexions locales. Tout cela est possible à l’aide des options de
configuration connues sous le nom de jokers, caractères d’expansion et d’exécution de commandes
externes. Les deux sections suivantes abordent ces situations.
408
[Link]. Commandes externes
Imaginez une situation dans laquelle une connexion doit être refusée et que la raison de ce refus
doit être envoyée à la personne qui a tenté d’établir cette connexion. Comment cela peut-il être mis
en place? Ce type d’action est rendu possible par l’emploi de l’option twist. Quand une tentative de
connexion est faite, twist sera appelée pour exécuter une commande ou une procédure
d’interpréteur de commande. Un exemple est déjà présent dans le fichier [Link]:
Cet exemple montre que le message "You are not allowed to use daemon from hostname." sera
retourné pour tout "daemon" qui n’a pas été précédemment configuré dans le fichier d’accès. Cette
fonction est très utile pour envoyer une réponse à l’initiateur de la connexion juste après le refus
de la connexion. Notez que tout message à retourner doit être placé entre des guillemets "; il n’y a
pas d’exception possible à cette règle.
Il est possible de lancer une attaque par déni de service sur le serveur si un
agresseur, ou un groupe d’agresseurs sont en mesure de submerger ces "daemon"s
avec des demandes de connexion.
Une autre possibilité dans ce cas est d’employer l’option spawn. Tout comme l’option twist, spawn
interdit implicitement les connexions et peut être utilisée pour lancer une commande ou une
procédure externe. Contrairement à twist, spawn n’enverra pas de réponse à la personne qui a
établi la connexion. Examinons par exemple la ligne de configuration suivante:
Il existe d’autres caractères de substitution en dehors de ceux déjà présentés, par exemple %a.
Consultez la page de manuel hosts_access(5) pour une liste complète.
Jusqu’ici l’option ALL a été utilisée dans tous les exemples. Il existe d’autres options pour étendre un
peu plus les fonctionnalités. Par exemple, l’option ALL peut être utilisée pour prendre en compte
chaque instance d’un "daemon", d’un domaine ou d’une adresse IP. Un autre joker disponible est
l’option PARANOID qui peut être employée pour prendre en compte toute machine qui fournirait une
409
adresse IP susceptible d’être falsifiée. En d’autres termes, l’option PARANOID peut être utilisée pour
définir l’action a effectuer dès qu’une connexion se fait à partir d’une adresse IP qui diffère de celle
attachée à une machine. L’exemple suivant apporte un éclairage sur cette option:
Dans cet exemple, toutes les requêtes de connexion à sendmail à partir d’adresses IP différentes de
celle correspondant au nom de la machine seront refusées.
Pour en apprendre plus sur les jokers et leurs fonctionnalités associées, consultez la page de
manuel hosts_access(5).
Avant que n’importe quelle des lignes de configuration données ci-dessus ne fonctionne, la
première ligne de configuration du fichier [Link] devra être dé-commentée. Cela a été noté en
début de section.
15.7. Kerberos
Kerberos est un protocole réseau supplémentaire qui permet aux utilisateurs de s’authentifier par
l’intermédiaire d’un serveur sécurisé. Des services comme l’ouverture de session et la copie à
distance, la copie sécurisée de fichiers entre systèmes et autres fonctionnalités à haut risque
deviennent ainsi considérablement plus sûrs et contrôlables.
Les instructions qui suivent peuvent être utilisées comme guide d’installation de Kerberos dans la
version distribuée pour FreeBSD. Vous devriez cependant vous référer aux pages de manuel
correspondantes pour avoir une description complète.
Kerberos est un composant optionnel de FreeBSD. La manière la plus simple d’installer ce logiciel
est de sélectionner la distribution krb4 ou krb5 dans sysinstall lors de l’installation de FreeBSD. Cela
installera les implémentations "eBones" (KerberosIV) ou "Heimdal" (Kerberos5) de Kerberos. Ces
implémentations sont distribuées car elles sont développées en dehors des USA ou du Canada et
étaient par conséquent disponibles aux utilisateurs hors de ces pays durant l’ère restrictive du
contrôle des exportations de code de chiffrement à partir des USA.
Cela se fait uniquement sur le serveur Kerberos. Vérifiez tout d’abord qu’il ne traîne pas
410
d’anciennes bases Kerberos. Allez dans le répertoire /etc/kerberosIV et assurez-vous qu’il ne
contient que les fichiers suivants:
# cd /etc/kerberosIV
# ls
README [Link] [Link]
S’il y a d’autres fichiers (comme principal.* ou master_key), utilisez alors la commande kdb_destroy
pour supprimer l’ancienne base de données Kerberos, ou si Kerberos ne tourne pas, effacez
simplement les fichiers supplémentaires.
Vous devez maintenant éditer les fichiers [Link] et [Link] pour définir votre domaine
Kerberos. Dans notre cas, le domaine sera [Link] et le serveur [Link]. Nous éditons
ou créons le fichier [Link]:
# cat [Link]
[Link]
[Link] [Link] admin server
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
Dans notre cas les autres domaines n’ont pas besoin d’être mentionnés. Ils ne sont là que pour
montrer comment une machine peut avoir connaissance de plusieurs domaines. Pour plus de
simplicité, vous pouvez ne pas les inclure.
La première ligne indique pour quel domaine cette machine agit. Les autre lignes définissent les
autres domaines/machines. Le premier élément sur une ligne est le domaine, le second le nom de la
machine qui est le "centre de distribution de clés" de ce domaine. Les mots admin server qui suivent
un nom de machine signifient que la machine est aussi serveur d’administration de la base de
données. Pour plus d’explication sur cette terminologie, consultez les pages de manuel de Kerberos.
Nous devons maintenant ajouter [Link] au domaine [Link] et ajouter une entrée
pour mettre toutes les machines du domaine DNS .[Link] dans le domaine Kerberos
[Link]. Le fichier [Link] aura alors l’allure suivante:
# cat [Link]
[Link] [Link]
.[Link] [Link]
.[Link] [Link]
.[Link] [Link]
.[Link] [Link]
411
Encore une fois, les autres domaines n’ont pas besoin d’être mentionnés. Ils ne sont là que pour
montrer comment une machine peut avoir connaissance de plusieurs domaines. Pour plus de
simplicité, vous pouvez ne pas les inclure.
La première ligne assigne un système particulier au domaine désigné. Les lignes restantes montrent
comment affecter par défaut les systèmes d’un sous-domaine DNS particulier à un domaine
Kerberos donné.
Nous sommes maintenant prêt pour la création de la base de données. Il n’y a à le faire que sur le
serveur Kerberos (ou Centre de Distribution de Clés). Cela se fait avec la commande kdb_init:
# kdb_init
Realm name [default [Link] ]: [Link]
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Nous devons maintenant sauvegarder la clé pour que les serveurs sur la machine locale puissent la
lire. Utilisons la commande kstash pour faire cela:
# kstash
Il faut ajouter deux entrées ("principals") à la base de données pour chaque système qui sera
sécurisé par Kerberos. Ce sont kpasswd et rcmd. Ces deux entrées sont définies pour chaque système,
chacune de leurs instances se voyant attribuer le nom du système.
Ces "daemons", kpasswd et rcmd permettent aux autres systèmes de changer les mots de passe
Kerberos et d’exécuter des commandes comme rcp(1), rlogin(1), et rsh(1).
# kdb_edit
Opening database...
412
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Il faut maintenant extraire les instances qui définissent les services sur chaque machine. Pour cela
on utilise la commande ext_srvtab. Cela créera un fichier qui doit être copié ou déplacé par un
moyen sûr dans le répertoire /etc/kerberosIV de chaque client Kerberos. Ce fichier doit être présent
sur chaque serveur et client, et est crucial au bon fonctionnement de Kerberos.
413
# ext_srvtab grunt
Enter Kerberos master key:
Cette commande ne génère qu’un fichier temporaire qui doit être renommé en srvtab pour que
tous les serveurs puissent y accéder. Utilisez la commande mv(1) pour l’installer sur le système
d’origine:
# mv grunt-new-srvtab srvtab
Si le fichier est destiné à un client, et que le réseau n’est pas considéré comme sûr, alors copiez le
fichier client-new-srvtab sur un support amovible et transportez-le par un moyen physiquement
sûr. Assurez-vous de le renommer en srvtab dans le répertoire /etc/kerberosIV du client, et mettez-
le bien en mode 600:
# mv grumble-new-srvtab srvtab
# chmod 600 srvtab
Nous devons maintenant créer des entrées utilisateurs dans la base de données. Tout d’abord
créons une entrée pour l’utilisateur jane. Utilisez la commande kdb_edit pour cela:
# kdb_edit
Opening database...
414
New Password: <---- réentrez le mot de passe sûr là
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- ne rien entrer ici permet de quitter le programme
Il faut tout d’abord démarrer les "daemons" Kerberos. Notez que si vous avez correctement modifié
votre fichier /etc/[Link], cela se fera automatiquement au redémarrage du système. Ceci n’est
nécessaire que sur le serveur Kerberos. Les clients Kerberos récupéreront automatiquement les
informations dont ils ont besoin via leur répertoire /etc/kerberosIV.
# kerberos &
Kerberos server starting
Sleep forever on error
Log file is /var/log/[Link]
Current Kerberos master key version is 1.
Nous pouvons maintenant utiliser la commande kinit pour obtenir un "ticket d’entrée" pour
l’utilisateur jane que nous avons créé plus haut:
% kinit jane
MIT Project Athena ([Link])
Kerberos Initialization for "jane"
Password:
Essayons de lister les informations associées avec la commande klist pour voir si nous avons
vraiment tout ce qu’il faut:
% klist
415
Ticket file: /tmp/tkt245
Principal: jane@[Link]
Essayons maintenant de modifier le mot de passe en utilisant la commande passwd(1) pour vérifier
si le "daemon" kpasswd est autorisé à accéder à la base de données Kerberos:
% passwd
realm [Link]
Old password for jane:
New Password for jane:
Verifying password
New Password for jane:
Password changed.
Kerberos permet d’attribuer à chaque utilisateur qui a besoin des droits du super-utilisateur son
propre mot de passe su(1). Nous pouvons créer un identifiant q