WeHack BBS
如何制作一个最小的initramfs - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: GNU/Linux 讨论区 (https://bbs.wehack.space/forum-6.html)
+--- 主题: 如何制作一个最小的initramfs (/thread-247.html)



如何制作一个最小的initramfs - vimacs - 04-20-2021

我记得以前看过相关的文章,想不起来在哪了。最近想做个基于Linux的coreboot payload,所以有这样的需求。

在压缩方面,#coreboot提到过了用upx,刚刚测试了一下,发现 upx --best --ultra-brute 压一个可执行文件的确优于用 lzip 和 xz 压缩。

编译的时候可以考虑用链接时优化,之前还没试过。

刚刚发现upx的--brute和--ultra-brute会搞坏可执行文件,而不用--brute压缩率又比不上xz.
不过可以先用upx --best压缩可执行文件,再用xz压,可以压得比用xz压原始可执行文件小。但不是所以的文件这样压缩都有效果。


RE: 如何制作一个最小的initramfs - nadebula - 04-24-2021

xz不如lzip,参见<https://www.nongnu.org/lzip/xz_inadequate.html>
由于上述原因(xz在结构设计方面的缺陷),本人已经弃用xz若干年,因为确实发生过这样的问题:tar -Jc压缩过程不报错,归档文件复制之后校验散列值正确,但是解压之后有文件损坏(假阴性)。当然xz的假阳性问题也多,详见上文。
本人近年来主要使用三种压缩工具:用于高压缩率的lzip(但是只用lzip -0参数),广范围万能型的zstd(多达20+种压缩率级别),以及快速压缩的lz4(主要用于高带宽设备,比如NVMe SSD)。