Buildroot重新编译自定义DTB及Orange Pi Zero 3启动配置问题
问题解决指南:Buildroot自定义DTB配置与编译问题
1. 解决make不重新编译DTB的问题
Buildroot默认依赖检测不会自动识别设备树文件的修改,要触发DTB重新编译,直接调用内核专属编译目标即可:
make linux-rebuild
执行完成后再运行make,新编译的DTB就会同步到文件系统中。
2. 让U-Boot加载自定义DTB
方法一:修改U-Boot配置
进入Buildroot的menuconfig,依次选择Bootloaders -> U-Boot,在U-Boot custom make options中添加:
CONFIG_DEFAULT_FDT_FILE="sun50i-h616-orangepi-zero3-custom.dtb"
保存配置后重新编译U-Boot:
make uboot-rebuild
方法二:修改启动脚本
如果你的Orange Pi Zero 3使用extlinux启动配置,找到Buildroot板级配置目录下的extlinux.conf(路径通常为board/orangepi/orangepi-zero3/extlinux.conf),修改FDT行内容:
FDT /boot/allwinner/sun50i-h616-orangepi-zero3-custom.dtb
修改完成后执行make更新文件系统。
3. 快速更新DTB到文件系统
仅修改DTB时,无需全量编译,按以下步骤操作:
- 单独编译DTB:进入Buildroot输出的内核源码目录(默认路径为
output/build/linux-<内核版本号>/),执行:
make ARCH=arm64 sun50i-h616-orangepi-zero3-custom.dtb
- 复制编译好的DTB到文件系统目录:
cp output/build/linux-<内核版本号>/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero3-custom.dtb output/target/boot/allwinner/
- 重新生成根文件系统镜像:
make target-finalize
注意:替换命令中的<内核版本号>为你实际使用的内核版本;确保自定义DTB文件中已正确引入原设备树(如#include "sun50i-h616-orangepi-zero3.dts"),避免编译报错。
内容的提问来源于stack exchange,提问作者Anton A
相关产品推荐
相关产品推荐

