MT7621 极简 Linux 实践路线
结论速览
- 第一阶段只求启动 Kernel、看到串口 log,重点解决镜像格式、加载地址、DTB、串口、RAM、启动参数。
- 第二阶段加 initramfs 和静态 BusyBox,看到
/ #就说明整条链路跑通。 - 第三阶段用
/proc、/sys、/dev检查基础接口,理解各自暴露的是内核状态、设备驱动模型和设备节点。 - 第四阶段按 UART、GPIO、SPI、Flash、Ethernet、USB、PCIe 逐个验证硬件,一次只验一个子系统。
- 第六阶段再过渡到 ext4、SquashFS、UBIFS 等正式 rootfs;Buildroot 可以自动生成整套组件,但建议先手工跑通一次最小系统。
1. 第一阶段:只启动 Kernel
目标:
1 | U-Boot |
此阶段重点解决:
1 | Kernel 镜像格式 |
2. 第二阶段:加入 initramfs
准备:
1 | rootfs/ |
BusyBox 推荐静态编译。
/init:
1 |
|
目标:
1 | / # |
能看到 shell 提示符,就说明:
1 | U-Boot |
整条链路已经跑通。
3. 第三阶段:检查 Linux 基础接口
验证:
1 | cat /proc/cpuinfo |
理解:
1 | /proc → Kernel 状态 |
4. 第四阶段:逐步验证硬件
建议顺序:
1 | UART |
一次只验证一个子系统。
5. 第五阶段:跑自己的应用
先写简单程序:
1 | hello world |
使用交叉工具链编译,再放入 rootfs。
6. 第六阶段:从 initramfs 过渡到正式 rootfs
之后可以使用:
1 | ext4 |
例如:
1 | Kernel |
initramfs 也可以作为过渡环境:
1 | Kernel |
7. Buildroot 的价值
不想手工维护所有组件时,可以使用 Buildroot 自动生成:
1 | Toolchain |
但建议先手工跑通一次最小系统。
这样以后使用 Buildroot 时,能明确知道它替你自动完成了什么。
8. 最终目标
建立完整认识:
1 | U-Boot |
做到这一点后,再学习 OpenWrt、Debian、Buildroot,会容易很多。
