删除 rootfs 中的重复文件 - 以加快启动时间并提高内存使用率

删除 rootfs 中的重复文件 - 以加快启动时间并提高内存使用率

我正在使用 Buildroot 为我的嵌入式 Linux 硬件制作映像。主要是我试图加快启动顺序(并降低内存使用量),我成功地尝试了许多技术。

我想做的事:最近我听说要删除目录中的重复文件(例如用符号链接替换这些文件),我想将此方法应用于我的 rootfs

周围环境:使用 Buildroot,我可以拥有许多不同类型的 rootfs 格式(cramfs、cpio、ext2/3/4 等),这些格式是在makeas 1(打包)文件期间创建的(例如rootfs.cpio:)。现在我真的不知道如何:

  • 打开图像
  • 删除重复的文件(我知道一般如何删除重复的文件)
  • 再次打包 rootfs - 这样我仍然可以使用它来刷新并在我的硬件上执行它

也许根本不可能。我相信至少在使用静态库的时候,很多文件是可以被替换的。

有人有想法吗?

答案1

我无法帮助解决 buildroot 特定的东西(除了说你必须在删除重复项之前安装它或启动它,然后创建一个新的rootfs(从生成的文件系统中删除),但删除重复项是很有可能的。一种简单的方法是find / -type f -exec sha256sum {} + | sort > checksums.txt,逐行读取生成的文件while read -r checksum path,将每个校验和与前一个进行比较,然后删除(或硬链接) 重复项。这不会处理奇怪的文件名,例如包含换行符,但这在您的情况下不应该成为问题。

答案2

我不明白静态库是如何加入其中的。静态库是不是使用 Buildroot 存在于目标根文件系统上。

一般来说,Buildroot 会尝试仅安装目标上必需的内容,老实说我怀疑您会在那里找到许多重复的文件。

相关内容