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

Yocto Mickledore版本BitBake配方设置root密码无效的问题

在Yocto Mickledore版本中设置root密码的正确方法

你当前使用extrausers配方设置root密码但未生效,可能是以下几个原因导致,对应解决方法如下:

1. 确保extrausers配置正确生效

检查配方写法,建议将密码单独定义变量并包裹单引号,避免特殊字符解析问题:

inherit extrausers

ROOT_PASSWORD = "liApcZvYV/3jA"
EXTRA_USERS_PARAMS = "usermod -p '${ROOT_PASSWORD}' root;"

注意:如果密码包含特殊字符,必须用单引号包裹,防止BitBake解析时出错。

2. 禁用自动登录/无密码登录配置

Yocto默认可能开启了root自动登录或无密码登录,即使设置了密码也会被绕过:

针对systemd系统

  • 创建systemd-conf_%.bbappend配方,覆盖getty服务配置:
    FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
    SRC_URI += "file://serial-getty-override.conf"
    
    do_install:append() {
        install -d ${D}${systemd_system_unitdir}/serial-getty@.service.d
        install -m 0644 ${WORKDIR}/serial-getty-override.conf ${D}${systemd_system_unitdir}/serial-getty@.service.d/override.conf
    }
    
  • 在配方的files目录下创建serial-getty-override.conf文件,移除--autologin root参数:
    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 %I $TERM
    

针对sysvinit系统

  • 创建inittab_%.bbappend配方,修改console登录配置:
    FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
    SRC_URI += "file://inittab"
    
    do_install:append() {
        install -m 0644 ${WORKDIR}/inittab ${D}${sysconfdir}/inittab
    }
    
  • 修改inittab中的console行,移除-n(允许无密码登录)和-l /bin/sh(自动登录)参数,示例:
    ttyS0::respawn:/sbin/getty 115200 ttyS0
    

3. 验证密码加密格式兼容性

部分系统默认不支持旧的DES加密算法,建议使用SHA-512加密格式生成密码:

openssl passwd -6

将生成的加密密码替换到ROOT_PASSWORD变量中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:00:08