Xen is a hypervisor that can host multiple virtual machines on one physical machine. For driving physical devices and for virtual-machine management, Xen relies on a privileged guest OS called Dom0. Currently, Linux is the predominant choice to be used as Dom0, which implicates a trusted computing base of millions of lines of code for the other guest OSes?.

Even though Xen was designed as hypervisor, a thorough analyis done by Julian Stecklina concludes that Xen qualifies well as a kernel for Genode. For example, Julian implemented a version of Genode's IPC framework that utilizes Xen's communication mechansims (event channels and shared memory).

Approach

The immediate goal of this work is to get the default demonstration scenario of Genode running on Xen. This implicates the following problems

  • Running core as Dom0 guest OS (by using a modified Xen miniOS)
  • Realizing Genode's protection domains via Xen domains
  • Launching and killing Genode tasks implemented as Xen domains
  • Performing RPC communication across protection domains using Xen's communication primitives
  • Mapping Genode's dataspace concept to Xen primitives
  • Implementing the core services for the access of physical device resources such as interrupts, memory-mapped I/O, and port I/O. These services are required for executing the VESA framebuffer driver and the input device drivers, which are needed for the demonstration scenario.
  • Providing a Xen-specific timer-service

After succeeding at these steps, this work could further be pursued towards the ultimate goal of hosting a full-fledged OS as a node of the Genode process tree.

References

http://www.xen.org
Xen hypervisor website