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
Computer Systems and Hardware Configuration · PDF · 56 pages · 2005
Afficher l'aperçu du document
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.
| IRQ | Usage |
|---|---|
| 0 | Timer système |
| 1 | Clavier |
| 2 | Cascade vers IRQs 8 à 15 |
| 3 | Second port RS-232 (COM2) |
| 4 | Premier port RS-232 (COM1) |
| 5 | Carte son ou second port parallèle (LPT2) |
| 6 | Lecteur disquette |
| 7 | Premier port parallèle (LPT1) |
| 8 | Real time clock |
| 14 | Contrôleur ATA primaire (/dev/hda et /dev/hdb) |
| 15 | Contrô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 (utilisemodules.depet 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.
Commentaires
Aucun commentaire pour le moment. Posez la première question.