The rump kernel: A tool for driver development and a toolkit for applications
📜 Abstract
The NetBSD rump kernel is a way to run device drivers outside the kernel. Until recently the most common use was as a tool for running tests on NetBSD subsystems. In the last two years much more infrastructure has been built around it so that a much wider set of uses are possible. I cover some of these new uses in this paper, in particular using the rump kernel as a tool for driver development, and as a way to use it to run NetBSD applications in new environments.
✨ Summary
The paper presents the NetBSD rump kernel as a portable library of kernel drivers and subsystems that runs outside a conventional operating-system kernel. Unlike a complete userspace kernel, it delegates memory allocation, threading, scheduling, and clock services to a host platform through a small hypercall layer. This enables rump kernels to run in ordinary userspace, on Xen, on bare metal, or within other operating systems.
Its principal applications are fast, side-effect-free subsystem testing; debugging and fuzzing with conventional userspace tools; userspace development of filesystem, networking, and some PCI drivers; and execution of existing NetBSD applications through rump-targeted versions of libc and related libraries. The paper also describes rumprun-posix, remote rump-kernel execution, integration with microkernel systems such as Genode, and the use of NetBSD drivers in unikernel or library-operating-system environments. The proposed benefits are reuse of mature drivers, shorter development cycles, application isolation, and reduced system footprint.
Subsequent work demonstrates concrete continuation of these ideas. Genode documentation describes using a NetBSD rump kernel as a filesystem component, while the seL4 rumprun project packages applications with rumpkernel libraries and supports programs including Nginx, Redis, Memcached, and LevelDB. LibrettOS later used rump kernels to build a multiserver/library operating-system prototype, reusing NetBSD drivers and POSIX/BSD applications while extending the rumprun model for multicore systems. These examples indicate influence on microkernel integration, unikernel deployment, and library-OS research, although the available evidence supports technical adoption and follow-on implementation rather than a broad industry impact claim. (genode.org)