Running Applications on the NetBSD Rump Kernel

Justin Cormack

Running Applications on the NetBSD Rump Kernel

Justin Cormack @justincormack

Rump kernels

Slides at

What is a rump kernel?

It is the (NetBSD) kernel without support for

Just drivers

What use is that?

What use is that?

How was it used?

New developments

Xen port

Increased portability

The POSIX implementation of the rump kernel now runs on

Increased testing

There is continuous integration using TravisCI and buildbot

Continuous integration

continuous integration screenshot

Running applications


How does it work?

# ./rumpdyn/bin/rump_allserver unix://sock
# export RUMP_SERVER=unix://sock

# ./bin/ifconfig
lo0: flags=8049 mtu 33648
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	inet netmask 0xff000000

# ./bin/ping -o
PING ( 64 data bytes
64 bytes from icmp_seq=0 ttl=255 time=0.000000 ms

---- PING Statistics----
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.000000/0.000000/0.000000/0.000000 ms

Supported commands

arp cp dumpfs fsck_msdos ls mount_ext2fs ndp pax reboot sysctl wpa_supplicant cat dd ed halt mkdir mount_ffs newfs pcictl rm umount cgdconfig df fsck ifconfig mknod mount_msdos newfs_ext2fs ping rmdir vnconfig chmod disklabel fsck_ext2fs ktrace modstat mount_tmpfs newfs_msdos ping6 rndctl wlanctl chown dump fsck_ffs ln mount mv npfctl raidctl route wpa_passphrase

What runs?

rumprun - TODOs

More new developments

rump on green threads

PCI support

rump on bare metal

rump on microkernels



Four different environments


architecture diagram


Use cases

  1. Driver development
  2. Tests
  3. Drivers for other environments
  4. Applications with userspace drivers, eg networking
  5. Running code securely eg file system code
  6. Very lightweight "containers" with their own OS library
  7. ...

What needs doing?

Get involved