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

有没有办法在yocto生成的文件系统上运行存储统计信息?,yocto,Yocto,我使用Yocto构建了一个文件系统,使用了.bbappend的核心映像minimal。两个问题: 我如何确定哪个包占用了rootfs上的巨大存储空间 除了查看每个包的${D}并查看其组件有多大之外,我想不出其他方法。必须有一个更系统、更聪明的方法来做到这一点 从清单中我可以解读出,与所包含的包的大小无关 另外,删除我使用IMAGE_INSTALL对象添加的一些包似乎会删除包,但生成的映像的最终结果不会显示其大小的更改 我比较了构建机器和安装设备(vm)上特定的.so的大小,发现安装设备上的大小

我使用Yocto构建了一个文件系统,使用了.bbappend的核心映像minimal。两个问题:

  • 我如何确定哪个包占用了rootfs上的巨大存储空间

    除了查看每个包的${D}并查看其组件有多大之外,我想不出其他方法。必须有一个更系统、更聪明的方法来做到这一点

  • 从清单中我可以解读出,与所包含的包的大小无关

    另外,删除我使用IMAGE_INSTALL对象添加的一些包似乎会删除包,但生成的映像的最终结果不会显示其大小的更改

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

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

    INHERIT += "buildhistory"
    BUILDHISTORY_COMMIT = "1"
    
    这将在$BUILDDIR中创建目录(git repo)buildhistory。在那里你可以找到

    images/$MACHINE/eglibc/$IMAGE/installed-package-sizes.txt
    
    该文件将提供所有已安装软件包的大小

    您可以从buildhistory中学到很多东西,请参见


    2) 您在哪里比较了特定的.so文件?如果它来自包的${B}(即构建库的位置),这并不奇怪,因为安装的.so文件将被剥离。调试信息被安装到-deb.rpm中(因为调试信息在目标上通常是无用的,较小的大小更重要)。

    一些人查看脚本/subdir,一些人通过谷歌搜索一些现有脚本,事实证明,Yocto的好人确实有这些现成的脚本: scripts/tiny/dirsize.py和ksize.py


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

    谢谢@Anders。我将尝试buildhistory方法(顺便说一句,我启用了它,但认为它与pkg度量无关)。另外,请查看我关于yocto为完全相同的功能提供的实际脚本的回答。只需一个快速注释,
    scripts/tiny/dirsize.py
    ,就不会给出已安装软件包的大小,而是rootfs上目录的大小。从这一点,您当然可以推断出哪个包负责最大的文件…@Anders O。。那么您建议的buildhistory方法,我会得到安装包的大小吗?当然,它列出了安装包及其大小。尽管在缩小文件系统时,您自己发现的方法同样有效。