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

Yocto Recipe安装文件到rootfs及install命令语法正确性咨询

问题1:install行代码是否正确

你写的install -m 0755 ${WORKDIR}/myscript.sh ${D}${sysconfdir}/init.d/这行代码语法本身完全正确,没有错误。

配置方法与故障排查

按照以下步骤逐一排查即可解决文件未写入rootfs的问题:

  • 第一步:确认将包加入镜像安装列表
    Yocto不会自动将编译完成的包加入最终rootfs,需要手动指定。在你的镜像配置文件(如自定义image的.bb文件、build目录下的conf/local.conf)中添加以下内容:
# 新版本Yocto(3.0+ 即zeus及之后版本)使用以下写法
IMAGE_INSTALL:append = " customssh"

# 旧版本Yocto使用以下写法
# IMAGE_INSTALL_append = " customssh"

注意customssh前面必须留空格,避免和前面已有的配置内容拼接错误。

  • 第二步:单独编译recipe验证安装逻辑
    执行以下命令单独编译该recipe并验证安装流程是否正常:
bitbake customssh -c cleanall
bitbake customssh -c install

编译完成后进入该recipe的工作目录,路径格式为tmp/work/<目标架构>/customssh/0.1/image/,检查${sysconfdir}/init.d/路径下是否存在myscript.sh:

  • 存在:说明recipe安装逻辑正常,文件未出现在rootfs就是因为没有执行第一步的配置
  • 不存在:再排查SRC_URI路径是否正确、WORKDIR下是否能找到myscript.sh文件
  • 第三步:正确验证rootfs中的文件
    你当前执行find . -name 'myscript*'的搜索范围是整个构建目录,本身就只会返回源码路径。如果要检查最终rootfs里是否有该文件,有两种方式:
    1. 进入镜像对应的临时rootfs目录查找,路径格式为tmp/work/<目标架构>/<你的镜像名>/<版本号>/rootfs/
    2. 烧录镜像启动后直接在设备中查找

补充说明

如果你的镜像使用systemd作为init系统,sysconfdir/init.d下的SysV脚本默认不会自动开机运行,需要额外配置systemd service单元或者开启SysV兼容支持,该操作不影响文件被写入rootfs,仅影响脚本的开机自启逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:54:00