3、快速上手:make menuconfig配置、选择目标架构(ARM)、选择板级支持包(树莓派3B)、执行make编译
好,咱们直接进入正题。
上一章我们把 Buildroot 源码拉下来了,环境也搭好了。现在该干嘛?配置、编译、烧录,一气呵成。
这一章,我带你亲手走一遍完整的流程。目标很明确:用 Buildroot 给树莓派 3B 编译一个能启动的 Linux 系统。
你想想看,从零开始,敲几行命令,就能得到一个完整的嵌入式 Linux 镜像。是不是有点小激动?
3.1 启动配置界面:make menuconfig
进入 Buildroot 源码目录,执行:
cd buildroot
make menuconfig
你会看到一个蓝底白字的图形界面。嗯,这就是我们配置系统的入口。
我个人习惯,第一次用 Buildroot 时,先不急着改东西,而是把每个菜单项都点开看看。这样能快速了解 Buildroot 支持哪些功能。
3.2 选择目标架构:ARM
树莓派 3B 用的是 ARM Cortex-A53 处理器,64 位架构。所以我们要告诉 Buildroot:目标 CPU 是 ARM 家族的。
操作路径:
- 进入
Target options - 找到
Target Architecture,按回车 - 选择
ARM (little endian)
这里有个细节:大小端。ARM 默认是小端模式,选 little endian 就对了。选错了编译出来的内核根本跑不起来。
接着设置:
Target Architecture Variant→cortex-A53Target ABI→EABIhf(硬浮点,树莓派必须用这个)Floating point strategy→VFPv4-D16或NEON/VFPv4
为什么要选 EABIhf?说白了,树莓派的 CPU 硬件支持浮点运算。如果你选软浮点,性能会大打折扣。我在项目中遇到过有人选错,结果视频解码卡成幻灯片,排查了半天才发现是 ABI 的问题。
aarch64。不过初学者建议先用 32 位,资料多,坑少。
3.3 选择板级支持包:树莓派 3B
Buildroot 最方便的地方,就是内置了大量开发板的 板级支持包(BSP)。你不用自己写设备树、不用配 U-Boot,选个型号,它全帮你搞定。
操作路径:
- 进入
Board configuration - 找到
Board选项,按回车 - 选择
Raspberry Pi 3B
选完之后,Buildroot 会自动帮你设置好:
- 内核源码版本
- 设备树文件(.dtb)
- U-Boot 配置
- 根文件系统布局
我曾经第一次用 Buildroot 时,还傻乎乎地自己写设备树。后来发现直接选 BSP 就行了,省了至少半天时间。
选好之后,界面大概长这样:
Board configuration
Board (Raspberry Pi 3B) --->
Boot device (SD card) --->
System image format (ext4) --->
嗯,这里保持默认就行。SD 卡启动,ext4 文件系统,最经典的组合。
3.4 保存配置并退出
配置完成后,按 Tab 键选中 <Save>,回车。它会问你要保存到哪个文件,默认是 .config,直接回车确认。
然后按 Tab 选 <Exit>,退出配置界面。
这时候你会在 Buildroot 目录下看到一个 .config 文件。这个文件记录了你的所有配置选项。你可以把它备份起来,下次直接 make defconfig 加载。
3.5 执行 make 编译
配置搞定,接下来就是最激动人心的环节——编译。
执行:
make
或者如果你想利用多核加速:
make -j4
-j4 表示用 4 个线程并行编译。你的 CPU 有多少核,就可以设多少。我一般用 -j$(nproc),自动检测核心数。
第一次编译会非常慢,因为要下载源码、编译工具链、内核、U-Boot、各种软件包。以我自己的经验,树莓派 3B 的完整编译,在 4 核 i7 笔记本上大约需要 30-40 分钟。
编译成功后,你会看到类似这样的输出:
>>> Generating root filesystem image
>>> Generating image for Raspberry Pi 3B
>>> Done
生成的镜像文件在 output/images/ 目录下:
| 文件 | 说明 |
|---|---|
sdcard.img |
完整的 SD 卡镜像,直接 dd 写入即可 |
zImage |
压缩后的内核镜像 |
bcm2710-rpi-3-b.dtb |
树莓派 3B 的设备树文件 |
rootfs.ext4 |
根文件系统镜像 |
看到这些文件,说明你的 Buildroot 系统已经编译成功了。
3.6 本章核心逻辑图
下面这张图,帮你理清整个流程:
这张图把整个流程串起来了。从配置到编译,再到烧录启动,每一步都环环相扣。
3.7 避坑指南
编译过程中,你可能会遇到一些问题。我把自己踩过的坑列出来,你遇到了直接对照排查:
- 下载失败:Buildroot 会从 GitHub、kernel.org 等站点下载源码。如果网络不稳定,可以配置国内镜像源,或者提前手动下载好放到
dl/目录下。 - 缺少依赖:Ubuntu 上常见的缺失包有
flex、bison、libncurses-dev。执行sudo apt install -y build-essential flex bison libncurses-dev基本能解决。 - 磁盘空间不足:Buildroot 编译过程中会占用大量临时空间。建议至少留出 10GB 空闲空间。
- 编译中断:如果编译到一半中断了,重新执行
make即可。Buildroot 会从断点处继续,不会从头开始。
嗯,这一章的内容就到这里。你跟着操作一遍,应该能顺利编译出树莓派 3B 的镜像。下一章我们聊聊如何把镜像烧录到 SD 卡,以及如何启动和调试。
公众号:蓝海资料掘金营,微信deep3321