| .github/workflows | ||
| arch/x86 | ||
| block | ||
| crypto | ||
| docs | ||
| drivers | ||
| fs | ||
| include/tianole | ||
| init | ||
| ipc | ||
| kernel | ||
| lib | ||
| mm | ||
| net | ||
| scripts | ||
| security | ||
| sound | ||
| tools | ||
| usr | ||
| virt | ||
| .clang-format | ||
| .gitignore | ||
| AGENTS.md | ||
| Makefile | ||
| README.md | ||
Tianole
Tianole 是一个学习型自制操作系统项目,当前面向 UEFI x86_64 机器。
这个项目的主要目的有三点:
- 通过亲手实现一个简化但不玩具化的 OS,理解操作系统核心机制。
- 通过参考 Linux 的目录、分层和工程纪律,建立阅读 Linux 源码的上下文。
- 长期目标是在真机上安全启动,并逐步具备运行本地
git的能力。
Tianole 不宣称自己是成熟 Linux 替代品。当前阶段更准确的定位是:用一个可运行、可验证、可持续演进的代码库,系统性学习 Linux 式内核工程。
当前状态
- 已跑通
QEMU + OVMF下的最小UEFI启动链。 - 已拆分为
bootloader + kernel,并能加载独立kernel.elf。 - 已在进入 kernel 前调用
ExitBootServices。 - 已建立 early log 基础:QEMU debug port 和 COM1 串口。
- 已建立 CPU exception 基础:GDT/TSS/IDT、trap frame、invalid opcode -> panic。
- 已建立物理内存基础:从 boot memory map 初始化最小物理页 allocator。
- 还没有完成完整中断、页表、内核堆、调度、进程、VFS、用户态和 shell。
当前目录
tianole/
AGENTS.md
Makefile
arch/
block/
crypto/
docs/
drivers/
fs/
include/
init/
ipc/
kernel/
lib/
mm/
net/
scripts/
security/
sound/
tools/
usr/
virt/
当前按接近 Linux 的方式分层,但不机械复制 Linux 的所有历史目录:
arch/:架构相关代码block/:通用块层crypto/:通用加密和哈希算法drivers/:设备驱动fs/:VFS 和文件系统init/:初始化流程ipc/:进程间通信kernel/:通用内核主体逐步放这里lib/:通用基础库mm/:架构无关内存管理net/:网络协议栈security/:安全模型sound/:音频子系统tools/:宿主机侧开发工具usr/:初始用户空间virt/:虚拟化支持include/tianole/:项目自有共享接口docs/:正式设计和路线图
开发顺序
当前建议的实现顺序是:
- 启动链
- 早期调试输出
- 内存与异常基础
- 执行流与调度
- 用户态入口
- 文件系统与存储
- shell / 工具
- 面向
git的补齐 - 真机落地
更细的阶段说明见:
构建与运行
在 WSL2 / Ubuntu 中:
make
make run
无界面调试:
make run-headless
cat build/debug.log
本地完整检查:
scripts/check.sh
GitHub Actions 会在 push 和 pull request 时运行同一个检查入口。具体检查拆在 scripts/checks/,共享函数放在 scripts/lib/。
文档
- 路线图:docs/roadmap.md
- 本机环境与真机启动约束:docs/host-machine.md
- Linux 顶层目录映射:docs/agents/linux-layout.md
- agent 入口:AGENTS.md