3、快速上手:make menuconfig配置、选择目标架构、选择板级支持包(BSP)、一键编译体验。
说实话,很多新手拿到Buildroot,第一反应就是——这玩意儿怎么用?
我当年也一样。看着一堆目录和配置文件,心里直打鼓。但后来我发现,Buildroot的入门其实比想象中简单得多。说白了,就三步:选架构、选板子、按编译。
嗯,今天我们就来走一遍这个流程。我会带着你,从零开始,跑通你的第一个嵌入式Linux系统。
3.1 进入配置界面:make menuconfig
首先,你得确保已经下载并解压了Buildroot源码。然后进入源码根目录,执行:
$ cd buildroot-2024.02
$ make menuconfig
你会看到一个蓝底白字的图形化菜单。别被它吓到,这其实就是个配置界面,跟Linux内核的配置界面长得一模一样。
我个人习惯先按 / 键搜索一下,看看有没有自己想要的选项。但今天咱们不搞那么复杂,直接手动选。
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 就行。
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的威力——省去了从头配置的麻烦。
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,没有密码。直接回车就能进入系统。
menuconfig 的 Build options 里,把 Download method 改成 wget 或者设置代理。
3.5 本章知识体系
下面这张图,帮你理清整个流程的逻辑:
看到没?整个流程其实就三个节点。配置、选择、编译。Buildroot把中间那些繁琐的依赖处理、源码下载、补丁应用全都自动化了。
你只需要告诉它「我要什么」,它就能给你「造出来」。
一句话总结: make menuconfig 选架构和BSP,然后 make 等结果。就这么简单。
好了,这一章的内容就到这里。你现在应该已经掌握了Buildroot的基本操作流程。下一章我们会深入看看,编译过程中到底发生了什么,以及如何定制你自己的软件包。