Bei mir läuft der Tastatur Treiber als eigenständiges Programm, er kann also keinen Code vom Kernel mitbenutzen. Er registriert sich als erstes beim Kernel sodass er ab dann bei jedem IRQ eine Nachricht über das msg-system bekommt, in der aber keine daten stehen, den Tastatur-Port muss er selbst auslesen und auswerten.
Zusätzlich muss er sich noch die "Rechte" für die benötigten Ports von Kernel geben lassen. Das ist aber noch nicht implementiert (ATM darf noch jeder alle Ports benutzen).
Gemeinsam benutzen Code wird es nur irgentwann in Form von shared Librarys geben, aber einzelne Kernel-Module, wie du meintest hab ich nicht.
edit: alle Module, die Grub lädt werden als eigene Programme gestartet, insofern lädt Grub auch meine "Module", nur dass es eigenständige Tasks sind.