如何在Yocto中获取Linux内核源码(重点关注DTS文件)
使用devtool获取Yocto构建中的Linux内核源码(含DTS文件)
1. 先确认内核Recipe名称
首先得搞清楚当前镜像依赖的内核recipe是什么——通常默认是linux-yocto,但也可能是自定义的(比如linux-custom)。跑下面的命令就能查到:
bitbake -e <你的镜像名> | grep "^PREFERRED_PROVIDER_virtual/kernel="
举个例子,如果你的镜像是core-image-minimal,就执行:
bitbake -e core-image-minimal | grep "^PREFERRED_PROVIDER_virtual/kernel="
输出会类似PREFERRED_PROVIDER_virtual/kernel="linux-yocto",这就是你要处理的内核recipe名称。
2. 用devtool拉取内核源码
直接用devtool的modify命令,把内核源码拉到本地工作区,同时关联对应的recipe:
devtool modify <内核recipe名>
比如查到的是linux-yocto,就跑:
devtool modify linux-yocto
执行完后,devtool会自动下载对应版本的完整内核源码(包括所有补丁和DTS文件),存放在build/workspace/sources/<内核recipe名>目录下。
3. 快速定位DTS文件
进入源码目录后,DTS文件的常规路径是arch/<你的架构>/boot/dts:
- 如果是ARM架构:
cd build/workspace/sources/linux-yocto/arch/arm/boot/dts - 如果是64位ARM(aarch64):
cd build/workspace/sources/linux-yocto/arch/arm64/boot/dts
要是不知道具体文件名,用find命令精准定位:
find . -name "*<你的板卡名称>*" -type f | grep .dts
比如找树莓派4的DTS:
find . -name "*rpi-4*" -type f | grep .dts
4. 修改DTS并验证
直接编辑找到的DTS文件就行。修改完后,先验证编译是否正常:
devtool build <内核recipe名>
编译通过后,要是想把修改永久集成到Yocto构建里,用devtool生成补丁并更新recipe:
devtool update-recipe <内核recipe名>
这一步会把你的修改生成补丁文件,同时更新对应的recipe,之后构建镜像时就会自动应用这个修改。
5. 退出devtool工作区(可选)
如果不需要再修改内核,执行下面的命令退出工作区:
devtool reset <内核recipe名>
内容的提问来源于stack exchange,提问作者user3518295
相关产品推荐
相关产品推荐

