在配置文件上启用initrd压缩,但内核映像未被压缩。
hkk@hkk-NUC7CJYH:~$ grep COMPRESS /etc/initramfs-tools/initramfs.conf
COMPRESS=gzip
hkk@hkk-NUC7CJYH:/boot$ file initrd.img-5.8.0-43-generic
initrd.img-5.8.0-43-generic: ASCII cpio archive (SVR4 with no CRC)
Ubuntu VERSION="20.04.2 LTS (Focal Fossa)"只是想知道是否需要执行任何额外的配置来压缩内核映像。感谢你的帮助!
发布于 2022-12-03 04:13:43
首先,如前所述。您需要的是initrd而不是压缩的kernel映像。为了压缩它,您已经正确配置了所有的东西。
您还正确地指出,它没有被100%压缩,甚至看起来根本没有被压缩,因为initrd的第一部分是一个完整的CPIO存档,它是未压缩的。正如您所发现的,这个未压缩的CPIO是英特尔微码更新数据。但是,第一个CPIO存档之后的数据将是另一个压缩的CPIO,它是主要的initrd存档。
linux内核可以读取连接在一起的多个initrd档案,即使有些文件被压缩,而有些文件则没有。根据最近的一个linux内核,initrd格式如下所示:
* is used to indicate "0 or more occurrences of"
(|) indicates alternatives
+ indicates concatenation
GZIP() indicates the gzip(1) of the operand
ALGN(n) means padding with null bytes to an n-byte boundary
initramfs := ("\0" | cpio_archive | cpio_gzip_archive)*
cpio_gzip_archive := GZIP(cpio_archive)
cpio_archive := cpio_file* + ( | cpio_trailer)
cpio_file := ALGN(4) + cpio_header + filename + "\0" + ALGN(4) + data
cpio_trailer := ALGN(4) + cpio_header + "TRAILER!!!\0" + ALGN(4)不过,我不认为这是最新的,因为更多的gzip压缩是支持的。此外,我认为内核中存在一个bug,其中未压缩的CPIO归档文件不能跟随压缩的压缩文件。另一件要记住的是,如果各个独立体中有重复的路径,那么最后一个路径的数据就会被使用。
https://askubuntu.com/questions/1348518
复制相似问题