ERROR: useradd: useradd command did not succeed in Yocto build
ERROR: useradd: useradd command did not succeed in Yocto build
我正在尝试创建一个用户并将其添加到拨出组。
我做了一个继承 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
.
我怀疑这是因为 dialout
组不存在,至少在添加 myuser
时不存在。
如果你跳过-G dialout
部分构建镜像,你在/etc/group
中有一个叫dialout的组吗?如果没有,您可以像创建 mygroup
一样创建 dialout
组。如果它已经存在,我怀疑您需要确保在使用 RDEPENDS_${PN} += "<package that provides dialout group>
.
之类的包之前安装添加 dialout
组的包
最后解决的是将每个用户添加到自己的配方中。我不知道为什么将它们放在同一个食谱中不起作用,因为这是基于元骨架中的 this 示例。
因此,我现在拥有 user1.bb、user2.bb 等,而不是拥有一个 users.bb 和多个用户,而且它工作得非常棒。
我遇到了同样的问题。解决方案是在附加 ${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
我正在尝试创建一个用户并将其添加到拨出组。
我做了一个继承 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
.
我怀疑这是因为 dialout
组不存在,至少在添加 myuser
时不存在。
如果你跳过-G dialout
部分构建镜像,你在/etc/group
中有一个叫dialout的组吗?如果没有,您可以像创建 mygroup
一样创建 dialout
组。如果它已经存在,我怀疑您需要确保在使用 RDEPENDS_${PN} += "<package that provides dialout group>
.
dialout
组的包
最后解决的是将每个用户添加到自己的配方中。我不知道为什么将它们放在同一个食谱中不起作用,因为这是基于元骨架中的 this 示例。
因此,我现在拥有 user1.bb、user2.bb 等,而不是拥有一个 users.bb 和多个用户,而且它工作得非常棒。
我遇到了同样的问题。解决方案是在附加 ${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