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

Yocto Kirkstone构建core-image-base报错:无法找到newuser匹配项

解决Yocto Kirkstone中newuser包无法找到的问题

核心问题分析

错误No match for argument: newuser说明Yocto的rootfs构建阶段(do_rootfs)在本地repo中找不到newuser包,大概率是包未成功构建、配方路径/配置有误,或者配方本身存在语法/逻辑问题。

分步解决

1. 先单独构建newuser包,确认是否能成功

先跳过镜像构建,单独构建newuser包,查看是否有构建错误:

bitbake newuser

如果构建失败,查看终端输出的错误信息;如果成功,再继续下一步。

2. 检查配方路径与层配置

  • 确认bblayers.conf中正确添加了meta-mylayer:
    打开build/conf/bblayers.conf,确保存在类似行:
    BBLAYERS += "${TOPDIR}/../meta-mylayer"
    
    (因为meta-mylayer与poky同级,TOPDIR是poky/build,所以../meta-mylayer路径正确)
  • 确认local.conf中的IMAGE_INSTALL配置:
    检查build/conf/local.conf里的追加语句:
    IMAGE_INSTALL:append = " newuser"
    
    注意newuser前的空格必须存在,用于分隔包名。

3. 修复配方中的语法/逻辑问题

你的newuser_1.0.bb存在三处关键问题:

(1) 路径缺失斜杠

do_install中的路径少了根目录斜杠,导致生成的路径错误:
修改前:

install -d -m 0755 ${D}home/user1/.ssh

修改后:

install -d -m 0755 ${D}/home/user1/.ssh

(2) 空目录无法被打包

Yocto不会将空目录打包进rpm,所以需要在.ssh目录下添加至少一个文件(比如空的authorized_keys):
更新do_install:

do_install(){
    install -d -m 0755 ${D}/home/user1/.ssh
    touch ${D}/home/user1/.ssh/authorized_keys
    chown -R user1:user1 ${D}/home/user1
}

(3) 密码参数需要哈希值

USERADD_PARAM中的-p参数需要加密后的密码哈希,而非明文。可以用openssl生成:

openssl passwd -1 "your_password_here"

将生成的哈希值替换原有的HKygs03Q6Cwsk,例如:

USERADD_PARAM:${PN} = "-u 1000 -d /home/user1 -m -s /bin/sh -p '$1$xyz...' user1"

4. 清理缓存并重新构建

清理newuser的构建缓存,避免旧的错误文件干扰:

bitbake -c cleanall newuser

重新构建newuser:

bitbake newuser

确认包生成后,再构建镜像:

bitbake core-image-base

5. 验证包是否存在

构建成功后,检查tmp/deploy/rpm/qemux86_64/目录下是否存在newuser-1.0-r0.qemux86_64.rpm,如果存在说明包已正确生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:22:44