Forum Linux.debian/ubuntu Détection matériel sous Debian, discover obsolète ? comment udev fait la rel périphérique / module ?

Posté par  (site web personnel) .
Étiquettes :
0
14
nov.
2011

Bonjour,

j'ai une petite question concernant la détection matériel sous Debian et Ubuntu.

Sous Debian, je me demande par exemple qui s'occupe du chargement du module kernel de ma carte Ethernet ?
Sous Debian Squeeze, je vois qu'il y a le package "discover". J'ai regardé un peu les sources et d'après ce que j'ai vu il y a un certain nombre de fichiers XML qui contiennent des relations entre des numéros de périphériques PCI… (visible par exemple avec lspci) et des noms de modules du kernel.
La relation matériel <=> module se fait donc à partir de ces fichiers de données.
Par contre, le projet "discover" semble abandonné depuis 2007 (https://alioth.debian.org/frs/?group_id=30273).
Sous Ubuntu, je n'ai pas de package "discover" installé.

J'ai posé la question sur la mailing list "debian.devel.general" et j'ai eu comme réponse que le kernel Linux s'occupe de détecter les périphériques et que udev s'occupe de charger les modules.

J'ai regardé vite fait ici : http://git.kernel.org/?p=linux/hotplug/udev.git;a=tree et je n'ai pas vu de fichier de relation entre périphérique et nom de module.

Pour résumer j'ai deux questions :

  • comment kernel + udev font pour faire la relation périphérique / module
  • pourquoi j'ai le package discover installé sur Debian Squeeze si elle utilise udev ?

Merci d'avance pour vos réponses à ces questions existentielles :)
Stéphane

  • # MODALIAS

    Posté par  . Évalué à 2.

    comment kernel + udev font pour faire la relation périphérique / module

    Une explication est disponible dans la documentation d’OpenSUSE.

    En gros, chaque module indique quels périphériques il peut supporter. Les identifiants des périphériques supportés par un module permettent de construire un ou plusieurs « alias » pour ce module. depmod compile une liste de correspondance « alias de périphérique ⇔ module » (dans /lib/modules/VERSION/modules.alias).

    Quand le noyau détecte un périphérique, il construit un alias à partir de identifiants de ce périphérique et l’envoie à udev ; udev appelle modprobe avec l’alias spécifié et modprobe retrouve, gràce à la liste préalablement compilée par depmod, le module à charger.

    pourquoi j'ai le package discover installé sur Debian Squeeze si elle utilise udev ?

    Je serais bien incapable de dire pourquoi Debian fait tout ce qu’elle fait (je n’ai toujours pas compris pourquoi elle s’est immiscée dans le fonctionnement d’un générateur de nombres aléatoires, par exemple¹), mais la documentation de discover peut apporter un éclairage :

    We must take a moment to explain what Discover is not: Discover is not a
    replacement for the service - usually provided by the underlying operating
    system kernel or a user-space program that interfaces with it - of simply
    translating bus-specific vendor and model identifiers to human-readable
    names. Discover performs its own translations of this data as a
    convenience for generating human-readable reports, but it does not attempt
    to enumerate all hardware devices that exist for a particular bus
    architecture. Rather, Discover is intended only to catalog data for which
    there is some useful information to impart regarding software interfaces.
    Facilities already exist in modern operating systems for answering the
    questions "What is the name of this device?" and "Who manufactured it?"
    Discover's role is to answer questions like "What Linux kernel module do I
    need to load for this device to work?" More importantly, Discover will
    enable you to provide answers in the future to questions you don't even
    expect to ask today.

    En gros, discover n’est pas une alternative à udev, même s’il peut faire une partie de son travail. discover est par ailleurs censé être portable (et non spécifique au noyau Linux), ce qui j’imagine doit être intéressant pour Debian et ses versions Hurd ou kFreeBSD.


    ¹ Je sais, c’est mesquin de ressortir les vieux dossiers… ;)

    • [^] # Re: MODALIAS

      Posté par  . Évalué à 3.

      En gros, chaque module indique quels périphériques il peut supporter. Les identifiants des périphériques supportés par un module permettent de construire un ou plusieurs « alias » pour ce module. depmod compile une liste de correspondance « alias de périphérique ⇔ module » (dans /lib/modules/VERSION/modules.alias).

      ce qui finalement tombe sous le sens, un developpeur d'un module pouvant alors ajouté une nouvelle carte à son module, c'est transparent quelque soit la distrib qui l'utilise ensuite.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.