如何解决Bitbake 不更新目标 rootfs 的 /etc/passwd 和 /etc/group 中的用户和组条目
在我的项目中,我必须引入一个新的“非 root”用户。我参考了以下链接中提到的标准 yocto 配方模型,用于在 /etc/passwd 和 /etc/group 文件中创建用户和组条目。
我也在我的食谱文件中尝试了同样的方法。
配方文件路径: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"
构建组件后,在目标 rootfs 中找不到用户 'dibbler' 和组 'dibbler' 的条目,即 'tmp/work/brcm-linux-gnueabi/generic-dev-image/1.0-r0/rootfs/etc/passwd
'
但我发现 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
即使我检查日志并从诸如 do_install、do_populate_package 之类的 bitbake 任务中运行脚本......我也没有任何线索可以进一步进行。
干净重建后的 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...
如果有人指出我遗漏的内容或任何无关/不必要的内容,将会很有帮助。
解决方法
分析rootfs日志(dev-image/1.0-r0/temp/log.do_rootfs)后,发现dibbler是作为两个不同的包安装的名称如下:
- dibbler-client 和
- dibbler 服务器。
将 'USERADD_PARAM_${PN}' 更改为 'USERADD_PARAM_dibbler-client' 后,rootfs 中也添加了用户 'dibbler' 的条目。
以下是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"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。