RUMP_SP(7)

πŸ“¦ version 11.0, in nixpkgs unstable

πŸŽ€ rump_sp(7) β€” Miscellaneous Information Manual πŸŽ€

✨ NAME ✨

rump_sp β€” rump remote system call support. That's the vibe: remote syscalls for a rump kernel, served over a socket. πŸ’…

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so the rump_sp facility is literally how clients attach to a rump kernel server over a socket and perform system calls. Remote-control syscall era, no cap. πŸ’–

Real talk: making a local rump system call is faster than calling the host kernel, but a remote system call over a socket is slower. So this facility is mostly meant for operations that are not performance critical β€” think configuration of a rump kernel server, not your hot-path speed demon moment. ⭐

πŸ‘― Clients πŸ‘―

The NetBSD base system comes with multiple preinstalled clients you can use to configure a rump kernel and request diagnostic information. These clients run as hybrids: partially in the host system and partially against the rump kernel. Iconic behavior, fr fr. 🫢

For example, network-related clients will typically avoid making any file system related system calls against the rump kernel, since it is not guaranteed that a rump network server has file system support. Another example is DNS: since a rump server very rarely has a DNS service configured, host networking is used to do DNS lookups. Separation of concerns slay. ✨

Some examples of clients include:

  • rump.ifconfig β€” configures interfaces.
  • rump.sysctl β€” used to access the sysctl(7) namespace.
  • rump.traceroute β€” used to display a network trace starting from the rump kernel.

Also, almost any unmodified dynamically linked application (for example telnet(1) or ls(1)) can be used as a rump kernel client with the help of system call hijacking. See rumphijack(3) for more information. That's the main character energy of syscall hijacking, lowkey. πŸ’€

πŸ”Œ Connecting to the server πŸ”Œ

A remote rump server is specified using an URL. Currently two types of URLs are supported: TCP and local domain sockets.

  • The TCP URL is of the format tcp://ip.address:port/
  • The local domain URL is unix://path

The latter can accept relative or absolute paths. Note that absolute paths require three leading slashes. Don't forget the third slash, bestie β€” it's not a typo, it's the rule. 🚨

To preserve the standard usage of the rump clients' counterparts, the environment variable RUMP_SERVER is used to specify the server URL. To keep track of which rump kernel the current shell is using, modifying the shell prompt is recommended β€” this is analogous to the visual clue you have when you login from one machine to another. Cute prompt, clear vibes. πŸ’…

πŸ” Client credentials and access control πŸ”

The current scheme gives all connecting clients root credentials. Yes, all of them. So it is recommended to take precautions which prevent unauthorized access. This is the serious part, bestie β€” do not skip the vibe check. 😭

  • For a unix domain socket, it is enough to prevent access to the socket using file system permissions.
  • For TCP/IP sockets, the only available means is to prevent network access to the socket with the use of firewalls.

More fine-grained access control based on cryptographic credentials may be implemented at a future date. Future era, maybe, but not today. πŸ¦‹

🌈 EXAMPLES 🌈

Get a list of file systems supported by a rump kernel server (in case that particular server does not support file systems, an error will be returned). Manifesting a working server for you, bestie: ✨

$ env RUMP_SERVER=unix://sock rump.sysctl vfs.generic.fstypes

πŸ‘€ SEE ALSO πŸ‘€

  • rump_server(1)
  • rump(3)
  • rumpclient(3)
  • rumphijack(3)

πŸ•°οΈ HISTORY πŸ•°οΈ

rump_sp first appeared in NetBSD 6.0. A whole era was born. πŸ‘‘


That's the whole rump_sp(7) moment, bestie. This page is from the Miscellaneous Information Manual, and this particular copy says Debian, February 7, 2011, and RUMP_SP(7) β€” so go forth and configure your rump kernel with immaculate energy. πŸ’–βœ¨

πŸ“¦ where this page comes from