我想禁用/boot/initrd.img
文件压缩以加快启动速度。我的磁盘足够大,可以容纳额外的 10MB。老实说,我认为这应该是默认设置,现在谁买不起几兆字节的磁盘空间。对于嵌入式场景,可以手动启用。
查看/etc/initramfs-tools/initramfs.conf
,有更改压缩类型的选项
COMPRESS: [ gzip | bzip2 | lz4 | lzma | lzop | xz ]
但没有禁用压缩的选项。我试过了None
,none
没有效果。
作为解决方案,我initrd.img-4.19.0-8-amd64
使用手动解压缩gunzip
。但每次安装内核更新时我都必须再次解压。
答案1
没有提供执行此操作的选项,但由于mkinitramfs
是 shell 脚本,因此可以添加一个而不需要重新编译。在 中/usr/sbin/mkinitramfs
,寻找
case "${compress}" in
在选项集中添加“cat”行:
cat) compress="cat" ;;
这将允许COMPRESS=cat
在 中指定initramfs.conf
。
mkinitramfs
每次从包中恢复时(升级时),您都必须重新执行此操作。
答案2
如今看来这件事并不容易做到,当然也不是一个明显的选择initramfs.conf
。
读取和解压缩图像所需的总时间是读取文件和解压缩文件的总时间。第一个任务是 I/O 限制,第二个任务主要是 CPU 限制。
因此,加载压缩图像与未压缩图像之间的比较并不直接。在一种情况下,您读取较小的文件然后将其解压缩,在另一种情况下,您读取较大的文件但不解压缩。
哪一个更快,您需要进行基准测试。如果我猜的话,我会说读取一个较小的文件并解压缩。
答案3
可以改成COMPRESS=gzip
在COMPRESS=cat
创建initramfs.conf
图片时会给出警告信息,忽略即可。
答案4
Stephen Kitt 给出了很好的建议,但它现在在 Debian 11 上不起作用,因为-c
在调用压缩器二进制文件时使用了该标志,这会破坏操作cat
。
另外,一个好的解决方案不是/usr/sbin/mkinitramfs
每次都进行编辑。对我来说最优雅的是pv
代替压缩器到/etc/initramfs-tools/initramfs.conf
.它会提示一个小警告,但不会中断工作:
user@s:~# time update-initramfs -c -k all
update-initramfs: 生成 /boot/initrd.img-5.10.0-18-amd64
W: 未知压缩命令 pv
134MiB 0:00:00 [ 220MiB/s ] [====================================>] 100%
真实0m9,144s
用户0m4,915s
系统0m3 ,654s
用户@s:~#