编程 自研模拟器上把 Linux 跑起来:工具链、内核与 initramfs 五件套

2026-09-08 07:13:27

把 Linux 内核带到新平台:从零启动的最小路径

很多嵌入式系统用 Linux 当操作系统——因为它是绝佳的基础,且大量开发者与厂商已经为各类硬件写好了驱动。但做自定义硬件时,你多半得自己把内核 bring up。这篇指南讲的就是这件事:把 Linux 跑在一个全新平台上——作者的新平台不是新 PCB,而是一个自制的 RISC-V 模拟 CPU。

内核运行的最低硬件要求

Linux 虽然复杂,运行要求其实不多:

  • 带 MMU 的 CPU:SoC 上负责虚拟地址到物理地址转换的硬件,实现多用户态进程与内核隔离;
  • 足够 RAM:至少能加载内核、Device Tree 和 initramfs;
  • 周期性系统时钟:定时器中断驱动调度。

指南主线(11 个章节)

  1. 获取 Linux 运行(最低要求梳理)
  2. 写一个模拟器(本例的自制 RISC-V CPU)
  3. 编译工具链
  4. 编译 Linux 内核
  5. 编译 init 程序
  6. 制作 initramfs
  7. 写 Device Tree
  8. 全部组装
  9. 在浏览器里运行
  10. 收尾

核心流程:工具链 → 内核 → initramfs → device tree → 模拟器,五件套拼起来就是"Linux 能开机"的最小系统。

实践建议

  • bring up 时先把内核与用户态拆开验证:能启动到 kernel panic 说明内核侧 OK,再排查 initramfs 与驱动;
  • Device Tree 是硬件描述的唯一真相,别在代码里硬编码外设地址;
  • 自研 CPU 起步时用一个最小模拟器(能跑 MMU + 时钟即可),比直接上真硅片迭代快得多。

来源:How to bring up the Linux Kernel on a new platform - WerWolv

复制全文 生成海报 Linux 内核 嵌入式 RISC-V

推荐文章

程序员茄子在线接单