Genode 13.02 supports IOMMUs on x86, runs on Cortex A15

The just released version 13.02 of the Genode OS Framework comes with major improvements of the underlying kernels. Using the NOVA kernel, the framework can be used to build custom operating systems for IOMMU-enabled machines while also leveraging hardware virtualization. Using Genode’s custom kernel or the Fiasco.OC kernel, the new version targets ARM Cortex-A15-based systems such as the Exynos 5250 SoC.

With version 13.02, the tool kit for building component-based operating systems has gained intriguing new platform features. Genode’s unique approach is to use different kernels for different purposes, yet it provides a uniform API that works across all those kernels. With the exception of one custom created kernel, Genode used to rely on using existing 3rd-party kernels largely unmodified. However, this approach turned out to be a severe limitation because the goals of Genode are not always perfectly aligned with those of the respective kernel developers. Hence, the release cycle of the current version marks the point where the Genode developers started to get their hands dirty with kernel code. Both the NOVA and Fiasco.OC kernels have been forked in order to incorporate Genode-specific additions and optimizations. This step is by no means meant to diverge the development of those kernels as the Genode developers do not aspire at all to take the lead in developing either of them. However, this step takes the upstream development off the critical path of Genode users when it comes to kernel changes that are not anticipated by the upstream kernel developers.

Feature-wise, the NOVA hypervisor developed at Intel Labs is the most sophisticated Open-Source microkernel today. It runs on the latest x86-based hardware, provides lightning fast virtualization capabilities, and supports IOMMUs. Although Genode supports this kernel since the end of 2011, most of its modern features remained largely unused. This has changed now. Thanks to the work on both the NOVA-specific code of the Genode framework as well as the kernel code, the entire Genode software stack becomes available on NOVA, including the ability to execute the Genode build system on the NOVA kernel. Furthermore, thanks to the support by Intel Labs, NOVAs virtualization capabilities have become available to users of the framework. Using the new version, virtual machines running on NOVA can interact with Genode’s network, block-device, graphics, and input interfaces.

Besides the improved NOVA platform, the second highlight of the new version is the added support for the ARM Cortex-A15-based Exynos 5250 SoC. There are two kernels that can be used for targeting this hardware. First, there is a custom kernel created specifically for Genode, which is called ‘base-hw’. It is not a free-standing kernel but it is tightly integrated with Genode’s base system. The second option is the Fiasco.OC kernel. To enable the framework on the Exynos 5250 SoC using the latter kernel, which does not officially support Cortex-A15 yet, the Genode project added the needed platform support to its fork of the kernel code.

In addition to platform-related improvements, the new version comes with a few noteworthy functional additions. A new file-system notification mechanism, similar to inotify on Linux, clears the way for sophisticated dynamic application scenarios. For use cases where a Genode-based system should respond to unexpectedly crashing processes, a new failure-detection mechanism has been introduced. Using this mechanism, a parent process becomes able to watch its children and respond to unexpected behavior.

These and many more improvements are covered in elaborative detail in the release notes of version 13.02.


  1. 2013-02-28 5:43 pm
    • 2013-02-28 8:36 pm
      • 2013-02-28 8:56 pm
        • 2013-03-01 10:40 am
          • 2013-03-01 12:55 pm
          • 2013-03-01 1:21 pm
      • 2013-03-01 3:48 pm
        • 2013-03-02 11:14 am
  2. 2013-02-28 7:36 pm
    • 2013-02-28 8:23 pm
    • 2013-02-28 9:00 pm
    • 2013-02-28 10:16 pm
      • 2013-02-28 10:51 pm
        • 2013-02-28 11:26 pm
          • 2013-03-01 8:29 am
          • 2013-03-01 2:34 pm
      • 2013-03-03 8:27 pm
        • 2013-03-04 1:31 am
  3. 2013-03-01 12:22 pm
    • 2013-03-02 11:39 am
  4. 2013-03-01 3:14 pm