The mnu kernel is a mochiOS kernel.
To build the mnu kernel, you will need to have the following dependencies installed:
once you have the dependencies installed, you can build the kernel by running the following command in the root directory of the project:
cargo buildTo run the mnu kernel, you can use QEMU. After building the kernel, you can run it with the following command:
cargo run --release- The mnu kernel is not the place to directly implement OS features.
- Policy decisions live in service code; the kernel performs final enforcement only.
- Filesystems and disks are treated as cext boundaries, not kernel features.
- Capabilities are split into
KernelCapabilityandUserCapability. UserCapabilityapplies to applications and normal services as a high-level permission.KernelCapabilityis a low-level permission the kernel enforces directly.KernelCapabilityshould bind to concrete kernel objects such as process handles, IPC endpoints, VM objects, MMIO regions, IRQ lines, cext instances, and device handles.- IPC should center on endpoints, not raw thread IDs.
- Failures should be contained inside the kernel boundary, including process kill, cext stop, endpoint close, capability revoke, MMIO unmap, IRQ release, waiter wake, and audit logging.
- Anything that can be implemented in a service or cext should stay out of the kernel.
The public syscall ABI is fixed to a small kernel surface:
process_exitprocess_spawnprocess_waitthread_createthread_exitthread_yieldmemory_allocmemory_freememory_mapmemory_unmapmemory_protectmemory_sharememory_syncipc_createipc_sendipc_recvipc_callipc_replyipc_waitcap_clonecap_dropcap_transfercap_querycap_restrictevent_createevent_waitevent_signalevent_polltime_nowsleepcheck_gravity_exist
High-frequency filesystem, GPU, network, GUI, and device operations are expected to flow through IPC, shared memory, and memory_map rather than dedicated syscalls.