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

Yocto Dunfell自定义配方设置root密码及创建用户失败求助

问题分析与修复方案

你的配方存在两个核心问题:一是extrausers类的作用时机不对,二是用户配置的命令细节有疏漏,导致root密码和test用户未生效。以下是具体修复方案:

核心问题说明

  1. extrausers类是在镜像构建的rootfs阶段执行用户操作,你的配方是普通package配方,单独继承extrausers不会自动触发用户配置逻辑,除非确保该package被纳入镜像构建流程。
  2. debug-tweaks特性会强制root无密码登录,若未彻底移除会覆盖你的密码设置;同时useradd命令缺少必要参数,导致用户创建后无法正常使用。

方案1:将用户配置迁移到镜像配方(推荐)

把用户设置逻辑放到自定义镜像配方(如my-custom-image.bb)中,这是Yocto中管理用户的标准方式:

# 移除强制root无密码的调试特性
IMAGE_FEATURES_remove += "debug-tweaks"

# 继承用户管理类
inherit extrausers

# 配置用户参数
EXTRA_USERS_PARAMS = " \
    # 设置root明文密码,系统会自动加密
    usermod -P testpasswd root; \
    # 创建test用户,-m生成家目录,-s指定登录shell
    useradd -m -s /bin/sh -p '' test; \
"

方案2:修改现有package配方使其生效

若必须在package配方中实现,需补充依赖并调整配置逻辑:

SUMMARY = "Test"
LICENSE = "CLOSED"

# 全局移除debug-tweaks特性
IMAGE_FEATURES_remove += "debug-tweaks"

inherit extrausers

# 添加用户操作所需的原生工具依赖
DEPENDS += "shadow-native"

# 追加用户配置,避免覆盖其他组件的用户设置
EXTRA_USERS_PARAMS_append = " \
    usermod -P testpasswd root; \
    useradd -m -s /bin/sh -p '' test; \
"

FILES_${PN} = "/test/tmp"

do_install () {
    install -d ${D}/test/tmp
}

注意:需在镜像配方中添加IMAGE_INSTALL_append = " 你的package名称 ",确保该package被纳入镜像。


验证与额外调整

  1. 清理构建缓存后重新编译:bitbake 你的镜像名 -c cleanall && bitbake 你的镜像名
  2. 若明文密码仍不生效,可改用加密密码:
    • 执行openssl passwd -1 testpasswd生成加密后的密码串(如$1$abc123...)
    • 将配方中的密码命令替换为:usermod -p "$1$abc123..." root;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:15:37