D'abord:
Pour les stades bébé, l'écriture de diverses variations sur les modules "hello world" et les pilotes de matériel virtuels est la meilleure façon de commencer (le vrai matériel présente les problèmes du monde réel mieux affrontés lorsque vous avez plus d'idée de ce que vous faites).
"Linux Device Drivers" est un excellent livre et vaut bien le coup de commencer avec: http://lwn.net/Kernel/LDD3/
LDD (utilisé, au moins) a des exercices où vous avez écrit des pilotes virtuels, par exemple des disques RAM et des périphériques réseau virtuels.
Deuxièmement:
abonnez-vous à https://lkml.org/ ou à la liste de diffusion d'un sous-système dans lequel vous allez pirater. Rôdez un peu, parcourez les discussions, lisez la révision du code (réponses aux correctifs) pour voir quel genre de choses les gens trébucher ou reprendre.
Voyez si vous pouvez obtenir du matériel (bon marché) pour un appareil qui n'est pas encore pris en charge, ou pas encore bien pris en charge. Les bons candidats sont des cartes réseau USB bon marché ou des périphériques USB similaires à faible coût. Quelque chose avec un pilote obsolète ou hors de l'arborescence, peut-être écrit par le fournisseur, peut-être pour 2.4.x, est idéal, car vous pouvez commencer avec quelque chose qui fonctionne (en quelque sorte), et l'adapter / réécrire progressivement , tester au fur et à mesure. Ma première tentative de pilote était pour une carte réseau USB Davicom DM9601. Il y avait un pilote de noyau écrit par le vendeur de la série 2.4 que j'ai lentement adapté à 2.6. (Remarque: le pilote dans la ligne principale n'est pas mon pilote, à la fin quelqu'un d'autre en a écrit un à partir de zéro).
Un autre bon moyen est de consulter le site Kernel Newbies, en particulier les "kernel janitors" todo: http://kernelnewbies.org/KernelJanitors/Todo Il s'agit d'une liste de tâches qu'un débutant devrait être capable de réaliser.