Zuerst:
Für die Baby-Phasen ist das Schreiben verschiedener Variationen von "Hallo Welt" -Modulen und virtuellen Hardwaretreibern der beste Einstieg (echte Hardware führt zu Problemen der realen Welt, die am besten auftreten, wenn Sie mehr Ahnung haben, was Sie tun).
"Linux Device Drivers" ist ein ausgezeichnetes Buch und es lohnt sich, damit zu beginnen: http://lwn.net/Kernel/LDD3/
LDD (zumindest früher) enthält Übungen, in denen Sie virtuelle Treiber geschrieben haben, z. B. RAM-Festplatten und virtuelle Netzwerkgeräte.
Zweitens:
Abonnieren Sie https://lkml.org/ oder die Mailingliste eines Subsystems, in das Sie sich hacken werden. Lauern Sie ein bisschen, scannen Sie Threads, lesen Sie die Codeüberprüfung (Antworten auf Patches), um zu sehen, welche Art von Dingen Menschen haben stolpern oder abholen.
Prüfen Sie, ob Sie (billige) Hardware für ein Gerät erhalten können, das noch nicht oder noch nicht gut unterstützt wird. Gute Kandidaten sind billige USB-Netzwerkkarten oder ähnliche, kostengünstige USB-Peripheriegeräte. Etwas mit einem veralteten oder veralteten Treiber, der möglicherweise vom Hersteller geschrieben wurde, möglicherweise für 2.4.x, ist ideal, da Sie mit etwas beginnen können, das funktioniert (irgendwie), und es schrittweise anpassen / neu schreiben können es, testen, wie Sie gehen. Mein erster Treiberversuch war für eine Davicom DM9601 USB-Netzwerkkarte. Es gab einen vom Hersteller geschriebenen Kerneltreiber der 2.4-Serie, den ich langsam an 2.6 anpasste. (Hinweis: Der Treiber in der Hauptzeile ist nicht mein Treiber, am Ende hat jemand anderes einen von Grund auf neu geschrieben).
Ein weiterer guter Weg ist ein Blick auf die Kernel Newbies-Site, insbesondere auf die Aufgaben der "Kernel-Hausmeister": http://kernelnewbies.org/KernelJanitors/Todo Dies ist eine Liste von Aufgaben, die ein Anfänger bewältigen sollte.