从 Yocto 生成的图像中完全删除 busybox

Removing busybox completely from a Yocto generated image

我正在尝试构建一个没有 busybox 且没有任何 busybox 的 yocto 图像 已部署小程序。

我试过以这种方式配置我的 distro.conf 文件:

DISTRO_FEATURES_remove = " busybox"
VIRTUAL-RUNTIME_base-utils = ""
PREFERRED_PROVIDER_virtual/base-utils = ""

尽管如此,busybox 二进制文件和两个相关的小程序(syslog 和 udhcpc)是 安装在生成的图像中:

$ rpm -qa | grep busybox
busybox-syslog-1.24.1-r0.corei7_64
busybox-1.24.1-r0.corei7_64
busybox-udhcpc-1.24.1-r0.corei7_64

我已尝试禁用附加到我的 distro.conf 文件的系统日志小程序:

VIRTUAL-RUNTIME_syslog ?= ""

但是 syslogd 小程序仍然安装:

# ls -l /sbin/syslogd
lrwxrwxrwx 1 root root 19 Feb 15 14:03 /sbin/syslogd -> /bin/busybox.nosuid

有什么方法可以从生成的图像中完全删除 busybox 吗?

你需要分开packagegroup-core-boot:

  1. 复制一份;
  2. 从中删除 busybox;
  3. 让你的图片继承它而不是原来的。

我终于找到了问题的正确答案。完全禁用 busybox 的技巧是在 distro.conf 文件中定义这些变量:

VIRTUAL-RUNTIME_base-utils = ""
VIRTUAL-RUNTIME_login_manager = "shadow"

最后一个变量 (login_manager) 仅当您在自定义映像中安装 "packagegroup-core-boot" 时才需要,例如我的情况。

那么,这个问题就解决了。非常感谢您的支持! :-)