Hello,
[ Disclaimer: I am one of the developers of the Muen kernel ]
On 04/28/2014 04:09 PM, Alfonso De Gregorio wrote:
> Muen is an experimental technology. At the current stage it lacks most
> of the features provided by Xen -- it will suffice to say that:
> 1. The Linux kernel cannot run as a Muen subject, yet (*).
Muen is actually able to run Linux as a subject, see [1].
> 2. While some resources can be accessed using port an memory-mapped
> I/O, there is no PCIe virtualization.
We have experimental branches which implement PCI-Passthrough and VT-d
support. Coincidentally, integration of these features into the main
development branch is next up on our todo list.
> Hence, trying to assess the suitability of Muen as an isolation
> backend solely on the basis of its current maturity would be a losing
> proposition. We should look at what Muen might become in the future.
Muen is a young project and is currently under very active development.
The main difference to Xen is that the Muen Separation Kernel is
designed to be a special purpose Microkernel targeting high assurance
use cases.
The objective of an SK is to enforce strict component isolation.
Information flow between components is only permitted if specified by a
system policy. All functionality not absolutely necessary to implement
the separation of components (i.e. virtual machines) is not part of the
kernel.
Muen is much more static since a system has to be completely specified
in a policy at integration time. The policy makes resource allocation
explicit and allowed us to omit complicated resource management
functionality from the kernel.
Advanced Intel virtualization features such as Extended Page Tables
(EPT) greatly simplified the kernel implementation. In contrast to other
hypervisors Muen requires these hardware features since it was designed
with their availability in mind. This greatly contributed to a clean
design and spared us from the complexities and problems of emulating
such mechanisms in software.
As a consequence of this design, the code size of the Muen kernel is
orders of magnitudes smaller than Xen (we consider Dom0 part of the
TCB). Currently the kernel is composed of ~2'600 SLOC of SPARK and ~200
SLOC of assembly (system boot only).
SPARK is a precisely defined high-level programming language designed
for implementing high integrity systems. It is based on Ada, which is
itself a programming language with a strong focus on security and
safety. The use of SPARK allowed us to formally prove that the kernel
contains no runtime errors at the source code level.
[...]
> *) As far as the memory management goes, in Muen it is possible to run
> unmodified guest OS. However there are still unresolved issues related
> to the Linux boot process.
We are not aware of any Linux boot issues. Could you please elaborate?
Regards,
Adrian
[1] -
https://groups.google.com/forum/#!topic/muen-dev/TFPsXHfV2zU