当前位置:首页>Linux>Tilck —— 一个小巧、可跑真实 Linux 程序的“教学级内核”,你可以在 3MB 下跑 Vim

Tilck —— 一个小巧、可跑真实 Linux 程序的“教学级内核”,你可以在 3MB 下跑 Vim

  • 2026-09-09 08:08:18
Tilck —— 一个小巧、可跑真实 Linux 程序的“教学级内核”,你可以在 3MB 下跑 Vim

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. 1. 克隆仓库并进入目录git clone https://github.com/vvaltchev/tilckcd tilck
  2. 2. 第一次需要构建工具链(脚本会自动处理常见依赖)./scripts/build_toolchain
  3. 3. 编译内核并生成镜像make编译完成后会在 build/ 目录看到 tilck.img(或可执行内核文件)
  4. 4. 用 QEMU 运行(最方便)./build/run_qemu或直接:qemu-system-i386 -kernel ./build/tilck -initrd ./build/fatpart
  5. 5. 写入 USB 在真机上跑(如果你想)sudo dd if=build/tilck.img of=/dev/sdX bs=4M && sync然后重启选 USB 启动(注意替换 /dev/sdX)
  6. 6. 调试和测试
    • • 用 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

最新文章

随机文章