3、快速上手:使用默认配置编译一个最小根文件系统,烧录到QEMU中运行,验证系统启动。

好,咱们直接动手。这一节的目标很简单——用Buildroot的默认配置,编译出一个能跑的最小根文件系统,然后塞进QEMU里看看它能不能正常启动。说白了,就是走一遍完整的流程,让你心里有个底。

我个人习惯,学一个新工具,先跑通一个最小例子再说。别一上来就研究各种配置项,那容易把人绕晕。咱们先让系统转起来,后面再慢慢调优。

3.1 选择目标架构与默认配置

Buildroot支持很多架构。咱们选最通用的x86_64,因为QEMU对它的支持最成熟,踩坑最少。

你想想看,如果选个ARM或RISC-V,还得额外折腾交叉编译链和模拟器参数,没必要。先拿x86_64练手,稳。

核心思路:qemu_x86_64_defconfig 这个默认配置,它已经帮我们选好了内核、文件系统类型、以及QEMU需要的启动参数。我们直接编译就行。

3.2 配置与编译步骤

打开终端,进入Buildroot源码目录。执行以下命令:

make qemu_x86_64_defconfig
make -j$(nproc)

第一行命令是加载QEMU x86_64的默认配置。第二行开始编译,-j$(nproc) 表示用你电脑的所有CPU核心并行编译,能快不少。

嗯,这里要注意。第一次编译会下载很多源码包,比如Linux内核、Busybox、glibc等等。网速慢的话,可能要等十几分钟。我建议你泡杯咖啡,或者去干点别的。

小技巧:如果你在公司内网,或者网络环境受限,可以提前把源码包下载好,放到 dl/ 目录下。Buildroot会自动检测并使用本地缓存。我在项目中遇到过好几次网络超时,后来都靠这个办法解决了。

编译完成后,你会看到类似这样的输出:

>>>   Generating root filesystem image
>>>   Generating kernel image
>>>   Generating QEMU start script

关键产物有两个:

  • output/images/bzImage —— 内核镜像
  • output/images/rootfs.ext2 —— 根文件系统镜像

还有一个 output/images/start-qemu.sh 脚本,它封装了QEMU的启动命令,咱们直接用就行。

3.3 启动QEMU并验证系统

执行启动脚本:

cd output/images/
./start-qemu.sh

你会看到一个QEMU窗口弹出来,或者直接在终端里输出启动日志。内核开始加载,然后挂载根文件系统,最后出现登录提示符:

Welcome to Buildroot
buildroot login:

默认用户名是 root,没有密码。直接回车就能登录。

登录后,你可以执行一些基本命令来验证系统是否正常工作:

# 查看根文件系统挂载情况
mount

# 查看进程
ps

# 查看网络接口
ip addr

# 查看内核版本
uname -a

如果这些命令都能正常输出,恭喜你——你的第一个Buildroot根文件系统已经跑起来了!

我曾经踩过的坑:第一次启动时,QEMU窗口一闪就退出了。后来发现是 start-qemu.sh 脚本里默认用了 -nographic 模式,而我的终端不支持。解决办法是手动修改脚本,去掉 -nographic 参数,或者用 Ctrl+A X 退出QEMU。你如果遇到类似情况,可以试试这个办法。

3.4 核心逻辑流程图

下面这张图展示了从配置到运行的完整流程,我建议你对照着看,思路会更清晰。

Buildroot 最小根文件系统编译与运行流程 步骤1:加载默认配置 make qemu_x86_64_defconfig 步骤2:编译系统 make -j$(nproc) 步骤3:生成关键产物 output/images/bzImage(内核) output/images/rootfs.ext2(根文件系统) 步骤4:启动QEMU验证 ./start-qemu.sh ✅ 系统启动成功

3.5 验证要点总结

系统启动后,我建议你重点检查以下几项:

检查项 命令 预期结果
根文件系统挂载 mount 显示 /dev/root 挂载在 /
进程运行 ps 至少看到 initsh 进程
网络功能 ip addr 看到 lo 回环接口
内核版本 uname -a 显示Linux内核版本号

个人经验:我刚开始用Buildroot时,总想一步到位,把各种软件包都选上。结果编译时间超长,还经常因为依赖问题报错。后来学乖了——先用最小配置跑通,再逐步添加功能。这个思路,说白了就是「分而治之」,在嵌入式开发里特别实用。

好了,到现在为止,你已经亲手编译并运行了一个完整的Linux根文件系统。虽然它很小,但五脏俱全。后面的章节,我们会在这个基础上,添加更多功能,比如网络服务、文件系统扩展、自定义应用等等。

记住这个感觉——从零到一,最难的一步你已经跨过去了。


专注资料整理