different code path than using dlopen() before rump_init(), since
the former uses the in-kernel linker and the latter links the object
in rtld).
So:
golem> ./rump_server -l librumpvfs.so -m /sys/modules/tmpfs/tmpfs.kmod unix:///tmp/commsuck
==>
golem> env RUMP_SERVER=unix:///tmp/commsuck rump.modstat
NAME CLASS SOURCE REFS SIZE REQUIRES
suser secmodel builtin 0 - -
tmpfs vfs filesys 0 16713 -
wapbl vfs builtin 0 - -
Source is filesys instead of builtin, as expected.
Notably, for -m you *must* use -l librumpvfs.so. This is because
you need VFS in your kernel to be able to load modules from the
file system. In a regular kernel "librumpvfs.so" is linked at
kernel build time and loaded by the bootloader. Here we use dlopen()
for both effects (the other choices would have been to link
rump_server with -lrumpvfs, but that would limit the flexibility,
or link tmpfs.kmod directly into the binary, but that would limit
the flexibility even more).