Ich kram den Thread einfach mal wieder aus. Ich bin mir nicht sicher ob ich verstanden habe was Du (=ChristianF) meinst, aber ich mache in meinem Kernel folgendes.
Ich habe bestimmte Sachen in "Module" gesteckt (z.b. PMM, IRQs usw.). Diese "Module" implementieren ein bestimmtes Interface. Mein Loader linkt dann all diese "Module" mit dem "Kernel-Modul" zusammen. So weit so sinnlos
Was will ich aber damit erreichen?!
Der Punkt ist, ich kann/will erst zur Laufzeit wissen ob der PC z.b. nen LAPIC hat oder nen IO-APIC usw. Was ich jetzt nicht will ist das der Code für diese ganze Hardware mit dem Kernel geladen wird und ich dann halt zur Laufzeit nur ein paar Funktionspointer umhänge (1. indirekte Aufrufe und 2. bleibt der Code ja im Speicher = Overhead).
Mein Kernel liegt mit samt seinen Modulen in einem Tar-Archive und der Loader guckt halt auf was für Hardware er läuft und linkt dann die entsprechenden Module zusammen und die "nutzlosen" Module können wieder freigegeben werden. So habe ich z.b. 3 verschieden PMMs, habe bei bestimmten Sachen unterschiedlichen Code für SMP und ein CPU Systeme und ich habe 2 verschiedene Module für IRQs (PIC und IO-APIC) und 2 (jedenfalls noch) verschiedene Scheduler (einmal SMP und einmal 1 CPU).
Wenn du sowas meintest, dann ja ist möglich und auch nicht wirklich sinnlos.
Drauf gekommen bin ich eigentlich darüber, dass ich es möglich machen wollte das der Kernel zur Laufzeit gepatcht werden kann und dafür brauche ich halt die ganzen Link Infos, aber das war mir dann nachher doch zu komplex und ich habe dann den schon vorhandenen Code einfach dafür genutzt.