简体   繁体   English

Bitbake 不更新目标 rootfs 的 /etc/passwd 和 /etc/group 中的用户和组条目

[英]Bitbake not updating user and group entry in /etc/passwd and /etc/group of target rootfs

In my project, I have to introduce a new 'non-root' user.在我的项目中,我必须引入一个新的“非 root”用户。 I referred standard yocto recipe model mentioned in below link for creating user and group entry in /etc/passwd and /etc/group files.我参考了以下链接中提到的标准 yocto 配方 model,用于在 /etc/passwd 和 /etc/group 文件中创建用户和组条目。

https://git.yoctoproject.org/cgit.cgi/poky/tree/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb https://git.yoctoproject.org/cgit.cgi/poky/tree/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb

I also tried the same way in my recipe file.我也在我的食谱文件中尝试了同样的方法。

Recipe file path : recipes-connectivity/dibbler/dibbler_%.bbappend配方文件路径recipes-connectivity/dibbler/dibbler_%.bbappend

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

#dibbler process non-root user
SRC_URI += "file://dibbler-nonroot-changes.patch"

inherit useradd

USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "--system dibbler"
USERADD_PARAM_${PN} = "--system --gid dibbler --no-user-group \
                       --home /var/lib/dibbler --no-create-home \
                       --shell /bin/false dibbler"

After building the component, entry for user 'dibbler' and group 'dibbler' are not found in the target rootfs which is ' tmp/work/brcm-linux-gnueabi/generic-dev-image/1.0-r0/rootfs/etc/passwd '构建组件后,在目标 rootfs 中找不到用户 'dibbler' 和组 'dibbler' 的条目,即 ' tmp/work/brcm-linux-gnueabi/generic-dev-image/1.0-r0/rootfs/etc/passwd '

But I found the entry present in sysroot path which is 'tmp/sysroots/brcm/etc/passwd' and 'tmp/sysroots/brcm/etc/group'但我发现 sysroot 路径中存在的条目是'tmp/sysroots/brcm/etc/passwd''tmp/sysroots/brcm/etc/group'

tmp/sysroots/brcm/etc/group-
tmp/sysroots/brcm/etc/group
dibbler:x:983:

tmp/sysroots/brcm/etc/passwd-
tmp/sysroots/brcm/etc/passwd
dibbler:!:988:983::/var/lib/dibbler:/bin/false

Even I checked logs and run scripts from bitbake tasks like do_install, do_populate_package, ... I didn't get any clue to proceed further.即使我检查了日志并从 do_install、do_populate_package 等 bitbake 任务运行脚本......我也没有任何线索可以继续进行。

Bitbake install logs after clean rebuild:干净重建后的 Bitbake 安装日志:

Install outputs from file : tmp/work/cortexa15hf-neon-vfpv4-rdk-linux-gnueabi/dibbler/1.0.1-r0/temp/log.do_install
DEBUG: Executing shell function useradd_sysroot
NOTE: dibbler: Performing groupadd with [--root /home/vre/dmz/build-tch_broadband_93390smwvg2/tmp/sysroots/brcm93390smwvg2 --system dibbler]
NOTE: dibbler: Performing useradd with [--root /home/vre/dmz/build-tch_broadband_93390smwvg2/tmp/sysroots/brcm93390smwvg2 --system --gid dibbler --no-user-group                        --home /var/lib/dibbler --no-create-home                        --shell /bin/false dibbler]
Running groupadd commands...
Running useradd commands...

It would be helpful if anyone points what I missed or anything extraneous/unnecessary.如果有人指出我错过的内容或任何无关/不必要的内容,那将很有帮助。

After analysing the rootfs logs( dev-image/1.0-r0/temp/log.do_rootfs ), found that dibbler is installed as two different packages with the package names as below:分析 rootfs 日志( dev-image/1.0-r0/temp/log.do_rootfs )后,发现 dibbler 安装为两个不同的包,package 名称如下:

  1. dibbler-client and dibbler-client 和
  2. dibbler-server. dibbler 服务器。

After changing 'USERADD_PARAM_${PN}' to 'USERADD_PARAM_dibbler-client' , the entries for user 'dibbler' got added in rootfs also.'USERADD_PARAM_${PN}'更改为'USERADD_PARAM_dibbler-client'后,用户 'dibbler' 的条目也添加到 rootfs 中。

Below are the changes in bb recipe file:以下是 bb 配方文件的更改:

USERADD_PACKAGES = "dibbler-client"
GROUPADD_PARAM_dibbler-client = "--system dibbler"
USERADD_PARAM_dibbler-client = "--system --gid dibbler --no-user-group \ 
                                --home /var/lib/dibbler --no-create-home \
                                --shell /bin/false dibbler"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM