我正在尝试创建一个用户并将其添加到拨出组中。
我制作了一个继承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
。
答案 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等,并且它像一种魅力一样工作。