Chapitre 3. Initialisation du système

Table des matières

3.1. Aperçu du processus d'amorçage du système
3.2. Étage 1 : le BIOS
3.3. Étage 2 : le chargeur initial
3.4. Étage 3 : le système mini-Debian
3.5. Étage 4 : le système Debian normal
3.5.1. Signification du niveau de fonctionnement (« runlevel »)
3.5.2. Configuration des niveaux de fonctionnement (« runlevel »)
3.5.3. Exemple de gestion de niveau de fonctionnement
3.5.4. Paramètre par défaut de chaque script init
3.5.5. Nom de machine (« hostname »)
3.5.6. Le système de fichiers
3.5.7. Initialisation de l’interface réseau
3.5.8. Initialisation des services réseau
3.5.9. Messages du système
3.5.10. Messages du noyau
3.5.11. Le système udev
3.5.12. Initialisation des modules du noyau

En tant tant qu'administrateur du système, il est sage que vous sachiez en gros comment le système Debian est démarré et configuré. Bien que les détails exacts figurent dans les fichiers sources des paquets installés et dans leurs documentations, c'est un peu pénible pour la plupart d'entre-nous.

J'ai fait de mon mieux pour fournir un aperçu rapide des points-clés du système Debian et de sa configuration pour vous servir de référence en me basant sur mes propres connaissances actuelles et antérieures et celles des autres. Comme le système Debian est une cible changeante, la situation sur le système peut avoir changé. Avant de faire une quelconque modification au système, vous devrez vous référer à la dernière documentation de chacun des paquets.

3.1. Aperçu du processus d'amorçage du système

Le système informatique subit plusieurs phases de processus d'amorçage (« boot strap process ») depuis l’événement de mise sous tension jusqu'à ce qu'il offre à l’utilisateur un système d'exploitation (OS) pleinement fonctionnel.

Pour des raison de simplicité, je limiterai la discussion à une plateforme PC typique avec l’installation par défaut.

Le processus d'amorçage typique est comme une fusée à quatre étages. Chaque étage de la fusée passe le contrôle du système à l’étage suivant.

Bien entendu, elles peuvent être configurées de manière différente. Par exemple, si vous avez compilé votre propre noyau, vous pouvez sautez l’étape avec le système mini-Debian. Ne supposez donc pas que c'est le cas sur votre système avant de l’avoir vérifié vous-même.

[Note] Note

Pour les plateformes autres que les PC traditionnels tels que les systèmes SUN ou Macintosh, le BIOS sur la ROM et la partition sur le disque peuvent être assez différents (Section 9.3.2, « Configuration de la partition du disque »). Veuillez dans ce cas rechercher ailleurs une documentation spécifique à votre plateforme.

3.2. Étage 1 : le BIOS

Le BIOS est la première étape du processus d'amorçage, il est est démarré par l’événement de mise sous tension. Le BIOS, qui est implanté sur une mémoire à lecture seule (ROM), est exécuté depuis l’adresse mémoire particulière à laquelle le pointeur de programme du processeur est initialisé par l’événement de mise sous tension.

Ce BIOS effectue l’initialisation de base du matériel (POST : autotest à la mise sous tension) (« power on self test ») et passe le contrôle du système à l’étape suivante que vous luis indiquez. Le BIOS est habituellement fourni avec le matériel.

L’écran de démarrage du BIOS indique en général quelle(s) touche(s) presser pour entrer dans l’écran de configuration du BIOS afin de paramétrer son comportement. Des touches courantes sont F1, F2, F10, Échap, Ins et Suppr. Si l’écran de démarrage de votre BIOS est caché par un bel écran graphique, vous pouvez essayer de presser différentes touches comme Échap pour désactiver cet écran. Ces touches dépendent beaucoup du matériel.

L’emplacement du matériel et la priorité du code lancé par le BIOS peuvent être définis depuis l’écran de configuration du BIOS. Typiquement, quelques secteurs de début du premier périphérique sélectionné qui est trouvé (disque dur, disquette, CD-ROM, …) sont chargés en mémoire et le code initial est exécuté. Ce code peut être l’un des suivants :

  • code du chargeur initial ;

  • code du noyau d'un OS de transition comme FreeDOS ;

  • code du système d'exploitation cible s'il peut tenir dans cet espace réduit.

Typiquement, le système est amorcé depuis la partition spécifiée du disque dur primaire. Les deux premiers secteurs du disque dur d'un PC traditionnel contiennent l’enregistrement maître d'amorçage (MBR). (« master boot record »). Les informations de partition du disque, y compris la sélection de l'amorçage, sont enregistrées à la fin de ce MBR. Le code initial du chargeur d'amorçage exécuté depuis le BIOS occupe le reste de ce MBR.

3.3. Étage 2 : le chargeur initial

Le chargeur initial (« boot loader ») est le deuxième étage du processus d'amorçage, il est lancé depuis le BIOS. Il charge en mémoire l’image du noyau du système et l’image initrd et leur passe le contrôle. Cette image mémoire initiale (« initrd image ») est l’image du système de fichiers racine et sa prise en compte dépend du chargeur initial utilisé.

Le système Debian utilise normalement le noyau de Linux comme noyau de système par défaut. L’image mémoire initiale de l’actuel noyau de Linux 2.6 est techniquement l’image initramfs (initial RAM filesystem : système de fichiers initial en mémoire). L’image initramfs est une archive cpio, compressée à l’aide de gzip des fichiers du système de fichiers racine.

L’installation par défaut du système Debian place, pour la plateforme PC, le premier étage du code du chargeur initial GRUB sur le MBR. Il existe de nombreux chargeurs d'amorçage et d'options de configuration possibles.

Tableau 3.1. Liste des chargeurs initiaux

chargeur initial paquet popcon taille initrd description
GRUB Legacy grub-legacy V:0.2, I:0.7 1741 Pris en charge assez intelligent pour comprendre le partitionnement du disque et des systèmes de fichiers tels que vfat, ext3, …. (par défaut sous lenny)
GRUB 2 grub-pc V:7, I:71 456 Pris en charge assez intelligent pour comprendre le partitionnement du disque et des systèmes de fichiers tels que vfat, ext3, ….
GRUB 2 grub-rescue-pc V:0.03, I:0.4 3889 Pris en charge images de secours amorçables de GRUB 2 (CD et disquettes) (versions PC/BIOS)
Lilo lilo V:0.2, I:1.5 594 Pris en charge réside sur les emplacements des secteurs de données du disque dur. (Ancien)
Isolinux syslinux V:1.5, I:8 172 Pris en charge il comprend le système de fichiers ISO9660. C'est utilisé pour le CD d'amorçage CD.
Syslinux syslinux V:1.5, I:8 172 Pris en charge il comprend le système de fichiers MSDOS (FAT). Il est utilisé par la disquette d'amorçage.
Loadlin loadlin V:0.03, I:0.2 144 Pris en charge un nouveau système est démarré depuis le système FreeDOS/MSDOS.
MBR par Neil Turton mbr V:0.3, I:3 92 Non pris en charge c'est un logiciel libre qui se substitue au MBR de MSDOS. Il ne comprend que les partitions sur disques.

[Avertissement] Avertissement

Ne jouez pas avec les chargeurs d'amorçage sans avoir un support de secours amorçable (CD ou disquette) créé à partir des images du paquet grub-rescue-pc. Il vous permettra de démarrer votre système sans même avoir de chargeur initial fonctionnel sur le disque dur.

Le menu de configuration de GRUB Legacy est situé en « /boot/grub/menu.lst ». Il peut, par exemple, avoir les entrées suivantes :

title           Debian GNU/Linux
root            (hd0,2)
kernel          /vmlinuz root=/dev/hda3 ro
initrd          /initrd.img

Le fichier de menu de configuration de GRUB 2 est situé en  /boot/grub/grub.cfg ». Il est automatiquement créé par « /usr/sbin/update-grub » depuis les modèles situés dans « /etc/grub.d/* » et les paramètres situés en « /etc/default/grub ». Il peut, par exemple, avoir les entrées suivantes :

menuentry "Debian GNU/Linux" {
        set root=(hd0,3)
        linux /vmlinuz root=/dev/hda3
        initrd /initrd.img
}

Les paramètres de GRUB pour ces exemples ont la signification suivantes :

Tableau 3.2. Signification des paramètres de GRUB

Paramètres de GRUB signification
root utiliser la 3ème partition du premier disque en la désignant par « (hd0,2) » avec GRUB legacy ou par « (hd0,3) » dans GRUB 2
kernel utiliser le noyau se trouvant en « /vmlinuz » avec le paramètre du noyau : « root=/dev/hda3 ro »
initrd utiliser l’image initrd/initramfs située en « /initrd.img »

[Note] Note

La valeur du numéro de partition utilisé par le programme « GRUB legacy » est inférieure d'un unité à celle normalement utilisée par le noyau de Linux et les outils utilitaires. Le programme GRUB 2 corrige ce problème.

[Astuce] Astuce

Un UUID (consultez Section 9.3.3, « Accès à une partition en utilisant l’UUID ») peut être utilisé pour identifier un périphérique spécial par bloc plutôt que son nom de fichier comme « /dev/hda3 », par exemple, « root=UUID=81b289d5-4341-4003-9602-e254a17ac232 ro ».

[Astuce] Astuce

Vous pouvez démarrer un chargeur d'amorçage depuis un autre chargeur d'amorçage en utilisant une technique appelée chargement en chaîne (« chain loading »).

Consultez « info grub » et grub-install(8).

3.4. Étage 3 : le système mini-Debian

Le système mini-Debian est la troisième étape du processus d'amorçage lancé par le chargeur d'amorçage. Elle lance le noyau du système avec son système de fichiers racine en mémoire. C'est une étape préparatoire facultative du processus de démarrage.

[Note] Note

Le terme « système mini-Debian » est utilisé par l’auteur pour décrire dans ce document cette 3ème étape du processus de démarrage. On désigne souvent ce système par système initrd. Un système semblable en mémoire est utilisé par l’installateur Debian.

Le script « /init » est exécuté en tant que premier programme sur le système de fichiers racine en mémoire. C'est un script de l’interpréteur de commandes qui initialise le noyau dans l’espace utilisateur et passe le contrôle au reste de l’étage. Ce système mini-Debian offre au système d'amorçage une flexibilité comme l’ajout de modules du noyau avant le processus de démarrage principal ou le montage du système de fichiers racines en mode chiffré.

Vous pouvez interrompre cette partie du processus d'amorçage afin d'obtenir l’invite de l’interpréteur de l’administrateur en indiquant « break=init » etc. comme paramètre de démarrage du noyau. Consultez le script « /init » pour d'autres conditions d'interruption. Cet environnement d'interpréteur de commandes est suffisamment sophistiqué pour effectuer une bonne inspection du matériel de votre machine.

Les commandes disponibles avec ce système mini-Debian sont des commandes réduites et sont principalement fournies par un outil GNU appelé busybox(1).

[Attention] Attention

Vous devrez utiliser l’option « -n » de la commande mount lorsque vous êtes sur le système de fichiers en lecture seule.

3.5. Étage 4 : le système Debian normal

Tableau 3.3. Voici une liste d'utilitaires d'amorçage initial pour le système Debian :

paquet popcon taille description
initscripts V:89, I:99 268 scripts pour initialiser et arrêter le système
sysvinit V:87, I:99 236 Utilitaires init(8) de type System-V
sysv-rc V:90, I:99 237 Mécanisme de changement de niveau de fonctionnement de type System-V
sysvinit-utils V:89, I:99 208 Utilitaires de type System-V (startpar(8), bootlogd(8), …)
lsb-base V:89, I:99 69 Linux Standard Base 3.2 fonctionnalité de script d'initialisation
insserv V:65, I:74 213 outil pour organiser la séquence de démarrage en utilisant les dépendances du script LSB de init.d
upstart V:0.11, I:0.16 696 démon init(8) basé sur des événements pour la concurrence (remplacement de sysvinit)
readahead-fedora V:0.5, I:0.8 87 readahead(8) pour précharger les fichiers nécessaires au démarrage ;
uswsusp V:1.4, I:6 514 outil permettant d'utiliser le programme de l’espace utilisateur de mise en veille fourni par Linux
kexec-tools V:0.2, I:0.7 279 outil kexec pour le redémarrage par kexec(8) (redémarrage à chaud)
bootchart V:0.05, I:0.5 132 analyseur des performances du processus de démarrage
bootchart-view V:0.05, I:0.3 280 analyseur des performances du processus de démarrage (virtualisation)
mingetty V:0.15, I:0.3 64 getty(8) en mode console uniquement
mgetty V:0.11, I:0.4 416 modem intelligent (« smart modem ») remplaçant de getty(8)

[Astuce] Astuce

Tous les mécanismes de redémarrage sont compatibles par l’intermédiaire des scripts « /etc/init.d/rc », « /etc/init.d/rcS », « /usr/sbin/update-rc.d » et « /usr/sbin/invoke-rc.d ».

[Astuce] Astuce

Le paquet readahead-fedora peut accélérer le démarrage d'un système équipé d'une quantité suffisante de DRAM.

Le système Debian normal est le quatrième étage du processus d'amorçage, il est lancé par le système mini-Debian. Le noyau du système mini-Debian continue de tourner dans cet environnement. Le système de fichiers racine passe de celui en mémoire à celui, réel, lu sur le disque dur.

Le programme « /sbin/init » est exécuté en tant que premier programme et réalise le processus principal d'amorçage. Debian utilise normalement le schéma sysvinit traditionnel à l’aide du paquet sysv-rc. Consultez init(8), inittab(5) et « /usr/share/doc/sysv-rc/README.runlevels.gz » pour une explication exacte. Le processus d'amorçage principal effectue essentiellement ce qui suit :

  1. Le système Debian passe au niveau de fonctionnement N (« runlevel N ») (aucun) pour initialiser le système selon la description de « /etc/inittab ».

  2. Le système Debian passe au niveau de fonctionnement S pour initialiser le système en mode utilisateur unique afin de terminer l’initialisation matérielle, etc.

  3. Pour démarrer les services du système, le système Debian passe alors à l’un des niveaux de fonctionnement multi-utilisateurs (2 à 5) indiqués.

Le niveau de fonctionnement initial utilisé pour le mode multi-utilisateurs est indiqué par le paramètre de démarrage « init= » du noyau ou par la ligne « initdefault » du fichier « /etc/inittab ». Le système Debian tel qu'il est installé démarre au niveau de fonctionnement 2.

Tous les fichiers de scripts réels exécutés par le système init sont situés dans le répertoire « /etc/init.d/ ».

3.5.1. Signification du niveau de fonctionnement (« runlevel »)

Chaque niveau de fonctionnement utilise un répertoire pour sa configuration, il possède la signification particulière décrite ci-dessous :

Tableau 3.4. Liste des niveaux de fonctionnement et description de leur utilisation

niveau de fonctionnement répertoire description de l’utilisation du niveau de fonctionnement (runlevel)
N aucun niveau d'amorçage du système (NONE) (pas de répertoire « /etc/rcN.d/ »)
0 /etc/rc0.d/ arrêter le système
S /etc/rcS.d/ mode utilisateur unique lors du démarrage (alias : « s »)
1 /etc/rc1.d/ mode utilisateur unique commuté depuis le mode multi-utilisateurs
2 /etc/rc2.d/ mode multi-utilisateurs
3 /etc/rc3.d/ ,,
4 /etc/rc4.d/ ,,
5 /etc/rc5.d/ ,,
6 /etc/rc6.d/ redémarrer le système
7 /etc/rc7.d/ mode multi-utilisateurs valable mais normalement non utilisé
8 /etc/rc8.d/ ,,
9 /etc/rc9.d/ ,,

Vous pouvez aussi changer de niveau de fonctionnement depuis la console, par exemple 4 en faisant ce qui suit :

$ sudo telinit 4
[Attention] Attention

Le système Debian n'assigne pas par avance de différence spéciale de signification entre les niveaux de fonctionnement compris entre de 2 et 5.. L’administrateur du système d'un système Debian peut modifier ce comportement. (C'est-à-dire que Debian n'est ni Red Hat Linux, ni Solaris de Sun Microsystems, ni HP-UX de Hewlett Packard, ni AIX d'IBM, ni …)

[Attention] Attention

Le système Debian ne remplit pas les répertoires des niveaux de fonctionnement entre 7 et 9 lors de l’installation du paquet. Les variantes d’UNIX traditionnelles n'utilisent pas ces niveaux de fonctionnement.

3.5.2. Configuration des niveaux de fonctionnement (« runlevel »)

Lorsque la commande init(8) ou telinit(8) arrive au niveau « <n> », le système exécute essentiellement les scripts d'initialisation comme suit.

  1. Les noms de scripts de « /etc/rc<n>.d/ » commençant par un « K » sont exécutés dans l’ordre alphabétique avec le paramètre unique « stop » (arrêt des services).

  2. Les noms de scripts de « /etc/rc<n>.d/ » commençant par un « S » sont exécutés dans l’ordre alphabétique avec le paramètre unique « start » (lancement des services).

Par exemple, si vous avez les liens « S10sysklogd » et « S20exim4 » dans un répertoire de niveau de fonctionnement, « S10sysklogd » qui est lié symboliquement à « ../init.d/sysklogd » sera lancé avant « S20exim4 » qui est lié symboliquement à « ../init.d/exim4 ».

Ce simple système séquentiel d'initialisation est le système de démarrage classique de type System V tel qu'il a été utilisé jusqu'au système Debian Lenny.

Les systèmes Debian récents sont optimisés pour exécuter les scripts simultanément.

[Avertissement] Avertissement

Faire des modifications aux liens symboliques se trouvant dans « /etc/rcS.d/ » est déconseillé à moins d'en savoir davantage que le responsable du paquet.

3.5.3. Exemple de gestion de niveau de fonctionnement

Définissons, par exemple, définissons un niveau de fonctionnement du système comme Red Hat Linux de la manière suivante :

  • init démarre le système au niveau 3 qui est la valeur par défaut ;

  • init ne démarre pas gdm3(1) aux niveaux 0,1,2,6 ;

  • init démarre gdm3(1) aux niveaux 3,4,5 ;

Cela peut être fait en éditant le fichier « /etc/inittab » afin de modifier les niveaux de lancement et en utilisant des outils conviviaux de gestion des niveaux de fonctionnement tels que sysv-rc-conf ou bum pour éditer le niveau de fonctionnement. Si vous ne devez utiliser que la ligne de commande, voici comment faire (après l’installation par défaut du paquet gdm3 et sa sélection comme gestionnaire d'affichage).

# cd /etc/rc2.d ; mv S21gdm3 K21gdm3
# cd /etc ; perl -i -p -e 's/^id:.:/id:3:/' inittab

Veuillez noter que le fichier « /etc/X11/default-display-manager » est vérifié lors du démarrage des démon de gestion d'affichage : xdm, gdm3, kdm, et wdm.

[Note] Note

Vous pouvez toujours lancer X depuis l’interpréteur de commandes de n'importe quelle console avec la commande startx(1).

3.5.4. Paramètre par défaut de chaque script init

Le paramètre par défaut de chacun des scripts d'initialisation de « /etc/init.d/ » est donné par le fichier correspondant se trouvant dans « /etc/default/ » qui ne contient que des assignations de variables d'environnement. Ce choix de nom de répertoire est spécifique au système Debian. Il est en gros l’équivalent du répertoire « /etc/sysconfig » qu'on trouve dans Red Hat Linux et d'autres distributions. Par exemple, « /etc/default/cron » peut être utilisé pour contrôler la manière dont fonctionne « /etc/init.d/cron ».

Le fichier « /etc/default/rcS » peut être utilisé pour personnaliser les valeurs par défaut au moment du démarrage demotd(5), sulogin(8), etc.

Si vous ne pouvez pas obtenir le comportement que vous souhaitez en modifiant ces variables, alors vous pouvez modifier les scripts init eux-mêmes. Ce sont des fichiers de configuration qui peuvent être édités par les administrateurs du système.

3.5.5. Nom de machine (« hostname »)

Le noyau conserve le nom de machine du système. Le script d'initialisation du niveau de fonctionnement S qui est lié symboliquement à « /etc/init.d/hostname.sh » définit le nom de machine « hostname » au moment du démarrage (en utilisant la commande hostname) avec le nom qui est enregistré dans « /etc/hostname ». Ce fichier ne devra contenirque le nom de machine du système et pas un nom de domaine pleinement qualifié.

Pour afficher le nom de la machine utilisée, lancez la commande hostname (1) sans paramètre.

3.5.6. Le système de fichiers

Alors que le système de fichiers racine est monté par le noyau lors de son démarrage, les autres systèmes de fichiers sont montés dans le niveau de fonctionnement (runlevel) S à l’aide des scripts d'initialisation suivants :

  • « `/etc/init.d/mountkernfs.sh » pour les systèmes de fichiers du noyau se trouvant en « /proc », « /sys », etc.

  • « `/etc/init.d/mountdevsubfs.sh » pour les systèmes de fichiers virtuels de « /dev »

  • « `/etc/init.d/mountall.sh » pour les systèmes de fichiers normaux qui utilisent « /etc /fstab »

  • « `/etc/init.d/mountnfs.sh » pour les systèmes de fichiers à accès par le réseau en utilisant « /etc/fstab »

Les options de montage des systèmes de fichiers du noyau sont configurés dans « /etc/default/rcS ». Consultez rcS(5).

Les options de montage du système de fichiers sont définies dans « /etc/fstab ». Consultez Section 9.3.6, « Optimisation du système de fichiers à l’aide des options de montage ».

[Note] Note

Le montage effectif des systèmes de fichiers à accès par le réseau attendra le démarrage de l’interface réseau.

[Avertissement] Avertissement

Une fois de tous les systèmes de fichiers montés, les fichiers temporaires se trouvant dans « /tmp », « /var/lock » et « /var/run » sont effacés lors de chaque démarrage du système.

3.5.7. Initialisation de l’interface réseau

Les interfaces réseau sont initialisées dans le niveau de fonctionnement S par le script d'initialisation ayant un lien symbolique vers « /etc/init.d/ifupdown-clean » et « /etc/init.d/ifupdown ». Consultez Chapitre 5, Configuration du réseau pour la manière de les configurer.

3.5.8. Initialisation des services réseau

De nombreux services réseau (consultez Chapitre 6, Applications réseau) sont directement démarrés en tant que démons sous le mode multi-utilisateurs lors du démarrage du système par le script d'initialisation, par exemple « /etc/rc2.d/S20exim4 » (pour RUNLEVEL=2) qui est un lien symbolique vers « /etc/init.d/exim4 ».

Certains services réseau peuvent être démarrés à la demande en utilisant le super-serveur inetd (ou un équivalent). inetd est lancé lors au démarrage du système par « /etc/rc2.d/S20inetd » (pour RUNLEVEL=2) qui est un lien symbolique vers « /etc/init.d/inetd ». Fondamentalement, inetd permet à un démon en cours de fonctionnement d'en appeler plusieurs autres, ce qui réduit la charge du système.

Lorsqu'une requête pour un service arrive au super-serveur inetd, le protocole et le service sont identifiés par une recherche dans les bases de données se trouvant dans « /etc/protocols » et « /etc/services ». inetd recherche ensuite un service Internet normal dans la base de données « /etc/inetd.conf » ou un service basé sur Open Network Computing Remote Procedure Call (ONC RPC)/Sun RPC dans « /etc/rpc.conf ».

Parfois, inetd ne lance pas directement le serveur voulu mais exécute le programme d'enveloppe du démon TCP/IP tcpd(8) avec, en paramètre dans « /etc/inetd.conf », le service demandé. Dans ce cas, tcpd lance le serveur approprié après avoir enregistré la requête dans le journal et avoir fait quelques autres vérifications à l’aide de « /etc/hosts.deny » et « /etc/hosts.allow ».

Afin d'assurer la sécurité du système, désactivez autant de services réseau que possible. Consultez Section 4.6.4, « Restreindre l’accès à certains services du serveur ».

Consultez inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8), hosts_access(5), hosts_options(5), rpcinfo(8), portmap(8) et « /usr/share/doc/portmap/portmapper.txt.gz ».

3.5.9. Messages du système

Les messages du système peuvent être personnalisés au moyen de « /etc/default/rsyslog » et « /etc/rsyslog.conf » à la fois pour le fichier journal et pour l’affichage à l’écran. Consultez rsyslogd(8) et rsyslog.conf(5). Consultez aussi Section 9.2.2, « Analyseur de journaux ».

3.5.10. Messages du noyau

Les messages du noyau peuvent être personnalisés au moyen de « /etc/init.d/klogd » à la fois pour le fichier journal et l’affichage à l’écran. Positionnez « KLOGD='-c 3' » dans ce fichier et lancez « /etc/init.d/klogd restart ». Consultez klogd(8).

Vous pouvez modifier directement le niveau d'erreur des messages de la manière suivante :

# dmesg -n3

Tableau 3.5. Liste des niveaux d'erreur du noyau

valeur du niveau d'erreur nom du niveau d'erreur signification
0 KERN_EMERG le système est inutilisable
1 KERN_ALERT une action doit être entreprise immédiatement
2 KERN_CRIT conditions critiques
3 KERN_ERR conditions d'erreur
4 KERN_WARNING conditions d'avertissement
5 KERN_NOTICE condition normale mais significative
6 KERN_INFO information
7 KERN_DEBUG messages du niveau de débogage

3.5.11. Le système udev

Pour le noyau Linux 2.6, le système udev fournit un mécanisme de découverte et d'initialisation automatiques du matériel (consultez udev(7)). Lors de la découverte de chaque périphérique par le noyau, le système udev lance un processus utilisateur qui utilise les informations provenant du système de fichiers sysfs (consultez Section 1.2.12, « procfs et sysfs »), charge les modules du noyau nécessaires pour sa prise en charge en utilisant le programme modprobe(8) (consultez Section 3.5.12, « Initialisation des modules du noyau ») et crée les nœuds de périphériques en conséquences.

[Astuce] Astuce

Si « /lib/modules/<kernel-version>/modules.dep » n'a pas été proprement créé par depmod(8) pour quelque raison, les modules peuvent ne pas être chargés par le système udev comme on le souhaiterait. Lancez « depmod -a » pour corriger ce problème.

Le nom des nœuds de périphériques peut être configuré par les fichiers de règle de udev se trouvant dans « /etc/udev/rules.d/ ». Les règles actuelles par défaut tendent à créer des noms générés dynamiquement ce qui donne des noms de périphériques non statiques excepté pour les périphériques cd et réseau. En ajoutant vos règles personnalisées semblables à celles existantes pour les périphériques cd et réseau, vous pouvez aussi créer des noms de périphériques statiques pour les autres périphériques comme les clés USB. Consultez « Écrire des règles udev » ou « /usr/share/doc/udev/writing_udev_rules/index.html ».

Comme le système udev est une cible quelque peu mouvante, je laisse les détails pour d'autres documentations et je ne donnerai ici qu'un minimum d'informations.

[Astuce] Astuce

Les nœuds de périphériques n'ont pas besoin d'être statiques pour les règles de montage se trouvant dans « /etc/fstab ». Vous pouvez utiliser UUID à la place de leur nom de périphérique tel que« /dev/sda » pour monter les périphériques. Consultez Section 9.3.3, « Accès à une partition en utilisant l’UUID ».

3.5.12. Initialisation des modules du noyau

Le programme modprobe(8) nous permet de configurer, depuis un processus utilisateur, un noyau Linux en cours d'exécution en ajoutant ou en supprimant des modules du noyau. Le système udev (consultez Section 3.5.11, « Le système udev ») en automatise l’appel afin d'aider à l’initialisation du module du noyau.

Il existe des modules non liés au matériel et des modules qui pilotent des éléments matériels particuliers comme les suivants qui demandent à être préchargés en les déclarant dans le fichier « /etc/modules » (consultez modules(5)).

Les fichiers de configuration du programme modprobe(8) se trouvent dans le répertoire « /etc/modprobes.d/ » comme c'est expliqué dans modprobe.conf(5). (Si vous souhaitez que certains modules du noyau ne soient pas chargés automatiquement, vous pouvez les mettre en liste noire dans le fichier« /etc/modprobes.d/blacklist »).

Le fichier « /lib/modules/<version>/modules.dep » généré par le programme depmod(8) décrit les dépendances des modules utilisés par le programme modprobe(8).

[Note] Note

Si vous rencontrez des problèmes de chargement de modules lors du chargement des modules au démarrage ou avec modprobe(8), « depmod -a » peut résoudre ces problèmes en reconstruisant « modules.dep ».

Le programme modinfo(8) affiche des informations concernant les modules du noyau.

Le programme lsmod(8) formate de manière agréable le contenu de « /proc/modules », affichant quels sont les modules du noyau actuellement chargés.

[Astuce] Astuce

Vous pouvez identifier le matériel exact installé sur votre système. Consultez Section 9.6.3, « Identification du matériel ».

[Astuce] Astuce

Vous pouvez configurer le matériel au moment du démarrage pour activer les fonctionnalités désirées de ce matériel. Consultez Section 9.6.4, « Configuration matérielle ».

[Astuce] Astuce

Vous pouvez ajouter la prise en charge de votre périphérique en recompilant le noyau. Consultez Section 9.7, « Le noyau ».