3、快速上手:make menuconfig配置、选择目标架构、选择板级支持包(BSP)、一键编译体验。

说实话,很多新手拿到Buildroot,第一反应就是——这玩意儿怎么用?

我当年也一样。看着一堆目录和配置文件,心里直打鼓。但后来我发现,Buildroot的入门其实比想象中简单得多。说白了,就三步:选架构、选板子、按编译。

嗯,今天我们就来走一遍这个流程。我会带着你,从零开始,跑通你的第一个嵌入式Linux系统。

3.1 进入配置界面:make menuconfig

首先,你得确保已经下载并解压了Buildroot源码。然后进入源码根目录,执行:

$ cd buildroot-2024.02
$ make menuconfig

你会看到一个蓝底白字的图形化菜单。别被它吓到,这其实就是个配置界面,跟Linux内核的配置界面长得一模一样。

我个人习惯先按 / 键搜索一下,看看有没有自己想要的选项。但今天咱们不搞那么复杂,直接手动选。

小技巧: 如果你在虚拟机里操作,窗口太小可能显示不全。建议把终端窗口拉大一点,至少 80x24 字符。

3.2 选择目标架构

进入菜单后,第一件要做的事就是告诉Buildroot:你要给谁编译系统?

光标移动到 Target options,回车进去。你会看到类似这样的界面:

Target options
    Target Architecture (ARM (little endian))  --->
    Target Architecture Variant (cortex-a7)  --->
    Target ABI (EABIhf)  --->
    ...

这里就是选架构的地方。我遇到过不少新手,上来就选了个x86_64,结果编译出来的东西跑不到ARM板子上。你想想看,这能对吗?

常见的架构选择:

目标平台 架构选项 变体选项
树莓派3/4 ARM (little endian) cortex-a53
树莓派Zero ARM (little endian) arm1176jzf-s
QEMU模拟器 x86_64 corei7 / nehalem
全志H3/H5 ARM (little endian) cortex-a7

选好之后按 Exit 退出,它会问你是否保存,选 Yes 就行。

注意: 架构变体选错了,编译出来的工具链可能无法在你的CPU上运行。我曾经在cortex-a7的板子上选了cortex-a9的变体,结果跑起来各种段错误。排查了整整两天才发现是这问题。

3.3 选择板级支持包(BSP)

架构选完了,接下来就是选板子。Buildroot为很多主流开发板提供了现成的配置,这就是所谓的板级支持包。

回到主菜单,进入 Board support package 或者直接找 Target packages 下面的 Hardware handling。不过更快的办法是——直接用预置的defconfig。

Buildroot在 configs/ 目录下放了很多现成的配置文件。比如:

$ ls configs/
raspberrypi3_defconfig
raspberrypi4_defconfig
qemu_x86_64_defconfig
beaglebone_defconfig
...

我个人建议,第一次玩的话,直接用 qemu_x86_64_defconfig。为啥?因为不需要真实硬件,在电脑上就能跑起来。

$ make qemu_x86_64_defconfig
$ make menuconfig

执行完 make qemu_x86_64_defconfig 后,再打开 menuconfig,你会发现大部分选项已经帮你填好了。这就是BSP的威力——省去了从头配置的麻烦。

核心思想: 选BSP就是选一个「样板间」。你可以在它的基础上改,但不用从毛坯房开始装修。

3.4 一键编译:make

配置都搞定后,就是见证奇迹的时刻了。

在终端里直接输入:

$ make

然后……你就去喝杯咖啡吧。第一次编译时间会比较长,取决于你的网络和CPU性能。Buildroot会下载所有源码包,然后交叉编译整个系统。

我记得第一次编译时,看着屏幕上刷刷刷滚过的日志,心里还挺激动的。大概半小时后,终端提示:

>>   Generating root filesystem image...
/usr/bin/mkdir -p /home/user/buildroot/output/images
...
Build complete.

看到 Build complete 这几个字,就说明你的嵌入式Linux系统已经构建成功了!

编译产物在 output/images/ 目录下:

  • rootfs.ext2 —— 根文件系统镜像
  • bzImage —— 内核镜像
  • rootfs.cpio —— 另一种格式的根文件系统

如果你用的是QEMU配置,可以直接用下面的命令启动:

$ qemu-system-x86_64 -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,format=raw \
    -append "root=/dev/sda console=ttyS0" \
    -nographic

然后你就会看到一个Linux登录提示符。默认用户名是 root,没有密码。直接回车就能进入系统。

避坑指南: 我曾经在编译过程中遇到网络超时,原因是公司网络限制了git://协议。解决办法是换成https://。在 menuconfigBuild options 里,把 Download method 改成 wget 或者设置代理。

3.5 本章知识体系

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

Buildroot 一键构建流程 步骤1:配置 make menuconfig 步骤2:选择 架构 + BSP 步骤3:编译 make 配置目标架构 选择软件包 ARM / x86 / MIPS ... 树莓派 / QEMU / BeagleBone 下载源码 → 交叉编译 → 生成镜像 输出产物 内核镜像 (bzImage / zImage) 根文件系统 (rootfs.ext2 / .cpio) 一键编译,全自动构建 无需手动配置内核、BusyBox、工具链

看到没?整个流程其实就三个节点。配置、选择、编译。Buildroot把中间那些繁琐的依赖处理、源码下载、补丁应用全都自动化了。

你只需要告诉它「我要什么」,它就能给你「造出来」。

一句话总结: make menuconfig 选架构和BSP,然后 make 等结果。就这么简单。

好了,这一章的内容就到这里。你现在应该已经掌握了Buildroot的基本操作流程。下一章我们会深入看看,编译过程中到底发生了什么,以及如何定制你自己的软件包。


专注资料整理