March 15, 2011 posted by Antti Kantee
Rump is a componentization of the NetBSD kernel. It lends itself
to multiple uses, such as running kernel code as services in
userspace and for example makes the high-quality NetBSD kernel code
base available for use in multiserver microkernel operating systems.
Running unmodified NetBSD kernel code in standalone userspace
applications has been possible for years. Recently, it also became
possible to use unmodified userland binaries as remote clients for
these lightweight and modular kernel server instances. Things work
straight out of the default NetBSD installation. For example, it
is possible to run an unmodified web browser against a rump TCP/IP
server and restart the TCP/IP server with minimal impact to the
browser. Furthermore, it is possible to run a dedicated TCP/IP
server for every networking application on the system. The combined
flexibility of using proven kernel drivers in lightweight virtual
servers is completely unique to NetBSD.
I have written two documents. One is a technical document explaining
how the rump client/server architecture works and the other one is
a tutorial targetted at users interested in testing how things work
in practise. They can be read independent of each other. However, as things
work slightly differently than in the classic microkernel / userspace OS / distributed OS / virtualization world,
it is recommended to at least skim over the first two introductory sections of the tutorial to properly orient
oneself for the technical article.
The implementation is production quality, so it is immediately
possible to use and even build products on the features described.