Abwärtskompatibilität

Das Laden bei Bedarf wurde in der 2.1-Entwicklungsserie vollständig neu implementiert. Glücklicherweise bekommen das nur sehr wenige Module zu spüren. Der Vollständigkeit halber beschreiben wir die alte Implementation hier aber trotzdem.

Beim 2.0-Kernel wurde das Laden bei Bedarf von einem separaten Daemon-Prozeß im User-Space (namens kerneld) erledigt. Dieser Prozeß war an den Kernel über eine spezielle Schnittstelle angebunden und empfing Anfragen zum Laden (und Entladen) von Modulen vom Kernel-Code. Das hatte eine Vielzahl von Nachteilen, darunter auch den, daß Module nicht geladen werden konnten, bis die System-Initialisierung weit genug fortgeschritten war, um kerneld zu starten.

Die Funktion request_module blieb dagegen unverändert, wie auch die Module selbst. Allerdings mußte damals <linux/kerneld.h> anstelle von <linux/kmod.h> eingebunden werden.

Die Versionssymbole im 2.0-Kernel verwendeten das Präfix smp_ auf SMP-Systemen nicht. Deswegen lud insmod ohne zu klagen ein SMP-Modul in einen Einzelprozessor-Kernel und umgekehrt. Das Ergebnis einer solchen mangelnden Übereinstimmung war normalerweise extremes Chaos.

User Mode-Hilfsprogramme und der Mechanismus zur Kommunikation zwischen Modulen stehen erst seit Linux 2.4 zur Verfügung.