This is the Murgia Hack system, a microkernel and OS useful to experiment with hardware, build modular system, and running unikernels (hereinafter "have fun").
The leitmotiv and design principle of the MH system is that "Everything Is A Device".
For more information refer to the Murgia Hack system home page, or have a look at the FOSDEM 2016 and FOSDEM 2018 presentations.
In order to build MH, you will need GNU make, and a working C compiler in the host. This has been tested in GNU/Linux and OSX.
Refer to the MH toolchain README for detailed instruction how to download, build and install the compilers.
Be sure that you have in the path the toolchain binaries you've just installed:
$ export PATH=<INSTALLDIR>/bin:$PATH
Where INSTALLDIR is the installation directory used during the toolchain compilation. A quick way to check this is that the i686-elf-murgia-gcc
executable can be found by the shell.
Building MH should be straighforward. From the main directory, simply type:
$ make
This will go on for a while, and produce a binary called 'dist/ukern'. This contains both a multiboot binary and a the initial bootstrap server.
The quickest way is to try it with qemu:
$ qemu-system-x86_64 -kernel dist/ukern
If you want to try it on a real system, you can boot it from grub:
> multiboot PATH/TO/ukern
> boot
The project is under active, albeit slow, devlopment. The kernel is relatively complete, having been the biggest focus of my interest, the userspace has a couple of very useful libraries and is currently being expaned into a more useful tool.
Yes, quite pompously. I found the architecture of MH a natural enviroment for running unikernels in userspace. Experiments have been made with rumprun, and the future will probably bring more experiment with MirageOS and Solo5.
Nothing, yes. Current scope is that of getting all the feature that the kernel actually has into something visible.
The code base is non-trivial. It can enumerates devices present at boot, it supports userspace device drivers for it, the rump kernel modules have been ported so it is possible to use NetBSD drivers, filesystem and other code in userspace to driver real hardware, it has a complete libc in userspace, Newlib, and has a really useful native runtime system, libmrg.
What needs to be done is bringing all these tools togeter. And fix bugs, of course.
The system has not be ported yet to any architecture other than i586+, despite being designed and developed with portability in mind.
Most certainly!