1

我想在将 Yocto Linux 放入闪存之前剥离它。不需要的软件、手册页、POCO 示例代码和其他文档只会浪费资源,尤其是在只有 128MB 闪存的 i.MX28 EVK 上。

我的local.conf文件如下所示:

$ gedit conf/local.conf &
...
IMAGE_INSTALL_append = " poco nginx canutils vsftpd curl fcgi spawn-fcgi net-snmp util-linux ubiattach-klibc ubimkvol-klibc ubiformat-klibc minicom net-tools zeroconf avahi-autoipd mtd-utils u-boot-fw-utils ethtool"
...

我对图像“core-image-base”进行了bitbake。

我想知道,有没有办法可以删除所有不需要的文件?

有人可以帮我拆掉我的 Yocto Linux 吗?

4

2 回答 2

3

当您查看配方core-image-base和包含的core-image类(core-image-base.bbcore-image.bbclass)时,您会注意到该图像中只有packagegroup-core-bootand packagegroup-base-extended

对那些的描述:

默认情况下,我们安装 packagegroup-core-boot 和 packagegroup-base-extended 包;这给了我们工作(仅限控制台)rootfs。

这让我们假设它不应该被删除,所以你不能在“Yocto-way”上删除很多软件/文件。你可以做的是编写手动删除文件的补丁,或者看看如何使用 Yocto 构建一个小型系统(链接到开发手册)

DISTRO您可以通过更改以下变量中的变量来激活此分发local.conf

DISTRO = "poky-tiny"
于 2017-08-02T11:30:03.877 回答
1

这是一个最小控制台映像的示例:recipes-core/images/core-image-small.bb

DESCRIPTION = "Minimal console image."
IMAGE_INSTALL= "\
base-files \
base-passwd \
busybox \
sysvinit \
initscripts \
${ROOTFS_PKGMANAGE_BOOTSTRAP} \
${CORE_IMAGE_EXTRA_INSTALL} \
"
IMAGE_LINGUAS = " "
LICENSE = "MIT"
inherit core-image
IMAGE_ROOTFS_SIZE ?= "8192"

这个配方生成一个大约 6.4MB 的图像。如果您通过添加DISTRO = "poky-tiny"到您conf/local.conf的图像来使用 poky-tiny,则图像将约为 4MB。

要构建它,您需要添加 INSANCE_SKIP_glibc-locale = "installed-vs-shipped"

您还可以使用PACKAGE_CLASSES ?= package_ipk包管理器,因为它是最轻量级的,并且package-management完全从您的生产根文件系统中删除了功能。

如果您选择packagegroup-core-boot在您的图像中使用,您可以使用 BusyBox 的 mdev 设备管理器而不是 udev,方法是在您的conf/local.conf

VIRTUAL-RUNTIME_dev_manager = "mdev"

如果您在块设备上运行根文件系统,请使用 ext2 而不是 ext3 或不带日志的 ext4

通过在 bbappend 中提供您自己的配置文件,仅使用基本的小程序配置 BusyBox。

查看 glibc 配置,可以通过DISTRO_FEATURES_LIBC分发配置变量进行更改。您可以在发行版中找到该示例poky-tiny

考虑切换到更轻量级的 C 库。使用uclibcormusl代替标准 glibc http://www.etalabs.net/compare_libcs ​​.html

在 local.conf 中使用 musl

TCLIBC = "musl"

添加meta-muslconf/bblayers.conf

于 2017-08-08T19:54:59.883 回答