在yocto中会频繁的编译修改镜像,当多人多次修改镜像的时候会导致镜像难以维护,我们希望能有一个类似git一样的工具能够显示每次编译的差异性修改,这样当我想要回退到某个日期的某个镜像时能够清晰的知道镜像内部的具体内容有那些。
yocto提供了这个功能:buildhistory
在conf/local.conf构建环境中使能buildhistory
INHERIT += "buildhistory"
BUILDHISTORY_COMMIT = "1"
如上图所示,在构建环境下会生成buildhistory目录,里面包含images packages sdk等模块。
images里面还会按照目标机器、 目标C库和镜像名字构建子目录
下面我们以bootfs image为例看看里面有那些内容:
下面我们关注一些重点信息:
build-id.txt:里面主要是参与编译的环境变量、meta-layer记录
image-info.txt:以最重要的变量 的形式表现的关于镜像的概览信息
installed-packages(-name).txt: 安装在镜像中的包文件的列表,区别就是一个只显示包名
installed-package-sizes.txt:里面展示了每个包的占用大小,方便对系统瘦身和裁减不必要的组件包
files-in-image.txt: 带有目录名字、 文件大小、 文件权限和文件属主的根文件系统列表。
简单地搜索文件installed-package-names.txt会给你关于包是否已经被安装的信息。
这里再补充一张rootfs的files-in-image.txt:
里面内容非常多,是rootfs解压以后的系统快照一样,所以想要看系统里面有没有自己添加的东西来这里一搜便知。