警告: 这个项目还在非常早的开发阶段,操作系统尚未准备好用户程序环境。使用者或开发者应该考虑任何在虚拟机或裸机中运行的风险。
当前这个项目只支持x86_64架构。未来可能会支持aarch64。
debug
- 存储反汇编文件、调试符号表、二进制文件信息和虚拟机的串口记录文件。h2o
- 存储内核的源代码。scripts
- 存储构建项目需要的脚本。src
- 存储整个项目的库和程序代码。target
- 存储生成的二进制和虚拟硬盘映像文件。xtask
- 存储这个项目的构建程序。安装Rust和其他依赖(以Ubuntu为例):
# 配置 Rust 时需要选择 nightly 通道
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
sudo apt install build-essential qemu-system-x86
添加下列目标:
rustup target add x86_64-unknown-linux-gnu
切换到项目的根目录,运行以下命令:
cargo xtask dist img
运行以下命令以在qemu上运行:
sh scripts/run.sh qemu N # N为CPU核心数
查看debug/qemu.log
文件,就能看到操作系统的输出。
运行以下命令以在qemu上调试:
sh scripts/run.sh qdbg N # 同上
然后打开新终端:
# 切换到项目的根目录
gdb debug/FOO.sym
# FOO是想要调试的二进制文件对应的名称,
# 可以先浏览debug目录看看。
# 在gdb里:
target remote :1234
然后就可以设置断点(以KERNEL.sym为例):
b kmain
c
如果想要贡献源码或其他,请先联系我。