3、快速上手:第一个最小系统
好,咱们直接进入正题。这一章的目标很明确——让你亲手跑通第一个 Buildroot 构建的 Linux 系统。说白了,就是从零开始,配置目标平台、选内核版本、执行编译,最后烧录到板子上验证启动。
我个人习惯把这一步叫做「破冰之旅」。为什么?因为很多初学者卡在环境搭建和配置上,一卡就是好几天。我当年第一次用 Buildroot 时,光选错内核版本就折腾了三个小时。嗯,咱们今天不走弯路。
3.1 配置目标平台
先说说目标平台。你手头是什么板子?树莓派 3B+?还是 QEMU 模拟器?我这里以 树莓派 3B+ 为例,因为这是最常用的入门平台。
执行以下命令进入配置界面:
make raspberrypi3_defconfig
make menuconfig
第一行命令是加载树莓派 3 的默认配置。第二行是打开图形化配置菜单。你想想看,这就像给 Buildroot 一个「模板」,然后你再微调。
在 menuconfig 中,你需要确认以下几项:
- Target options → Target Architecture:ARM (little endian)
- Target options → Target Architecture Variant:cortex-a53
- Toolchain → Enable C++ support:建议勾上(很多应用需要)
- System configuration → Root filesystem overlay directories:这里可以指定你的自定义文件覆盖层
3.2 选择内核版本
内核版本怎么选?这是个好问题。Buildroot 默认会带一个内核版本,但未必是最适合你的。
我个人建议:选 LTS 版本。比如当前稳定的是 6.1.x LTS。为什么?因为 LTS 版本维护周期长,bug 修复及时,社区支持好。
在 menuconfig 中:
Kernel → Linux Kernel → Kernel version → 6.1.31
如果你用的是树莓派,还可以选 Raspberry Pi 官方内核:
Kernel → Linux Kernel → Kernel version → Custom Git repository
Kernel → Linux Kernel → Custom repository URL → https://github.com/raspberrypi/linux
Kernel → Linux Kernel → Custom repository branch → rpi-6.1.y
3.3 执行第一次编译
配置完成后,保存退出。然后执行:
make -j$(nproc)
这里 -j$(nproc) 是让编译使用所有 CPU 核心。我第一次编译时,傻傻地用 make -j1,结果等了快两个小时。后来发现用 4 核,20 分钟就搞定了。
编译过程中,你会看到大量输出。别慌,这是正常的。如果遇到错误,先检查:
- 网络是否通畅(Buildroot 会下载源码包)
- 磁盘空间是否充足(至少 10GB 空闲)
- 依赖包是否安装(如 gcc、make、flex、bison 等)
ncurses-dev。执行 sudo apt install libncurses-dev 后解决。如果你遇到类似问题,先看错误日志的最后几行,通常会有提示。
编译成功后,你会看到类似这样的输出:
>>> Generating root filesystem image...
>>> Generating bootable image...
>>> Done
生成的镜像文件在 output/images/ 目录下。对于树莓派,你会看到:
| 文件 | 说明 |
|---|---|
| zImage | 压缩的内核镜像 |
| dtbs/ | 设备树文件 |
| rootfs.ext4 | 根文件系统镜像 |
| sdcard.img | 完整的 SD 卡镜像(可直接烧录) |
3.4 烧录与启动验证
烧录很简单。把 SD 卡插入电脑,找到设备名(比如 /dev/sdb),然后:
sudo dd if=output/images/sdcard.img of=/dev/sdb bs=4M status=progress
sync
注意:/dev/sdb 是你的 SD 卡设备,千万别写错!我见过有人把硬盘写成了 /dev/sda,结果...嗯,你懂的。
烧录完成后,把 SD 卡插入树莓派,上电启动。通过串口(或 HDMI)观察启动日志。如果一切正常,你会看到:
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
...
Welcome to Buildroot
buildroot login:
输入默认用户名 root,密码为空(或 root),即可登录系统。
uname -a 查看内核版本,执行 free -h 查看内存,执行 df -h 查看磁盘。如果这些命令都能正常输出,恭喜你,第一个最小系统跑通了!
3.5 常见问题与解决
这里列几个我踩过的坑:
- 启动后卡在「Waiting for root device」:通常是内核没有正确识别 SD 卡分区。检查设备树文件是否正确,或者内核配置中是否开启了 MMC/SD 驱动。
- 串口无输出:检查串口线是否接对(TX/RX/GND),波特率是否设置为 115200。
- 网络不通:树莓派 3B+ 的网卡是 LAN7515,需要内核开启 USB 网络驱动。在
menuconfig中搜索LAN7515并勾选。
好了,到这里你已经完成了第一个最小系统的构建。从配置到编译,再到烧录启动,整个过程其实并不复杂。关键是每一步都要细心,尤其是内核版本和配置选项。
下一章,我们会深入 Buildroot 的配置系统,看看那些 .config 文件到底在干什么。到时候你会发现,其实 Buildroot 的配置逻辑非常清晰,只是文档写得不够友好而已。