How-to guides
Task-by-task guides: build nos, run it, talk to it, debug it, put it on a server, boot Linux under its hypervisor, write a module, run the gates.
- 01Build nosBuild the kernel, its modules and the boot images for x86-64 and arm64: in Docker on macOS, or natively on Linux with the pinned Rust nightly.
- 02Run nos in QEMUBoot nos on x86-64 from the ISO or a disk image, under KVM on Linux, and on arm64 with HVF on Apple Silicon, then tell a good boot from a bad one.
- 03Connect to a running nosReach the kernel's shell over the serial console, the UDP shell or SSH, and stream its log to your machine with netconsole.
- 04Debug nos with GDBAttach GDB through QEMU's stub, read a panic and its backtrace, raise trace levels, bisect a failing boot, and get the log off a machine with no serial port.
- 05Install nos on a dedicated serverPour the nos system image onto a spare partition of a Linux server, boot it once through the server's own GRUB, and log in over SSH.
- 06Boot a Linux guest under the nos hypervisorBuild a small Linux kernel and BusyBox initramfs, load hv.ko into nos, then boot, type at, network and stop Linux guests.
- 07Write a loadable kernel module in RustCreate a nos kernel module in Rust with kmod and kcore, give it a shell command, build the .ko and load it into a running kernel.
- 08Run the gates: test a change the way nos doesBoot self-tests, smoke boots on both architectures, UB-checked builds, per-subsystem gates and host fuzzers: what to run after a change, and how to judge it.