GNU / HURD
assembling microkernel…
01 · What is the GNU Hurd

A kernel made of
cooperating strangers.

The GNU Hurd is a collection of user-space servers running on top of the GNU Mach microkernel. Instead of one privileged program doing everything, each capability of the OS — filesystems, networking, process bookkeeping, authentication — is its own small, replaceable program talking over message passing.

Drag to orbit · scroll to zoom · click any module
02 · How many parts does it have

18 servers & translators

The Hurd ships roughly two dozen cooperating servers and translators; these are the ones you'll meet in a typical running system, grouped by what they do. Click a category to isolate it, click a module for detail.

03 · What starts first

From power-on
to login prompt.

Step 1 / 12

GRUB loads the kernel

04 · Three ways to build an OS

Monolithic vs. microkernel
vs. hybrid.

Every column splits the same way: an Application in user mode on top, a kernel/user-mode boundary, and the OS's own services underneath. Monolithic (Linux-style) fuses everything into one privileged kernel block. The Hurd's microkernel keeps only IPC, scheduling and memory in kernel mode and runs every service as an ordinary user-space server. A hybrid kernel splits the difference, pulling the file server and Unix personality server back into kernel mode.

MONOLITHIC
MICROKERNEL (HURD)
HYBRID
05 · Watch a command run

Type a command,
watch it ripple through the servers.

Every shell command is a new Mach task, forked and exec'd, that spends its short life sending IPC messages to a handful of Hurd servers before printing a reply. Type one below and watch the trace, one hop at a time.

Step 1 / 1

Waiting for input

Type a command into the terminal below and press Enter.

guest@hurd ~$
06 · Attach a filesystem anywhere

One command,
a brand-new filesystem.

settrans attaches an ordinary, unprivileged program to any node in the namespace. From that moment, every lookup underneath it — ls, cat, open() — is answered by that program instead of whatever it's sitting in. No kernel changes, no root required.

Pick a translator below, attach it to /mnt, then detach it again.
Equivalent shell command
no translator attached

Pick a translator and click "Attach" to see it here.

07 · Take it further