很多人学嵌入式,卡住的地方不是写不出驱动,而是根本跑不起来一个能调试的环境。手上没有开发板,或者板子还在快递路上,代码写了也无从验证。这门课要解决的就是这件事:用 QEMU 在一台普通电脑上虚拟出一块 ARM 开发板,让 u-boot 把 Linux 内核拉起来,再从主机挂 NFS 根文件系统进去,最后能在"板子"上跑自己的应用和驱动。
先确认你缺的是哪一块
这门课不适合零基础直接啃。如果你对下面这些词只有模糊印象,学起来会比较吃力:交叉编译、设备树(dtb)、根文件系统、内核镜像 zImage 与 u-boot 的加载关系。反过来,如果你已经会写 Linux 应用、也看过驱动代码,但从来没亲手把 u-boot、kernel、rootfs 这三样东西串成一条完整的启动链,那这门课正好补上这个缺口。
另一个常见缺口是"只会用现成镜像"。厂商给的 SDK 一把梭,能跑,但换块板子、换个内核版本就懵了。课程的思路是自己编译、自己组装,逼你把每一环的输入输出搞清楚。这个过程比直接烧一个预编译镜像慢,但换来的是出问题时你知道该看哪一层。
这门课实际在搭什么
整条链路可以拆成四段,课程基本按这个顺序推进:
- 宿主机侧:安装配置 QEMU,准备交叉编译工具链,明确虚拟开发板的型号和内存、外设参数。
- 引导侧:编译 u-boot,理解它怎么被 QEMU 加载、怎么通过网络或镜像方式把内核和 dtb 拉进内存并跳转执行。
- 内核侧:编译 Linux 内核镜像和设备树文件,配置内核里跟虚拟网卡、NFS 相关的选项——这一步配错,后面挂载一定失败。
- 用户态侧:用 busybox 做一个最小根文件系统,配好 init 和基本目录结构,再通过 NFS 把它挂到开发板上,之后往里加应用和驱动模块。
注意第四段是重点。能进 shell 只是及格线,真正的练习是往这个 NFS 根文件系统里放东西:写个 hello 驱动编成模块,insmod 进去看 dmesg;写个用户态程序,交叉编译后直接丢进 NFS 目录,在开发板上跑。因为根文件系统在网络那头,改完不用重新烧写,改一次跑一次,这种迭代速度才是搭这套环境的意义。
容易翻车的几个点
搭这类环境,失败往往不是大错,而是一堆小配置对不上。提前有个心理准备:
- 内核命令行里的
root=/dev/nfs和 nfsroot 参数、主机 IP、开发板 IP 必须和 QEMU 的网络配置一致,任何一处对不上就是 kernel panic。 - u-boot 的
bootargs和bootcmd要设对,环境变量存不存、存哪儿也影响下次启动。 - NFS 服务端的导出目录权限,别用 root_squash 卡住开发板上的 root 用户。
- busybox 生成的 /dev、/proc、/sys 挂载点如果没在 init 脚本里处理,进去会发现少一堆设备节点。
这些问题课程里都会碰到,建议卡住时不要跳,把报错抄下来一个个查——排查过程本身就是这门课最有价值的部分。
看完应该能回答的问题
用这几个问题自测,答得上来才算真学会了:u-boot 把控制权交给内核时,具体传了哪些信息过去?设备树在这条链路里解决的是什么问题,为什么不用它行不行?NFS 根文件系统和烧在 flash 上的根文件系统,调试体验差在哪?如果换一块真实的 ARM 开发板,这套流程里哪些步骤要改、哪些可以照搬?
能把这几个问题讲清楚,你就不只是"跟着做了一遍",而是真的掌握了嵌入式 Linux 的启动逻辑。之后再面对任何一块新板子,你都有办法把它从零跑起来。
使用 QEMU搭建u-boot+linux+NFS开发环境
嵌入式开发环境搭建指南
编辑点评
深入浅出,从基础到实践,助你快速掌握QEMU、u-boot、Linux等嵌入式开发技术。
⭐ 编辑推荐
本课程带你一步步搭建嵌入式开发环境,从QEMU安装到NFS文件系统配置,全面掌握嵌入式开发技能。
课程亮点
课程目录
9.在开发板上运行应用和驱动程序.mp4 [32.9 MB] 8.完善NFS根文件系统.mp4 [49.1 MB] 7.挂载NFS文件系统.mp4 [37.0 MB] 6.使用u-boot引导Linux内核镜像.mp4 [155.6 MB] 5.使用busybo制作根文件系统.mp4 [161.0 MB] 4.编译Linux内核镜像和dtb文件.mp4 [63.7 MB] 3.QEMU安装及仿真开发板介绍.mp4 [131.4 MB] 2.搭建嵌入式开发基本环境.mp4 [166.4 MB] 1.为什么要使用QEMU学习嵌入式开发.mp4 [112.2 MB]
适合人群
- 嵌入式开发爱好者
- Linux系统工程师
学习收获
祝您学习愉快!
学有所成,前程似锦!






