3、快速上手:make menuconfig配置、选择目标架构(ARM)、选择板级支持包(树莓派3B)、执行make编译

好,咱们直接进入正题。

上一章我们把 Buildroot 源码拉下来了,环境也搭好了。现在该干嘛?配置、编译、烧录,一气呵成。

这一章,我带你亲手走一遍完整的流程。目标很明确:用 Buildroot 给树莓派 3B 编译一个能启动的 Linux 系统

你想想看,从零开始,敲几行命令,就能得到一个完整的嵌入式 Linux 镜像。是不是有点小激动?

3.1 启动配置界面:make menuconfig

进入 Buildroot 源码目录,执行:

cd buildroot
make menuconfig

你会看到一个蓝底白字的图形界面。嗯,这就是我们配置系统的入口。

我个人习惯,第一次用 Buildroot 时,先不急着改东西,而是把每个菜单项都点开看看。这样能快速了解 Buildroot 支持哪些功能。

小技巧: 如果你在 SSH 终端里执行,确保终端窗口足够大(至少 80x24),否则界面会显示异常。

3.2 选择目标架构:ARM

树莓派 3B 用的是 ARM Cortex-A53 处理器,64 位架构。所以我们要告诉 Buildroot:目标 CPU 是 ARM 家族的。

操作路径:

  1. 进入 Target options
  2. 找到 Target Architecture,按回车
  3. 选择 ARM (little endian)

这里有个细节:大小端。ARM 默认是小端模式,选 little endian 就对了。选错了编译出来的内核根本跑不起来。

接着设置:

  • Target Architecture Variantcortex-A53
  • Target ABIEABIhf(硬浮点,树莓派必须用这个)
  • Floating point strategyVFPv4-D16NEON/VFPv4

为什么要选 EABIhf?说白了,树莓派的 CPU 硬件支持浮点运算。如果你选软浮点,性能会大打折扣。我在项目中遇到过有人选错,结果视频解码卡成幻灯片,排查了半天才发现是 ABI 的问题。

注意: 树莓派 3B 虽然是 64 位 CPU,但 Buildroot 默认的树莓派 3B 配置是 32 位模式。如果你想玩 64 位,需要选 aarch64。不过初学者建议先用 32 位,资料多,坑少。

3.3 选择板级支持包:树莓派 3B

Buildroot 最方便的地方,就是内置了大量开发板的 板级支持包(BSP)。你不用自己写设备树、不用配 U-Boot,选个型号,它全帮你搞定。

操作路径:

  1. 进入 Board configuration
  2. 找到 Board 选项,按回车
  3. 选择 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 分钟。

核心要点: 编译过程中如果报错,不要慌。90% 的错误都是网络问题(下载失败)或依赖缺失。检查网络,安装缺失的库,重新执行 make 即可。

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

>>>   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 本章核心逻辑图

下面这张图,帮你理清整个流程:

Buildroot 快速上手流程 make menuconfig 进入配置界面 选择目标架构 ARM Cortex-A53 选择板级支持包 树莓派 3B make -j4 执行编译 生成镜像文件 sdcard.img 写入 SD 卡 dd if=sdcard.img of=/dev/sdX ✅ 树莓派 3B 启动 Buildroot Linux 系统 串口登录 / SSH 登录 / HDMI 显示

这张图把整个流程串起来了。从配置到编译,再到烧录启动,每一步都环环相扣。

3.7 避坑指南

编译过程中,你可能会遇到一些问题。我把自己踩过的坑列出来,你遇到了直接对照排查:

  • 下载失败:Buildroot 会从 GitHub、kernel.org 等站点下载源码。如果网络不稳定,可以配置国内镜像源,或者提前手动下载好放到 dl/ 目录下。
  • 缺少依赖:Ubuntu 上常见的缺失包有 flexbisonlibncurses-dev。执行 sudo apt install -y build-essential flex bison libncurses-dev 基本能解决。
  • 磁盘空间不足:Buildroot 编译过程中会占用大量临时空间。建议至少留出 10GB 空闲空间。
  • 编译中断:如果编译到一半中断了,重新执行 make 即可。Buildroot 会从断点处继续,不会从头开始。

嗯,这一章的内容就到这里。你跟着操作一遍,应该能顺利编译出树莓派 3B 的镜像。下一章我们聊聊如何把镜像烧录到 SD 卡,以及如何启动和调试。


公众号:蓝海资料掘金营,微信deep3321