With the ability to run the GNU tool chain including GCC, binutils, and GNU make, the Genode OS framework has taken another big step towards becoming a general-purpose OS. The just released version 12.05 introduces Genode’s file-system infrastructure along with support for stacked file systems, extends the framework API with support for configuring system components on-thy-fly, and adds media replay capabilities.
The driving force behind most of the new features was the Noux runtime environment, which allows the use of a growing number of GNU software packages directly on the variety of microkernels supported by Genode. Noux is pivotal for the plan of the Genode developers to use Genode as OS for their everyday development work by the end of the year. The biggest missing piece of the puzzle was the lack of file-system infrastructure. Even though accessing block devices was possible through one of the block-device drives, accessing file systems stored on these block devices was performed via libraries only. This imposed the huge restriction that one block device could not be used by more than one process at a time.
With the newly added file-system infrastructure, this road block is gone. The key element is the RPC interface for file-system access. This interfaces facilitates the use of synchronous RPC for all functions related managing the file name space. But for potentially long-taking read and write operations, the interface devises the use of asynchronous communication via shared memory and signals. The first implementation of the new interface comes in the form of an in-memory file system. At the client side, the interface can be used either directly via the Genode API, through the POSIX file API provided by the libc, or by the means of the Noux runtime.
The second major focus of the development during the release cycle was put on the USB stack. The existing USB stack ported from Linux 2.6.20 turned out to be too hard to maintain to represent a sustainable solution for Genode. So the project took the chance to re-approach the problem of integrating 3rd-party device drivers with the framework in a clean way. The result is a new USB stack based on Linux 3.2. Compared to the old solution, the new variant significantly lowers the complexity of modified or custom created glue code (to less than 4.000 lines of code) so that the driver stack becomes much easier to maintain in the future.
With regard to libraries and applications, the most prominent addition is the port of libav alongside a profound improvement of libSDL. The popular libav library is a solution for decoding, converting, and streaming video and audio data. The introduction of libav support is accompanied with a Qt4-based example application that facilitates the use of Genode’s unique concepts such as the natural way of sandboxing the codec within a separate process and the ability to use Genode’s session concept for creating a video post-processing pipeline.
Version 12.05 comes with many further additions and improvements. The get the full picture, read on the comprehensive release notes.