Today, the Genode OS Framework has seen another feature-rich release, introducing support for hardware-accelerated graphics by the means of Gallium3D, wireless networking via the MadWifi communication stack, a new block-device infrastructure, and Qt4 version 4.6.3. Genode is a modular framework for building special-purpose operating systems, currently supporting 6 different kernels. With the new release, its device-driver coverage reaches a new level and brings the project one step closer towards the goal of shaping Genode to a general-purpose OS.
Gallium3D is the state-of-the-art open-source graphics architecture gaining great momentum on Linux since it has become part of the official Mesa development tree. The developers of Gallium3D set out to create a portable framework, overcoming the limitations of Linux DRI, and facilitating code-reuse among vendor-specific driver code.
For the actual device access on Linux, Gallium3D interplays with the graphics execution manager (GEM) in the kernel. So porting Gallium3D to a new OS involves porting GEM as well. For the initial step, Intel GMA was selected as the first series of GPUs to support. Thanks to Genode’s flexible C runtime and the dynamic linker, the most challenging part of porting the Gallium3D libraries was understanding the relationship between the various parts of Mesa, but there were no technical difficulties. The GEM part was significantly more labor intensive because GEM normally relies on Linux kernel interfaces. To avoid modifying the original code, an emulation layer implementing these interfaces had to be developed. The current release 10.08 comes with the first functional result of this work, which allows executing the famous Gears demo rendered by the GPU.
For pursuing the goal of enabling wireless networking on Genode, the project went for using the Linux device-driver environment (DDE), which enables the unmodified use of Linux device drivers on Genode. Even though Linux DDE had to be slightly extended, the MadWifi communication stack is now able to run almost unmodified on Genode. The current solution still misses some important bits such as support encryption but it is a great showcase of what can be achieved with Linux DDE.
As the framework gets more advanced, the need for block-device support emerged. The new release introduces a new block-device interface based on Genode’s packet-streaming facility. Based on the new interface, block device drivers and clients can be developed. The first available drivers are a simple loop-back block driver operating on a ROM file and the port of the MINDRVR PATA/SATA driver, currently providing access to ATAPI devices. On the client side, the current release comes with an ISO 9660 file-system implementation and a stub driver for the paravirtualized OKLinux kernel.
In addition to work related to device drivers, there are numerous further improvements, which are covered in more detail in the release notes.