121 lines
4.1 KiB
Markdown
121 lines
4.1 KiB
Markdown
# Rumpk
|
|
|
|
Sovereign unikernel. Zig (L0 HAL) + Nim (L1 kernel logic). Dual-arch: RISC-V 64 and ARM64.
|
|
|
|
**Status:** Experimental — boots on QEMU, 14/14 fibers (riscv64), 9/9 fibers (aarch64)
|
|
**License:** [Libertaria Sovereign License (LSL) v1.0](LICENSE)
|
|
|
|
## Build
|
|
|
|
### Prerequisites
|
|
|
|
- Zig 0.15.x
|
|
- Nim 2.0.x
|
|
- QEMU (for boot testing)
|
|
- bash
|
|
|
|
### Quick Start
|
|
|
|
```bash
|
|
# Clone
|
|
git clone https://git.sovereign-society.org/nexus/rumpk.git
|
|
cd rumpk
|
|
|
|
# Build kernel (RISC-V 64, default)
|
|
bash build_nim.sh riscv64 # Nim -> C -> .o
|
|
bash build_lwip.sh # LwIP static lib
|
|
zig build # Link final kernel ELF
|
|
|
|
# Boot test
|
|
./run.sh
|
|
```
|
|
|
|
### ARM64
|
|
|
|
```bash
|
|
bash build_nim.sh aarch64
|
|
bash build_lwip.sh
|
|
zig build -Darch=aarch64
|
|
./run_aarch64.sh
|
|
```
|
|
|
|
### Full Build (kernel + NipBox userland + initrd)
|
|
|
|
```bash
|
|
bash build_full.sh riscv64 # or: bash build_full.sh aarch64
|
|
zig build # or: zig build -Darch=aarch64
|
|
```
|
|
|
|
## Architecture
|
|
|
|
```
|
|
rumpk/
|
|
├── boot/ L0: Entry points, linker scripts (Zig/ASM)
|
|
├── hal/ L0: Hardware Abstraction (Zig)
|
|
│ ├── entry_riscv.zig RISC-V boot, MMU, page tables
|
|
│ ├── entry_aarch64.zig ARM64 boot, MMU, GIC
|
|
│ ├── virtio_net.zig VirtIO network driver
|
|
│ ├── virtio_block.zig VirtIO block driver
|
|
│ ├── virtio_mmio.zig VirtIO MMIO transport (ARM64)
|
|
│ ├── virtio_pci.zig VirtIO PCI transport (RISC-V)
|
|
│ ├── mm.zig Memory management
|
|
│ ├── channel.zig IPC ring buffers
|
|
│ └── cspace.zig Capability space (HAL side)
|
|
├── core/ L1: Kernel logic (Nim)
|
|
│ ├── kernel.nim kmain, boot sequence
|
|
│ ├── sched.nim Spectrum scheduler (Photon/Matter/Gravity/Void)
|
|
│ ├── fiber.nim Cooperative fiber management
|
|
│ ├── ion.nim ION memory allocator
|
|
│ ├── cspace.nim Capability enforcement
|
|
│ ├── ontology.nim System Truth Ledger
|
|
│ ├── netswitch.nim Network fiber (DHCP/TCP/ICMP)
|
|
│ ├── loader.nim ELF loader + BKDL manifest
|
|
│ └── fs/ VFS + LittleFS bridge
|
|
├── libs/
|
|
│ ├── membrane/ POSIX adaptation layer
|
|
│ │ ├── libc.nim Freestanding libc for Nim
|
|
│ │ ├── net_glue.nim LwIP <-> kernel bridge
|
|
│ │ └── compositor.nim Display compositor
|
|
│ └── libertaria/ Libertaria Wire Format integration
|
|
├── npl/nipbox/ NipBox userland shell (21 commands)
|
|
├── apps/ Subject binaries, linker scripts
|
|
└── vendor/ LwIP, LittleFS, mksh (vendored)
|
|
```
|
|
|
|
### Design Principles
|
|
|
|
- **Two-language split**: Zig for hardware (deterministic, zero-alloc), Nim for logic (expressive, ARC)
|
|
- **Capability security**: CSpace + Pledge + BKDL manifests. No ambient authority.
|
|
- **Spectrum scheduling**: 4-tier priority (Photon 2ms, Matter 10ms, Gravity 50ms, Void unlimited)
|
|
- **System Truth Ledger**: Every security event recorded. Auditable kernel state.
|
|
|
|
## NexusOS Workspace
|
|
|
|
Rumpk is the kernel component of NexusOS. The full system consists of:
|
|
|
|
| Repository | Purpose | Build |
|
|
|------------|---------|-------|
|
|
| [rumpk](https://git.sovereign-society.org/nexus/rumpk) | Kernel | `zig build` |
|
|
| [nip](https://git.sovereign-society.org/nexus/nip) | Package manager | `nim c nip.nim` |
|
|
| [nexus](https://git.sovereign-society.org/nexus/nexus) | Build toolkit | `nim c src/nexus.nim` |
|
|
| [nipbox](https://git.sovereign-society.org/nexus/nipbox) | Userland shell | Built into rumpk via `build_full.sh` |
|
|
| [nexfs](https://git.sovereign-society.org/nexus/nexfs) | Flash filesystem | `zig build test` |
|
|
|
|
### Clone All Repos
|
|
|
|
```bash
|
|
mkdir nexus-workspace && cd nexus-workspace
|
|
for repo in rumpk nip nexus nipbox nexfs; do
|
|
git clone https://git.sovereign-society.org/nexus/${repo}.git
|
|
done
|
|
```
|
|
|
|
## Contributing
|
|
|
|
See [CONTRIBUTING.md](CONTRIBUTING.md) (coming soon).
|
|
|
|
## Stewardship
|
|
|
|
Copyright (c) 2025-2026 Markus Maiwald
|
|
Stewardship: Self Sovereign Society Foundation
|