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.
with every new release i become a little more interested in this project. are there any flavors of custom OS’s being built using this framework?
This is extremely impressive. Several projects, such as Haiku, have ported Gallium, but only the software drivers. The fact that they even ported GEM and the Linux DRM driver is incredible. As I see it, the main two driver issues that prevent alternative OSs from ever being very useful are GPUs and Wifi.
Admittedly, it’s only running in user space, in a kind of hack-ish way. Only one program can use the graphics card at a time. But if they could separate out the GEM part into another process, they would be able to have a nice micro-kernel like system so that the graphics driver couldn’t crash the kernel, and multiple programs would be able to use it. The main disadvantage would be decreased performance and system integration, which is why Linux has put mode setting in the kernel.