MinixRV64 Donz Build:一个可运行的RISC-V 64微内核教学系统

MinixRV64 Donz Build:一个可运行的RISC-V 64微内核教学系统

项目地址GitHub - yangdongstation/MinixRV64: MinixRV64

项目定位:这是一个学习向的Unix风格操作系统,核心创新在于将 Minix微内核思想 (服务隔离、消息传递)与 Linux ABI用户态兼容 (musl libc、标准syscall)相结合。目标是在MilkV Duo开发板上打造一个既能教学又能运行真实Linux程序的微内核系统。


最新里程碑:Stage 2 进程管理框架完成!

2025年12月11日,项目完成了进程管理核心架构,实现了O(1)优先级调度器完整的fork/exit机制ELF加载框架。目前系统可在QEMU中启动,进入交互式Shell,支持16个命令和ramfs文件系统。当前功能完整度约40%,基础框架已能演示多任务切换。


核心设计:融合经典与现代

设计层面 采用方案 教学价值
内核架构 Minix微内核 代码量小(~5k行),模块清晰,易理解IPC机制
系统调用 Linux ABI兼容 直接使用musl libc,可运行为Linux编译的程序
硬件平台 MilkV Duo CV1800B + QEMU 支持真实硬件与虚拟化调试,降低学习门槛
内存模型 物理地址模式(当前) 暂时禁用MMU,便于调试,Stage 3再引入Sv39

已实现功能(可直接演示)

:white_check_mark: 基础架构:RISC-V S模式启动、中断异常处理、UART驱动(输入/输出均正常)
:white_check_mark: 进程管理:64进程上限、PID分配器、task_struct(70+字段)、内核线程
:white_check_mark: O(1)调度器:active/expired优先级队列、时间片轮转、schedule()框架
:white_check_mark: VFS+ramfs:完整的路径解析、mkdir/ls/cat等16个Shell命令
:white_check_mark: ELF加载器:验证、段加载框架(待VFS集成后可直接加载用户程序)

启动效果

✓ O(1) Scheduler
✓ Fork subsystem
Minix RV64 ready
✓ Shell
minix# ps
  PID  PPID  STATE  CMD
    1     0  R      [init]
    2     0  S      [idle]
    3     1  R      sh

当前挑战与求助点

:warning: 内存管理:kmalloc存在bug,目前用静态数组workaround,急需修复slab allocator
:warning: 调度器集成:O(1)调度器框架已完成,但未完全接入主循环,需review代码
:warning: Copy-on-Write:Fork缺少COW,直接复制页表,Stage 3需实现缺页异常处理
:warning: 用户态支持:MMU和syscall用户态返回路径(eret_to_user)待完善

详见BUGS.md,欢迎社区开发者指导!


技术细节亮点

  • 进程栈布局:8KB内核栈,thread_info置于栈底,trapframe置于栈顶,符合Linux惯例
  • 数据结构设计task_struct复用Linux字段布局,降低musl移植难度
  • 构建系统:支持make BOARD=qemu-virtmake BOARD=milkv-duo一键切换
  • 调试友好:提供make qemu-gdb+make gdb组合,GDB脚本自动加载符号

开发路线

  • Stage 3:修复kmalloc、实现COW、Sv39页表、mmap/munmap
  • Stage 4:用户态程序运行、信号处理、完整syscall表
  • Stage 5:musl libc静态链接、动态链接框架
  • Stage 6:EXT2/FAT32、网络协议栈、多核SMP

如何参与

适合人群:学习RISC-V架构、操作系统原理的开发者,希望为教学内核贡献代码

快速开始

git clone https://github.com/yangdongstation/MinixRV64
make qemu  # 2分钟内看到交互式Shell

贡献方向

  1. 修复kmalloc/slab内存分配器(高优先级)
  2. 完善O(1)调度器与主循环的集成
  3. 实现Copy-on-Write Fork
  4. 添加更多Linux syscall兼容层
  5. 撰写中文/英文实验教程

许可证:BSD开源,基于Minix


项目状态:green_circle: 活跃开发中 | 最后更新:2025-12-11 | Star:期待社区关注!

诚挚邀请RISC-V开发者社区审阅代码、提出建议!

2 个赞