RUMPKERNEL(7)

📦 version 11.0, in nixpkgs unstable

💅 RUMPKERNEL — the rump kernel page (section 7 of the manual, bestie)

okay so real talk, this is the rump kernel page from the Miscellaneous Information Manual, and it's literally about the Anykernel and Rump Kernels. buckle up 🎀


✨ DESCRIPTION ✨

so rump kernels give you portable, componentized, kernel quality drivers — and we're talking file systems, POSIX system call handlers, PCI device drivers, a SCSI protocol stack, virtio and a TCP/IP stack. all of it, in one vibe 💅

the fundamental enabling technology here is the anykernel architecture of NetBSD, which is what lets you use unmodified NetBSD kernel drivers. no cap. and the minimalistic rumpuser(3) interface is what integrates a rump kernel to the host platform. platforms that are suitable and readily supported include, for example, POSIX userspace (such as NetBSD), hypervisors (such as Xen and KVM), and bare metal hardware. we love a flexible icon 🦋

rump kernels are component-oriented, which means they consist of libraries which are linked together to form runtime images. if the platform supports it, dynamic linking may be used to load components at runtime — allowing the creation of services where the runtime component configuration is specified when the service is run (peep rump_server(1) for an example). slay.

a rump kernel provides its own set of namespaces, such as a file system hierarchy and TCP ports, that are independent of the ones on the host and of any other rump kernel instances. separate eras, honestly. but bestie, note this: the presence of the provided namespaces depends on the components that the rump kernel was constructed with. for example, networking and file systems are components, and it is possible to construct a rump kernel which supports neither. imagine. 😭


🌸 the bootstrap parameters 🌸

a rump kernel accepts the following bootstrap parameters. the exact way of specifying the parameters depends on the host platform; for example in POSIX userspace the parameters are environment variables. iykyk.

  • RUMP_NCPU — if set, the value indicates the number of virtual cores configured into a rump kernel, i.e. the number of threads which can be concurrently executing code inside the rump kernel.

the special value "host" can be used to specify the number of of host cores available (note: not available on all platforms). if this parameter is unset, two cores will be configured.

  • RUMP_VERBOSE — if set to non-zero, causes bootstrap messages to be displayed on the console. little chatty moment, we love her.
  • RUMP_MEMLIMIT — if set, indicates the maximum amount of memory that a rump kernel will attempt to allocate from the host. if this parameter is unset, the rump kernel attempt to allocate host memory until allocation fails. when the rump kernel is close to the allocation limit, or when host allocation fails, the rump kernel will attempt to make more memory available by invoking its internal pagedaemon to flush caches. resourceful queen 👑
ok but fr fr, unset RUMP_MEMLIMIT means it just keeps asking the host for memory until allocation fails — so set it if you want the vibe check to have a ceiling.

👀 SEE ALSO 👀

  • https://rumpkernel.github.io
  • Antti Kantee and Justin Cormack, “Rump Kernels: No OS? No Problem!”, USENIX, ;login:, No. 5, Vol. 39, October 2014.
  • Antti Kantee, “Flexible Operating System Internals: The Design and Implementation of the Anykernel and Rump Kernels”, Aalto University Doctoral Dissertations, 2012.
  • Antti Kantee, “Rump Device Drivers: Shine On You Kernel Diamond”, Proceedings of AsiaBSDCon 2010, pp. 75-84, March 2010.
  • Arnaud Ysmal and Antti Kantee, “Fs-utils: File Systems Access Tools for Userland”, EuroBSDCon 2009, September 2009.
  • Antti Kantee, “Rump File Systems: Kernel Code Reborn”, Proceedings of the 2009 USENIX Annual Technical Conference, pp. 201-214, June 2009.
  • Antti Kantee, “Kernel Development in Userspace - The Rump Approach”, BSDCan 2009, May 2009.
  • Antti Kantee, “Environmental Independence: BSD Kernel TCP/IP in Userspace”, Proceedings of AsiaBSDCon 2009, pp. 71-80, March 2009.

like, the reading list? immaculate. 📚✨


🕰️ HISTORY 🕰️

an experimental concept for the anykernel and rump kernels was first seen during the NetBSD 5.0 development cycle. a stable concept was ready for NetBSD 6.0. glow-up complete 💖


and that's the whole page bestie — this one came from Debian, dated July 15, 2023, RUMPKERNEL(7) in the Miscellaneous Information Manual. go forth and rump 🫶

📦 where this page comes from