Lorsque le noyau détecte un nouveau périphérique, il exécute le programme modprobe
et lui transmet un nom qui identifie le périphérique. La plupart des appareils sont identifiés par des numéros enregistrés pour un fournisseur et un modèle, par exemple des identifiants PCI ou USB . Le modprobe
programme consulte la table d'alias de module pour trouver le nom du fichier qui contient le pilote pour ce périphérique particulier. Un principe similaire s'applique aux pilotes pour les éléments qui ne sont pas des périphériques matériels, tels que les systèmes de fichiers et les algorithmes cryptographiques. Pour plus de détails, voir Debian ne détecte pas la carte PCI série après le redémarrage/lib/modules/VERSION/modules.alias
Une fois que modprobe a identifié le fichier de module ( .ko
) qui contient le pilote demandé, il charge le fichier de module dans le noyau: le code du module est chargé dynamiquement dans le noyau. Si le module est correctement chargé, il apparaîtra alors dans la liste de lsmod
.
Le chargement automatique des modules se produit lorsque le noyau détecte un nouveau matériel enfichable à chaud, par exemple lorsque vous connectez un périphérique USB. Le système d'exploitation procède également à une énumération de tout le matériel présent sur le système au début du démarrage, afin de charger les pilotes pour les périphériques présents au démarrage.
Il est également possible de demander manuellement le chargement d'un module avec la commande modprobe
ou insmod
. La plupart des distributions incluent un script de démarrage qui charge les modules répertoriés dans /etc/modules
. Une autre façon de charger des modules est s'ils sont une dépendance d'un module: si le module A dépend du module B, alors modprobe A
charge B avant de charger A.
Une fois qu'un module est chargé, il reste chargé jusqu'à ce qu'il soit explicitement déchargé, même si tous les périphériques utilisant ce pilote ont été déconnectés. Il y a longtemps, il y avait un mécanisme pour décharger automatiquement les modules inutilisés, mais il a été supprimé, si je me souviens bien, quand udev est entré en scène. Je soupçonne que le déchargement automatique de module n'est pas une caractéristique courante car les systèmes qui auraient tendance à en avoir besoin sont principalement des PC de bureau qui ont quand même beaucoup de mémoire (à l'échelle du code du pilote).
/etc/modules
.rt2800usb
est en sortie delsmod
, et cela signifie-t-il que j'ai connecté son appareil à mon ordinateur avant le démarrage?