Yocto补丁应用机制及内核启动Logo补丁更新咨询
Boot2Qt内核启动Logo补丁相关问题解答
背景
接手了一个基于5.15.5版本定制的Boot2Qt recipe,其中一项定制是修改内核启动画面,不清楚该修改的应用方式,现需进一步更新logo_linux_clut224.ppm文件。
排查过程
- 最初以为修改是通过提及
logo_linux_clut224.ppm的.bbappend文件实现,但对应的linux-raspberrypi_4.9.bbappend没有匹配的.bb文件;实际使用的是linux-raspberrypi_4.19.bb - 通过
grep查找logo_linux_clut224.ppm,发现它也出现在linux.inc中,但该文件未被任何.bb或.bbappend引用 - 最终在补丁文件
dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi/raspberrypi-cm3/0004-Change-boot-logo.patch中找到该文件,此补丁包含git哈希、文件增删信息及新PPM文件内容
现有补丁及应用方式
该补丁内容如下:
From ec56a56d223adb7507fe8263567164de4d9dc1e6 Mon Sep 17 00:00:00 2001 From: aperson@aemail.com Date: Fri, 01 Jan 2021 18:23:11 +6500 Subject: [PATCH 4/4] Change boot logo --- drivers/video/logo/logo_linux_clut224.ppm | 103282 ++++++++++++++++++++++++++- 1 file changed, 102401 insertions(+), 881 deletions(-) diff --git a/drivers/video/logo/logo_linux_clut224.ppm b/drivers/video/logo/logo_linux_clut224.ppm index 7626beb..441bdba 100644 --- a/drivers/video/logo/logo_linux_clut224.ppm +++ b/drivers/video/logo/logo_linux_clut224.ppm @@ -1,883 +1,102403 @@ P3 bla bla bla -63 80
该补丁被linux-raspberrypi_4.19.bbappend引用,通过此文件应用到内核源码。
问题解答
1. 补丁的识别与应用机制
Boot2Qt基于Yocto构建,内核recipe的补丁应用逻辑如下:
- 内核主recipe(如
linux-raspberrypi_4.19.bb)会通过SRC_URI变量声明补丁来源,.bbappend可以追加SRC_URI内容,将目标补丁纳入构建流程 - 系统并非仅靠
.patch扩展名识别,而是依赖SRC_URI中声明的路径,但行业约定俗成用.patch作为补丁文件后缀 - 补丁应用时,Yocto会调用
quilt或git am(依配置而定),按照补丁文件名的数字前缀顺序(如0001-xxx.patch、0004-xxx.patch)依次应用到内核源码树
2. 修改PPM文件后的处理方式
- 优先替换原有补丁:原有补丁本身就是直接替换整个
logo_linux_clut224.ppm文件,直接修改该补丁内的PPM内容、覆盖原文件即可,维护成本最低 - 若做增量调整,也可新增补丁文件(命名为
0005-Update-boot-logo.patch这类数字前缀更大的名称,确保应用顺序在原补丁之后),但会增加后续补丁维护复杂度 - 不建议在原补丁基础上叠加新补丁,易导致补丁依赖混乱
3. 触发内核重建的方式
- 修改补丁内容后,Yocto会自动检测文件变化,触发内核重新编译,无需手动更新
PR变量 - 若未自动触发,可手动清理构建状态后重建:
bitbake linux-raspberrypi -c cleansstate bitbake linux-raspberrypi - 新增补丁时,只要
.bbappend已包含补丁路径(或补丁在默认识别的目录下),构建时会自动应用并触发重建
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

