The just released version 14.11 of the Genode OS framework complements the framework’s arsenal of device drivers with the Intel wireless stack. This way, Genode enables the realization of microkernel-based systems on modern laptops without relying on any kind of “device-driver OS” or “Dom0”. Other highlights of the release are a new dynamic linker, VirtualBox 4.3.16 on the NOVA hypervisor, a new scheduler for the HW kernel, and networking for the Raspberry Pi.
WiFi stacks are known to be extremely complex. In the Linux kernel, it is certainly one of the most sophisticated driver subsystems besides GPU drivers. From the perspective of an alternative OS, it is quite frightening. On the other hand, WiFi is an universally required feature for a general-purpose OS by today’s standards. Therefore, the Genode project had to face the issue to enable a full WiFi stack on top of the framework sooner or later. In spring this year, the Genode team finally took on the engineering feat to transplant the Intel wireless stack from Linux to a user-level component on Genode. This line of work was more demanding than originally anticipated. The biggest hurdle was to get a grasp on the interactions between the various involved protocols and mechanisms such as mac80211, cfg80211, nl80211, the netlink API, AF_NETLINK, and the WPA supplicant. The actual porting work followed the approach of prior porting efforts like the Linux USB and TCP/IP subsystems. All Linux kernel threads are executed by a single user-level thread that cooperatively schedules each kernel thread as a light-weight execution context. Compared to the prior porting efforts, the driver environment for the WiFi stack is far more complex. About 8,500 lines of environment code had to be provided to bring the 215,000 lines of WiFi stack to life. However, almost no original code had to be changed, which will make future updates relatively easy.
From its very beginning, Genode was designed to manage resources via a trading mechanism. For example, when a client component connects to a server component, it can provide a part of its own memory budget to the server. This way, the server does not need to perform allocations from its own resources on behalf of its client, which mitigates the risk for denial-of-service attacks driven by malicious clients. This scheme works well for memory but it had not been employed for CPU time, yet. The reason was the lack of the scheduling facilities offered by the kernels supported by Genode. However, with their custom kernel called “base-hw”, the Genode developers were finally able to pursue this idea. The outcome of this line of work is featured in the new release.
Besides the WiFi stack and the new scheduler, Genode 14.11 comes with an upgrade of VirtualBox to version 4.3.16 that can be executed directly on the NOVA microhypervisor, a new dynamic linker, added GUI components, and networking support for the Raspberry Pi. The full story behind all those topics is covered by the release documentation.
I find it sad that one of the most interesting alt-OS projects out there doesn’t see very much interest here. The microkernel approach is quite a bit different than most operating systems out there and should lead to greater robustness and flexibility. Being able to run the Linux mac80211 framework and a chipset driver as “just” a userspace process is a great example of this. By keeping these complicated protocol stacks out of the privileged kernel, the system can be more robust and more secure.