EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Montage des médias amovibles

Historique

22 mars 2013 : Nouveau sujet. Page en construction.

Difficulté

Pour : linuxien un peu curieux.

Introduction

Dans les premiers temps de linux, l'auto-montage des médias amovibles ne se pratiquait pas : il n'y avait pas de médias amovibles (à part les disquettes).
Puis vinrent les lecteurs de CD-ROMS et DVD. Et les PCMCIA, et les clés USB ...

Il a donc bien fallu s'en occuper, réaliser le montage automatique, signaler leur montage à l'utilisateur, aux autres applications.

Périphériques, pilotes et noyau

Démarrage

Au démarrage de l'ordinateur, le chargeur de démarrage (lilo ou grub) décompresse l'image du noyau linux (vmlinuz) et charge ce dernier en mémoire. Il décompresse éventuellement une arborescence provisoire (initrd) et place celle-ci en mémoire (=ramdisk).
Le noyau démarre, éventuellement avec cette arborescence provisoire.

Le noyau détecte le matériel présent, charge les pilotes adéquats, initialise les périphériques.
La commande dmesg (ou le fichier /var/log/dmesg) permet de visualiser les messages du démarrage et donc le chargement des pilotes.

Pour les curieux, survolez : démarrage d'une ancienne version : Mandrake 7.1

Voici, en résumé, ce qui est affiché :

Linux version 2.2.15-4mdkfb (chmou@kenobi.mandrakesoft.com) (gcc version 2.95.3 19991030 (prerelease)) #1 Wed May 10 15:00:49 CEST 2000
version du noyau avec quelques paramètres de compilation,
Detected 1094159385 Hz processor.
=fréquence du processeur détecté,
Console: colour dummy device 80x25
=type de console,
Calibrating delay loop... 2182.35 BogoMIPS
=benchmark en BogoMIPS,
Memory: 516888k/524224k available (1248k kernel code, 416k reserved, 5536k data, 136k init, 0k bigmem)
Dentry hash table entries: 65536 (order 7, 512k)
Buffer cache hash table entries: 524288 (order 9, 2048k)
Page cache hash table entries: 131072 (order 7, 512k)
=mémoire trouvée avec occupation,
VFS: Diskquotas version dquot_6.4.0 initialized
=le système virtuel accepte les quotas,
CPU: L1 I Cache: 64K L1 D Cache: 64K
CPU: L2 Cache: 512K
CPU: AMD AMD Athlon(tm) stepping 00
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
=identification et caractéristiques du processeur,
mtrr: v1.35a (19990819) Richard Gooch (rgooch@atnf.csiro.au)
=Memory Type Range Register, Contrôle les accès du processeur à la mémoire
PCI: PCI BIOS revision 2.10 entry at 0xfb4a0
PCI: Using configuration type 1
=version du bus PCI,
PCI: Probing PCI hardware
PCI: Enabling memory for device 02:01
=démarrage de l'examen du bus PCI,
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
TCP: Hash tables configured (ehash 524288 bhash 65536)
=le support de NET4 par le noyau, avec les protocoles,
Initializing RT netlink socket
=initialisation de l'interface noyau/espace utilisateur (netlink),
Starting kswapd v 1.5
=démarrage du démon de swap,
vesafb: framebuffer at 0xe4000000, mapped to 0xe0009000, size 65536k
vesafb: mode is 1024x768x16, linelength=2048, pages=41
vesafb: protected mode interface info at c000:5604
vesafb: scrolling: redraw
vesafb: directcolor: size=0:5:6:5, shift=0:11:5:0
Console: switching to colour frame buffer device 128x48
fb0: VESA VGA frame buffer device
=écran VESA et console,
Detected PS/2 Mouse Port.
=détection du port PS/2
Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
=détection des ports série ttyS0 et ttyS1
pty: 256 Unix98 ptys configured
=pseudo-terminal PTY
apm: BIOS version 1.2 Flags 0x07 (Driver version 1.12)
=support de APM,
Real Time Clock Driver v1.09
=pilote de l'horloge,
RAM disk driver initialized: 16 RAM disks of 4096K size
=initialisation du pilote RAM disk,
Uniform Multi-Platform E-IDE driver Revision: 6.30
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PCI_IDE: unknown IDE controller on PCI bus 00 device 48, VID=10de, DID=0065
=pilote E-IDE, fréquence du bus IDE, contrôleurs IDE,
PCI_IDE: not 100% native mode: will probe irqs later
   ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:DMA
   ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:DMA
hda: WDC WD800BB-00CAA1, ATA DISK drive
hdc: TSSTcorpCD/DVDW SH-S182M, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: WDC WD800BB-00CAA1, 76319MB w/2048kB Cache, CHS=9729/255/63
=définition du disque dur (ATA) et du lecteur CD-ROM (ATAPI), irq correspondants,
FDC 0 is a post-1991 82077
=lecteur disquette,
md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
raid5: measuring checksumming speed
raid5: MMX detected, trying high-speed MMX checksum routines
   pII_mmx : 2537.460 MB/sec
   p5_mmx : 3188.208 MB/sec
   8regs : 1471.803 MB/sec
   32regs : 1273.302 MB/sec
using fastest function: p5_mmx (3188.208 MB/sec)
=réseau de disques en RAID5,
scsi : 0 hosts.
scsi : detected total.
=détection hôtes SCSI
md.c: sizeof(mdp_super_t) = 4096
Partition check:
 hda: hda1 hda2 < hda5 hda6 hda7 >
=mon partitionnement (entre crochets : partitions étendues)
autodetecting RAID arrays
autorun ...
... autorun DONE.
=détection RAID5, il n'y en a pas
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 136k freed
Adding Swap: 2097136k swap-space (priority -1)
=À ce point c'est presque fini avec le noyau et prêt à démarrer le système.
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
scsi : 1 host.
Vendor: TSSTcorp Model: CD/DVDW SH-S182M Rev: SB04
Type: CD-ROM ANSI SCSI revision: 02
Detected scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
sr0: scsi3-mmc drive: 48x/48x writer cd/rw xa/form2 cdda tray
Uniform CDROM driver Revision: 2.56
=détection du lecteur CD-ROM

Les pilotes

Un pilote assure l'interface entre le matériel (disque dur, lecteurs, clavier, écran ...) et les programmes (système d'exploitation, applications).

Les pilotes peuvent être compilés directement dans le noyau mais, en général, ils se présentent sous la forme de modules du noyau. Ceci permet d'alléger ainsi le noyau.

Les modules existent, mais ne sont chargés que si le périphérique est effectivement détecté au moment du démarrage de l'ordinateur.
Avec les premières versions du noyau linux, ces modules étaient chargés d'une façon statique et, si un nouveau périphérique apparaît ou si l'un d'eux est enlevé, les modules correspondants n'étaient ni chargés, ni déchargés.

Haut

Périphériques et fichiers

Description

Linux possède une méthode permettant aux programmes d'accéder facilement au matériel : chaque périphérique est traité comme un fichier :
chaque périphérique possède une entrée (nœud) dans le système de fichiers et ces entrées peuvent être utilisées par les applications de l'espace utilisateur pour communiquer avec le périphérique.
Vous pouvez, par exemple, visualiser le début du contenu (brut) d'une disquette ou d'un disque dur, avec la commande less (visualiser un fichier texte page par page) :
less -f /dev/fd0 ou less -f /dev/sda

Pour les curieux, survolez : un peu plus de détails

Les périphériques peuvent généralement être répartis en deux grandes catégories :

  • les périphériques avec cache (disques, lecteurs de bandes) : les applications y accèdent par bloc de données
    le fichier associé est un fichier bloc
  • les périphériques série (souris, cartes son, terminaux) : les applications y accèdent octet par octet
    le fichier associé est un fichier caractère.

En plus de son type, chaque fichier spécial de périphérique est caractérisé par deux nombres :

  1. majeur (il identifie le pilote)
  2. mineur (il identifie le périphérique, important en cas de présence de plusieurs périphériques identiques, contrôlés par un même pilote)
Haut

Le répertoire /dev

C'est le répertoire abstrait /dev/ qui contient ces fichiers spéciaux.
Avec les premières versions du noyau linux, ce répertoire était pré-rempli avec les fichiers de tous les périphériques potentiellement disponibles au moment de la création de la distribution linux. Il en résulte un nombre énorme de fichiers et la gestion des permissions des fichiers non utilisés peut consommer inutilement beaucoup de ressources (et de temps).
Par ailleurs, pour intégrer un nouveau périphérique, vous devez créer son entrée dans le répertoire /dev à l'aide de la commande mknode ou /dev/MAKEDEV

Un programme qui essaie de tester les périphériques effectivement présents, doit analyser tout le contenu du répertoire et ne doit pas tenir compte des fichiers qui produisent une erreur.

Le montage des fichiers des périphériques : la commande mount et fstab

Comme indiqué ci-dessus, les périphériques sont détectés au démarrage de l'ordinateur et le pilote correspondant est chargé et initialisé. Il reste à monter (ou accrocher) le système de fichiers du périphérique sur l'arborescence générale pour pouvoir utiliser ces fichiers.

C'est la commande mount qui permet de monter les arborescences des périphériques et le fichier /etc/fstab (file systems table) indique comment et où le périphérique doit être monté.
Ce fichier est lu au démarrage de l'ordinateur et les périphériques indiqués sont ainsi montés dès le démarrage de l'ordinateur.

Mais, évidemment, ce montage automatique ne se produit qu'au démarrage. Les répertoires d'une disquette ou d'un CD-ROM insérés ultérieurement dans le lecteur ne seront pas montés dans l'arborescence.
C'est l'utilisateur qui doit le faire manuellement, par la suite, avec la commande mount (en root), avec les arguments adéquats :
mount -t vfat /dev/fd0 /mnt permet de monter une disquette sur le répertoire existant /mnt.

Haut

L'évolution de la gestion avec Mandrake, Mandriva et Mageia

Les différentes versions de Mandrake, Mandriva et Mageia ont traité les médias amovibles de différentes façons, en fonction de l'évolution des techniques.
Ce paragraphe se contente d'énumérer les techniques utilisées. Les explications se trouvent dans la suite.

  1. Mandrake 5.1 (noyau 2.0.35), 5.2 (noyau 2.0.36), 5.3 (noyau 2.0.36), 6.0 (noyau 2.2.9), 6.1 (noyau 2.2.13)
    • Gestion des cartes PCMCIA type PC Cards par le système dit externe
  2. Mandrake 7.0 (noyau 2.2.9), 7.1 (noyau 2.2.15), 7.2 (noyau 2.2.17)
    • Gestion des cartes PCMCIA type PC Cards par le système dit externe, comme ci-dessus
    • auto-montage des disquettes et CD avec supermount
  3. Mandrake 8.0 (noyau 2.4.3)
    • Gestion des cartes PCMCIA type PC Cards par le système dit externe, comme ci-dessus
    • auto-montage des disquettes et CD avec supermount, comme ci-dessus
    • simplification du répertoire /dev avec devfs
  4. Mandrake 8.1 (noyau 2.4.8)
    • Gestion des cartes PCMCIA type PC Cards par le système dit externe, comme ci-dessus
    • auto-montage des disquettes et CD avec supermount, comme ci-dessus
    • simplification du répertoire /dev avec devfs, comme ci-dessus
    • branchement à chaud avec hotplug
  5. Mandrake 8.2 (noyau 2.4.18), 9.0 (noyau 2.4.19), 9.1 (noyau 2.4.21), 9.2 (noyau 2.4.22)
    • Gestion des cartes PCMCIA type PC Cards et CardBus par le système dit kernel et par hotplug
    • auto-montage des disquettes et CD avec supermount, comme ci-dessus
    • simplification du répertoire /dev avec devfs, comme ci-dessus
    • branchement à chaud avec hotplug
Haut

La gestion de PCMCIA
(Personal Computer Memory Card International Association)

Linux assure le support des cartes PCMCIA depuis 1995, mais il y a plusieurs types de cartes et plusieurs systèmes de gestion.

Différentes cartes PCMCIA

Il faut distinguer les différentes versions des cartes PCMCIA :

  1. PC Cards (bus 16 bits)
    Le standard original était construit autour d'une plateforme bus ISA 16-bits améliorée.
    La carte a les mêmes dimensions qu'une carte de crédit. L'embase spécifique n'admet que les PC Cards.
  2. CardBus Cards (bus 32 bits)
    CardBus est en fait un bus PCI,32-bit, 33 MHz, mais avec la forme PC Card.
    Les dimensions restent celles de la PC Card. Beaucoup d'embases admettent également les PC Cards.
  3. ExpressCard
    C'est un nouveau standard, destiné à remplacer l'ancien. Le connecteur est plus court. La forme est modifiée.
    ExpressCard possède une connexion directe au bus système par l'intermédiaire de PCI Express et USB 2.0.

Référence : http://www.bixnet.com/pccaandex.html

Différents systèmes de gestion

Au fil des différentes versions du noyau et donc des différentes versions des distributions, la gestion des cartes PCMCIA évolue (système externe, système noyau, PCMCIAutils).

Pour les curieux, survolez : un peu plus de détails

Système externe

Description

Il faut installer le paquetage kernel-pcmcia-cs qui procure :

  • les modules de base du contrôleur PCMCIA (pcmcia_core; ds; i82365 ou tcic),
  • une série de pilotes, sous la forme de modules,
  • le démon cardmgd qui gère les évènements (insertion et retrait d'une carte) et quelques autres programmes.

Il gère uniquement les PC Cards.

Système kernel

Description

Le support des pilotes pcmcia est directement intégré aux les noyaux 2.4 et suivants, mais il faut également un paquetage pcmcia-cs qui, chez Mandrake, propose les outils nécessaires (cardmgr, cardctl, fichiers de configuration /etc/pcmcia/*).

Le pilote yenta_socket gère également CardBus Cards

Comment savoir si le noyau est correctement configuré ?
grep CONFIG_PCMCIA /boot/config (m ou y)
grep CONFIG_HOTPLUG /boot/config (y)
grep CONFIG_CARDBUS /boot/config (y)
Ceci est le cas avec Mandrake.

Fonctionnement de ces deux systèmes

Le démon cardmgr surveille l'insertion ou le retrait d'une carte PCMCIA.

Le paquetage hotplug est également nécessaire.

En travaux Travaux

Références

http://www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/ch16.html
http://librairie.immateriel.fr/fr/read_book/9782815000963/e9782815000963_c19
http://www.tldp.org/HOWTO/PCMCIA-HOWTO-4.html
http://c.laloy.free.fr/howtos/linux/linux_survie/05_portable_linux.php
http://people.canonical.com/~cjwatson/bzr/pcmciautils/ubuntu/doc/cardmgr-to-pcmciautils.txt

PCMCIAutils

Description
Fonctionnement
Haut

Gestion des lecteurs de disquettes et CD-ROM avec Supermount

Supermount facilite le montage du système de fichiers d'un média amovible (disquette, CD)

Avec les Mandrake, les icônes des lecteurs de disquette et de CD sont toujours présentes sur le bureau, mais si les lecteurs sont vides, ces icônes ne permettent aucune action.

Après l'insertion d'un CD ou d'une disquette,

Il est possible de sortir le CD avec le bouton du lecteur sans provoquer de plantage.
Un clic sur l'icône d'un lecteur vide ouvre le gestionnaire. Celui-ci cherche longuement le contenu, puis délivre un message d'erreur.

Pour les curieux, survolez : un peu plus de détails

Description

Supermount est un pseudo système de fichiers qui monte et démonte les systèmes de fichiers des médias amovibles, tels que les disquettes et les CD-ROMs.

Installation

C'est un patch des noyaux 2.2 et 2.4 qui permet cette fonctionnalité. Mandrake intègre cette fonctionnalité depuis la version Mandrake 7.0 (14 janvier 2000) avec le noyau 2.2.14.

Comment savoir si supermount est installé ?
ls /lib/modules | grep supermount
C'est le noyau qui contient le module supermount. Il est automatiquement installé depuis Mandrake 7.0 jusqu'à Mandiva 2008.0.

Comment savoir si supermount est utilisé ?
grep 'supermount' /etc/fstab

Haut

Le système devfs (Device File System)

Description

Le répertoire /dev a plusieurs inconvénients. Sa taille est dissuasive (typiquement 1200 entrées). La gestion des codes majeurs et mineurs n'est pas facile, la gestion de la permission des fichiers non plus. Il fallait trouver un système plus souple : devfs.

Pour les curieux, survolez : un peu plus de détails

Le système devfs, incorporé au noyau, est apparu avec les noyaux 2.4 (vers 2001).
Mandrake l'a intégré avec la version 8.0 (noyau 2.4.3).

Les divers fichiers des périphériques sont répartis dans des répertoires distincts, regroupant les périphériques de même type. Leur lisibilité et leur gestion sont alors facilitées. Ainsi, les périphériques IDE sont logés dans le sous-répertoire /dev/ide/ et les périphériques SCSI se retrouvent dans /dev/scsi/.

Devfs n'utilise plus les chiffres majeur/mineur mais désigne le périphérique par son nom. Il les garde simplement pour des raisons de compatibilité.

Il fournit uniquement à l'utilisateur les périphériques existants et complète l'arborescence de /dev, par exemple :
/dev/ide/hosts0/bus0/target0/lun0/disk
/dev/ide/hosts0/bus0/target0/lun0/part1
/dev/ide/hosts0/bus0/target0/lun0/part2
/dev/ide/hosts0/bus0/target0/lun0/part5
/dev/ide/hosts0/bus0/target0/lun0/part6
/dev/ide/hosts0/bus0/target0/lun0/part7
pour mon disque IDE, placé sur le premier slot IDE, en tant que maître, avec ses partitions.

Pour assurer la compatibilité avec l'ancien système, un démon devfsd crée des liens symboliques entre l'ancien système /dev et le système devfs, par exemple :
hda1 -> /dev/ide/hosts0/bus0/target0/lun0/part1

Installation

Devfs faisant partie du noyau est donc automatiquement installé lorsque le noyau est compilé avec :

  • CONFIG_DEVFS_FS : devfs est sélectionné pour le noyau
  • CONFIG_DEVFS_MOUNT : devfs est automatiquement monté au démarrage (sans nécessiter un autre script)

Le paquetage devfsd est également nécessaire. Il est automatiquement installé.

Comment savoir si devfs est utilisé ?
cat /proc/filesystems | grep devfs pour savoir si le noyau est compilé avec devfs
mount | grep devfs pour savoir si devfs est monté

Fonctionnement

Au démarrage du noyau, les pilotes des périphériques commencent à enregistrer ces périphériques, avec le reste du système. Pour ceci, la noyau fait appel à une fonction du noyau : devfs_register().

Pour éviter les désagréments actuels et à venir, devfs n'utilise pas le principe des combinaisons Majeur/Mineur. Avec devfs, les connexions sont créées au moment où vous entrez dans le répertoire /dev. Lorsque l'on souhaite enregistrer un périphérique, une entrée dans une table interne est créée. Si cette entrée dans le cache ne possède pas encore de noeud, celui-ci est également créé. En revanche, si l'entrée est déjà présente dans le cache, aucune opération n'est nécessaire et, de ce fait, aucune recherche n'est effectuée. Dans ce cache ne se trouveront que des entrées pour des périphériques existants réellement sur votre système. Les recherches dans le cache seront donc rapides. Cette manière de procéder possède, en outre, un autre avantage intéressant. En effet, si un périphérique que vous savez présent dans la machine n'est pas listé dans /dev, c'est le signe d'un mauvais fonctionnement du périphérique ... Un autre avantage concerne les systèmes de fichier en lecture seule, comme certaines stations diskless. Le répertoire /dev n'ayant pas d'existant physique, vous pouvez modifier les permissions à loisir sur les noeuds. Un bel exemple est, bien sûr, un système GNU/Linux complet sur CD-Rom. Avec devfs, vous n'êtes plus obligés de passer par un ramdisk. Mais devfs va encore plus loin. Il est par exemple possible d'envoyer des messages au démon devfsd lors d'événements tels que l'ouverture ou la création d'une entrée. Il est ainsi possible d'associer des scripts à ces événements pour, par exemple, automatiquement monter un système de fichiers ou garder une trace de l'accès à un périphérique. http://www.freesoftwaremagazine.com/articles/drivers_linux

devfs_register()
Si le pilote du périphérique foo veut enregistrer ce périphérique avec devfs, il appelle la fonction devfs_register() avec un paramètre qui est foo0.
Le noyau sait ainsi qu'un nouveau périphérique existe dans l'espace de nommage de devfs et devfs_register ajoute le périphérique foo0 dans l'espace de nommage de devfs.

Une fois que tous les pilotes sont actifs et qu'ils ont enregistré les périphériques, le noyau lance le programme /sbin/init et les scripts d'initialisation sont exécutés. Assez au début du processus de démarrage, un script monte un système de fichiers devfs sur le répertoire /dev. Il contient une représentation de l'espace de nommage de devfs.
Il en résulte que, une fois que /dev est monté, tous les périphériques enregistrés (tels que notre foo0 ci-dessus) peuvent être accédés de la même façon que sur un système non-devfs.
Lorsqu'il y a un accès vers un périphérique, le noyau dialogue avec le pilote approprié par le nom devfs du périphérique et non par le numéro majeur.

L'intérêt de ce système est que tous les nœuds de périphériques sont automatiquement créés et rien que ceux qui sont nécessaires. Il n'est plus nécessaire d'en créer manuellement mais, en plus, le répertoire /dev n'est plus encombré par des centaines de nœuds inutiles.

Haut

Hotplug (branchement à chaud)

Description

Hotplug vous permet de brancher un nouveau périphérique et de l'utiliser immédiatement.
Initialement, il intègre la gestion de USB et de PCI (CardBus) et il permet la configuration automatique des interfaces réseau.

Pour les curieux, survolez : un peu plus de détails

Source : http://linux-hotplug.sourceforge.net/

Démarrant avec le noyau 2.4, hotlpug devient une caractéristique standard de Linux. Le noyau 2.6 le rend disponible pour tous les bus selon sysfs.

Avec hotplug, inutile de connaître les commandes d'administrateur, il configure automatiquement les périphériques. Des versions plus récentes incluent également IEEE 1394 (Firewire) et peuvent même télécharger des firmwares pour périphériques USB.

En travaux Travaux

Le système sysfs ()

Sysfs est un système de fichiers virtuel introduit par le noyau Linux 2.6. Sysfs permet d'exporter depuis l'espace noyau vers l'espace utilisateur des informations sur les périphériques du système et leurs pilotes, et est également utilisé pour configurer certaines fonctionnalités du noyau.

Haut hotplug et devfs Depuis Linux-Mandrake 8.1, les entrées de /dev sont créés dynamiquement grâce à devfs.

Montage et auto-montage

En travaux Travaux

This configuration file needed to be kept up to date with which driver supported which card, or ranges of cards, and has grown to be over 1,500 lines long. Whenever a driver author added support for a new device, they had to modify two different files to enable the device to work properly. As the USB core code became mature, the group realized that it also needed something like the PCMCIA system to be able to load and unload drivers dynamically when devices were inserted and removed. The group also noted that since USB and PCMCIA both needed this system, and that other kernel hot-plug subsystems also would use such a system, a generic hot-plug core would be useful. David Brownell posted an initial patch to the kernel (marc.theaimsgroup.com/?l=linux-usb-devel&m=96334011602320), enabling it to call out to a user-space program called /sbin/hotplug. This patch eventually was accepted, and other subsystems were modified to take advantage of it. Let the Computer Do It Itself All USB and PCI devices contain an identifier that describes either what kind of functions they support (like a USB audio or USB mass storage device), or if they do not support a class specification, they contain a unique vendor and product identifier. PCMCIA devices also contain these same kind of identifiers. These identifiers are known by the PCI and USB kernel drivers, as they need to know which kind of devices they work properly for. The USB and PCI kernel drivers register with the kernel a list of the different types of devices that they support. This list is used to determine which driver will control which devices. The kernel knows when and what kind of devices are inserted or removed from the system through the device bus core code (USB, FireWire, PCI, etc.). It can send this information to the user. Taking these three pieces together (devices tell the computer what they are, drivers know what devices they support and the kernel knows what is going on) provides us with a solution to let the computer automatically load the proper driver whenever a new device is inserted. /sbin/hotplug The kernel hot-plug core provides a method for the kernel to notify user space that something has happened. The CONFIG_HOTPLUG configuration item needs to be selected for this code to be enabled. The notification happens when the kernel calls the executable listed in the global variable hotplug_path. When the kernel starts, hotplug_path is set to /sbin/hotplug, but the user can modify the value at /proc/sys/kernel/hotplug to change this. The kernel function call_usermodehelper() executes /sbin/hotplug. As of kernel 2.4.14, the /sbin/hotplug method is being used by the PCI, USB, IEEE1394 and Network core subsystems. As time goes on, more subsystems will be converted to use it. Patches are available for the PnP-BIOS (notification when a laptop is inserted and removed from a docking station), Hot-Plug CPU, SCSI and IDE kernel subsystems. These are expected to be merged into the main kernel over time. When /sbin/hotplug is called, different environment variables are set, depending on what action has just occurred.

Hotplug (n'est plus utilisé)

Hotplug vous permet d'insérer un nouveau périphérique et de l'utiliser immédiatement. Il fonctionne pour les ports USB, les bus PCI (cardbus), il peut également configurer automatiquement certaines interfaces réseau. Les versions plus récentes intègrent IEEE 1394 (Firewire) peuvent télécharger des firmwares relatifs aux périphériques USB.

Il a été introduit avec le noyau 2.4 (janvier 2001) et rétro-porté au noyau 2.2 pour la prise en compte de USB. Le noyau 2.6 étend la fonctionnalité à tous les bus et pilotes pris en charge par sysfs.

Comment savoir si hotplug est utilisé ?
rpm -qa | grep 'hotplug'

Haut

En travaux Travaux

Haut

Mandrake 7.1 intègre supermount pour /mnt/floppy et /mnt/cdrom selon /etc/fstab.
Il n'y a pas encore de hotplug ni devfs.

Conséquences :

Le clic sur l'icône fonctionne correctement, tant à l'introduction du CD que pour un CD présent au démarrage du système.

Un périphérique USB n'est pas vu par le système.

Mandrake 7.2 (30 octobre 2000)

Le noyau est kernel-2.2.17.
La gestion de PCMCIA est assurée par l'installation du paquetage kernel-pcmcia-cs.

Mandrake 8.0 (20 avril 2001)

Le noyau est kernel-2.4.3.
La gestion de PCMCIA est assurée par l'installation du paquetage kernel-pcmcia-cs.

Mandrake 8.1 (27 septembre 2001)

Le noyau est kernel-2.4.8.
La gestion de PCMCIA est assurée par l'installation du paquetage kernel-pcmcia-cs. ???

Mandrake 8.2 (18 mars 2002)

Le noyau est kernel-2.4.18.
La gestion de PCMCIA est assurée directement par le paquetage du noyau.???

En travaux Travaux

Haut