Yocto编译iotedge烧录后/etc、/usr/bin目录找不到对应文件如何排查
排查方案
常见默认安装路径
meta-virtualization层的iotedge recipe默认不会把二进制放在/bin目录,你可以优先检查以下路径:
- 守护进程主二进制:
/usr/sbin/iotedge - 配置文件目录:
/etc/iotedge/ - 配套工具二进制:
/usr/bin/iotedge-*前缀的文件
分步骤排查逻辑
- 第一步:验证iotedge是否被加入镜像安装列表
进入Yocto构建目录下的tmp/deploy/images/<目标架构>/路径,找到对应镜像的.manifest后缀文件,搜索iotedge关键词。如果搜索不到相关条目,说明你仅完成了iotedge的编译,没有将其加入镜像的安装配置,需要在conf/local.conf或者自定义镜像recipe中添加:
IMAGE_INSTALL:append = " iotedge-daemon iotedge-cli"
注意字符串开头需要留空格避免和前面的配置拼接错误。
第二步:检查iotedge的实际安装路径
如果manifest中存在iotedge相关包,进入构建目录下的tmp/work/<目标架构>/iotedge-daemon/<版本号>/temp/路径,查看log.do_install文件,确认编译产物在do_install阶段被拷贝到了哪些路径,部分自定义recipe可能会修改默认安装前缀。第三步:验证包拆分配置是否正确
查看iotedge-daemon recipe中的PACKAGES和FILES:${PN}配置项,确认你需要的二进制、配置文件没有被拆分到其他独立子包(比如部分recipe会把cli工具单独拆分到iotedge-cli包,只安装iotedge-daemon会找不到命令行工具)。第四步:确认烧录的镜像版本正确
直接解压构建生成的rootfs压缩包(通常在tmp/deploy/images/<目标架构>/下的.tar.gz或者.ext4格式文件),在解压后的文件系统中搜索iotedge相关文件,确认编译产物确实存在于rootfs中后再进行烧录,避免误烧旧版本镜像。
内容的提问来源于stack exchange,提问作者Raulp
相关产品推荐
相关产品推荐

