使用 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”版本。如果此处缺少任何信息,请告诉我。
众所周知Yocto
users/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。
我在我的一个项目中使用 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”版本。如果此处缺少任何信息,请告诉我。
众所周知Yocto
users/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。