Comment fonctionnent les pilotes Linux et où les trouver? (pilote NIC en particulier)

11

Je me demande comment fonctionne un pilote sous Linux. Les pilotes sont-ils un seul fichier qui peut être modifié? Existe-t-il une liste des pilotes actuels utilisés ou existe-t-il un endroit différent pour les trouver pour chaque périphérique?

Je suis particulièrement intéressé à en savoir plus sur le pilote de ma carte réseau.

Si vous savez où se trouve une bonne documentation, j'aimerais aussi lire cela.

Usagi
la source

Réponses:

6

Les pilotes sont très similaires à tout autre programme, ils peuvent être constitués de plusieurs fichiers source. Les pilotes de périphériques Linux peuvent être directement compilés dans le noyau ou un module du noyau. Les modules du noyau ont l'avantage de pouvoir être chargés dynamiquement (c'est-à-dire que vous n'avez pas besoin de compiler un nouveau noyau pour les utiliser).

Vous pouvez évidemment toujours regarder le code source Linux, mais cela peut être une tâche intimidante au début. Cependant, comme avec n'importe quoi dans les pilotes Linux, ce sont des fichiers. Cela signifie que d'autres programmes y accèdent via l'interface VFS. Par exemple, vous pouvez contrôler le CD-ROM via des ioctl()appels à l'aide de son fichier de périphérique.

Je recommande fortement de vérifier les pilotes de périphériques Linux . Il est disponible gratuitement et répondra à vos questions. En particulier, vous pouvez lire le chapitre 2 qui vous montre comment créer un module simple "Hello, Kernel". C'est peut-être bien plus que ce que vous demandez, mais vous pouvez lire les morceaux qui vous intéressent. Et c'est gratuit. ; P

M. Shickadance
la source
3

Les pilotes Linux sont construits avec le noyau, compilés dans ou en tant que module. Alternativement, les pilotes peuvent être construits par rapport aux en-têtes du noyau dans une arborescence source. Vous pouvez voir une liste des modules du noyau actuellement installés en tapant lsmodet, s'ils sont installés, jetez un œil à la plupart des périphériques connectés via le bus à l'aide de lspci.

Si la version actuelle du noyau ne prend pas en charge les pilotes pour votre carte réseau, vous devrez trouver les pilotes chez le fournisseur et vous devrez compiler un module du noyau à partir des sources (par rapport aux en-têtes de votre noyau).

Sean C.
la source
1

La plupart du temps, si quelque chose comme votre NIC n'apparaît pas automatiquement, vous devez vous rendre sur le site du fabricant du matériel et voir s'il a une version Linux.

De manière plus générale, les pilotes Linux ont tendance à prendre la forme de bibliothèques ou de modules.

rfelsburg
la source