2、Buildroot初体验:下载源码、配置树莓派4B、首次编译与烧录启动
好,咱们直接动手。这一章,我带你把Buildroot从零跑一遍。目标很明确:下载源码、配置成树莓派4B、编译、烧录、上电启动。整个过程走下来,你就能看到自己构建的系统在屏幕上跳动了。
说实话,我第一次搞嵌入式Linux时,光搭建交叉编译环境就折腾了两天。后来遇到Buildroot,感觉像是找到了趁手的兵器。嗯,咱们开始吧。
2.1 下载Buildroot源码
Buildroot的源码托管在GitHub上。我个人习惯用git clone,这样后续想切版本、看历史都很方便。
git clone https://git.buildroot.net/buildroot
cd buildroot
如果你想用某个稳定版,可以切到对应的tag。比如2024.02.x长期支持版:
git checkout 2024.02.x
下载完成后,看看目录结构。你会发现几个关键目录:
configs/—— 存放各种开发板的默认配置package/—— 所有软件包的构建脚本board/—— 板级支持文件,比如设备树、启动脚本output/—— 编译产物,第一次编译后自动生成
你想想看,整个系统就是由这些目录里的脚本和配置拼装出来的。是不是很清晰?
2.2 配置目标平台:树莓派4B
Buildroot为树莓派4B提供了现成的默认配置。我们直接用:
make raspberrypi4_defconfig
这条命令会从configs/目录下加载raspberrypi4_defconfig。说白了,就是告诉Buildroot:我要给树莓派4B做系统,CPU是BCM2711,ARM Cortex-A72,你要把对应的内核、驱动、bootloader都准备好。
加载完后,你可以用make menuconfig来微调配置:
make menuconfig
这里你会看到一个图形化的配置界面。我个人建议,第一次先别乱改。默认配置已经能跑起来了。改多了反而容易出问题。
menuconfig里检查一下内核的CMA内存设置。我曾经帮一个朋友排查问题,他用的8GB版,系统只认到4GB,就是因为CMA配置没调。
2.3 首次编译
配置搞定后,开始编译。执行:
make
嗯,就这么简单。但你要有心理准备,第一次编译会下载很多软件包,包括交叉编译工具链、内核源码、各种库。时间取决于你的网络和机器性能。我自己的经验是,在8核的机器上,第一次编译大概需要40分钟到1小时。
编译过程中,你会看到屏幕上刷刷地滚过各种信息。别慌,这是正常的。如果遇到错误,通常是因为网络问题导致某个包下载失败。这时候重新执行make就行,Buildroot会断点续传。
output/images/目录下。对于树莓派4B,你会看到:
| 文件 | 说明 |
|---|---|
sdcard.img | 完整的SD卡镜像,可以直接烧录 |
zImage | 压缩后的Linux内核 |
bcm2711-rpi-4-b.dtb | 树莓派4B的设备树文件 |
rootfs.ext4 | 根文件系统镜像 |
boot.vfat | 启动分区镜像,包含bootloader和内核 |
这里我要多说一句。你看到的sdcard.img其实是一个完整的磁盘镜像,它把boot.vfat和rootfs.ext4拼在了一起。Buildroot用了一个脚本自动完成这个拼接,省了我们不少事。
2.4 烧录SD卡
编译完成后,把SD卡插入电脑。先确认设备名:
lsblk
假设你的SD卡是/dev/sdb(注意,不是/dev/sdb1或/dev/sdb2)。烧录命令:
sudo dd if=output/images/sdcard.img of=/dev/sdb bs=4M status=progress
sync
dd命令不会问你确认,写错了就把你的硬盘数据全抹了。我当年就干过这种事,把公司服务器的硬盘给写了...嗯,从那以后我每次都用lsblk检查三遍。
烧录完成后,弹出SD卡:
sudo eject /dev/sdb
2.5 启动系统
把SD卡插入树莓派4B,接上HDMI显示器和USB键盘,上电。你会看到:
- 绿色的ACT灯闪烁,表示正在读取SD卡
- 屏幕上出现树莓派的彩虹屏
- Buildroot的启动日志刷刷地滚过
- 最后出现登录提示符
默认用户名是root,没有密码。直接回车就能登录。
output/images/rpi-firmware/config.txt,加上enable_uart=1,然后通过串口登录。我在做物联网网关时,大部分调试都是通过串口完成的,方便得很。
登录后,你可以试试几个基本命令:
uname -a # 查看内核版本
free -h # 查看内存使用
df -h # 查看磁盘空间
ifconfig # 查看网络接口
看到这些输出,说明你的Buildroot系统已经成功运行在树莓派4B上了。恭喜你,你已经亲手构建了一个嵌入式Linux系统!
2.6 常见问题与解决
我在教学和项目中遇到过不少问题,挑几个典型的说说:
- 编译时提示某个包下载失败:通常是网络问题。可以手动下载该包放到
dl/目录下,然后重新make。 - 烧录后树莓派不启动:检查SD卡是否插好,或者换个SD卡试试。有些劣质SD卡兼容性不好。
- 启动后没有网络:树莓派4B的网卡驱动默认是编译进内核的。如果没识别,检查一下设备树是否正确。
嗯,这一章的内容就到这里。你亲手走了一遍Buildroot的完整流程,从下载到启动。下一章,我们会深入配置界面,看看怎么往系统里添加自己的软件包。
公众号:蓝海资料掘金营,微信deep3321