返回

如何在 Yocto 中优化 Linux 映像大小?一个分步指南

Linux

用 Yocto 优化 Linux 映像大小:一个分步指南

物联网和嵌入式系统的蓬勃发展使得优化软件映像的大小变得至关重要。本文将指导你使用 Yocto 构建一个针对 Phytec SOM 的精简 Linux 映像,满足严格的大小要求。

步骤 1:配置 Yocto 环境

首先,确保你的 Yocto 环境已正确配置。遵循 Phytec 入门指南,构建一个 BSP(板级包)。

步骤 2:识别冗余软件包

通过审查 BSP 中包含的软件包列表,确定不需要的软件包。可以使用 bitbake-layers show-recipes 命令,它会列出所有可用的软件包。

步骤 3:修改机器配置

通过修改 machine.conf 文件(位于 build/conf 文件夹中)定制映像。从 EXTRA_IMAGE_FEATURES 变量中删除不需要的软件包。

步骤 4:创建自定义机器配置

如果编辑现有的 machine.conf 文件存在风险,你可以创建自己的自定义文件。复制原始文件并修改其名称,例如 my-machine.conf。在你的自定义文件中,执行步骤 3 中概述的修改。

步骤 5:修改 local.conf 文件

build/conf/local.conf 文件中,添加以下行以包含你的自定义机器配置:

MACHINEOVERRIDES = "my-machine.conf"

步骤 6:构建映像

使用以下命令构建映像:

bitbake <image-name>

其中 <image-name> 是你希望构建的映像的名称,例如 core-image-minimal

步骤 7:验证映像大小

构建完成后,可以使用以下命令验证映像大小:

du -sh <image-name>.tar.bz2

示例

以下示例展示了如何删除不必要的软件包:

MACHINEOVERRIDES = "lt_1g_lite"

EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('console-boot', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('console-serial', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('dev-dtc', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('dev-hwinfo', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('dev-pts', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('dev-serial', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('dev-usb', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('fw-imx-vpu', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('fw-imx-vpu-server', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('fw-imx-gpu', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('imx-gpu-u-boot-overlay', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('libimxvpu', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('libimxvpu-server', EXTRA_IMAGE_FEATURES)}"
EXTRA_IMAGE_FEATURES = "${@bb.utils.remove('meta-virtualization', EXTRA_IMAGE_FEATURES)}"

注意事项

  • 仔细审查你要删除的软件包的功能,避免删除系统所需的关键功能。
  • 定期备份 Yocto 配置,以防意外丢失。
  • 如果遇到问题,请查阅 Yocto 文档或寻求社区支持。

通过遵循这些步骤,你可以成功构建一个满足大小限制的小型 Linux 映像。

常见问题解答

  1. 如何识别不必要的软件包?
    仔细审查 BSP 中包含的软件包列表,并根据你的特定要求确定不必要的软件包。

  2. 我删除了错误的软件包,该怎么办?
    恢复原始 machine.conf 文件并重新构建映像。

  3. 构建过程出现错误,怎么办?
    查阅构建日志以获取错误详细信息,并尝试在 Yocto 文档或社区论坛上找到解决方案。

  4. 我的映像比预期的还大,为什么?
    仔细检查你删除的软件包,并确保没有遗漏任何不必要的软件包。

  5. 我可以删除其他类型的文件以减小映像大小吗?
    是的,你可以删除不必要的引导脚本、内核模块和其他非必需文件。