错误:useradd:useradd命令在Yocto构建中未成功

时间:2019-03-28 07:22:52

标签: linux embedded embedded-linux yocto

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

我制作了一个继承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选项,它可以完美运行。 关于如何解决这个问题的任何想法? 我还尝试了继承额外用户并进行usermod -aG dialout myuser

2 个答案:

答案 0 :(得分:2)

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

如果您跳过-G dialout部分并生成图像,那么/etc/group中是否有一个称为Dialout的组?如果没有,则可以按照创建dialout的相同方式来创建mygroup组。如果已经存在,我怀疑您需要先使用dialout之类的软件包来确保已安装添加RDEPENDS_${PN} += "<package that provides dialout group>组的软件包。

答案 1 :(得分:0)

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

所以现在不再有一个user.bb和几个用户,而是现在有了user1.bb,user2.bb等,并且它像一种魅力一样工作。