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

Yocto构建树莓派系统时无法切换至sysvinit的技术求助

解决Yocto构建树莓派系统时sysvinit未生成/sbin/init的方案
  • 强制锁定sysvinit配置
    在poky/build/local.conf中添加以下配置,确保systemd被彻底排除,sysvinit成为默认初始化管理器:

    INIT_MANAGER = "sysvinit"
    VIRTUAL-RUNTIME_init_manager = "sysvinit"
    DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
    DISTRO_FEATURES_remove = "systemd"
    

    优先在local.conf中配置,避免单个镜像配方的配置被其他层覆盖。

  • 显式添加sysvinit相关包
    在rpilinux-image.bb中确保包含sysvinit核心包:

    IMAGE_INSTALL += "sysvinit sysvinit-inittab"
    

    部分Yocto层不会自动引入这些包,必须显式添加才能生成/sbin/init文件。

  • 清理缓存并完全重建
    旧构建缓存可能残留systemd相关配置,执行以下命令彻底清理后重新构建:

    bitbake -c cleansstate rpilinux-image
    rm -rf tmp/deploy/images/raspberrypi*
    bitbake rpilinux-image
    
  • 验证配置是否生效
    执行命令检查当前构建配置:

    bitbake -e rpilinux-image | grep -E 'INIT_MANAGER|DISTRO_FEATURES'
    

    确认输出中INIT_MANAGER="sysvinit",且DISTRO_FEATURES里没有systemd字段。如果配置异常,排查是否有其他层或配方在后续步骤修改了这些变量。

  • 排查systemd依赖包
    部分软件包可能强制依赖systemd,执行以下命令找出依赖项:

    bitbake -g rpilinux-image && cat task-depends.dot | grep systemd
    

    对依赖systemd的包,要么替换为sysvinit兼容版本,要么从镜像中移除该包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:20:14