You need to enable JavaScript to run this app. Yocto dunfell分支集成psplash无对应二进制导致启动服务报错
优惠活动
大模型
产品
解决方案
定价
更多

Yocto dunfell分支集成psplash无对应二进制导致启动服务报错

问题根因与解决方案

核心逻辑说明

你遇到的是Poky Dunfell分支下psplash配方的固有设计行为,和编译环节、镜像打包环节的基础流程无关:

  • 你标记的可疑代码rm -f ${D}${bindir}/psplash不是配方bug,是psplash官方的刻意设计:psplash的主程序默认不会安装到目标镜像的/usr/bin路径,只把配套的IPC工具psplash-write安装到该路径,主二进制的启动逻辑是通过systemd服务在开机阶段从内存临时分区加载运行。直接删除这行代码触发的scriplet错误,本质是psplash的post-install脚本中硬编码了删除该文件的逻辑,和实际安装流程不匹配导致的。
  • 编译过程在tmp目录生成的psplash二进制属于do_compile阶段的中间产物,本身就不在do_install的打包清单里,自然不会被拷贝到sysroot或者最终镜像中。

你当前配置的错误点

  • SPLASH = " psplash-default" 赋值时带了多余的前置空格,Yocto变量赋值会将前导空格计入变量实际值,最终会导致splash主题名匹配失败
  • 手动通过IMAGE_INSTALL_append += " psplash"追加psplash包的方式,本身没有修正psplash默认的文件裁剪逻辑,即使包被安装到镜像里,也不会带上/usr/bin/psplash主二进制
  • 之前移除meta-raspberrypi层的psplash内置引用时,没有同步清理层内残留的psplash自定义systemd服务文件,这些硬编码指向/usr/bin/psplash路径的服务文件,就是触发EXEC报错的直接原因

正确操作步骤

  • 移除local.conf中手动追加的IMAGE_INSTALL_append += " psplash"配置,保留IMAGE_FEATURES += " splash"即可——Dunfell分支中这个splash特性会自动触发psplash的适配安装流程,修正文件裁剪规则,将主二进制正确打入镜像
  • 将带前置空格的SPLASH配置修改为SPLASH = "psplash-default",去掉值前后的多余空格
  • 清理meta-raspberrypi层中残留的所有自定义psplash相关service文件,使用Poky原生的psplash systemd配置即可解决路径找不到的报错
  • 如果有强制需求需要在/usr/bin路径保留psplash主二进制,不要直接修改原配方中的删除行,而是通过自定义bbappend在do_install阶段后补充文件拷贝逻辑,避免触发scriplet错误:
    do_install_append() {
        install -m 0755 ${B}/psplash ${D}${bindir}/psplash
    }
    

内容的提问来源于stack exchange,提问作者Escalion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 02:54:05