首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于initrd压缩的问题

关于initrd压缩的问题
EN

Ask Ubuntu用户
提问于 2021-06-27 13:39:48
回答 1查看 849关注 0票数 1

在配置文件上启用initrd压缩,但内核映像未被压缩。

代码语言:javascript
复制
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)"

只是想知道是否需要执行任何额外的配置来压缩内核映像。感谢你的帮助!

EN

回答 1

Ask Ubuntu用户

发布于 2022-12-03 04:13:43

首先,如前所述。您需要的是initrd而不是压缩的kernel映像。为了压缩它,您已经正确配置了所有的东西。

您还正确地指出,它没有被100%压缩,甚至看起来根本没有被压缩,因为initrd的第一部分是一个完整的CPIO存档,它是未压缩的。正如您所发现的,这个未压缩的CPIO是英特尔微码更新数据。但是,第一个CPIO存档之后的数据将是另一个压缩的CPIO,它是主要的initrd存档。

linux内核可以读取连接在一起的多个initrd档案,即使有些文件被压缩,而有些文件则没有。根据最近的一个linux内核,initrd格式如下所示:

代码语言:javascript
复制
*       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归档文件不能跟随压缩的压缩文件。另一件要记住的是,如果各个独立体中有重复的路径,那么最后一个路径的数据就会被使用。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1348518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档