【问题标题】:ERROR: useradd: useradd command did not succeed in Yocto build错误:useradd:useradd 命令在 Yocto 构建中没有成功
【发布时间】:2019-03-28 07:22:52
【问题描述】:

我正在尝试创建一个用户并将其添加到拨出组。

我制作了一个继承 useradd 并添加我的系统需要的用户的配方。

这是我食谱的相关部分:

inherit useradd                                                                                     

USERADD_PACKAGES = "${PN}"                                                                          

USERADD_PARAM_${PN} = "-d /home/myuser -r -m -s /bin/bash myuser -g 
mygroup -G dialout;"                                                                               

GROUPADD_PARAM_${PN} = "-g 870 mygroup;"

在出现错误之前,构建会进入 rootfs_build 步骤。日志显示:

NOTE: useradd: Performing useradd with [--root 
/mnt/hdd1/yocto/build/tmp/work/intel_corei7_64-poky- 
linux/core-image-sato/1.0-r0/rootfs -d /home/myuser -r -m -s /bin/bash 
myuser -g mygroup -G dialout]                                                                                         
ERROR: useradd: useradd command did not succeed

如果没有-G dialout 选项,它可以完美运行。 关于如何解决这个问题的任何想法? 我也尝试过继承extrausers并做usermod -aG dialout myuser

【问题讨论】:

    标签: linux embedded embedded-linux yocto


    【解决方案1】:

    我怀疑这是因为dialout 组不存在,至少在添加myuser 时不存在。

    如果您跳过-G dialout 部分并构建映像,您是否在/etc/group 中有一个名为拨出的组?如果没有,您可以像创建mygroup 一样创建dialout 组。如果它已经存在,我怀疑您需要确保在使用 RDEPENDS_${PN} += "<package that provides dialout group> 之类的软件包之前安装添加了 dialout 组的软件包。

    【讨论】:

    • 这对我来说听起来很合理,但解决方法是将每个用户添加到自己的配方中。不是一个非常令人满意的解决方案。我自己的答案中有更多详细信息。
    【解决方案2】:

    最终解决它的方法是将每个用户添加到自己的配方中。我不知道为什么将它们放在同一个配方中不起作用,因为这是基于元骨架中的 this 示例。

    因此,我现在拥有 user1.bb、user2.bb 等,而不是一个 users.bb 和几个用户,它就像一个魅力。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。解决方案是在附加${PN} 时使用: 而不是_

      inherit useradd                                                                                     
      
      USERADD_PACKAGES = "${PN}"  
                                                                              
      USERADD_PARAM:${PN} = "-d /home/myuser -r -m -s /bin/bash myuser -g mygroup -G dialout;"                                                                               
      
      GROUPADD_PARAM:${PN} = "-g 870 mygroup;"
      

      我相信这是由于新的覆盖语法。在其他情况下,bitbake 抱怨(我使用“honister”),例如:

      do_install_append() {
          ...
      }
      

      导致此错误消息: Variable do_install_append contains an operation using the old override syntax. Please convert this layer/metadata before attempting to use with a newer bitbake.

      这可以通过使用do_install:append()来解决。

      这里是覆盖语法的完整参考: https://docs.yoctoproject.org/bitbake/bitbake-user-manual/bitbake-user-manual-metadata.html#conditional-syntax-overrides

      【讨论】:

        猜你喜欢
        • 2017-09-14
        • 2022-06-29
        • 1970-01-01
        • 2019-05-21
        • 2019-01-03
        • 1970-01-01
        • 2011-10-02
        • 2018-10-19
        • 1970-01-01
        相关资源
        最近更新 更多