Markus Maiwald
e8fb428861
feat(rumpk): Phase 8 - The Summoning (ELF Loader) - 95% Complete
...
## Major Features
### 1. Dynamic ELF64 Binary Loading
- Implemented ELF parser with full header validation (core/loader/elf.nim)
- Created kexec() loader supporting PT_LOAD segment mapping
- Added BSS initialization and data copying from VFS
- Assembly trampoline (rumpk_enter_userland) for userland entry
### 2. Syscall Infrastructure
- Added CMD_SYS_EXEC (0x400) for consciousness swapping
- Integrated exec command in NipBox shell
- Implemented syscall routing through command ring
- Added provenance tracking via SipHash
### 3. Test Binary & Build System
- Created hello.c test program for alien binary execution
- Automated compilation and initrd inclusion in build.sh
- Added libnexus.h header for standalone C programs
### 4. VFS Integration
- Implemented TarFS file cursor system for sequential reads
- Fixed infinite loop bug in cat command
- Added debug logging for VFS mount process
## Technical Improvements
### Memory Management
- Fixed input ring null pointer dereference
- Implemented CMD_ION_FREE syscall for packet reclamation
- Resolved memory leak in input/output pipeline
- Added FileHandle with persistent offset tracking
### ABI Stability
- Split kprint into 1-arg (Nim) and kwrite (C ABI)
- Fixed cstring conversion warnings across codebase
- Corrected RISC-V assembly (csrw sie, zero)
### Documentation
- Comprehensive Phase 8 documentation (docs/PHASE-8-ELF-LOADER.md)
- Detailed implementation notes and debugging status
## Current Status
✅ ELF parser, loader, and syscall infrastructure complete
✅ Test binary compiles and embeds in VFS
✅ Shell integration functional
🔧 Debugging command ring communication (syscall not reaching kernel)
## Files Changed
Core:
- core/loader.nim, core/loader/elf.nim (NEW)
- core/kernel.nim, core/ion.nim (syscall handling)
- core/fs/tar.nim (file cursor system)
- hal/arch/riscv64/switch.S (userland trampoline)
Userland:
- npl/nipbox/nipbox.nim (exec command)
- libs/membrane/libc_shim.zig (syscall implementation)
- libs/membrane/ion.zig (command ring API)
Build & Test:
- build.sh (hello.c compilation)
- rootfs/src/hello.c, rootfs/src/libnexus.h (NEW)
- apps/subject_entry.S (NEW)
## Next Steps
1. Debug SysTable and command ring communication
2. Verify ION fiber polling of chan_cmd
3. Test full ELF loading and execution flow
4. Add memory protection (future phase)
Co-authored-by: Voxis Forge <ai@voxisforge.dev>
2025-12-31 20:18:49 +01:00
Markus Maiwald
694a753bed
feat: Initialize Rumpk Modular Unikernel
...
STRATEGIC PIVOT: From Project to Doctrine
==========================================
This commit initializes Rumpk - a ground-zero Zig+Nim unikernel with
POSIX-hostile design, hard ABI barriers, and military-grade security.
DOCUMENTATION (3 New Specs)
---------------------------
• SPEC-008-RUMPK-ARCHITECTURE.md
- L0 (Zig): Boot, PMM, IRQ, HAL
- L1 (Nim): LWKT Scheduler, Fibers, Disruptor Ring
- L2 (ABI): struct HAL function pointers (future Janus socket)
- L3 (Payload): NPL/NPK loaders, optional POSIX shim
- SipHash IDs + Ed25519 signed execution
• SPEC-009-RUMPK-IO.md
- Disruptor Ring: Lock-free O(1) inter-fiber communication
- Adaptive Governor: War Mode (polling) ↔ Peace Mode (interrupts)
- Zero VM-exit design (Rumkv does NOT touch packets)
• SPEC-010-SOVEREIGN-HIERARCHY-V2.md
- /Cas: Immutable Content-Addressable Storage
- /Cell: Active Containers (Driver/, App/, Sensor/)
- /Bus: Active Interfaces (replaces /dev)
- /Data: Mutable Persistence (User/, Volume/)
- 'The Unix Lie' compatibility layer for legacy apps
VISION.MD UPDATE
----------------
• Added dedicated Rumpk section differentiating from Rumk
• Documented 4-layer architecture with ASCII diagram
• Listed key innovations: Adaptive I/O, Disruptor, SipHash, Ed25519
REPOSITORY STRUCTURE (core/rumpk/)
----------------------------------
core/rumpk/
├── boot/header.zig # Multiboot2/EFI entry
├── hal/abi.zig # L0→L1 ABI contract (struct HAL)
├── core/kernel.nim # kmain() entry point
├── core/ring.nim # Disruptor ring buffer
├── io/governor.nim # Adaptive War/Peace I/O
├── build.zig # Zig build orchestration
└── README.md # Feature index
DESIGN DECISIONS
----------------
• Hard ABI barrier: Zig exports C-compatible struct to Nim
• Language-agnostic: L1 can be swapped for Janus later
• No shared state: Fibers communicate via Channels only
• No JIT, No W^X violations: Code sections immutable
NEXT STEPS
----------
• Phase 1: Boot on QEMU (print 'Hello Rumpk')
• Phase 2: Nim runtime on bare metal
• Phase 3: Two fibers switching (Ping/Pong)
• Phase 4: NPL loading with signature verification
• Phase 5: VisionFive 2 hardware validation
This is the foundation for the 'OS Factory' vision.
Rumpk + Rumkv + NPL = Independent from Unix/Linux.
Tested: Directory structure validated
Status: ✅ SCAFFOLD COMPLETE
2025-12-31 20:18:47 +01:00