此前Facebook 工程师向 Linux 内核提交了使用zstd 压缩 Linux 内核镜像的补丁,这些补丁显示了使用 zstd 对内核、ramdisk 和 initramfs 进行压缩操作具备巨大潜力。
zstd 有望进入Linux Kernel 5.9,在此基础上,现在有内核开发者提交补丁,希望采用 zstd 统一压缩内核所有内容,包括固件文件。
zstd 又叫 Zstandard,它是一种快速无损压缩算法,主要应用于zlib 级别的实时压缩场景,并且具有更好的压缩比。zstd 还可以以压缩速度为代价提供更强的压缩比,速度与压缩权衡可通过小增量进行配置。
开发者的补丁实现了 zstd 压缩系统固件的支持,逻辑上内核在应用固件前会适当地处理.zstd 后缀文件。查看 Linux 固件源码linux-firmware.git,其原始树大小为 593M,粗略估计,使用 Linux 自带 xz 压缩工具,默认不同维度下的压缩级别可将其压缩至 125M 或 204M,zstd 则可将速度大大提升。
这一支持目前已在x86-64、sparc64 与mips64 平台测试,如果一切顺利,那么有望在 Linux Kernel 5.10 中看到该特性。