有没有办法在yocto生成的文件系统上运行存储统计信息?

时间:2015-01-26 21:42:27

标签: yocto

我使用Yocto构建一个文件系统,使用core-image-minimal的.bbappend。两个问题:

  1. 如何确定哪个软件包在rootfs上占用了大量存储空间?

    除了查看每个包的$ {D}并看其组件有多大之外,我想不出办法。要做到这一点,必须有一个更系统,更智能的方式。

  2. 从我可以从清单中解读的内容中,没有任何内容与包含的包的大小有关。

    此外,删除我使用IMAGE_INSTALL对象添加的一些软件包似乎删除了软件包,但构建的图像的最终结果并没有显示其大小的变化!!

    1. 我比较了构建机器和安装设备(vm)上特定.so的大小,发现安装设备上的大小是构建机器上看到的原始大小的20-30%。有什么解释吗?
    2. 谢谢!

2 个答案:

答案 0 :(得分:4)

1)一种方法是通过将以下内容添加到local.con

来启用buildhistory
INHERIT += "buildhistory"
BUILDHISTORY_COMMIT = "1"

这将在$ BUILDDIR中创建一个目录(git repo)buildhistory。在那里你可以找到例如。

images/$MACHINE/eglibc/$IMAGE/installed-package-sizes.txt

该文件将为您提供所有已安装软件包的大小。

您可以从buildhistory了解更多内容,请参阅buildhistory introduction

2)你在哪里比较特定的.so文件?如果它来自包的$ {B}(即构建库的地方),那就不足为奇了,因为安装的.so文件将被剥离。调试信息安装在-deb.rpm中(因为调试信息在目标上通常是无用的,较小的大小具有更高的重要性)。

答案 1 :(得分:0)

有些人看了一下脚本/子目录以及一些关于现有脚本的谷歌搜索,结果证明Yocto的好人确实让这些脚本正常运行: scripts / tiny / dirsize.py和ksize.py。

dirsize.py将为您提供rootfs的pkg大小细分;而ksize.py将为您提供内核的等效信息。