如何禁用 Yocto 的 RNGD 服务?

How disable the RNGD service from Yocto?

背景:我正在 运行ning Yocto Zeus,Linux 使用 SystemD 的内核 4.14。我的目标是嵌入式 i.MX6。

我一直在尝试在启动时禁用 RNGD 服务。启动后它会消耗所有内核数秒,当我手动禁用时(通过 systemctl disable rngd 它实际上被禁用并且没有不良影响(我们的软件不使用 /dev/random).

我查看了 并尝试了包删除和删除 link,但似乎都不起作用。这是我层中 systemd_%.bbappend 文件的内容。

# To remove the package completely, add it to this space separated list.
# Not all services can be removed.
PACKAGECONFIG_remove = "timesyncd kmod rngd"

do_install_append() {
    rmdir ${D}${sysconfdir}/systemd/network
    ln -sfn /var/local/etc/systemd/network ${D}${sysconfdir}/systemd/network

    rm -f ${D}${sysconfdir}/systemd/system/multi-user.target.wants/rngd.service
}

有没有办法删除这个服务?即使有这两个,我仍然会在启动时看到 rngd 运行ning 。我有理由相信我的更改已包含在内,如果我 运行 bitbake -e systemd | 我可以看到它们grep rngd:

gen-ccm-root@ubuntu:~/workdir/tools/poky/build-dev$ bitbake -e systemd | grep rngd
#     "timesyncd kmod rngd"
    rm -f /home/gen-ccm-root/workdir/tools/poky/build-dev/tmp/work/armv7at2hf-neon-poky-linux-gnueabi/systemd/1_243+AUTOINC+efb536d0cb-r0/image/etc/systemd/system/multi-user.target.wants/rngd.service

我也已确认该文件中的其他内容实际上正在生效。网络 link 正在正常制作中,我已确认 timesyncd 服务已被删除。我已确认我要删除的文件是 systemctl disable 将删除的 link:

~# systemctl disable rngd
Removed /etc/systemd/system/multi-user.target.wants/rngd.service.

我不认为 rngd 是由 systemd 提供的?尝试从您的图像中删除 rng-tools 包。

我首先要确保 rng-tools 当前确实在图像中——您可以检查图像清单文件来做到这一点。 要删除 rng-tools 你可以修改实际的图像配方,这样它就不会首先添加 rng-tools 或者你可以尝试例如IMAGE_INSTALL_remove = " rng-tools" 在您的用户配置中。

在 Poky(Warrior 分支)上,我有一个 bbappend 可以禁用 rng。文件名为 rng-tools_%.bbappend 并包含:

SYSTEMD_AUTO_ENABLE_rng-tools = "disable"

我正在使用 Variscite's iMX6 SOMsysvinit

提到的 IMAGE_INSTALL_ 删除选项对我不起作用,而且它无助于从 MACHINE_EXTRA_RDEPENDS.

中删除 rng-tools

我最终删除了由 OpenSSH 软件包制作的 'recommendation',方法是:

BAD_RECOMMENDATIONS = "rng-tools rng-tools-dev"