使用 Yocto 时如何管理磁盘 space?

How to manage disk space while working with Yocto?

我在我的一个项目中使用 Yocto。我知道 Yocto 需要大量磁盘 space 来进行构建活动。而且我在 Ubuntu 20.04 中以非 root 用户身份工作。但是我在构建过程中经常 运行 遇到 space 问题。

WARNING: The free space of [...]/tmp-glibc (overlay) is running low (0.555GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
WARNING: The free space of [...]/downloads (overlay) is running low (0.555GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
WARNING: The free space of [...]/sstate-cache (overlay) is running low (0.555GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!

我试过删除 $TMPDIR (build/tmp)$SSTATE_DIR (build/sstate-cache)$DL_DIR (build/downloads)。但是这些东西对我没有帮助。

有没有什么办法可以给Ubuntu的用户分配更多的space?还有,在使用 Yocto 时 space 使用的最佳实践是什么?

谁能告诉我如何解决这个问题?

非常感谢您的帮助。

提前致谢。

P.S:我正在使用 Yocto“Honister”版本。如果此处缺少任何信息,请告诉我。

众所周知Yoctousers/developers它需要很多space,而且它有3个巨大的部分:

  • TMP
  • 下载
  • S 状态缓存

我的建议如下(根据我的经验):

在开始构建任何 Yocto 之前,请为上述三个组件创建一个目录。

示例:

mkdir -p /home/user/yocto_shared/{tmp,downloads,sstate-cache}

之后,您创建的任何构建都可以与之共享:

  • local.conf中:
DL_DIR ?= "/home/user/yocto_shared/downloads"
SSTATE_DIR ?= "/home/user/yocto_shared/sstate-cache"
TMPDIR = "/home/user/yocto_shared/tmp"

这将为您节省很多 space 并为您节省新构建的时间。

此外,您可以继承 rm_work,它会在 bitbake 后删除每个配方的 tmp 输出文件:

INHERIT += "rm_work"

注意

在 Ubuntu 上删除某些内容后,特别是 Yocto tmp、下载和 sstate-cache,请不要忘记清空垃圾箱。

除了上述建议之外,您可以尝试将以下内容添加到您的 conf/local.conf 文件中以避免创建 -dbg 包,这可以节省一些额外的 space.

INHIBIT_PACKAGE_DEBUG_SPLIT = "1"

无论如何,console-only 图片最多可能占用 20GB,而图形图片最多可能占用 50GB。您不应该删除您的 $TMPDIR (build/tmp)、$SSTATE_DIR (build/sstate-cache) 和 $DL_DIR 文件夹,而是获取更大的 HDD/SDD。