Préparation LPI - Exam 101

Ce document couvre la préparation à l'examen LPI 101, axé sur la détermination et la configuration des périphériques sous Linux. Il s'adresse aux étudiants et professionnels souhaitant maîtriser la gestion matérielle, la configuration des ressources, ainsi que l'utilisation des outils et commandes liés aux périphériques et modules du noyau Linux.

D'après le document Préparation LPI - Exam 101

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Préparation LPI - Exam 101

Computer Systems and Hardware Configuration · PDF · 56 pages · 2005

Afficher l'aperçu du document

Consulter le document original →

Ce document couvre la préparation à l'examen LPI 101, axé sur la détermination et la configuration des périphériques sous Linux. Il s'adresse aux étudiants et professionnels souhaitant maîtriser la gestion matérielle, la configuration des ressources, ainsi que l'utilisation des outils et commandes liés aux périphériques et modules du noyau Linux.

Généralités sur le BIOS et la gestion des périphériques

Le BIOS (Basic Input/Output System) est responsable de la recherche des périphériques présents au démarrage de la machine. Il effectue un POST (Power On Self Test) pour tester les composants matériels. En cas de problème, une séquence de bips ou un message vocal indique l'origine du dysfonctionnement.

Linux lit les informations du BIOS au démarrage mais ne s'en sert plus par la suite. L'accès au BIOS varie selon les constructeurs, les touches les plus courantes étant F1, F2 ou Del.

Le BIOS permet également d'activer ou de désactiver des périphériques internes (carte, clavier, disques, etc.) pour privilégier l'utilisation de périphériques externes connectés à la carte mère.

Ressources matérielles associées aux périphériques

IRQ (Interrupt Request)

Une IRQ est une requête d'interruption envoyée au CPU pour signaler qu'un périphérique a besoin d'accéder au processeur. Sur une architecture x86, il existe jusqu'à 16 IRQs (de 0 à 15), tandis que sur x86_64, plus de 16 IRQs sont possibles.

L'affectation des IRQs utilisées est consultable dans le fichier /proc/interrupts.

IRQUsage
0Timer système
1Clavier
2Cascade vers IRQs 8 à 15
3Second port RS-232 (COM2)
4Premier port RS-232 (COM1)
5Carte son ou second port parallèle (LPT2)
6Lecteur disquette
7Premier port parallèle (LPT1)
8Real time clock
14Contrôleur ATA primaire (/dev/hda et /dev/hdb)
15Contrôleur ATA secondaire (/dev/hdc et /dev/hdd)

Exemple d'affichage du fichier /proc/interrupts :

           CPU0
  0:    5650947   IO-APIC-edge      timer
  1:       5835   IO-APIC-edge      i8042
  8:          1   IO-APIC-edge      rtc0
 14:     45592   IO-APIC-edge      ata_piix
 15:         0   IO-APIC-edge      ata_piix
 16:    176890   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2, i915, Intel ICH6, eth0
...

Adresses d'E/S (Input/Output address)

Les adresses d'E/S correspondent à des zones mémoire réservées à chaque périphérique pour ses opérations d'entrée/sortie. Leur affectation est consultable dans /proc/ioports.

Exemples d'adresses d'E/S avec périphériques associés :

  • 03F8 - /dev/ttyS0 - IRQ 4 - COM 1
  • 02F8 - /dev/ttyS1 - IRQ 3 - COM 2
  • 0378-037F - /dev/lp0 - IRQ 7 - LPT1
  • 03F0-03F7 - /dev/fd0 - IRQ 6 - floppy a:

Extrait du fichier /proc/ioports :

0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0060-0060 : keyboard
0170-0177 : ata_piix
01f0-01f7 : ata_piix
...

DMA (Direct Memory Access)

Le DMA permet à certains périphériques, notamment de masse, d'accéder directement à la mémoire sans passer par le CPU, améliorant ainsi les performances. L'affectation des canaux DMA est visible dans /proc/dma.

Exemple :

$ cat /proc/dma
 4: cascade

Périphériques coldplug et hotplug

Un périphérique coldplug ne peut être ajouté ou retiré qu'à l'arrêt du système. Exemples : CPU, mémoire, cartes PCI, ports RS-232 ou parallèle.

Certains bus PCI supportent l'échange à chaud, mais la majorité des périphériques PCI sont coldplug.

Un périphérique hotplug peut être ajouté ou retiré à chaud, sans arrêter le système. Exemples : USB, Firewire, eSATA.

Pour gérer dynamiquement ces périphériques, plusieurs outils et fonctionnalités sont utilisés :

  • HAL (Hardware Abstraction Layer)
  • sysfs
  • dbus
  • udev

HAL (Hardware Abstraction Layer)

HAL est une couche d'abstraction matérielle. Le démon hald maintient en temps réel une base de données des périphériques en cours d'utilisation. Ces informations sont transmises à l'espace utilisateur via le bus DBUS.

DBUS

DBUS est un mécanisme de communication inter-processus interne à une machine, permettant aux applications de communiquer et de lancer des services ou applications lorsque nécessaire.

Il supporte deux types de communication : point à point et publication/souscription.

Il existe deux démons DBUS :

  • Daemon système : gère les messages système (ex. : nouveau périphérique connecté)
  • Daemon utilisateur : gère la communication inter-processus entre applications utilisateur

DBUS dispose d'API pour plusieurs langages : Glib, Python, Java, QT4, Perl, C++, PHP, Ruby.

Les composants principaux sont :

  • libdbus : bibliothèque de communication point à point, nécessitant un parser XML (libxml ou expat)
  • messagebus : démon DBUS

Plusieurs bus peuvent fonctionner simultanément, identifiés par un nom de fichier socket UNIX ou un port TCP/IP.

Le démarrage de DBUS se fait via la commande dbus-launch qui lance dbus-daemon. Les fichiers de configuration sont en XML :

  • /etc/dbus-1/system.conf pour le démon système
  • /etc/dbus-1/session.conf pour le démon utilisateur

Un script d'initialisation est disponible : /etc/init.d/messagebus.

sysfs

sysfs est un pseudo-système de fichiers contenant des informations sur le matériel et les périphériques, accessible depuis l'espace utilisateur. Il est monté sur /sys et disponible depuis les noyaux Linux 2.6.

Les périphériques sont organisés en une arborescence permettant d'associer périphériques et pilotes indépendamment des processus. sysfs est une extension de procfs.

procfs

procfs (process filesystem) est un pseudo-système de fichiers contenant des informations sur les processus gérés par le noyau. Il est monté sur /proc et contient un répertoire par processus actif.

À partir du noyau 2.6, certaines informations non liées à un processus particulier sont déplacées vers sysfs.

udev

udev génère dynamiquement les fichiers de périphériques rendant les périphériques accessibles à l'espace utilisateur. Il remplace les fichiers statiques présents dans /dev sur les noyaux à partir de la version 2.6.

udev est une extension de devfs, mais contrairement à devfs, il fonctionne entièrement dans l'espace utilisateur.

udev peut être configuré via des règles dans /etc/udev/rules.d/. Il écoute les messages du noyau (uevents) et peut communiquer avec des applications via hal-dbus.

Exemple d'utilisation : ouverture automatique du dossier d'une clé USB.

Standards d'accès aux informations matérielles

  • DMI (Desktop Management Interface) : premier standard pour la gestion des informations matérielles sur serveurs, portables ou desktops. Développé par la Distributed Management Task Force (DMTF). Stocke les informations issues du BIOS dans une table standardisée accessible via l'outil dmidecode.
  • CIM (Common Information Model) : spécifications permettant aux fabricants d'échanger des informations matérielles et logicielles.
  • WBEM (Web-Based Enterprise Management) : standard internet d'échange de données entre matériels et applications hétérogènes.
  • WS-Management : protocole intégré à WBEM.
  • DASH (Desktop and mobile Architecture for System Hardware) : successeur de DMI, exploitant WS-Management pour la gestion à distance des ressources matérielles mobiles et desktop.

Utilitaires d'inventaire des ressources matérielles

  • dmidecode : décodeur de table DMI affichant les composants matériels, numéros de série, version du BIOS. N'affiche que les informations issues du BIOS.
  • biosdecode : décodeur complet du BIOS, moins lisible que dmidecode.
  • vpddecode : affiche les informations vitales des systèmes IBM (nécessite matériel IBM).
  • ownership : affiche les informations d'ownership des systèmes Compaq (fonctionne uniquement avec matériel IBM).
  • lshw (Hardware Lister) : inventorie le matériel, fonctionne sous Linux et plusieurs architectures. Propose plusieurs formats de sortie (GUI, html, xml, short, businfo, class). Nécessite les droits root pour accéder aux informations DMI.
  • hwinfo : outil de bas niveau pour inventorier les éléments matériels, base pour lshw. Permet de cibler un type de matériel avec l'option --hwitem.
  • lspci : affiche les périphériques attachés aux bus PCI. Options : -v, -vv (plus verbeux), -n (affichage numérique), -t (affichage arborescent des dépendances).
  • lsusb : affiche les périphériques USB. Nécessite le support de /proc/bus/usb (noyau ≥ 2.3.15). Options : -v, -vv.

Exemple d'utilisation de lspci

$ lspci
00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
...

Exemple d'utilisation de lsusb

$ lsusb
Bus 002 Device 002: ID 413c:3012 Dell Computer Corp. Optical Wheel Mouse
Bus 003 Device 002: ID 413c:8103 Dell Computer Corp. Wireless 350 Bluetooth
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Modules noyau Linux

Le noyau Linux est modulaire. Les modules se trouvent dans /lib/modules.

Commandes associées :

  • lsmod : affiche la liste et l'état des modules chargés (externes uniquement), basé sur /proc/modules.
  • modinfo : affiche des informations détaillées sur un module (nom ou fichier).
  • insmod : charge un module en mémoire (nécessite le fichier module complet, ne gère pas les dépendances).
  • modprobe : charge ou retire un module en gérant les dépendances (utilise modules.dep et fichiers de configuration).
  • rmmod : décharge un module de la mémoire (ne gère pas les dépendances).

Exemple d'affichage avec lsmod

$ lsmod
Module                  Size  Used by
ipw2200               140292  0
libipw                 43148  1 ipw2200
aes_generic            27484  1 aes_i586
snd_seq_dummy           2656  0
ip_tables              11692  1 iptable_filter

Exemple d'utilisation de modinfo

$ modinfo ipw2200
filename:       /lib/modules/2.6.31-19-generic/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
license:        GPL
author:         Copyright(c) 2003-2006 Intel Corporation
version:        1.2.2kmprq
description:    Intel(R) PRO/Wireless 2200/2915 Network Driver
srcversion:     99130395C362697D0971661

Commande modprobe avec options

  • -v : verbose
  • -C fichier : spécifie un fichier de configuration différent
  • -c : affiche la configuration actuelle
  • -n (dry-run) : simule les actions sans les exécuter
  • -r : retire un module (avec ses dépendants inutilisés)
  • -f : force l'installation même en cas d'incompatibilité
  • -l : liste les modules avec caractères jokers

Exemple :

$ modprobe -l ipw*
kernel/drivers/char/pcmcia/ipwireless/ipwireless.ko
kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
kernel/drivers/usb/serial/ipw.ko

Commande rmmod

Permet de décharger un module. Ne gère pas les dépendances. Options :

  • -v : verbose
  • -f : force le retrait même si le module est utilisé (dangereux)
  • -w : attend que le module soit libéré avant de le décharger

Configuration des disques durs

Les disques ATA sont généralement au nombre de 4 (1 master et 1 slave par contrôleur). Ils sont détectés par le BIOS et nommés :

  • /dev/hda : master du premier contrôleur
  • /dev/hdb : slave du premier contrôleur
  • /dev/hdc : master du second contrôleur
  • /dev/hdd : slave du second contrôleur

Les disques SATA sont détectés par les BIOS récents et pris en charge comme des périphériques SCSI sous Linux.

Glossaire des termes clés

  • BIOS : Basic Input/Output System, firmware initialisant le matériel au démarrage.
  • POST : Power On Self Test, test matériel au démarrage.
  • IRQ : Interrupt Request, signal d'interruption au CPU.
  • DMA : Direct Memory Access, accès direct à la mémoire par un périphérique.
  • coldplug : périphérique non hotplug, ajouté ou retiré uniquement à l'arrêt.
  • hotplug : périphérique pouvant être ajouté ou retiré à chaud.
  • HAL : Hardware Abstraction Layer, couche d'abstraction matérielle.
  • DBUS : système de communication inter-processus.
  • sysfs : pseudo système de fichiers pour informations matérielles.
  • procfs : pseudo système de fichiers pour informations sur les processus.
  • udev : gestion dynamique des fichiers de périphériques dans /dev.
  • DMI : Desktop Management Interface, standard de gestion matérielle.
  • dmidecode : outil d'affichage des informations DMI.
  • lshw : listeur de matériel.
  • lspci : liste les périphériques PCI.
  • lsusb : liste les périphériques USB.
  • modprobe : gestionnaire de modules noyau avec dépendances.
  • insmod : insertion simple d'un module noyau.
  • rmmod : retrait d'un module noyau.

Points clés à retenir

  • Le BIOS initialise le matériel et permet d'activer/désactiver des périphériques.
  • Les IRQ, adresses d'E/S et canaux DMA sont des ressources matérielles essentielles à connaître.
  • Différencier périphériques coldplug (fixes) et hotplug (dynamiques) est fondamental.
  • HAL, DBUS, sysfs, procfs et udev sont des composants clés pour la gestion matérielle sous Linux.
  • Les outils dmidecode, lshw, lspci, lsusb permettent d'inventorier et diagnostiquer le matériel.
  • La gestion des modules noyau via lsmod, modinfo, insmod, modprobe et rmmod est indispensable pour la configuration matérielle.
  • Les disques ATA et SATA ont des modes de détection et de nommage spécifiques.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions