CHEESED(8) System Manager's Manual CHEESED(8)

cheesedMOUSE boot and shutdown coordinator

cheesed

init

poweroff

reboot

shutdown [-h | -p | -r] [now]

cheesed is the first user process started by the kernel. It performs the platform bootstrap, translates rc.conf(5) into a temporary OpenRC runlevel tree, enters the sysinit, boot, and default runlevels, reaps orphaned children, and coordinates shutdown. OpenRC remains responsible for service ordering and service processes.

If platform bootstrap, policy generation, or a required runlevel fails, cheesed starts an unauthenticated root tcsh(1) directly on the console and keeps restarting it until the machine is shut down.

The init name is accepted only while the process is PID 1. The other invocation names request shutdown by signalling the running cheesed process:

poweroff
Request a clean poweroff.
reboot
Request a clean reboot.
shutdown
Request a poweroff by default. The -h and -p options also select poweroff, while -r selects reboot. The optional now argument is accepted for compatibility; shutdown is always immediate.

On a normal installed NetBSD boot, the platform bootstrap mounts a dynamically sized tmpfs at /tmp, dynamically sized tmpfs filesystems at /var/run and /var/shm, and ptyfs at /dev/pts before starting OpenRC. On live ISO boots, /tmp is bounded to 64 MiB and 8192 nodes, /var/shm is bounded to 64 MiB and 16384 nodes, while /var/run is bounded to 32 MiB and 8192 nodes.

Shutdown enters the OpenRC shutdown runlevel, syncs filesystems, and then calls the platform reboot interface.

Request a reboot.
Request a poweroff.

/etc/rc.conf
Persistent service enablement policy.
/etc/init.d
Machine-local OpenRC service-definition overrides.
/usr/lib/mouse/init.d
World default OpenRC service definitions.
/usr/local/etc/init.d
Ports OpenRC service definitions, searched after World defaults.
/usr/lib/mouse/runlevels
Fixed MOUSE runlevel manifests.
/var/run/mouse-openrc
Generated OpenRC state, replaced at each boot.
/dev/console
Early boot log and emergency console.

The shutdown invocation names return 0 after delivering their request and 1 for invalid arguments or a signalling error. Normal PID 1 operation does not return.

Platform-bootstrap, service-policy, and runlevel failures are written to /dev/console. If platform bootstrap, policy generation, or a required runlevel fails, cheesed opens the emergency root shell described above. Correct /etc/rc.conf, the named service definition, or the reported runtime failure, then reboot; there is no supported command to resume the partially completed boot in place.

After boot, use rc-service service status for one service and rc-status --crashed for failed supervised services.

MOUSE keeps PID 1 responsible for platform bootstrap, the persistent service policy boundary, child reaping, and shutdown, but does not make it a second service manager. OpenRC already provides mature service dependency and supervision machinery; delegating those responsibilities keeps cheesed small and prevents an individual service crash or bad service implementation from becoming instability in PID 1 itself.

Generating OpenRC's effective runlevels from rc.conf(5) combines that supervision with the single-file service policy traditionally provided by BSD systems.

The physical console is the final recovery boundary. An early failure may include the login or authentication path itself, so requiring that path before permitting repair could make the machine unrecoverable. The emergency shell therefore deliberately grants root directly and is not a normal login interface.

OpenRC keeps its runtime service state directly under /var/run because cheesed has already mounted a tmpfs there. Mounting another memory filesystem for that state would duplicate the same volatility boundary and require memory-disk tooling during early boot. On a normal installed boot, the tmpfs mounts have no arbitrary fixed size or inode ceilings; the kernel can allocate runtime state according to the resources actually available to the machine. On live ISO boots, /tmp is bounded to 64 MiB and 8192 nodes, /var/shm is bounded to 64 MiB and 16384 nodes, while /var/run is bounded to 32 MiB and 8192 nodes, to keep mutable state from displacing the ISO-backed World.

tcsh(1), rc.conf(5), openrc(8), rc-service(8)

MOUSE August 29, 2026 CHEESED(8)