whfuyn / rcore-os

参考rCore-Tutorial-V3写的内核。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rcore-os

参考rCore-Tutorial-V3做的内核。

开发日记

这里每一步都是按照我自己的理解来做的,可能和教程里的代码有比较多的差异。

  • 可以选择从源码编译rustsbi-qemu
  • 按需求写的Makefile。
  • 自己糊的page table相关数据结构(buggy)。
  • 内核放在高位地址,而不是用单独的地址空间(单页表)。
  • 通过单独的loader(base 0x80200000)加载内核(base 0xffffffffc0000000),不依赖编译器对跳转的编译结果。
  • 自己实现的easy-fs,在代码设计上与教程里有所不同,并且额外支持了多级目录和文件删除功能。

开发环境是WSL2,没有在其它平台测试过。

用法

获取rustsbi-qemu

$ git submodule update --init

编译rcore-os并在qemu上运行。

$ make run

同上,但是会等待gdb接入。

$ make debug

启动gdb并接入。

$ make gdb

踩坑记录

error: sys_common::condvar::Condvar::new is not yet stable as a const fn

rust-lang/rust#98457

照着这个pr改本地的std,把报错里提到的都加上就可以了。


About

参考rCore-Tutorial-V3写的内核。


Languages

Language:Rust 97.7%Language:Assembly 1.2%Language:Makefile 1.1%