Ein Betriebssystemkern pro Prozessorkern, die Idee hatten schon vor 17 Jahren Forscher von Microsoft und der ETH Zürich. In vielen Server-Systemen entspricht das auch der Realität, nur hat sich für die praktische Umsetzung die Hardware-Virtualisierung mittels Hypervisor durchgesetzt. Ganz ohne Hypervisor sollen bei MKLinux mehrere Kernels parallel auf derselben Hardware laufen. Eine erste Version davon hat der langjährige Kernel-Entwickler Cong Wang öffentlich freigegeben, seine modifizierte Version des Kernels 7.0 ist auf GitHub verfügbar.
Ein Kernel gibt Hardware an weitere Kernels ab
Das Konzept klingt zunächst ähnlich einem Hypervisor: Zunächst bootet ein Kernel, der sämtliche Hardware verwaltet. Teile davon kann dieser Kernel anschließend aber wieder freigeben und sie mittels kexec gestarteten weiteren Kernels übergeben. Im Gegensatz zu einem Hypervisor haben die neu gestarteten Kernels auch ohne Single Root IO Virtualisation (SR-IOV) direkten Zugriff auf die ihnen zugewiesene Hardware. Laut Wang erfolgt dies über Hot Plugging, worüber den neu gestarteten Kernels auch nachträglich weitere Hardware zugewiesen werden kann. Die initial zugeordnete Hardware wird per Device Tree übergeben, MKLinux nutzt also nur bereits verfügbare Techniken.
Schneller als Hypervisor, sicherer als Container
Laut Wang, der um das Multikernel-Konzept auch eine Firma gegründet hat, bietet der Ansatz gegenüber anderen Isolationsmechanismen deutliche Vorteile. Wie bei Containern läuft Software ohne Abstraktion, entsprechend fallen Hypervisor-Aufrufe und zusätzliche Seitentabellen weg, auch wenn Letztere mittlerweile praktisch vernachlässigbar sind. Eigene Benchmarks von Wang zeigen bei Betriebssystemaufrufen und Kontextwechseln teils deutlich niedrigere Latenzen. Wie bei einem Hypervisor kann hingegen ein problematischer Kernel nicht gleich das komplette System lahmlegen, da die einzelnen Kernels gegeneinander isoliert sind, was zusätzlich die Angriffsfläche begrenzt.
Wang sieht als Einsatzszenario etwa das Hosting verschiedener Server-Komponenten auf einer Maschine. Das Konzept lässt sich sogar noch weiter bis zur Isolierung einzelner Anwendungen treiben: Dabei startet zunächst ein sogenannter Device-Kernel, der die zugewiesene Hardware verwaltet. Dieser kann anschließend weitere App-Kernels starten, die untereinander oder mit dem Device-Kernel über geteilten Speicher kommunizieren. Dafür hat Wang mit Daxfs ein eigenes Dateisystem entwickelt. Die App-Kernels hält er insbesondere für KI-Agenten für sinnvoll, ein naheliegender Anwendungsfall angesichts der wachsenden Zahl autonom agierender KI-Systeme, die eine harte Isolation voneinander benötigen.
Bislang unterstützt MKLinux lediglich 64-Bit-x86-Systeme. Ob das Konzept in den Mainline-Kernel aufgenommen wird, ist bislang unklar, und wenn, ist das nicht zeitnah zu erwarten.