Tilck 是一个“教育学习用”的单片(monolithic)内核,目标是对二进制层面兼容 Linux,能在 i686 和 riscv64 上跑得起真实的 Linux 用户程序(像 BusyBox、Vim、TinyCC 等)。换句话说:它不是在重写 Linux,而是做一个小、简单、能跑真实软件的内核实验田。
为什么有人做 Tilck?它解决了哪些痛点
- • 学习内核最直观的问题:很多教学内核都得自己写一套用户程序,学习曲线怪高,没法直接拿现成软体跑。Tilck 直接兼容很多 Linux 程序,学习、验证内核行为方便很多。
- • 学真东西不想被复杂性淹没:Linux 很强但也非常复杂——想做改动、测试或验证,会被大量细节和依赖拖慢。Tilck 的目标是“少而精”:更小的代码量、可预测的行为、低延迟,更适合做教学、实验与嵌入式场景探索。
- • 想要在真实硬件上跑但又要轻量:Tilck 能在 QEMU 下用很小内存(比如 3MB)启动,也能写成 USB 启动在真机上跑,适合有硬件试验需求的人。
Tilck 能做什么(亮点速览)
- • 支持 ~100 个 Linux syscall,足够跑 BusyBox、Vim、Micropython 等命令行程序。
- • i686 与 riscv64 支持(riscv 针对嵌入式、使用 device tree)。
- • 内置简单的 ramfs、devfs、只读 FAT 支持(用于 initrd),有 VFS 层。
- • 可在 QEMU 或真实 x86 硬件上启动,提供 BIOS/UEFI 的交互式 bootloader。
- • 测试覆盖与 CI 很到位(单元/系统/交互式测试),并带 GDB 脚本方便调试。
- • 设计目标:更小的二进制、更简单的代码、可预测性和超低延迟。
安装与快速上手(最容易的方法,懒人友好)下面是常用流程,假设你在一台 Linux x86_64 或 WSL 上:
- 1. 克隆仓库并进入目录git clone https://github.com/vvaltchev/tilckcd tilck
- 2. 第一次需要构建工具链(脚本会自动处理常见依赖)./scripts/build_toolchain
- 3. 编译内核并生成镜像make编译完成后会在 build/ 目录看到 tilck.img(或可执行内核文件)
- 4. 用 QEMU 运行(最方便)./build/run_qemu或直接:qemu-system-i386 -kernel ./build/tilck -initrd ./build/fatpart
- 5. 写入 USB 在真机上跑(如果你想)sudo dd if=build/tilck.img of=/dev/sdX bs=4M && sync然后重启选 USB 启动(注意替换 /dev/sdX)
- • 用 GDB 调试:在一终端运行 ./build/run_qemu 让它停在 bootloader,然后 gdb ./build/tilck_unstripped,target remote :1234。
- • 运行自动测试:/st/run_all_tests -c
优点(为什么值得关注)
- • 真正能跑“真实”程序:不像很多教学内核只能跑 demo,Tilck 能跑 BusyBox、Vim、TinyCC 这些真东西。
- • 开发体验好:自带工具链脚本、测试框架、跑 QEMU 的便捷脚本,入门友好。
- • 硬件可实测:强调“在真实硬件上测试”,不是只在 VM 里玩。
缺点 / 局限(要心里有数)
- • 功能不全:只实现了部分 syscall,很多 Linux 特性没实现(图形、丰富网络、块设备等)。
- • 不是替代 Linux:它不打算也不能完整取代 Linux,更像是一个实验/教学/嵌入式域的工具。
- • 用户态多线程支持有限:如果你想跑复杂多线程应用或服务器负载,Tilck 还不是最佳选择。
总结Tilck 是一块“小而真”的内核:用更小的代码做真实的事儿 —— 既能跑很多 Linux 用户程序,又保留了教学和嵌入式探索的轻便性。想学内核、想验证 syscall、想在 tiny 环境跑 Vim 或 BusyBox,Tilck 都是个很值得一玩的选择。
项目地址:https://github.com/vvaltchev/tilck