Bitbake构建消耗更多空间

时间:2016-10-10 07:33:21

标签: linux build yocto bitbake

我最近开始使用Bitbake构建Yocto。每次构建时,它都会消耗更多空间,而且目前我的磁盘空间不足。图像不会被覆盖。将为每个构建创建一组带有时间戳的新文件。我从build / tmp / deploy / images /中删除了旧文件。但它在磁盘可用空间方面没有太大区别。我可以删除任何其他位置吗?

我在构建期间观察到的错误是:

WARNING: The free space of source/build/tmp (/dev/sda4) is running low (0.999GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
WARNING: The free space of source/build/sstate-cache (/dev/sda4) is running low (0.999GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
WARNING: The free space of source/build/downloads (/dev/sda4) is running low (0.999GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!

请提出一些建议来避免这个问题。

2 个答案:

答案 0 :(得分:6)

为了有效性和修复的简便性:

  • 购买更多磁盘空间:将$ TMPDIR放在自己的固态硬盘上有很大帮助,并且无需微管理。
  • 删除$ TMPDIR(build / tmp):旧图像,旧软件包和工作目录/ sysroots for MACHINEs,您目前没有为累积而构建,并且可能占用大量空间。你通常可以暂时删除整个$ TMPDIR:只要你使用sstate-cache,下一个版本的速度应该非常快。
  • 删除$ SSTATE_DIR(build / sstate-cache):如果你做了很多构建,那么sstate会随着时间的推移而累积。删除目录是安全的,但下一次构建将花费很长时间,因为所有内容都将重建。
  • 删除$ DL_DIR(构建/下载):如果您长时间使用构建目录(从主服务器提取更新或更改为更新的分支),过时的下载将继续占用磁盘空间。请记住,删除目录意味着重新下载所有内容。仅查看最大的文件并删除旧版本可能是一个有用的折衷方案。

答案 1 :(得分:1)

有一些代替删除的官方方法。

通过故意删除,您可能会强制进行不必要的构建和下载。某些构建元素可能不受bitbake的控制,因此您会发现自己无法轻松地重建这些项目。

有了这些建议,您可以按照每个构建yocto规则击败非书面50GB:

检查您的 IMAGE_FSTYPES 变量。根据我的经验,可以安全地删除不是符号链接或符号链接目标的这些文件的所有图像。避免生成最后一个,以避免破坏最后一个构建链接,以及与引导加载程序和配置文件有关的任何链接,因为它们很少会重新生成。

如果您要保留多个具有相同图层集的版本,则可以使用通用的下载文件夹进行构建。

  

DL_DIR?=“” common_dir_across_all_builds / downloads /“

然后:

要保持/部署干净:

  

RM_OLD_IMAGE::通过从DEPLOY_DIR变量指向的图像目录中删除同一映像的先前构建的版本来回收磁盘空间。在local.conf文件中将此变量设置为“ 1”以删除这些图片:

     

RM_OLD_IMAGE = "1"

     

IMAGE_FSTYPES 删除您不打算使用的图像类型,您始终可以在需要时启用它:

     

IMAGE_FSTYPES_remove = "tar.bz2"

     

IMAGE_FSTYPES_remove = "rpi-sdimg"

     

IMAGE_FSTYPES_remove = "ext3"

对于/ tmp / work,不需要所有配方的所有工作文件。您可以指定对开发感兴趣的人。

  

RM_WORK_EXCLUDE :       在启用rm_work的情况下,此变量指定其工作目录不应删除的配方列表。有关更多详细信息,请参见“ rm_work.bbclass”部分。

     

INHERIT += "rm_work"

     

RM_WORK_EXCLUDE += "home-assistant widde"