Introduction 1. Que contient ce livre? 19 2. Pré-requis 20 3. Obtenir les logiciels mis en oeuvre 20 3.1 Image ISO des distributions Linux 21 3.2 Oracle VM VirtualBox 21 3.3 Machines virtuelles 22 3.4 Conventions 26 Dépannage : techniques et procédures 1. Méthode de dépannage 29 1.1 Identification des causes 30 1.1.1 Recueil des faits 30 1.1.2 Environnement 31 1.1.3 Recherche de solutions 32 1.2 Reproduire le problème 33 1.3 Analyser 33 1.4 Isoler le problème 36 1.5 Appliquer les correctifs 37 1.6 Création de la documentation 37 2. Moyens nécessaires 37 Architecture du système GNU/Linux 1. Vue d'ensemble 39 1.1 Projet GNU 39 1/18
1.2 Distribution GNU/Linux 40 2. Anneaux de protection 41 2.1 Architecture 32 bits 42 2.1.1 Sans virtualisation 42 2.1.2 Avec virtualisation 43 2.2 Architecture 64 bits 44 2.2.1 Sans virtualisation 44 2.2.2 Avec virtualisation 45 3. Plates-formes matérielles 45 3.1 Sur quelles plates-formes? 45 3.2 Identifier l'architecture matérielle 46 4. Noyau Linux 46 4.1 Composants du noyau 47 4.2 Code source 48 4.3 Version du noyau 48 4.3.1 Bref historique des versions 48 4.3.2 Numéros de version 49 4.3.3 Comment connaître la version du noyau? 49 4.4 Modules du noyau 51 5. Pilotes de périphériques 52 5.1 Fichiers spéciaux 53 5.2 Pilotes réseau 56 6. Bibliothèques 57 6.1 Bibliothèques statiques 57 6.2 Bibliothèques partagées 58 6.3 Emplacement des bibliothèques 59 7. Appels système 60 2/18
8. Shell 62 8.1 Différents shells 62 8.1.1 Bourne Shell 62 8.1.2 Almquish Shell et Debian Almquish Shell 62 8.1.3 Korn Shell 63 8.1.4 C-Shell et Tenex C-Shell 66 8.1.5 Bourne Again Shell 70 8.2 Quel est le shell de connexion? 70 8.3 Pages de manuel 72 8.3.1 Sections 72 8.3.2 Rechercher l'aide d'une commande 73 9. Interface graphique 75 9.1 Couches graphiques 75 9.1.1 Transport réseau 75 9.1.2 Système de fenêtrage 76 9.1.3 Gestionnaire d'affichage 77 9.1.4 Gestionnaire de session 78 9.1.5 Gestionnaire de fenêtres 79 9.1.6 Gestionnaire de bureau 80 9.2 Enlever un environnement graphique 81 10. Services et niveaux d exécution 84 10.1 Niveaux d'exécution 85 10.1.1 Identifier le niveau d'exécution courant 87 10.2 Gestion des services avec Debian 88 10.2.1 Afficher le statut d'un service 90 10.2.2 Afficher le statut de tous les services 91 10.2.3 Démarrer, arrêter un service 92 10.2.4 Recharger la configuration d'un service 93 10.2.5 Activer, désactiver des services au démarrage 93 10.2.6 Outils sysv-rc-conf 95 10.3 Gestion des services avec Ubuntu Server 96 10.3.1 Afficher le statut d'un service 100 3/18
10.3.2 Afficher le statut de tous les services 101 10.3.3 Démarrer, arrêter un service 103 10.3.4 Recharger la configuration d'un service 104 10.3.5 Activer, désactiver des services au démarrage 104 10.4 Gestion des services avec CentOS 105 10.4.1 Afficher le statut d'un service 105 10.4.2 Afficher le statut de tous les services 105 10.4.3 Démarrer, arrêter un service 107 10.4.4 Recharger la configuration d'un service 107 10.4.5 Activer, désactiver des services au démarrage 108 10.5 Systemd 109 11. Chargeurs d'amorçage 109 11.1 Les différents chargeurs 110 11.1.1 LILO 110 11.1.2 Grub legacy 110 11.1.3 Grub-PC 110 12. Journaux système 111 12.1 Journaux de Debian 111 12.2 Journaux de Ubuntu 113 12.3 Journaux de CentOS 114 12.4 Lire les journaux système 116 12.4.1 Lire un journal texte 116 12.4.2 Lire un journal binaire 119 12.4.3 Logwatch 119 12.5 rsyslog 124 12.5.1 rsyslog.conf 125 12.5.2 Les règles de rsyslog 133 12.6 Logrotate 135 13. Applications 138 13.1 Processus 139 13.1.1 Définition 139 13.1.2 Identifiant de processus 140 4/18
13.1.3 État d'un processus 140 13.1.4 Fonction fork() 141 13.1.5 Fonction exec() 142 13.2 Threads 143 14. Distributions 144 14.1 Identifier la distribution 144 14.2 Debian 145 14.2.1 Présentation 145 14.2.2 Différentes versions de Debian 145 14.3 Ubuntu 146 14.3.1 Présentation 146 14.3.2 Différentes versions 146 14.4 Red Hat 147 14.4.1 Présentation 147 14.4.2 Différentes versions 147 14.5 CentOS 148 14.6 Identifier la version de la distribution 148 14.6.1 Version de Debian 148 14.6.2 Version de Ubuntu 149 14.6.3 Version de CentOS 149 15. Modèle du système 151 Noyau Linux 1. Introduction 153 1.1 Pourquoi compiler un noyau? 153 1.2 Fichiers qui composent le noyau 154 2. Compiler et installer un noyau 154 2.1 Effectuer une compilation classique 154 2.1.1 Pré-requis 155 2.1.2 Télécharger le code source du noyau 155 5/18
2.1.3 Outils pour configurer le noyau 158 2.1.4 Fichiers de configuration 163 2.1.5 Nettoyer 165 2.1.6 Construire le noyau 167 2.1.7 Installer 168 2.2 Compiler un noyau façon Debian 170 2.2.1 Paquets nécessaires 170 2.2.2 Privilège utilisateur 171 2.2.3 Nettoyer 172 2.2.4 Construire 173 2.2.5 Installer 176 3. Désinstaller un noyau 177 3.1 Debian et Ubuntu 178 3.1.1 Lister les noyaux installés 178 3.1.2 Désinstaller 178 3.2 CentOS 179 3.2.1 Lister les noyaux installés 179 3.2.2 Désinstaller 180 3.2.3 Limiter le nombre de paquets 181 4. Choisir un noyau au démarrage 182 4.1 Debian 182 4.2 Ubuntu 183 4.3 CentOS 183 5. Kernel panic 186 5.1 Caractérisation 186 5.2 Fréquence du problème 187 5.3 Analyse de la source du problème 187 5.4 Analyse du matériel 190 5.5 Analyse des logiciels 192 5.5.1 Chargeur d'amorçage 192 5.5.2 Origine du noyau 192 5.5.3 Modules 192 6/18
5.6 Recherche de solutions 193 5.7 Appliquer la solution 193 Modules 1. Introduction 195 2. Compiler et installer un module 196 2.1 Pré-requis pour compiler 196 2.1.1 Debian et Ubuntu 196 2.1.2 Red Hat 196 2.2 Écrire un module «Hello world» 196 2.2.1 Rédiger le code source 197 2.2.2 Créer le fichier Makefile 198 2.2.3 Compiler le code source hello.c 199 3. Charger un module 199 3.1 Installer le module hello 199 3.2 insmod 200 3.3 Gérer les dépendances 200 3.4 modprobe 201 3.5 Charger un module au démarrage 202 3.5.1 Debian et Ubuntu 202 3.5.2 CentOS 6 202 4. Décharger un module 203 5. Lister les modules 205 5.1 Lister tous les modules disponibles 205 5.2 Lister les modules chargés 207 6. Obtenir des informations 208 7/18
7. Bloquer un module 211 7.1 Debian 7, Ubuntu 12.04, CentOS 5 et 6 211 7.2 CentOS 4 214 8. Journaux système 215 Pseudo-systèmes de fichiers 1. procfs 217 1.1 Présentation 217 1.2 Principaux fichiers de /proc 218 1.2.1 /proc/acpi 218 1.2.2 /proc/apm 219 1.2.3 /proc/bus 219 1.2.4 /proc/cmdline 222 1.2.5 /proc/cpuinfo 222 1.2.6 /proc/crypto 223 1.2.7 /proc/devices 224 1.2.8 /proc/dma 225 1.2.9 /proc/filesystems 225 1.2.10 /proc/fs 226 1.2.11 /proc/ide 226 1.2.12 /proc/interrupts 227 1.2.13 /proc/iomem 228 1.2.14 /proc/ioports 228 1.2.15 /proc/irq 229 1.2.16 /proc/kcore 231 1.2.17 /proc/loadavg 231 1.2.18 /proc/mdstat 232 1.2.19 /proc/meminfo 232 1.2.20 /proc/misc 235 1.2.21 /proc/modules 235 1.2.22 /proc/mounts 236 8/18
1.2.23 /proc/net 237 1.2.24 /proc/partitions 237 1.2.25 /proc/self 238 1.2.26 /proc/stat 238 1.2.27 /proc/swaps 239 1.2.28 /proc/sys 239 1.2.29 /proc/scsi 251 1.2.30 /proc/tty 253 1.2.31 /proc/uptime 254 1.2.32 /proc/version 254 1.2.33 /proc/vmallocinfo 254 1.2.34 /proc/vmstat 255 1.2.35 /proc/zoneinfo 255 1.3 Dossier d'un processus 256 1.3.1 /proc/1/cmdline 256 1.3.2 /proc/1/cwd 256 1.3.3 /proc/1/environ 257 1.3.4 /proc/1/exe 257 1.3.5 /proc/1/fd 257 1.3.6 /proc/1/maps 257 1.3.7 /proc/1/smaps 258 1.3.8 /proc/1/mem 259 1.3.9 /proc/1/root 259 1.3.10 /proc/1/stat 260 1.3.11 /proc/1/statm 260 1.3.12 /proc/1/status 260 1.4 Modification des paramètres du noyau 261 1.4.1 Modification volatile 262 1.4.2 Modification permanente 263 2. sysfs 265 2.1 Présentation 265 2.2 Principaux fichiers de /sys 266 2.2.1 /sys/block 266 2.2.2 /sys/bus 266 2.2.3 /sys/class 267 9/18
2.2.4 /sys/dev 267 2.2.5 /sys/devices 268 2.2.6 /sys/firmware 268 2.2.7 /sys/fs 269 2.2.8 /sys/hypervisor 270 2.2.9 /sys/kernel 270 2.2.10 /sys/module 272 2.2.11 /sys/power 273 2.3 Utilitaire systool 274 2.3.1 Installation 274 2.3.2 Utilisation de systool 276 2.4 Modification des paramètres du noyau 280 Dépannage matériel 1. Types de problèmes matériels 283 1.1 Pannes matérielles 283 1.1.1 Non-fonctionnement du matériel 283 1.1.2 Fonctionnement erratique du matériel 284 1.1.3 Problèmes de firmware et de pilote 284 1.1.4 Autres considérations 285 1.2 Matériel non détecté par le système 285 2. Analyser le matériel 286 2.1 Lister le matériel 286 2.1.1 Installation de lshw 286 2.1.2 Utilisation de lshw 289 2.2 Système 294 2.3 CPU 294 2.4 Table DMI 295 2.5 Bus 300 2.5.1 lspci 300 2.5.2 lsusb 304 2.5.3 lsscsi 307 10/18
2.5.4 lspcmcia 310 2.6 Mémoire 312 2.6.1 Informations sur la mémoire 312 2.6.2 Diagnostiquer la mémoire 314 2.7 Vidéo 316 2.8 Disques durs 316 2.8.1 Informations sur les contrôleurs 316 2.8.2 Informations sur les disques 318 2.8.3 Informations sur les volumes 319 2.8.4 Diagnostiquer un disque dur 321 2.9 Carte réseau 329 Maintenance des disques 1. Introduction 335 2. Partitions 335 2.1 Table de partitions 337 2.1.1 Type msdos 337 2.1.2 Type gpt 338 2.1.3 Convertir du MBR vers GPT 339 2.1.4 Supprimer une table de partitions 343 2.2 Outils de partitionnement 344 2.2.1 Fdisk 344 2.2.2 Cfdisk 353 2.2.3 GNU parted 355 2.2.4 GParted et QtParted 359 2.2.5 Live CD 362 3. Logical Volume Manager 363 3.1 Terminologie 363 3.1.1 Volume physique 363 3.1.2 Groupe de volumes 364 3.1.3 Volume logique 364 11/18
3.1.4 Métadonnées 365 3.2 Administration des volumes physiques 366 3.2.1 Créer un volume physique 366 3.2.2 Afficher les volumes physiques 368 3.2.3 Modifier la taille d'un volume physique 370 3.2.4 Supprimer un volume physique 371 3.3 Administration des groupes de volumes 372 3.3.1 Créer un groupe de volumes 372 3.3.2 Afficher les groupes de volumes 373 3.3.3 Ajouter un volume physique au groupe de volumes 376 3.3.4 Enlever un volume physique du groupe de volumes 378 3.3.5 Activer ou désactiver un groupe de volumes 379 3.3.6 Supprimer un groupe de volumes 379 3.3.7 Diviser un groupe de volumes 380 3.3.8 Fusionner des groupes de volumes 382 3.3.9 Renommer un groupe de volumes 383 3.4 Administration des volumes logiques 384 3.4.1 Créer des volumes logiques en mode linéaire 384 3.4.2 Créer des volumes logiques en mode stripe 387 3.4.3 Créer des volumes logiques en miroir 391 3.4.4 Créer des snapshots de volume logique 395 3.4.5 Afficher les volumes logiques 398 3.4.6 Augmenter la taille d'un volume logique 400 3.4.7 Réduire la taille d'un volume logique 402 3.4.8 Renommer un volume logique 405 3.4.9 Supprimer un volume logique 406 3.5 Déplacer des données 406 4. Systèmes de fichiers 411 4.1 EXT2 411 4.1.1 Bloc 412 4.1.2 Superbloc 413 4.1.3 Inodes 414 4.1.4 Créer un système de fichiers ext2 416 4.2 EXT3 417 4.2.1 La journalisation 417 12/18
4.2.2 Convertir une partition ext2 en ext3 418 4.2.3 Créer un système de fichiers ext3 418 4.3 EXT4 420 4.3.1 Convertir une partition ext3 en ext4 421 4.3.2 Créer un système de fichiers ext4 421 Séquence d'amorçage 1. Introduction 425 2. Processus d'amorçage 425 3. Grub 426 3.1 GRUB Legacy 426 3.1.1 Installer Grub 429 3.2 Configuration de GRUB 2 430 3.2.1 Identifier la version de grub 430 3.2.2 Fichiers de configuration 431 4. Sauver et restaurer le MBR 436 Maintenance des applications 1. Introduction 437 2. Application ne s'exécutant pas 437 2.1 Description d'un paquet installé 438 2.2 Fichiers de configuration 442 2.3 Consulter les journaux 443 2.4 Filtrages réseau 452 2.5 Dépendances du programme 454 2.6 Emplacement des bibliothèques 455 13/18
2.7 Mode de débogage 460 3. Application ne répondant pas 460 3.1 Mode débogage 460 3.2 Terminer un processus 461 3.2.1 Rechercher un PID 461 3.2.2 Outils pour terminer un processus 464 4. Fonctionnement dégradé 470 5. Comportements inattendus 470 5.1 Supprimer les zombies 471 5.2 Fuite de mémoire 472 Maintenance de la configuration réseau 1. Modèles de communication 477 1.1 Rappel du modèle OSI 477 1.2 Modèle TCP/IP 479 1.3 Modèle OSI contre TCP/IP 480 2. Interface physique 481 2.1 Détection du matériel et du pilote 481 2.2 Adressage physique 484 2.2.1 Identifier l'adresse MAC 484 2.2.2 Cache ARP 485 2.2.3 ARPing 487 3. Interface logique 488 3.1 Activer/désactiver une interface 491 3.2 Configurer une interface 493 3.2.1 Configurer Debian et Ubuntu 493 3.2.2 Configurer CentOS 494 14/18
3.2.3 Utilitaire ethtool 496 3.2.4 Interface virtuelle 498 3.3 Adressage IPv4 499 3.3.1 Adresse IPv4 statique 500 3.3.2 Adressage IPv4 dynamique 502 3.3.3 Supprimer l'adresse IPv4 502 3.4 Passerelle par défaut 503 3.5 Résolution de noms d'hôtes 504 3.5.1 Tester la résolution de noms 505 3.5.2 Fichiers de configuration 506 4. Outils d'analyse 507 4.1 Problèmes de connexion 507 4.1.1 Vérifier la configuration TCP/IP 508 4.1.2 Vérifier l'ajout au réseau 508 4.1.3 Vérifier la communication locale 509 4.1.4 Vérifier la communication distante 510 4.2 Bloquer/débloquer le ping 511 4.2.1 Bloquer ping avec /proc 511 4.2.2 Bloquer ping avec iptables 512 4.3 Ports ouverts 516 4.4 Bande passante 517 Sécurité 1. Introduction 523 2. Sécurité physique 524 2.1 Qui doit accéder à la machine? 524 2.2 Alimentation électrique 524 2.3 Interfaces de communication 524 2.4 BIOS 531 3. Sécurité logicielle 532 15/18
3.1 Version des logiciels 532 3.2 Que faut-il installer? 532 3.3 Mise à jour 533 3.4 Gérer des paquets deb avec apt 535 3.4.1 Installer un paquet 536 3.4.2 Rechercher des paquets 536 3.4.3 Afficher la description d'un paquet 537 3.4.4 Afficher les dépendances 539 3.4.5 Installer les dépendances 544 3.4.6 Les informations d'un paquet 546 3.4.7 Identifier le dépôt d'un paquet 546 3.4.8 Provenance d'un fichier 546 3.4.9 Lister le contenu d'un paquet 550 3.4.10 Versions des paquets disponibles 550 3.4.11 Mise à jour des dépôts 552 3.4.12 Mise à jour du système 553 3.4.13 Désinstaller un paquet 555 3.4.14 Supprimer les paquets d'installation 557 3.5 Gérer des paquets deb avec dpkg 557 3.5.1 Lister les paquets installés 558 3.5.2 Reconfigurer un paquet 560 3.5.3 Traiter les paquets cassés 560 3.6 Gérer les paquets RPM avec yum 560 3.6.1 Mise à jour du système 561 3.6.2 Rechercher un paquet 564 3.6.3 Installer un paquet 566 3.6.4 Supprimer un paquet 567 3.6.5 Afficher les informations du paquet 568 3.6.6 Mise à jour sélective 569 3.6.7 Gérer les groupes de programmes 570 3.7 Gérer les paquets RPM avec rpm 571 3.7.1 Installer un paquet 571 3.7.2 Lire les informations d'un paquet 572 3.7.3 Afficher tous les paquets installés 573 3.7.4 Modifier le format d'affichage 574 3.8 Identification et authentification 574 16/18
3.8.1 Types de compte 574 3.8.2 Caractéristique du nom de compte 575 3.8.3 Caractéristique du compte root 575 3.8.4 Authentification 576 3.8.5 Profil utilisateur 576 3.8.6 Session 577 3.8.7 Vérifier les fichiers de comptes 577 3.9 Configuration réseau 578 3.9.1 Identifier les ports ouverts 578 3.9.2 Pare-feu 580 3.10 Faut-il un antivirus? 581 Analyse des performances 1. Introduction 583 2. Goulet d'étranglement 584 2.1 Ligne de base 584 2.1.1 Identifier les ressources 584 2.1.2 Capturer et stocker des données 585 3. Processeur 586 4. Mémoires 592 4.1 Mémoire physique 592 4.1.1 Architecture x86 592 4.1.2 Architecture x86_64/amd64 593 4.2 Mémoire tampon 593 4.3 Mémoire cache 594 4.4 L'espace d'échange 594 4.4.1 Swap en tant que partition 595 4.4.2 Swap en tant que fichier 595 4.5 Mémoire virtuelle 597 4.6 Afficher la mémoire du système 597 17/18
4.7 La carte mémoire d'un programme 600 4.8 Mémoire insuffisante 602 5. Disques 606 6. Interfaces réseau 609 Index 615 18/18