Chapitre 9. Astuces du système

Table des matières

9.1. Le programme screen
9.1.1. Scénario d'utilisation de screen(1)
9.1.2. Raccourcis clavier de la commande screen
9.2. Enregistrer et présenter des données
9.2.1. Le démon de journal
9.2.2. Analyseur de journaux
9.2.3. Enregistrer proprement l’activité de la console
9.2.4. Affichage personnalisé des données de texte
9.2.5. Affichage personnalisé de la date et de l’heure
9.2.6. Écho colorisé de l’interpréteur de commandes
9.2.7. Commandes colorisées
9.2.8. Enregistrer l’activité de l’éditeur pour des répétitions complexes
9.2.9. Enregistrer l’image graphique d'une application X
9.2.10. Enregistrer les modifications dans des fichiers de configuration
9.3. Astuces relatives au stockage des données
9.3.1. Configuration de la partition du disque
9.3.2. Accès à une partition en utilisant l’UUID
9.3.3. Configuration de systèmes de fichiers
9.3.4. Création et vérification de l’intégrité d'un système de fichiers
9.3.5. Optimisation du système de fichiers à l’aide des options de montage
9.3.6. Optimisation du système de fichiers à l’aide du superbloc
9.3.7. Optimisation du disque dur
9.3.8. Utiliser SMART pour prédire les défaillances des disques durs
9.3.9. Étendre l’espace de stockage utile à l’aide de LVM
9.3.10. Extension de l’espace de stockage en montant une autre partition
9.3.11. Extension de l’espace utilisable à l’aide de liens symboliques
9.3.12. Extension de l’espace utilisable à l’aide de aufs
9.4. Astuces de chiffrement des données
9.4.1. Chiffrement des disques amovibles à l’aide de dm-crypt/LUKS
9.4.2. Partition d'échange chiffrée avec dm-crypt
9.4.3. Chiffrer les fichiers automatiquement avec eCryptfs
9.4.4. Montage automatique de eCryptfs
9.5. Surveiller, contrôler et démarrer l’activité des programmes
9.5.1. Temps d'un processus
9.5.2. La priorité d'ordonnancement
9.5.3. La commande ps
9.5.4. La commande top
9.5.5. Afficher les fichier ouverts par un processus
9.5.6. Tracer l’activité d'un programme
9.5.7. Identification des processus qui utilisent des fichiers ou des sockets
9.5.8. Répéter une commande avec un intervalle constant
9.5.9. Répéter une commande en bouclant entre des fichiers
9.5.10. Lancer un programme depuis l’interface graphique
9.5.11. Personnaliser le programme à lancer
9.5.12. Tuer un processus
9.5.13. Planifier des tâches qui s'exécutent une fois
9.5.14. Planifier des tâches qui s'exécutent régulièrement
9.5.15. touche Alt-SysRq
9.6. Astuces de maintenance du système
9.6.1. Qui se trouve sur le système ?
9.6.2. Prévenir tout le monde
9.6.3. Identification du matériel
9.6.4. Configuration matérielle
9.6.5. Heure système et matérielle
9.6.6. Configuration du terminal
9.6.7. L’infrastructure de gestion du son
9.6.8. Désactiver l’économiseur d'écran
9.6.9. Désactiver les bips
9.6.10. Utilisation de la mémoire
9.6.11. Vérification de la sécurité et de l’intégrité du système
9.7. Le noyau
9.7.1. Noyau Linux 2.6
9.7.2. Paramètres du noyau
9.7.3. En-têtes du noyau
9.7.4. Compiler le noyau et les modules associés
9.7.5. Compiler les sources sur noyau : méthode standard de Debian
9.7.6. Compiler les source de modules : méthode standard de Debian
9.7.7. Compiler les sources du noyau : la méthode classique
9.7.8. Pilotes de matériel non libres
9.8. Système virtualisé
9.8.1. Outils de virtualisation
9.8.2. Étapes de virtualisation
9.8.3. Monter le fichier image du disque virtuel
9.8.4. Système protégé (chroot)
9.8.5. Systèmes de bureaux multiples

Je décris ici les astuces de base pour configurer et gérer les systèmes, la plupart depuis la console.

9.1. Le programme screen

screen(1) est un outil très utile pour ceux qui accèdent à un site distant par l’intermédiaire d'une connexion non fiable ou intermittente car il gère les interruptions de connexion au réseau.

Tableau 9.1. Liste de programmes gérant les interruptions de connexion au réseau

paquet popcon taille description
screen * V:11, I:34 952 multiplexeur de terminal avec une émulation de terminal VT100/ANSI

9.1.1. Scénario d'utilisation de screen(1)

screen(1) ne permet pas uniquement de faire tourner plusieurs processus dans une fenêtre de terminal, mais aussi à un processus de l’interpréteur de commandes distant de survivre à d'éventuelles interruptions de la connexion. Voici un scénario typique de screen(1) :

  1. vous-vous connectez à une machine distante ;
  2. vous démarrez screen sur une seule console ;
  3. vous exécutez plusieurs programmes dans les fenêtres screen créées avec ^A c (« Ctrl-A » suivi de « c ») ;
  4. vous passez d'une des fenêtres multiples de screen à l’autre avec ^A n (« Ctrl-A » suivi de « n ») ;
  5. vous avez alors besoin de quitter votre terminal, mais vous ne voulez pas perdre votre travail en cours perdant la connexion.
  6. vous pouvez détacher la session screen par différentes méthodes :

    • débrancher brutalement votre connexion réseau ;
    • entrer ^A d (« Ctrl-A » suivi de « d ») et en quittant manuellement la connexion distante :
    • entrer ^A DD (« Ctrl-A » suivi de « DD ») pour détacher screen et vous déconnecter.
  7. Vous vous reconnectez à la même machine distante (même depuis un autre terminal) ;
  8. Vous lancez screen avec « screen -r » ;
  9. screen réattache magiquement toutes les fenêtres screen précédentes avec tous les programmes qui y tournent.
[Astuce] Astuce

Avec screen, vous pouvez économiser des frais de connexion pour les connexions limitées, telles que les connexion commutées ou par paquets, parce que vous laissez un processus actif alors que vous êtes déconnecté. Vous pouvez le ré-attacher plus tard, lorsque vous vous reconnectez.

9.1.2. Raccourcis clavier de la commande screen

Dans une session screen, toutes les entrées clavier sont envoyées vers votre fenêtre actuelle sauf les séquences de touche de commande. Toutes les séquences de touche de commande screen sont entrées par ^A (« Ctrl-A ») suivi d'un seule touche [plus les paramètres]. Voici celles dont il est important de se souvenir.

Tableau 9.2. Liste des raccourcis clavier de screen

affectation signification
^A ? afficher l’aide de screen (afficher les raccourcis clavier)
^A c créer une nouvelle fenêtre et basculer vers celle-ci
^A n aller à la fenêtre suivante
^A p aller à la fenêtre précédente
^A 0 aller à la fenêtre 0
^A 1 aller à la fenêtre 1
^A w afficher la liste des fenêtres
^A a envoyer un Ctrl-A à la fenêtre actuelle en tant qu'entrée clavier
^A h écrire dans un fichier une copie de la fenêtre actuelle
^A H commencer et finir l’enregistrement de la fenêtre en cours vers un fichier
^A ^X verrouiller le terminal (protégé par un mot de passe)
^A d détacher la session screen du terminal
^A DD détacher la session screen et se déconnecter

Voir screen(1) pour davantage d'informations.

9.2. Enregistrer et présenter des données

9.2.1. Le démon de journal

De nombreux programmes enregistrent leur activité dans le répertoire « /var/log/ ».

  • Démon de journal du noyau : klogd(8)
  • Démon de journal du système : syslogd(8)

Voir Section 3.5.9, « Messages du système » et Section 3.5.10, « Messages du noyau ».

9.2.2. Analyseur de journaux

Voici les principaux analyseurs de journaux (« ~Gsecurity::log-analyzer » dans aptitude(8)).

Tableau 9.3. Liste des analyseurs de journaux système

paquet popcon taille description
logwatch * V:3, I:3 2592 analyseur de journal avec une sortie sympathique en Perl
fail2ban * V:4, I:5 660 bannir les IP qui provoque des erreurs d'authentification multiples
analog * V:1.0, I:16 4520 analyseur des journaux du serveur web
awstats * V:1.8, I:3 5200 analyseur des journaux du serveur web puissant ayant de nombreuses fonctionnalités
sarg * V:1.9, I:2 644 générateur de rapport d'analyse de squid
pflogsumm * V:0.3, I:0.7 160 résumer les entrée de journal de postfix
syslog-summary * V:0.2, I:0.9 84 résumer le contenu du fichier journal syslog
lire * V:0.15, I:0.17 5304 analyseur de journaux et générateur de rapports ayant de nombreuses fonctionnalités
fwlogwatch * V:0.10, I:0.2 440 analyseur des journaux du parefeu
squidview * V:0.11, I:0.6 244 surveiller et analyser les fichiers access.log de squid
visitors * V:0.09, I:0.3 228 analyseur de journaux rapide pour le serveur web
swatch * V:0.06, I:0.2 112 visualisateur de fichier journal avec correspondance d'expressions rationnelles, mise en évidence et « hooks »
crm114 * V:0.06, I:0.18 1300 analyseur et filtre de données diverses, dont les pourriels (CRM114)
icmpinfo * V:0.04, I:0.2 84 interpréter les messages ICMP

[Note] Note

CRM114 fournit une architecture de language pour écrire des filtres fuzzy avec la bibliothèque d'expressions rationnelles TRE. Un de ses utilisation courante est le filtrage des pourriels mais il peut aussi être utiliser pour l’analyse de journaux.

9.2.3. Enregistrer proprement l’activité de la console

La simple utilisation de script(1) (voir Section 1.4.9, « Enregistrer les actions de l’interpréteur de commandes ») pour enregistrer l’activité de l’interpréteur de commandes produit un fichier avec des caractères de contrôle. Ceci peut être évité en utilisant col(1) comme suit :

$ script
Script started, file is typescript

faites quelque chose... et pressez Ctrl-D pour quitter script.

$ col -bx <typescript >fichier_propre
$ vim fichier_propre

si vous n'avez pas script (par exemple pendant le processus d'amorçage dans l’initramfs), vous pouvez alors utiliser ce qui suit :

$ sh -i 2>&1 | tee typescript
[Astuce] Astuce

Certains émulateurs de teminaux X tels que gnome-terminal peuvent faire de l’enregistrement. Il faudra peut-être augmenter la taille du tampon de lignes pour le défilement vers l’arrière.

[Astuce] Astuce

Vous pouvez utiliser screen(1) avec « ^A H » (voir Section 9.1.2, « Raccourcis clavier de la commande screen ») pour effectuer des enregistrement de la console.

[Astuce] Astuce

Vous pouvez utiliser emacs(1) avec « M-x shell », « M-x eshell » ou « M-x term » pour effectuer l’enregistrement de la console. Vous pourrez ensuite utiliser « C-x C-w » pour enregistrer le tampon dans un fichier.

9.2.4. Affichage personnalisé des données de texte

Bien que des outils de visualisation de texte (« pager » tels que more(1) et less(1) (voir Section 1.4.5, « Le visualisateur de fichiers ») et des outils personnalisés de mise en évidence et de formatage (voir Section 11.1.8, « Mettre en évidence et formater des données en texte brut ») peuvent afficher des données textuelles de manière agréable, les éditeurs généraliste (voir Section 1.4.6, « L’éditeur de texte ») sont plus souples et paramétrables.

[Astuce] Astuce

Pour vim(1) et ses alias de visualisation de texte view(1), « :set hls » active la recherche avec mise en évidence.

9.2.5. Affichage personnalisé de la date et de l’heure

Le format par défaut de la date et de l’heure de la commande « "ls -l » dépend des paramètres régionaux (voir la valeur en Section 1.2.6, « Horodatage »). La variable « $LANG » est d'abord visée, elle peut être surchargée par la variable « $LC_TIME ».

Le format réel de l’affichage pour chaque paramètre linguistique dépend de la version de la bibliothèque C standard (paquet libc6) utilisée. Par exemple, les différentes versions de Debian ont des valeurs par défaut différentes.

Si vous désirez vraiment personnaliser ce format d'affichage de la date et de l’heure plus loin que ne le fait locale, vous pouvez définir la valeur de style d'heure avec le paramètre « --time-style » ou par la valeur de « $TIME_STYLE » (voir ls(1), date(1), « info coreutils 'ls invocation' »).

Tableau 9.4. Exemples d'affichage de la date et de l’heure pour la commande « ls -l » avec lenny

valeur de style pour l’heure locale affichage de la date et l’heure
iso any 01-19 00:15
long-iso any 2009-01-19 00:15
full-iso any 2009-01-19 00:15:16.000000000 +0900
locale C Jan 19 00:15
locale en_US.UTF-8 2009-01-19 00:15
locale es_ES.UTF-8 ene 19 00:15
+%d.%m.%y %H:%M any 19.01.09 00:15
+%d.%b.%y %H:%M C ou en_US.UTF-8 19.Jan.09 00:15
+%d.%b.%y %H:%M es_ES.UTF-8 19.ene.09 00:15

[Astuce] Astuce

Vous pouvez éviter d'entrer des options longues sur la lignes de commande en utilisant les alias des commandes, par exemple « alias ls='ls --time-style=+%d.%m.%y\ %H:%M' » (voir Section 1.5.9, « Alias de commande »).

[Astuce] Astuce

ISO 8601 est suivie pour ces formats iso.

9.2.6. Écho colorisé de l’interpréteur de commandes

L’écho de l’interpréteur de commandes sur la plupart des terminaux peut être colorisé en utilisant le code ANSI d'échappement (voir « /usr/share/doc/xterm/ctlseqs.txt.gz »).

Essayez, par exemple, ce qui suit :

$ ROUGE=$(printf "\x1b[31m")
$ NORMAL=$(printf "\x1b[0m")
$ INVERSE=$(printf "\x1b[7m")
$ echo "${ROUGE}TEXTE-ROUGE${NORMAL} ${INVERSE}TEXTE-INVERSE${NORMAL}"

9.2.7. Commandes colorisées

Les commandes colorisées sont pratique pour examiner la sortie d'une commande dans l’environnement interactif. J'inclus ce qui suit dans mon fichier « ~/.bashrc ».

if [ "$TERM" != "dumb" ]; then
    eval "`dircolors -b`"
    alias ls='ls --color=always'
    alias ll='ls --color=always -l’
    alias la='ls --color=always -A'
    alias less='less -R'
    alias ls='ls --color=always'
    alias grep='grep --color=always'
    alias egrep='egrep --color=always'
    alias fgrep='fgrep --color=always'
    alias zgrep='zgrep --color=always'
else
    alias ll='ls -l’
    alias la='ls -A'
fi

L’utilisation d'alias réserve les effets de couleurs à l’utilisation interactives des commandes. Il a l’avantage sur l’exportation de la variable d'environnement « export GREP_OPTIONS='--color=auto' » car la couleur peut être affichée avec des programmes de visualisation (« pager » tels que less(1). Si vous souhaitez supprimer la couleur lors du tubage (« piping » à destination d'autres programmes, utilisez plutôt « --color=auto » dans l’exemple ci-dessus pour « ~/.bashrc ».

[Astuce] Astuce

Vous pouvez désactiver ces alias dans l’environnement interactif en appelant l’interpréteur de commande par « TERM=dumb bash ».

9.2.8. Enregistrer l’activité de l’éditeur pour des répétitions complexes

Vous pouvez enregistrer l’activité de l’éditeur pour des répétitions complexes.

Pour Vim, de la manière suivante :

  • « qa » : démarre l’enregistrement des caractères entrés dans le registre appelé « a ».
  • … activité de l’éditeur
  • « q » : termine l’enregistrement des caractères entrés.
  • « @a » : exécute le contenu du registre « a ».

Pour Emacs, de la manière suivante :

  • « :C-x ( » : commencer la définition d 'une macro clavier.
  • … activité de l’éditeur
  • « C-x ) » : terminer la définition d'une macro clavier.
  • « C-x e » : exécuter une macro clavier.

9.2.9. Enregistrer l’image graphique d'une application X

Il existe plusieurs manières d'enregistrer l’image graphique d'une application X, y-compris un affichage xterm.

Tableau 9.5. Liste des outils de manipulation d'images

paquet popcon taille commande
xbase-clients * V:3, I:47 132 xwd(1)
gimp * V:12, I:44 13560 Interface graphique du menu
imagemagick * V:13, I:35 268 import(1)
scrot * V:0.3, I:1.4 80 scrot(1)

9.2.10. Enregistrer les modifications dans des fichiers de configuration

Il existe des outils spécialisés pour enregistrer les modifications de la configuration avec l’aide du système DVCS.

Tableau 9.6. Liste de paquets pour enregistrer un historique de configuration dans VCS

paquet popcon taille description
etckeeper * V:1.0, I:1.5 376 enregistrer les fichiers de configuration et leurs méta-données avec Git (par défaut), Mercurial ou Bazaar (nouveau)
changetrack * V:0.07, I:0.09 152 enregistrer les fichiers de configuration avec RCS (ancien)

Je recommande l’utilisation avec git(1) du paquet etckeeper, il met l’ensemble de « /etc » sous le contrôle de VCS. Son guide d'installation et un tutoriel se trouvent dans « /usr/share/doc/etckeeper/README.gz ».

Essentiellement, l’exécution de « sudo etckeeper init » initialise le dépôt git pour « /etc » exactement comme le processus décrit dans Section 10.9.5, « Git pour l’enregistrement de l’historique de la configuration » mais avec quelques scripts automatiques (« hook ») permettant une configuration plus approfondie.

Alors que vous effectuez des modifications de votre configuration, vous pouvez aussi utiliser git(1) normalement pour l’enregistrer. Il enregistre parfaitement les modifications chaque fois que vous lancez des commandes de gestion de paquet.

[Astuce] Astuce

Vous pouvez parcourir l’historique des modifications de « /etc » en exécutant « sudo GIT_DIR=/etc/.git gitk » avec une vue claire des nouveaux paquets installés et les changements de version des paquets.

9.3. Astuces relatives au stockage des données

Démarrer votre système avec un CD autonome de Linux ou avec un CD de l’installateur debian en mode secours (rescue) vous facilite la reconfiguration de l’enregistrement des données sur votre disque de démarrage. Voir aussi Section 10.3, « Les données binaires ».

9.3.1. Configuration de la partition du disque

Bien que fdisk(8) ait été considéré comme un standard pour la configuration de la partition du disque dur, il mérite une certaine attention. « Données de partition du disque », « table de partition » et « Étiquette de disque » sont tous des synonymes.

La plupart des PC utilisent le principe de l’Enregistrement Maître de démarrage (MBR) (« Master Boot Record ») pour enregistrer les données de partition du disque sur le premier secteur, c'est-à-dire, le secteur 0 LBA (512 octets).

[Note] Note

Certains PC récent avec une Extensible Firmware Interface (EFI), ce qui comprend les Macs basés sur Intel, utilisent un principe de GUID Partition Table (GPT) pour enregistrer les données de partitionnement du disque ailleurs que sur le premier secteur.

Alors que fdisk(8) a été l’outil standard de partitionnement de disque, parted(8) le remplace maintenant.

Tableau 9.7. Listes de paquets de gestion de la partition du disque

paquet popcon taille GPT description
util-linux * V:91, I:99 2216 Non supporté divers utilitaires systèmes dont fdisk(8) etcfdisk(8)
parted * V:1.0, I:9 236 Supporté programme GNU de redimensionnement des partitions Parted
gparted * V:3, I:31 4548 Supporté éditeur de partitions de GNOME basé sur libparted
qtparted * V:0.10, I:0.9 NOT_FOUND Supporté éditeur de partitions de KDE basé sur libparted
gptsync * V:0.01, I:0.18 72 Supporté synchronise une table de partition MBR classique avec une table GPT
kpartx * V:1.0, I:1.8 132 Supporté programme pour créer des mappages de périphériques pour les partitions

[Attention] Attention

Bien que parted(8) prétend pouvoir créer et redimensionner aussi les systèmes de fichiers, il est plus sûr de toucher à ces choses-là en utilisant des outils spécialisés et bien maintenus tels que mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), …) et resize2fs(8).

[Note] Note

De manière à passer de GPT à MBR, il vous fait d'abord effacer les premier blocs du disque directement (voir Section 10.3.6, « Effacer le contenu d'un fichier ») et utiliser « parted /dev/sdx mklabel gpt » ou « parted /dev/sdx mklabel msdos » afin de le mettre en place. Vous remarquerez que « msdos » est utilisé ici pour MBR.

9.3.2. Accès à une partition en utilisant l’UUID

Bien que le reconfiguration de votre partition ou l’ordre d'activation des supports d'enregistrement amovibles puisse conduire à des noms de partitions différents, vous pouvez y accéder de manière homogène. Ceci vous aidera aussi si vous avez plusieurs disques et que votre BIOS ne leur donne pas toujours le même nom de périphérique.

  • mount(8) avec l’option « -U » peut monter un périphérique en mode bloc en utilisant l’UUID plutôt que son nom de fichier de périphérique comme « /dev/sda3 ».
  • « /etc/fstab » (voir fstab(5)) peut utiliser l’UUID.
  • Les chargeurs initiaux (Section 3.3, « Étage 2 : le chargeur initial ») peuvent aussi utiliser UUID.
[Astuce] Astuce

Vous pouvez tester l’UUID d'un périphérique spécial en mode bloc avec blkid(8).

[Astuce] Astuce

Les nœuds de périphériques comme les supports d'enregistrement amovibles peuvent être rendus statiques en utilisant, si besoin, des règles udev. Voir Section 3.5.11, « Le système udev ».

9.3.3. Configuration de systèmes de fichiers

Pour le système de fichiers ext3, le paquet e2fsprogs fournit les éléments suivants :

  • mkfs.ext3(8) pour créer un nouveau système de fichiers ext3
  • fsck.ext3(8) pour vérifier et réparer un système de fichiers ext3 existant
  • tune2fs(8) pour configurer le superbloc d'un système de fichiers ext3

Les commandes mkfs(8) et fsck(8) font partie du paquet e2fsprogs en tant que frontal à de nombreux programmes dépendant du système de fichiers (mkfs.fstype etfsck.fstype). Pour le système de fichiers ext3, il y a mkfs.ext3(8) et fsck.ext3(8) (ils sont liés par un lien dur à mke2fs(8) ete2fsck(8)).

Des commandes semblables sont disponibles pour chaque système de fichiers pris en charge par Linux.

Tableau 9.8. Liste des paquets de gestion des systèmes de fichiers

paquet popcon taille description
e2fsprogs * V:60, I:99 1924 utilitaires pour les systèmes de fichiers ext2/ext3/ext4
reiserfsprogs * V:2, I:8 1200 utilitaire pour le système de fichiers Reiserfs
dosfstools * V:3, I:31 192 utilitaire pour le système de fichiers FAT (Microsoft :MS-DOS, Windows)
xfsprogs * V:2, I:10 3272 utilitaire pour le système de fichiers XFS (SGI : IRIX)
ntfsprogs * V:3, I:20 676 utilitaire pour le système de fichiers NTFS (Microsoft : Windows NT, …)
jfsutils * V:0.5, I:2 1112 utilitaire pour le système de fichiers JFS (IBM : AIX, OS/2)
reiser4progs * V:0.09, I:0.7 1264 utilitaire pour le système de fichiers Reiser4
hfsprogs * V:0.06, I:0.8 316 utilitaire pour les systèmes de fichiers HFS et HFS Plus (Apple : Mac OS)
btrfs-tools * V:0.3, I:0.6 1288 utilitaire pour le système de fichiers btrfs
zerofree * V:0.10, I:0.7 56 programme pour mettre à zéro les blocs libres des systèmes de fichiers ext2/3

[Astuce] Astuce

Le système de fichiers ext3 est le système de fichiers par défaut du système Linux et il est fortement recommandé de l’utiliser à moins que vous n'ayez des raisons spécifiques de ne pas le faire. Après le noyau Linux 2.6.30 (Debian squeeze), le système de fichiers ext4 sera disponible et devrait être le système de fichiers par défaut d'un système Linux. Le système de fichiers par défaut pour le système Linux après ext4 devrait être btrfs.

[Avertissement] Avertissement

Vous rencontrez peut-être quelques limitations avec ext4 parce qu'il est récent. Par exemple vous devrez avoir un noyau de Linux 2.6.30 si vous désirez redimensionner une partition ext4.

[Astuce] Astuce

Certains outils permettent l’accès au système de fichiers sans prise en charge par le noyau Linux (voir Section 10.3.2, « Manipulation des fichiers sans monter le disque »).

9.3.4. Création et vérification de l’intégrité d'un système de fichiers

La commande mkfs(8) permet de créer un système de fichiers sur un système Linux. La commande fsck(8) permet de vérifier l’intégrité du système de fichiers et de le réparer sur un système Linux.

[Attention] Attention

En général, il n'est pas sûr de faire tourner fsck sur un système de fichiers monté.

[Astuce] Astuce

Vous trouverez les résultats de la commande fsck(8) lancée depuis le script de démarrage dans « /var/log/fsck/ ».

[Astuce] Astuce

Utilisez « shutdown -F -r now » pour forcer l’exécution sûre de la commande fsck(8) sur tous les systèmes de fichiers, y compris le système de fichiers racine lors du redémarrage. Voir la page de manuel shutdown(8) pour davantage d'informations.

9.3.5. Optimisation du système de fichiers à l’aide des options de montage

Les performances et les caractéristiques d'un système de fichiers peuvent être optimisées à l’aide des options de montage utilisées (voir fstab(5) et mount(8)). Les principales options sont les suivantes :

  • l’option « defaults » implique les options par défaut : « rw,suid,dev,exec,auto,nouser,async » (général)
  • les options « noatime » ou « relatime » sont très efficace pour accélérer la vitesse de lecture (général).
  • l’option « user » permet à un utilisateur normal de monter le système de fichiers. Cette option implique la combinaison d'option « noexec,nosuid,nodev » (général, utilisée pour les CD et les disquettes)
  • La combinaisons d'options « noexec,nodev,nosuid » est utilisée pour améliorer la sécurité (général).
  • l’option « noauto » limite le montage uniquement à une opération explicite (général).
  • l’option « data=journal » pour ext3fs peut améliorer l’intégrité des données lors d'une panne de courant, elle s'accompagne d'une légère baisse de la vitesse d'écriture.
[Astuce] Astuce

Vous devez donner au noyau le paramètre de démarrage (voir Section 3.3, « Étage 2 : le chargeur initial »), par exemple « rootflags=data=journal » afin de mettre en œuvre pour le système de fichiers racine un mode de journalisation autre que celui par défaut. Pour lenny, le mode de journalisation par défaut est « rootflags=data=ordered ». Pour squeeze, il s'agit de « rootflags=data=writeback ».

9.3.6. Optimisation du système de fichiers à l’aide du superbloc

Les caractéristiques du système de fichiers peuvent être optimisées par l’intermédiaire de son superbloc en utilisant la commande tune2fs(8).

  • L’exécution de « sudo tune2fs -l /dev/hda1 » affiche le contenu du superbloc du système de fichiers situé sur « /dev/hda1 ».
  • L’exécution de « sudo tune2fs -c 50 /dev/hda1 » modifie la fréquence des vérifications du système de fichiers (exécution de fsck lors du démarrage) à 50 démarrages sur « /dev/hda1 ».
  • L’exécution de la commande « sudo tune2fs -j /dev/hda1 » ajoute la possibilité de journalisation au système de fichiers, c'est-à-dire la conversion de système de fichiers de ext2 vers ext3 sur « /dev/hda1 ». (Effectuez ceci sur un système de fichier non monté).
  • L’exécution de « sudo tune2fs -O extents,uninit_bg,dir_index /dev/hda1 && fsck -pf /dev/hda1 » le convertit de ext3 vers ext4 sur « /dev/hda1 ». (À effectuer sur un système de fichiers non monté).
[Avertissement] Avertissement

La conversion du système de fichier du périphérique de démarrage vers le système de fichiers ext4 doit être évitée jusqu'à ce que le système d'amorçage GRUB prennent correctement en charge le système de fichiers ext4 et que la version de noyau installée soit plus récente que 2.6.30.

[Astuce] Astuce

En dépit de son nom, tune2fs(8) ne fonctionne pas uniquement sur le système de fichiers ext2 mais aussi sur les systèmes de fichiers ext3 et ext4.

9.3.7. Optimisation du disque dur

[Avertissement] Avertissement

Veuillez vérifier votre matériel et lire la page de manuel hdparam(8) avant de jouer avec la configuration de vos disques durs parce que ce peut être assez dangereux pour l’intégrité des données.

Vous pouvez tester la vitesse de lecture d'un disque dur, par exemple « /dev/hda » par « hdparm -tT /dev/hda ». Vous pouvez accélérer certains disques (E)IDE avec « hdparm -q -c3 -d1 -u1 -m16 /dev/hda » en activant la prise en charge des E/S 32 bits (« (E)IDE 32-bit I/O support »), en positionnant l’indicateur d'utilisation de dma « using_dma flag », en positionnant l’indicateur de démasquage des interruptions (« interrupt-unmask flag ») et en positionnant les E/S multiples sur 15 secteurs (« multiple 16 sector I/O ») (dangereux !).

Vous pouvez tester la fonctionnalité de cache d'un disque dur, par exemple « /dev/sda » par « hdparm -W /dev/sda ». Vous pouvez désactiver le cache en écriture avec « hdparm -W 0 /dev/sda ».

Vous pouvez réussir à lire un CD-ROM vraiment mal pressé sur un lecteur de CD-ROM moderne rapide en le ralentissant avec « setcd -x 2 ».

9.3.8. Utiliser SMART pour prédire les défaillances des disques durs

Vous pouvez surveiller et enregistrer les disques durs conformes à SMART à l’aide du démon smartd(8).

  1. Activez la fonctionnalité SMART dans le BIOS.
  2. Installez le paquet smartmontools.
  3. Identifiez vos disques durs en en affichant la liste avec df(1).

    • Supposons que le disque dur à surveiller soit « /dev/hda ».
  4. Contrôlez la sortie de « smartctl -a /dev/hda » pour voir si la fonctionnalité SMART est effectivement activée.

    • Si elle ne l’est pas, activez-la avec « smartctl -s on -a /dev/hda ».
  5. Autorisez le fonctionnement du démon smartd(8) par l’action suivante :

    • décommentez « start_smartd=yes » dans le fichier « /etc/default/smartmontools » ;
    • relancez le démon smartd(8) avec « sudo /etc/init.d/smartmontools restart ».
[Astuce] Astuce

Le démon smartd(8) peut être personnalisé par l’intermédiaire du fichier /etc/smartd.conf y compris la manière d'être informé des avertissements.

9.3.9. Étendre l’espace de stockage utile à l’aide de LVM

Les partitions créées sur le gestionnaire de volumes logiques (LVM) (« Logical Volume Manager ») (fonctionnalité de Linux) au moment de l’installation peuvent être facilement redimensionnées en y concaténant des extensions (« extents ») ou en en tronquant les extensions sur plusieurs périphériques de stockage sans reconfiguration majeure du système.

[Attention] Attention

Le déploiement du système LVM actuel peut dégrader la robustesse aux corruptions du système de fichiers offert par les systèmes de fichiers journalisés tels que ext3fs à moins que les performances du système ne soient sacrifiées en désactivant le cache d'écriture des disques durs.

9.3.10. Extension de l’espace de stockage en montant une autre partition

Si vous avez une partition vide (par exemple « /dev/sdx »), vous pouvez la formater avec mkfs.ext3(1) et la monter (« mount(8) ») sur un répertoire où vous avez besoin de davantage d'espace (vous devrez copier les données d'origine).

$ sudo mv répertoire-travail ancien-répertoire
$ sudo mkfs.ext3 /dev/sdx
$ sudo mount -t ext3 /dev/sdx répertoire-travail
$ sudo cp -a ancien-répertoire/* répertoire-travail
$ sudo rm -rf ancien-répertoire
[Astuce] Astuce

Vous pouvez aussi monter un fichier image de disque vide (voir Section 10.2.5, « Réaliser le fichier image d'un disque vide ») en tant que périphérique de rebouclage (voir Section 10.2.3, « Monter le fichier image dur disque »). L’utilisation réelle du disque croît avec les données réellement enregistrées.

9.3.11. Extension de l’espace utilisable à l’aide de liens symboliques

Si vous avez un répertoire vide (par exemple, « /path/to/emp-dir ») dans une autre partition avec de l’espace disponible, vous pouvez créer un lien symbolique vers ce répertoire avec ln(8).

$ sudo mv répertoire-travail ancien-répertoire
$ sudo mkdir -p /chemin/vers/répertoire-temporaire
$ sudo ln -sf /chemin/vers/répertoire-temporaire répertoire-travail 
$ sudo cp -a ancien-répertoire/* répertoire-travail 
$ sudo rm -rf ancien-répertoire
[Attention] Attention

Certains logiciels peuvent ne pas bien fonctionner avec des « liens symboliques vers un répertoire ».

9.3.12. Extension de l’espace utilisable à l’aide de aufs

Si vous avez de l’espace disponible dans une autre partition (par exemple « /chemin/vers/ »), vous pouvez y créer un répertoire et empiler cela vers un répertoire où vous avez besoin de place avec aufs.

$ sudo mv répertoire-travail ancien-répertoire
$ sudo mkdir répertoire-travail
$ sudo mkdir -p /chemin/vers/répertoire/temporaire
$ sudo mount -t aufs -o br:/chemin/vers/répertoire/temporaire:ancien-répertoire none répertoire-travail
[Attention] Attention

L’utilisation de aufs pour le stockage de données à long terme n'est pas une bonne idée car il est en cours de développement et les modifications de sa conceptions peuvent poser des problèmes.

[Astuce] Astuce

De manière à pouvoir utiliser aufs, il faut installer son paquet utilitaire aufs-tools et le paquet des modules du noyau pour aufs comme aufs-modules-2.6-amd64.

[Astuce] Astuce

aufs est utilisé pour fournir un système de fichiers où l’administrateur peut écrire par de nombreux projets de live CD.

9.4. Astuces de chiffrement des données

Avec un accès physique à votre PC, n'importe qui peut facilement obtenir les privilèges de l’administrateur et accéder à tous les fichiers de votre PC (voir Section 4.7.4, « sécuriser le mot de passe de l’administrateur »). Ceci signifie qu'un système mot de passe de connexion ne permet pas de sécuriser vos données personnelles ou sensibles en cas de vol de votre PC. Vous devez déployer des technologies de chiffrements des données pour assurer cette protection. Bien que GNU privacy guard (voir Section 10.4, « Infrastructure de sécurité des données ») puisse chiffrer des fichiers, il demande quelques efforts de la part de l’utilisateur.

dm-crypt et eCryptfs facilitent de manière native le chiffrement automatique des données par l’intermédiaire de modules du noyau de Linux avec un minimum d'efforts de la part de l’utilisateur.

Tableau 9.9. Liste d'utilitaires de chiffrement des données

paquet popcon taille description
cryptsetup * V:3, I:5 1172 utilitaires pour chiffrer un périphérique en mode bloc (dm-crypt / LUKS)
cryptmount * V:0.2, I:0.5 360 utilitaires pour chiffrer un périphérique en mode bloc (dm-crypt / LUKS), l’accent étant mis sur le montage et le démontage par un utilisateur normal
ecryptfs-utils * V:0.2, I:0.3 416 utilitaires pour systèmes de fichiers empilés (« stackable » chiffrés (eCryptfs)

Dm-crypt est un système de fichiers chiffré qui utilise device-mapper. Device-mapper effectue le « mapping » d'un périphérique en mode bloc sur un autre.

eCryptfs est un autre système de fichiers chiffré utilisant un système de fichier empilables. Un système de fichiers empilables s'empile lui-même par dessus un répertoire existant d'un système de fichiers monté.

[Attention] Attention

Le chiffrement des données a un coût en matière de temps CPU, etc. Veuillez comparer ses avantages à son coût.

[Note] Note

Le système Debian dans son ensemble peut être installé sur un disque chiffré par l’installateur debian (lenny ou plus récent) en utilisant dm-crypt/LUKS et initramfs.

[Astuce] Astuce

Voir Section 10.4, « Infrastructure de sécurité des données » pour un utilitaire de chiffrement de l’espace utilisateur : GNU Privacy Guard.

9.4.1. Chiffrement des disques amovibles à l’aide de dm-crypt/LUKS

Vous pouvez chiffrer le contenu des périphériques de masse amovible, par exemple, une clé g. USB memory stick sur « /dev/sdx » en utilisant dm-crypt/LUKS. Il suffit de le formater de la manière suivantes :

# badblocks -c 10240 -s -w -t random -v /dev/sdx
# shred -v -n 1 /dev/sdx
# fdisk /dev/sdx
... "n" "p" "1" "return" "return" "w"
# cryptsetup luksFormat /dev/sdx1
...
# cryptsetup luksOpen /dev/sdx1 sdx1
...
# ls -l /dev/mapper/
total 0
crw-rw---- 1 root root  10, 60 2008-10-04 18:44 control
brw-rw---- 1 root disk 254,  0 2008-10-04 23:55 sdx1
# mkfs.vfat /dev/mapper/sdx1
...
# cryptsetup luksClose sdx1

Il peut alors être monté simplement comme un périphérique normal sur « /media/<disk_label> » à l’exception de la demande de mot de passe (voir Section 10.1.10, « Périphériques d'enregistrement amovibles ») sous un environnement de bureau moderne tel que GNOME en utilisant gnome-mount(1). La différence est que toutes les données qui y seront écrites seront chiffrées. Vous pouvez aussi formater le support dans un format différent, par exemple ext3 avec « mkfs.ext3 /dev/sdx1 ».

[Note] Note

Si vous êtes vraiment paranoïaque en ce qui concerne la sécurité des données, vous pourrez réécrire par dessus plusieurs fois dans l’exemple ci-dessus. Cette opération est cependant très exigeante en temps.

9.4.2. Partition d'échange chiffrée avec dm-crypt

Supposons que votre « /etc/fstab » d'origine comporte ce qui suit :

/dev/sda7 swap sw 0 0

Vous pouvez chiffrer la partition d'échange en utilisant dm-crypt par ce qui suit :

# aptitude install cryptsetup
# swapoff -a
# echo "cswap /dev/sda7 /dev/urandom swap" >> /etc/crypttab
# perl -i -p -e "s/\/dev\/sda7/\/dev\/mapper\/cswap/" /etc/fstab
# /etc/init.d/cryptdisks restart
 ...
# swapon -a

9.4.3. Chiffrer les fichiers automatiquement avec eCryptfs

Vous pouvez chiffrer automatiquement les fichiers se trouvant sous « ~/Private/ » en utilisant eCryptfs et le paquet ecryptfs-utils.

  • Lancez ecryptfs-setup-private(1) et configurez « ~/Private/ » en suivant les invites.
  • Activez « ~/Private/ » en lançant ecryptfs-mount-private(1).
  • Déplacez les fichiers de données sensibles vers « ~/Private/ » et faites les liens symboliques à la demande.

    • Candidats : « ~/.fetchmailrc », « ~/.ssh/identity », « ~/.ssh/id_rsa », « »~/.ssh/id_dsa » et d'autres fichiers ayant « go-rwx »
  • Déplacez les répertoires ayant des données sensibles vers un sous-répertoire de « ~/Private/ » et faites les liens symboliques nécessaires.

    • Candidats : « ~/.gnupg » et d'autres répertoires avec « go-rwx »
  • Créez le lien symbolique de « ~/Desktop/Private/ » vers « ~/Private/ » pour faciliter les opérations du bureau.
  • Désactiver « ~/Private/ » en lançant ecryptfs-umount-private(1).
  • Activez « ~/Private/ » à l’aide de « ecryptfs-mount-private » lorsque vous avez besoin de vos données chiffrées.
[Astuce] Astuce

Comme eCryptfs ne chiffre que sélectivement les fichiers sensibles, son coût en matière de ressources système est bien moindre que l’utilisation de dm-crypt sur l’ensemble du système de fichiers racine ou sur le périphérique « /home ». Il ne demande aucun effort particulier sur l’allocation de l’espace disque mais ne peut conserver la confidentialité de toutes les méta-données du système de fichiers.

9.4.4. Montage automatique de eCryptfs

Si vous utilisez votre mot de passe de connexion pour envelopper les clés de chiffrement, vous pouvez automatiser le montage de eCryptfs par PAM (Pluggable Authentication Modules).

Insérez la ligne suivante juste avant « pam_permit.so » dans « /etc/pam.d/common-auth » :

auth required pam_ecryptfs.so unwrap

Insérez la ligne suivante en tant que toute dernière ligne de « /etc/pam.d/common-session :

session optional pam_ecryptfs.so unwrap

Insérez la ligne suivante comme première ligne active de « /etc/pam.d/common-password :

password required pam_ecryptfs.so

C'est assez pratique.

[Avertissement] Avertissement

Les erreurs de configuration de PAM peuvent vous interdire l’accès à votre propre système. Voir Chapitre 4, Authentification.

[Attention] Attention

Si vous utilisez votre mot de passe de connexion pour encapsuler les clés de chiffrement, vos données chiffrées sont aussi sûre que l’est votre mot de passe de connexion (voir Section 4.3, « Mot de passe de qualité »). À moins que vous ne preniez le soin de définir un mot de passe fort, vos données encourent un risque lorsque quelqu'un lance un logiciel de casse de mots de passe après avoir volé votre ordinateur (voir Section 4.7.4, « sécuriser le mot de passe de l’administrateur »).

9.5. Surveiller, contrôler et démarrer l’activité des programmes

L’activité des programmes peut être surveillée et contrôlée à l’aide d'outils spécialisés.

Tableau 9.10. Liste des outils de surveillance et de contrôle de l’activité des programmes

paquet popcon taille description
coreutils * V:92, I:99 13828 nice(1) : lancer un programme avec une priorité d'ordonnancement modifiée
bsdutils * V:77, I:99 196 renice(1) : modifier la priorité d'ordonnancement d'un programme en cours d'exécution
procps * V:86, I:99 772 utilitaires du système de fichiers « /proc » : ps(1), top(1), kill(1), watch(1), …
psmisc * V:47, I:88 716 utilitaires du système de fichiers « /proc » : killall(1), fuser(1), peekfd(1), pstree(1)
time * V:6, I:84 152 time(1) : lancer un programme qui indique l’utilisation des ressources du système en fonction du temps
sysstat * V:4, I:9 872 sar(1), iostat(1), mpstat(1), … : outils de mesure des performances du système pour Linux
isag * V:0.07, I:0.4 152 Générateur interactif de graphes de l’activité système pour sysstat
lsof * V:16, I:90 444 lsof(8) : afficher la liste des fichiers ouverts par un processus en cours d'utilisation en utilisant l’option « -p
strace * V:5, I:39 396 strace(1) : tracer les appels système et les signaux
ltrace * V:0.3, I:2 188 ltrace(1) : tracer les appels de bibliothèque
xtrace * V:0.02, I:0.18 372 xtrace(1) : tracer la communication entre un client X11 et le serveur
powertop * V:0.7, I:12 524 powertop(1) : information concernant la puissance électrique utilisée sur les portables basés sur Intel
cron * V:91, I:99 240 faire tourner des processus en arrière plan selon un calendrier depuis le démon cron(8)
anacron * V:41, I:44 120 ordonnanceur de type cron pour les systèmes qui ne tournent pas 24 heures sur 24
at * V:50, I:83 220 at(1) ou batch(1) : lancer un travail à une heure déterminée ou en dessous d'un niveau de charge donné

[Astuce] Astuce

Le paquet procps fournit des fonctions très basiques de surveillance, de contrôle et de lancement des activités du programme. Vous devriez toutes les apprendre.

9.5.1. Temps d'un processus

Afficher la durée du processus indiqué dans la commande.

# time une_commande >/dev/null
real    0m0.035s       # temps horloge (temps réel écoulé)
user    0m0.000s       # temps en mode utilisateur
sys     0m0.020s       # temps en mode noyau

9.5.2. La priorité d'ordonnancement

Une valeur de politesse (« nice » est utilisée pour contrôler la priorité d'ordonnancement du processus.

Tableau 9.11. Liste des valeurs de politesse pour la priorité d'ordonnancement

valeur de politesse priorité d'ordonnancement
19 la plus base priorité d'un processus (poli)
0 très haute priorité de processus pour un utilisateur
-20 très haute priorité d'un processus pour root (non poli)

# nice  -19 top                                      # très poli
# nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # très rapide

Parfois, une valeur extrême de politesse (« nice ») fait plus de mal que de bien au système. Utilisez cette commande avec précautions.

9.5.3. La commande ps

La commande ps(1) sous Debian comporte à la fois les fonctionnalités de BSD et de SystemV, elle aide à identifier l’activité des processus de manière statique.

Tableau 9.12. Liste des styles de la commande ps

style commande typique fonction
BSD ps aux afficher %CPU %MEM
System V ps -efH afficher le PPID

Les processus fils zombies (« defunct ») peuvent être tués par l’identifiant de processus de leur paren identifié dans la champ « PPID »

La commande pstree(1) affiche une arborescence des processus.

9.5.4. La commande top

top(1) sous Debian a de riches fonctionnalités et aide à identifier de manière dynamique quels sont les processus qui ont une activité curieuse.

Tableau 9.13. Liste des commandes pour top

touche de commande description de la réponse
h ou ? afficher l’aide
f définir / réinitialiser le champ
o réordonner les champ affichés
F définir le champ-clé pour le tri
k tuer un processus
r modifier la politesse d'un processus
q quitter la commande top.

9.5.5. Afficher les fichier ouverts par un processus

Vous pouvez afficher la liste des fichiers ouverts par un processus avec un identifiant de processus (PID), par exemple de 1 en faisant ce qui suit :

$ sudo lsof -p 1

PID=1 est habituellement le programme init.

9.5.6. Tracer l’activité d'un programme

Vous pouvez tracer l’activité d'un programme avec strace(1), ltrace(1) ou xtrace(1) pour les appels système, les appels bibliothèque ou la communication entre le serveur et le client X11.

Vous pouvez tracer les appels système de la commande ls de la manière suivante :

$ sudo strace ls

9.5.7. Identification des processus qui utilisent des fichiers ou des sockets

Vous pouvez aussi identifier les processus qui utilisent des fichiers par fuser(1), par exemple pour « /var/log/mail.log » en faisant ce qui suit :

$ sudo fuser -v /var/log/mail.log
                     USER        PID ACCESS COMMAND
/var/log/mail.log:   root       2946 F.... syslogd

Vous voyez que le fichier « /var/log/mail.log » est ouvert en écriture par la commande syslogd(8).

Vous pouvez aussi identifier le processus qui utilisent des sockets par fuser(1), par exemple, pour « smtp/tcp » par ce qui suit :

$ sudo fuser -v smtp/tcp
                     USER        PID ACCESS COMMAND
smtp/tcp:            Debian-exim   3379 F.... exim4

Vous savez maintenant que exim4(8) tourne sur votre système pour gérer les connexions TCP du port SMTP (25).

9.5.8. Répéter une commande avec un intervalle constant

watch(1) execute un programme de manière répétitive avec un intervalle constant tout en affichant sa sortie en plein écran.

$ watch w

Ceci permet d'afficher, mis à jour toutes les deux secondes, qui est connecté au système.

9.5.9. Répéter une commande en bouclant entre des fichiers

Il existe plusieurs manières de répéter une boucle de commande entre des fichiers correspondant à une condition, par exemple, correspondant au motif « glob » « *.ext ».

for x in *.ext; do if [ -f "$x"]; then commande "$x" ; fi; done
  • combinaison de find(1) et de xargs(1) :
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 commande
  • find(1) avec l’option « -exec » avec une commande :
find . -type f -maxdepth 1 -name '*.ext' -exec commande '{}' \;
  • find(1) avec l’option « -exec » avec un court script de l’interpréteur :
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "commande '{}' && echo 'succès'" \;

Les exemple ci-dessus ont été écrits afin d'assurer une prise en compte correcte de noms de fichiers étranges tels que ceux qui comportent des espaces. Voir Section 10.1.5, « Idiomes pour la sélection de fichiers » pour une utilisation avancée de find(1).

9.5.10. Lancer un programme depuis l’interface graphique

Vous pouvez définir le lancement d'un processus depuis l’interface utilisateur graphique (GUI).

Sous l’environnement de bureau GNOME, un programme peut être lancé avec les paramètres corrects par un double-clic sur l’icône de lancement, par glisser-déposer de l’icône d'un fichier sur l’icône du lanceur ou par le menu « Ouvrir avec... » que l’on obtient par un clic droit sur l’icône d'un fichier. KDE peut aussi faire la même chose.

Voici un exemple sous GNOME pour créer une icône de lanceur pour mc(1) lancé dans gnome-terminal(1).

Créez un programme exécutable « mc-term » en effectuant ce qui suit :

# cat >/usr/local/bin/mc-term <<EOF
#!/bin/sh
gnome-terminal -e "mc \$1"
EOF
# chmod 755 /usr/local/bin/mc-term

Créez un lanceur sur le bureau comme suit :

  1. Faites un clic-droit sur le bureau et sélectionnez « ;Créer un lanceur… » ;
  2. Définissez « Type » à « Application » ;
  3. Définissez « Nom » à « mc » ;
  4. Définissez « Commande » à « mc-term %f » ;
  5. Cliquez « Valider ».

Créez une association « ouvrir avec » comme suit :

  1. Faites un clic-droit sur le dossier pour sélectionner « Ouvrir avec une autre application … » :
  2. Cliquer pour ouvrir fenêtre « Utiliser une commande personnalisée » et entrez « mc-term %f ».
  3. Cliquez « Ouvrir ».
[Astuce] Astuce

Le lanceur est un fichier de « ~/Desktop » ayant l’extension « .desktop ».

9.5.11. Personnaliser le programme à lancer

Certains programmes lancent automatiquement d'autres programmes. Voici des points-clés pour la personnalisation de ce processus :

  • Menu de configuration des applications :

    • bureau GNOME  : « Système » → « Préférences » → « Applications préférées »
    • bureau KDE : « K » → « Centre de contrôle » → « Composants KDE » → « Sélection de composant »
    • navigateur Iceweasle : « Éditer » → « Préférences » → « Applications »
    • mc(1) : « /etc/mc/mc.ext »
  • des variables d'environnement telles que « $BROWSER », « $EDITOR », « $VISUAL » et « $PAGER » (voir eviron(7))
  • le système update-alternatives(8) pour des programmes tels que « editor », « view », « x-www-browser », « gnome-www-browser » et « www-browser » (voir Section 1.4.7, « Définir un éditeur de texte par défaut »)
  • le contenu des fichiers « ~/.mailcap » et « /etc/mailcap » qui associe un type MIME avec un programme (voir mailcap(5))
  • le contenu des fichiers « ~/.mime.types » et « /etc/mime.types » qui associe l’extension du nom de fichier avec un type MIME (voir run-mailcap(1))
[Astuce] Astuce

update-mime(8) met à jour le fichier ≤ /etc/mailcap » en utilisant le fichier « /etc/mailcap.order » (voir mailcap.order(5)).

[Astuce] Astuce

Le paquet debianutils fournit sensible-browser(1), sensible-editor(1), et sensible-pager(1) qui prennent des décisions raisonnables concernant l’éditeur, le visualisateur, le navigateur à appeler respectivement. Je vous recommande de lire ces scripts de l’interpréteur de commandes.

[Astuce] Astuce

De façon à faire tourner une application de console telle que mutt sous X en tant qu'application préférée, vous devriez créer une application X comme suit et définir « /usr/local/bin/mutt-term » comme étant votre application préférée à lancer comme il est décrit :

# cat /usr/local/bin/mutt-term <<EOF
#!/bin/sh
gnome-terminal -e "mutt \$@"
EOF
chmod 755 /usr/local/bin/mutt-term

9.5.12. Tuer un processus

Utilisez kill(1) pour tuer (ou envoyer un signal à) un processus avec son identifiant de processus.

Utilisez killall(1) ou pkill(1) pour faire la même chose avec le nom de commande du processus et d'autres attributs.

Tableau 9.14. Liste des signaux couramment utilisés avec la commande kill

valeur du signal nom du signal fonction
1 HUP redémarrer le démon
15 TERM tuer normalement
9 KILL tuer « dur »

9.5.13. Planifier des tâches qui s'exécutent une fois

Exécutez de la manière suivante la commande at(1) pour planifier un travail qui s'exécute une fois 

$ echo 'command -args'| at 3:40 monday

9.5.14. Planifier des tâches qui s'exécutent régulièrement

Utilisez cron(8) pour planifier des tâches qui s'exécutent régulièrement. Voir crontab(1) et crontab(5).

Si vous êtes membre du groupe crontab, vous pouvez planifier le lancement des processus en tant qu'utilisateur normal, par exemple toto en créant un fichier crontab(5) file comme « /var/spool/cron/crontabs/toto » avec la commande « crontab -e ».

Voici un exemple de fichier crontab(5).

# utilise /bin/sh pour exécuter les commandes, quoi que dise /etc/passwd
SHELL=/bin/sh
# envoie un courrier électronique à Paul contenant tous les résultats,
# quelle que soit la personne à qui appartienne la crontab
MAILTO=paul
# Minute Heure JourDuMois Mois JourDeLaSemaine commande
# est exécuté à 00:05 chaque jour
5  0  *  * *   $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# est exécuté à 14:15 le 1e de chaque mois -- le résultat est envoyé à Paul
# par courrier électronique
15 14 1  * *   $HOME/bin/monthly
# est exécuté à 22:00 chaque jour de la semaine(1-5), ennuie Joe.
# % pour une nouvelle ligne, dernier % pour cc:
0 22 *   * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%.%%
23 */2 1 2 *   echo "run 23 minutes after 0am, 2am, 4am ..., on Feb 1"
5  4 *   * sun echo "run at 04:05 every sunday"
# est exécuté à 03:40 le premier lundi de chaque mois
40 3 1-7 * *   [ "$(date +%a)" == "Mon" ] && command -args
[Astuce] Astuce

Sur un système qui ne tourne pas en permanence, installez le paquet anacron afin de planifier les tâches périodiques à des intervalles particulier dès que le temps de fonctionnement « uptime » de la machine le permet. Voir anacron(8) et anacrontab(5).

[Astuce] Astuce

Vous pouvez lancer périodiquement les scripts de maintenance planifiée du système,depuis le compte de l’administrateur en les plaçant dans « /etc/cron.hourly/ », « /etc/cron.daily/ », « /etc/cron.weekly/ » ou « /etc/cron.monthly/ ». L"échéancier d'exécution de ces scripts peut être personnalisé dans « /etc/crontab » et « /etc/anacrontab ».

9.5.15. touche Alt-SysRq

Une assurance contre le mauvais fonctionnement du système est fournie par l’option de compilation du noyau « Magic SysRq key » (touche SAK) qui est maintenant une valeur par défaut pour les noyaux de Debian. Presser Alt-SysRq (NDT : Alt-Sys ou Alt-Impr écran sur un clavier français) suivi par une des touches suivantes permet de reprendre par magie le contrôle du système.

Tableau 9.15. Listes des touches de commande SAK (« Secure attention keys »)

touche suivant Alt-Sys description de l’action
r restaurer le clavier depuis le mode raw (brut)à après un plantage de X
0 changer le niveau de journalisation de la console à 0 afin de réduire les messages d'erreurs
k kill (tuer) tous les processus sur la console virtuelle actuelle
e envoyer un SIGTERM à tous les processus, sauf init(8)
i envoyer un SIGKILL à tous les processus, sauf init(8)
s synchroniser tous les systèmes de fichiers montés
u remonter en lecture seule tous les systèmes de fichiers montés (umount)
b reboot (redémarrer) le système sans effectuer de synchronisation ni de démontage

La combinaison de « Alt-Sys s », « Alt-Sys u » et « Alt-Sys r » permet de se tirer de situation vraiment désastreuses.

Voir « /usr/share/doc/linux-doc-2.6.*/Documentation/sysrq.txt.gz ».

[Attention] Attention

la fonctionnalité Alt-SysRq peut être considérée comme un risque de sécurité permettant à des utilisateurs d'accéder à des fonctions ayant le privilège de l’administrateur. Placer « echo 0 >/proc/sys/kernel/sysrq » dans « /etc/rc.local » ou « kernel.sysrq = 0 » dans « /etc/sysctl.conf » désactive la fonctionnalité Alt-SysRq.

[Astuce] Astuce

Depuis un terminal SSH, etc., vous pouvez utiliser la fonctionnalité Alt-SysRq en écrivant ver « /proc/sysrq-trigger ». Par exemple;, « echo s > /proc/sysrq-trigger; echo u > /proc/sysrq-trigger » depuis l’invite de l’interpréteur de commandes de l’administrateur syncs (synchronise) et umount (démonte) tous les systèmes de fichiers montés.

9.6. Astuces de maintenance du système

9.6.1. Qui se trouve sur le système ?

Vous pouvez rechercher qui se trouve sur le système par les commandes suivantes :

  • who(1) affiche qui est connecté.
  • w(1) affiche qui est connecté et ce qu'il font.
  • last(1) affiche une liste des derniers utilisateurs connectés.
  • lastb(1) affiche une liste des utilisateurs s'étant mal connectés.
[Astuce] Astuce

« /var/run/utmp », « /var/log/wtmp » et « /var/run/utmp » maintiennent ces information de l’utilisateur. Voir login(1) et utmp(5).

9.6.2. Prévenir tout le monde

Vous pouvez envoyer un message à toutes les personnes connectée au système avec wall(1) en faisant ce qui suit :

$ echo "Nous allons arrêter le système dans une heure" | wall

9.6.3. Identification du matériel

Pour les périphériques similaires à PCI (AGP, PCI-Express, CardBus, ExpressCard, etc.), lspci(8) (probablement avec l’option « -nn ») est un bon point de départ pour l’identification du matériel

Vous pouvez aussi identifier le matériel en lisant le contenue de « /proc/bus/pci/devices » ou en parcourant l’arborescence de répertoires se trouvant sous « /sys/bus/pci » (voir Section 1.2.12, « procfs et sysfs »).

Tableau 9.16. Listes des outils d'identification du matériel

paquet popcon taille description
pciutils * V:15, I:92 908 utilitaires PCI de Linux : lspci(8)
usbutils * V:38, I:97 604 utilitaires USB de Linux : lsusb(8)
pcmciautils * V:0.8, I:13 100 utilitaires PCMCIA pour Linux 2.6 : pccardctl(8)
scsitools * V:0.18, I:1.1 484 collection d'outils pour la gestion des périphériques SCSI : lsscsi(8)
pnputils * V:0.01, I:0.16 108 Utilitaires BIOS Plug and Play : lspnp(8)
procinfo * V:0.3, I:3 164 informations sur le systèmes obtenue dans « /proc » :lsdev(8)
lshw * V:1.2, I:7 604 informations concernant la configuration matérielle : lshw(1)
discover * V:2, I:15 120 système d'identification du matériel : discover(8)

9.6.4. Configuration matérielle

Bien que la plupart de la configuration du matériel puisse être gérée au moyen des outils graphiques qui accompagnent les environnement de bureau graphiques modernes comme GNOME et KDE, c'est une bonne idée de connaître certaines méthodes de base permettant de le configurer.

Tableau 9.17. Liste des outils de configuration du matériel

paquet popcon taille description
hal * V:37, I:49 1668 Couche d'abstraction matériel (HAL) : lshal(1)
console-tools * V:47, I:84 956 Police de la console Linux et utilitaires de table de caractères
x11-xserver-utils * V:34, I:51 544 utilitaires pour le serveur X server : xset(1), xmodmap(1)
acpid * V:51, I:91 208 démon servant à gérer les événements délivrés par l’Interface avancée de gestion de la configuration et de l’alimentation ACPI (« Advanced Configuration and Power Interface »)
acpi * V:4, I:35 92 utilitaire d'affichage des informations des périphériques ACPI
apmd * V:1.2, I:11 252 démon de gestion es événements délivrés par la gestion avancée de l’alimentation APM (« Advanced Power Management »)
noflushd * V:0.04, I:0.09 248 démon permettant d'arrêter la rotation des disques durs inactifs
sleepd * V:0.07, I:0.09 148 démon permettant de mettre un ordinateur portable en veille lorsqu'il est inactif
hdparm * V:11, I:38 304 optimisation de l’accès aux disques durs (voir Section 9.3.7, « Optimisation du disque dur »)
smartmontools * V:7, I:23 1076 contrôler et surveiller les systèmes de stockage en utilisant S.M.A.R.T.
setserial * V:1.5, I:3 180 collection d'outils pour gérer les ports série
memtest86+ * V:0.5, I:5 652 collection d'outils pour gérer la mémoire physique
scsitools * V:0.18, I:1.1 484 collection d'outils pour gérer le matériel SCSI
tpconfig * V:0.3, I:0.5 220 utilitaire pour configurer les pavés tactiles (touchpad)
setcd * V:0.06, I:0.3 28 optimisation de l’accès au lecteur de CD
big-cursor * I:0.16 68 curseurs de souris plus grands pour X

Ici, ACPI est une infrastructure de gestion de l’alimentation électrique du système plus récente qu'APM.

[Astuce] Astuce

La gestion de la fréquence d'horloge des processeurs modernes est gérée par des modules du noyaux tels que acpi_cpufreq.

9.6.5. Heure système et matérielle

Ce qui suit permet de définir l’heure du système et du matériel à MM/DD hh:mm, CCYY :

# date MMDDhhmmCCYY
# hwclock --utc --systohc
# hwclock --show

Sur un système Debian l’heure est normalement affichée en heure locale mais l’heure système et matérielle utilisent habituellement l’heure TU(GMT).

Si l’heure matérielle (BIOS) est réglée en TU, modifiez le réglage pour « UTC=yes » dans le fichier « /etc/default/rcS ».

Si vous désirez ajuster l’heure de votre système par l’intermédiaire du réseau, vous pouvez envisager l’utilisation du service NTP avec un paquet tel que ntp, ntpdate ou chrony.

Voir ce qui suit :

[Astuce] Astuce

ntptrace(8) du paquet ntp peut tracer une chaîne de serveurs NTP jusqu'à la source primaire.

9.6.6. Configuration du terminal

Il y a plusieurs composants pour configurer la console en mode caractères et les fonctionnalités du système ncurses(3).

  • Le fichier « /etc/terminfo/*/* » (terminfo(5))
  • La variable d'environnement « $TERM »(term(7))
  • setterm(1), stty(1), tic(1) et toe(1)

Si l’entrée terminfo pour xterm ne fonctionne pas avec un xterm non Debian, modifiez votre type de terminal dans « $TERM » de « xterm » pour une version version limitée en fonctionnalités comme « xterm-r6 » lorsque vous-vous connectez à distance à un système Debian. Voir « /usr/share/doc/libncurses5/FAQ » pour davantage d'informations. « dumb » est le plus petit dénominateur commun pour « $TERM ».

9.6.7. L’infrastructure de gestion du son

Les pilotes de périphériques des cartes sons pour les versions actuelles de Linux 2.6 sont fournies par Advanced Linux Sound Architecture (ALSA). ALSA fournit un mode d'émulation du système Open Sound System (OSS) précédent pour des raisons de compatibilité.

Lancez « dpkg-reconfigure linux-sound-base » pour indiquer au système de son d'utiliser ALSA en mettant en liste noire les modules du noyau. À moins que vous n'ayez un matériel très récent pour le son, l’infrastructure udev devrait pouvoir configurer votre système de son.

[Astuce] Astuce

Utilisez « cat /dev/urandom > /dev/audio » ou speaker-test(1) pour tester les hauts-parleurs. (^C pour arrêter)

[Astuce] Astuce

Si vous n'arrivez pas à obtenir de sons, il est possible que votre haut-parleur soit connecté à une sortie muette (« muted »). Les système de son modernes ont de nombreuses sorties. alsamixer(1) du paquet alsa-utils est pratique pour configurer les paramètres de volume et d'état muet..

Les logiciels applicatifs peuvent être configurés pour non seulement pour accéder au périphériques sonores directement mais aussi pour y accéder par l’intermédiaire d'un système de serveur de son.

Tableau 9.18. Liste des paquets son

paquet popcon taille description
linux-sound-base * V:39, I:49 132 paquet de base pour les systèmes de son ALSA et OSS
alsa-base * V:2, I:48 500 Fichiers de configuration du pilote ALSA
alsa-utils * V:34, I:48 1984 utilitaires de configuration et d'utilisation d'ALSA
oss-compat * V:28, I:33 60 Compatibilité OSS sous ALSA évitant les erreurs « /dev/dsp not found  »
esound-common * V:19, I:56 232 Enlightened Sound Daemon (ESD) fichiers communs (Enlightenment et GNOME)
esound * V:0.6, I:6 80 Enlightened Sound Daemon (ESD) serveur (Enlightenment et GNOME)
esound-clients * V:7, I:20 188 Enlightened Sound Daemon (ESD) client (Enlightenment et GNOME)
libesd0 * V:32, I:55 84 Enlightened Sound Daemon (ESD) bibliothèque (Enlightenment et GNOME)
arts * I:7 40 Serveur aRts (KDE)
libarts1c2a * V:13, I:23 5968 Bibliothèque aRts (KDE)
libartsc0 * V:10, I:32 48 Bibliothèque aRts (KDE)
jackd * V:0.8, I:3 32 serveur du kit de connexion audio JACK. (JACK) (faible latence)
libjack0 * V:1.3, I:33 164 bibliothèque du kit de connexion JACK. (JACK) (faible latence)
nas * V:0.14, I:0.2 328 serveur du système audio réseau (NAS)
libaudio2 * V:26, I:46 200 bibliothèque du serveur audio réseau (NAS)
pulseaudio * V:3, I:5 4052 serveur PulseAudio, remplaçant d'ESD
libpulse0 * V:15, I:36 792 PulseAudio bibliothèque du client, remplace ESD
libgstreamer0.10-0 * V:30, I:51 3368 GStreamer : moteur de son de GNOME
libxine1 * V:5, I:27 36 xine : ancien moteur de son de KDE
libphonon4 * I:16 572 Phonon : nouveau moteur de son de KDE

Il y a habituellement un moteur de son commun pour chacun des environnements de bureau les plus courants. Chaque moteur de son utilisé par l’application peut choisir de se connecter à un serveur de son différent.

9.6.8. Désactiver l’économiseur d'écran

Pour désactiver l’écran de veille, utilisez les commandes suivantes :

Tableau 9.19. Liste des commandes pour désactiver l’économiseur d'écran

environnement commande
Console Linux setterm -powersave off
Système X Window (couper l’économiseur d'écran) xset s off
X Window (désactive dpms) xset -dpms
X Window (interface de configuration graphique et économiseur d'écran) xscreensaver-command -prefs

9.6.9. Désactiver les bips

On peut toujours débrancher le haut-parleur du PC pour désactiver les bips. La suppression du module du noyau pcspkr le fait pour vous.

Ce qui suit évite que le programme readline(3) utilisé parbash(1) ne bippe lors d'un « \a » (ASCII=7).

$ echo "set bell-style none">> ~/.inputrc

9.6.10. Utilisation de la mémoire

Le message de démarrage du noyau dans « /var/log/dmesg » donne exactement la taille de la mémoire disponible.

free(1) et top(1) affichent des informations concernant les ressources mémoire sur le système actif.

$ grep '\] Memory' /var/log/dmesg
[    0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init)
$ free -k
             total       used       free     shared    buffers     cached
Mem:        997184     976928      20256          0     129592     171932
-/+ buffers/cache:     675404     321780
Swap:      4545576          4    4545572
[Astuce] Astuce

Ne vous inquiétez pas de la taille importante de « used » et ce la petite taille de « free » sur la ligne « Mem: », mais lisez ce qui se trouve sous celle-ci (675404 et 321780 dans l’exemple ci-dessous) et détendez-vous.

Pour mon MacBook avec 1Go=1048576k DRAM (la mémoire vidéo en prend une partie), je peux voir ce qui suit :

Tableau 9.20. Taille mémoire affichée

affiché taille
Taille totale dans dmesg 1016784k = 1Go - 31792k
Libre dans dmesg 990528k
Total sous l’interpréteur de commandes 997184k
Libre sous l’interpréteur de commandes 20256k (mais réellement 321780k)

9.6.11. Vérification de la sécurité et de l’intégrité du système

Une mauvaise maintenance du système peut rendre votre système vulnérable à une attaque externe.

Pour la vérification de la sécurité et de l’intégrité du système, vous pouvez démarrer avec ce qui suit :

Tableau 9.21. Liste d'outils pour la vérification et la sécurité et de l’intégrité du système

paquet popcon taille description
logcheck * V:3, I:3 152 démon pour poster à l’administrateur les anomalies des fichiers journaux du système
debsums * V:2, I:3 320 utilitaire pour vérifier les fichiers des paquets installés d'après leur somme de contrôle MD5
chkrootkit * V:2, I:6 808 détecteur de rootkit.
clamav * V:2, I:11 616 utilitaire anti-virus pour Unix ‑ interface en ligne de commandes.
tiger * V:0.8, I:1.0 3148 signale les vulnérabilités du système pour la sécurité
tripwire * V:0.6, I:0.7 9456 vérificateur d'intégrité des fichiers et répertoires
john * V:0.7, I:2 532 outils de casse des mots de passe actifs
aide * V:0.2, I:0.4 1213 Environnement avancé de détection d'intrusion (« Advanced Intrusion Detection Environment ») - bibliothèque statique
bastille * V:0.12, I:0.4 1960 outil de renforcement de la sécurité
integrit * V:0.08, I:0.16 440 programme de vérification de l’intégrité des fichiers
crack * V:0.03, I:0.2 204 programme pour deviner les mots de passe

Voici un script simple pour rechercher des fichiers typiques ayant des permissions incorrectes d'écriture pour tout le monde.

# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
[Attention] Attention

Comme me paquet debsums utilise des somme de contrôle MD5 enregistrées de manière statique, on ne peut pas lui faire entièrement confiance comme outil d'audit de la sécurité du contre des attaques malveillantes.

9.7. Le noyau

Debian distribue des noyaux Linux modulaires sous forme de paquets pour les architectures prises en compte.

9.7.1. Noyau Linux 2.6

Le noyau Linux 2.6 possède quelques fonctionnalités remarquable comparé à 2.4.

  • Les périphériques sont créés par le système udev (voir Section 3.5.11, « Le système udev »).
  • Les accès en lecture et écriture aux périphériques CD et DVD IDE CD/DVD n'utilisent plus le module ide-scsi.
  • Les fonctions de filtrage des paquets réseau utilisent les modules iptable du noyau.

9.7.2. Paramètres du noyau

De nombreuses fonctionnalité du noyau peuvent être configurées par l’intermédiaire de paramètres du noyau de la manière suivante :

Voir « kernel-parameters.txt(.gz) » et d'autres documents en rapport dans la documentation du noyau de Linux (« /usr/share/doc/linux-doc-2.6.*/Documentation/filesystems/* ») fournie par le paquet linux-doc-2.6.*.

9.7.3. En-têtes du noyau

La plupart des programmes normaux n'ont pas besoin des en-têtes du noyau et peuvent de fait être cassés si vous les utilisez directement pour la compilation. Il devront être compilés avec les en-têtes se trouvant dans « /usr/include/linux » et « /usr/include/asm » qui sont fournis, sur les systèmes Debian, par le paquet libc6-dev (créé à partir du paquet source glibc).

[Note] Note

Pour compiler certains programmes spécifiques au noyau, comme les modules du noyau, à partir de sources externes et le démon de montage automatique (amd), vous devez inclure dans votre ligne de commandes un chemin vers les en-têtes du noyau correspondants, par exemple « -I/usr/src/linux-version-particulière/include/ ».module-assistant(8) (ou sa forme abrégée m-a) aide les utilisateur à construire et à installer facilement des paquets de modules pour un ou plusieurs noyaux personnalisés.

9.7.4. Compiler le noyau et les modules associés

Debian a sa propre manière de compiler le noyau et les modules associés.

Tableau 9.22. Liste des paquets-clés à installer pour la compilation du noyau sur un système Debian

paquet popcon taille description
build-essential * I:47 48 paquets essentiels pour la construction de paquets Debian : make, gcc, …
bzip2 * V:51, I:79 132 utilitaires de compression et de décompression des fichiers bz2
libncurses5-dev * V:4, I:25 6900 bibliothèques de développement et documentations pour ncurses
git * V:5, I:17 10632 git :: système distribué de contrôle de version utilisé par le noyau de Linux
fakeroot * V:4, I:32 444 fournit l’environnement fakeroot pour construire le paquet sans être administrateur (« root »)
initramfs-tools * V:49, I:98 468 outil pou construire une image mémoire initiale (« initramds ») (spécifique à Debian)
kernel-package * V:1.5, I:14 2316 outil pour construire les paquets du noyau de Linux (spécifique à Debian)
module-assistant * V:2, I:18 568 outil pour aider à la construction des paquets de modules (spécifique à Debian)
dkms * V:6, I:9 468 prise en charge dynamique des modules du noyau (dynamic kernel module support : DKMS) (générique)
devscripts * V:2, I:11 1696 scripts d'assistance pour un responsable de paquet Debian (spécifique à Debian)
linux-tree-2.6.* N/A N/A méta-paquet de l’arborescence des source de Linux (spécifique à Debian)

Si vous utilisez un initrd in Section 3.3, « Étage 2 : le chargeur initial », veuillez lire les informations correspondantes dans initramfs-tools(8), update-initramfs(8), mkinitramfs(8) and initramfs.conf(5).

[Avertissement] Avertissement

Ne mettez pas de liens symboliques vers le répertoire de l’arborescence des source (par exemple « /usr/src/linux* ») depuis « /usr/include/linux » et « /usr/include/asm » lors de la compilation des sources du noyau de Linux. (Certains documents périmés le suggèrent).

[Note] Note

Lors de la compilation du dernier noyau de Linux sous un système Debian stable, l’utilisation des derniers outils rétroportés depuis la distribution Debian unstable peuvent être nécessaires.

[Note] Note

Le gestionnaire de modules dynamique du noyau (« dynamic kernel module support (DKMS) » est une nouvelle architecture indépendant de la distribution conçue pour permettre la mise à jour de modules individuels du noyau sans modifier l’ensemble du noyau. Ceci sera approuvé pour la maintenance des modules externes à l’arborescence du noyau pour squeeze. Ceci rend aussi très facile la reconstruction des modules après la mise à jour des noyaux.

9.7.5. Compiler les sources sur noyau : méthode standard de Debian

La méthode standard de Debian pour compiler les sources du noyau pourcréer un paquet du noyau personnalisé utilise make-kpkg(1). La documentation officielle se trouve dans (en fin de) « /usr/share/doc/kernel-package/README.gz ». Voir kernel-pkg.conf(5) et kernel-img.conf(5) pour la personnalisation.

Voici un exemple pour un système amd64.

# aptitude install linux-tree-<version>
$ cd /usr/src
$ tar -xjvf linux-source-<version>.tar.bz2
$ cd linux-source-<version>
$ cp /boot/config-<oldversion> .config
$ make menuconfig
 ...
$ make-kpkg clean
$ fakeroot make-kpkg --append_to_version -amd64 --initrd --revision=rev.01 kernel_image modules_image
$ cd ..
# dpkg -i linux-image*.deb

Redémarrez avec le nouveau noyau par « shutdown -r now ».

[Attention] Attention

Lorsque vous envisagez de créer un noyau non modulaire compilé uniquement pour une machine, lancez make-kpkg sans l’option « --initrd » car on n'utilise pas d'initrd. L’appel de « make oldconfig » et « make dep » n'est pas nécessaire car  make-kpkg kernel_image » les appelle.

9.7.6. Compiler les source de modules : méthode standard de Debian

La méthode standard de Debian pour créer et installer un paquet de modules personnalisé pour un paquet de noyau personnalisé utilise module-assistant(8) et module-source packages. Par exemple, ce qui suit construit la paquet du module de noyau unionfs et l’installe :

$ sudo aptitude install module-assistant
...
$ sudo aptitude install unionfs-source unionfs-tools unionfs-utils
$ sudo m-a update
$ sudo m-a prepare
$ sudo m-a auto-install unionfs
...
$ sudo apt-get autoremove

9.7.7. Compiler les sources du noyau : la méthode classique

Vous pouvez toujours construire le noyau Linux depuis des sources d'origine avec la méthode classique. Vous devez prendre en charge vous-même les détails de la configuration du système.

$ cd /usr/src
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-<version>.tar.bz2
$ tar -xjvf linux-<version>.tar.bz2
$ cd linux-<version>
$ cp /boot/config-<version> .config
$ make menuconfig
 ...
$ make dep; make bzImage
$ make modules
# cp ./arch/x86_64/boot/bzImage /boot/vmlinuz-<version>
# make modules_install
# depmod -a
# update-initramfs -c -k <version>

Configurez le chargeur initial comme suit :

  • Éditez « /etc/lilo.conf » et lancez « /sbin/lilo » si vous utilisez lilo.
  • Éditez « /boot/grub/menu.lst » si vous utilisez grub.

Redémarrez avec le nouveau noyau par « shutdown -r now ».

9.7.8. Pilotes de matériel non libres

La plupart des pilotes de matériel sont disponibles sous forme de logiciel libre et font partie du système Debian, il vous faudra peut-être charger quelques pilotes externes non libres pour prendre en charge certains matériels, tel un Winmodem, sur votre système.

Consulter les ressources pertinentes :

9.8. Système virtualisé

L’utilisation d'un système virtualisé nous permet de faire tourner simultanément plusieurs instances du système sur une plateforme unique.

9.8.1. Outils de virtualisation

Il a plusieurs paquets associés à la virtualization l’émulation du système sous Debian au-delà d'un simple chroot. Certains paquets vous facilitent la mise en place d'un tel système.

Tableau 9.23. Liste des outils de virtualisation

paquet popcon taille description
schroot * V:1.0, I:1.6 2460 outil spécialisé pour l’exécution d'un paquet binaire de Debian dans un chroot
sbuild * V:0.11, I:0.3 428 outil pour construire des paquets binaires de Debian depuis les sources Debian
pbuilder * V:0.5, I:2 1192 constructeur personnel de paquets pour des paquets Debian
debootstrap * V:1.6, I:12 268 amorcer un système Debian de base (écrit en sh)
cdebootstrap * V:0.3, I:2 116 amorcer le système Debian (écrit en C)
rootstrap * V:0.02, I:0.17 156 outil pour construire des images d'un système de fichiers de Linux complet
virt-manager * V:0.5, I:1.6 5908 Gestionnaire de machine virtuelle : application du gestionnaire de bureau pour la gestion des machines virtuelles
libvirt-bin * V:1.4, I:2 2240 programmes pour la bibliothèque libvirt
user-mode-linux * V:0.07, I:0.3 20540 User-mode Linux (noyau)
bochs * V:0.05, I:0.3 3280 Bochs :: émulateur PC IA-32
qemu * V:0.6, I:6 460 QEMU : émulateur de processeur générique rapide
qemu-system * V:2, I:3 38196 QEMU : binaires pour l’émulation d'un système complet
qemu-user * V:0.3, I:3 16716 QEMU : binaires pour l’émulation en mode utilisateur
qemu-utils * V:0.4, I:3 756 QEMU : utilitaires
qemu-kvm * V:1.3, I:2 4308 KVM : virtualisation complète sur les plateformes x86 ayant une virtualisation assistée par le matériel
virtualbox-ose * V:2, I:4 31728 VirtualBox : solution de virtualisation x86 sur i386 et amd64
xen-tools * V:0.2, I:1.9 1236 outil pour gérer le serveur virtuel XEN de debian
wine * V:1.7, I:13 96 Wine : implémentation de l’API Windows (suite standard)
dosbox * V:0.5, I:2 2460 DOSBox : émulateur x86 emulator avec graphisme Tandy/Herc/CGA/EGA/VGA/SVGA, son et DOS
dosemu * V:0.2, I:1.2 5940 DOSEMU : l’émulateur DOS de Linux
vzctl * V:0.7, I:1.1 1056 OpenVZ solution de virtualisation de serveur - outils de contrôle
vzquota * V:0.7, I:1.2 204 OpenVZ solution de virtualisation de serveur - outils de quota
lxc * V:0.05, I:0.2 744 Conteneurs Linux outils de l’espace utilisateur

Voir l’article de Wikipedia Comparaison de machines pour plateforme virtuelle pour une comparaison détaillées entre les différentes solutions de plateformes de virtualisation.

9.8.2. Étapes de virtualisation

[Note] Note

Certaines fonctionnalités décrites ici ne sont disponibles que dans squeeze.

[Note] Note

Les noyaux par défaut de Debian prennent en charge KVM depuis lenny.

La virtualisation met en œuvre plusieurs étapes :

9.8.3. Monter le fichier image du disque virtuel

Pour le fichier image disque brut, voir Section 8.3, « Les paramètres linguistiques (« locale ») ».

Pour d’autre fichiers d’images disques virtuels, vous pouvez utiliser qemu-nbd(8) pour les exporter en utilisant le protocole network block device et en les montant à l’aide du module nbd du noyau.

qemu-nbd(8) gère les formats de disques pris en compte par QEMU : QEMU gère les formats de disques suivants  raw, qcow2, qcow, vmdk, vdi, bochs, cow (user-mode Linux copy-on-write), parallels, dmg, cloop, vpc, vvfat (VFAT virtuelle) et host_device.

Le network block device peut gérer des partitions de la même manière que le périphérique de rebouclage (« loop device » (voir Section 10.2.3, « Monter le fichier image dur disque »). Vous pouvez monter la première partition de « disk.img » de la manière suivante :

# modprobe nbd max_part=16
# qemu-nbd -v -c /dev/nbd0 disk.img
...
# mkdir /mnt/part1
# mount /dev/nbd0p1 /mnt/part1
[Astuce] Astuce

Vous ne pouvez exporter que la première partition de « disk.img » en utilisant l’option « -P 1 » de qemu-nbd(8).

9.8.4. Système protégé (chroot)

chroot(8) propose la plupart des moyen simple de faire tourner simultanément plusieurs instances de l’environnement GNU/Linux sur un même système sans redémarrer.

[Attention] Attention

Les exemple ci-dessous supposent que le système père et le système chroot partagent tous les deux la même architecture de CPU.

Vous pouvez apprendre comment configurer et utiliser chroot(8) en lançant le programme pbuilder(8) sous script(1) comme suit :

$ sudo mkdir /sid-root
$ sudo pbuilder --create --no-targz --debug --buildplace /sid-root

Vous pouvez voir comment debootstrap(8) ou cdebootstrap(1) installent les données du système pour l’environnement sid sous « /sid-root ».

[Astuce] Astuce

debootstrap(8) ou cdebootstrap(1) sont utilisés pour installer Debian avec l’installateur Debian. Ils peuvent aussi être utilisés pour installer Debian sur un système sans utiliser de disque d'installation de Debian, mais en provenance d'une autre distribution GNU/Linux.

$ sudo pbuilder --login --no-targz  --debug --buildplace /sid-root

Vous pouvez voir ci-après comment un shell système tournant sous l’environnement sid est créé :

  1. Copier la configuration locale (« /etc/hosts », « /etc/hostname », « /etc/resolv.conf »)
  2. Monter le système de fichiers « /proc »
  3. Monter le système de fichiers « /dev/pts »
  4. Créer « /usr/sbin/policy-rc.d » qui existe toujours avec 101
  5. Lancer « chroot /sid-root bin/bash -c 'exec -a -bash bin/bash' »
[Note] Note

Certains programmes sous chroot peuvent demander l’accès à davantage de fichiers du système parent pour fonctionner que ceux que fournit pbuilder. Par exemple, on peut avoir besoin de monter liés (« bind-mount ») ou de copier « /sys », « /etc/passwd », « /etc/group », « /var/run/utmp », « /var/log/wtmp », etc.

[Note] Note

Le fichier « /usr/sbin/policy-rc.d » évite que des programmes démons ne soient démarrés automatiquement sur le système Debian. Voir « /usr/share/doc/sysv-rc/README.policy-rc.d.gz ».

[Astuce] Astuce

Les buts d'origine du paquet spécialisé d'environnement protégé (chroot) pbuilder est de construire une système protégé et de construire un paquet depuis cet environnement. C'est le système idéal à utiliser pour vérifier que les dépendances de construction d'un paquet sont correctes et pour s'assurer que les dépendances de construction erronées ou non nécessaires n'existent pas dans le paquet résultant.

[Astuce] Astuce

De même, le paquet schroot peut vous donner une l’idée de faire tourner un système chroot i386 sous le système parent amd64.

9.8.5. Systèmes de bureaux multiples

Je vous recommande d’utiliser QEMU ou VirtualBox sur un système Debian stable afin de faire tourner des système de bureau multiples en utilisant la virtualisation. Ceci vous permet de lancer des application de bureau de Debian unstable et testing sans les risques qui leur sont habituellement associés.

Comme QEMU pur est très lent, il est recommandé de l’accélérer avec KVM lorsque le sysètme hôte le prend en charge.

L’image disque virtuelle « virtdisk.qcow2 » qui contient le système Debian system pour QEMU peut être crée en utilisant debian-installer: Small CDs de la manière suivante :

$ wget http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso
$ qemu-img create -f qcow2 virtdisk.qcow2 5G
$ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256
...

Vous trouverez des astuces supplémentaires sur le wiki Debian : QEMU.

VirtualBox est fourni avec des outils ayant une interface graphique Qt et est assez intuitive. Son interface graphique et ses outils en ligne de commandes sont expliqués dans le Manuel de l’utilisateur de VirtualBox et le Manuel de l’utilisateur VirtualBox (PDF).

[Astuce] Astuce

Faire tourner d’autres distributions de GNU/Linux comme Ubuntu et Fedra sous une virtualisation est une bonne manière d’en étudier les astuces de configuration. D’autres systèmes d’exploitation propriétaires peuvent aussi tourner de manière agréable sous la virtualisation GNU/Linux.