You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto构建systemd服务失败:未找到hello.service单元的解决方案咨询

解决Yocto构建中systemd服务文件找不到的问题

以下是针对你遇到的Didn't find service unit 'hello.service'报错的排查和解决步骤:

  • 检查配方中服务文件的安装配置
    确保hellosystemd.bb里正确处理了服务文件的来源和安装路径:

    1. 通过SRC_URI引入服务文件:SRC_URI += "file://hello.service"
    2. 在do_install函数中把服务文件安装到systemd的系统单元目录:
      do_install() {
          install -d ${D}${systemd_system_unitdir}
          install -m 0644 ${WORKDIR}/hello.service ${D}${systemd_system_unitdir}/
      }
      
    3. 用FILES_${PN}声明要打包该服务文件:FILES_${PN} += "${systemd_system_unitdir}/hello.service"
    4. 确认SYSTEMD_SERVICE变量的写法正确,比如:SYSTEMD_SERVICE_${PN} = "hello.service"(当PN为hellosystemd时)
  • 验证服务文件的实际存在性与权限
    启动开发shell进入构建目录检查:

    bitbake hellosystemd -c devshell
    

    在shell中依次确认:

    • ${WORKDIR}下是否有hello.service
    • do_install执行后,${D}${systemd_system_unitdir}目录下是否已复制该文件
    • 文件权限是否为0644(systemd要求服务文件有正确的权限)
  • 确认systemd相关配置的完整性
    即使你已配置DISTRO_FEATURES,也要确保以下配置都正确:

    # 移除sysvinit,启用systemd作为初始化管理器
    DISTRO_FEATURES_remove = "sysvinit"
    DISTRO_FEATURES_append = " systemd"
    VIRTUAL-RUNTIME_init_manager = "systemd"
    # 确保镜像包含systemd特性
    IMAGE_FEATURES_append = " systemd"
    
  • 清理缓存后重新构建
    旧的构建缓存可能导致文件识别异常,执行清理后再构建:

    bitbake -c cleanall hellosystemd
    bitbake hellosystemd
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:12:10