如何将 vmlinux 内核压缩成 vmlinuz?

如何将 vmlinux 内核压缩成 vmlinuz?

问题基本上可以用标题来概括 - 我刚刚构建了一个内核,它生成了 vmlinux 输出文件。我如何将其压缩成 vmlinuz 映像?

答案1

压缩是一个编译时选项。

这个过程非常棘手,因为生成的文件将以解压缩内核其余部分并跳转到那里的本机代码开始。

因此没有直接的方法,而且没有人花时间去实现重新压缩(至少据我所知),因为重新编译很简单。

总之,您必须使用make bzImage

答案2

根据文档您需要执行:

make bzImage

进而:

cp bzImage vmlinuz

创建vmlinuz文件。

答案3

摘自维基百科文章虚拟机

压缩

传统上,在创建可启动内核映像时,内核也会使用 zlib 算法进行压缩,或者从 Linux 2.6.30 开始使用 LZMA 或 BZIP2 进行压缩,这需要在生成的映像中包含一个非常小的解压缩存根。存根会解压缩内核代码,在某些系统上会将点打印到控制台以指示进度,然后继续启动过程。

解压缩例程是启动时间中可以忽略不计的因素,并且在开发 bzImage 之前,某些架构(特别是 i386)的大小限制非常有限,因此压缩是必需的。

在 SPARC 架构上,vmlinux 文件使用简单的 gzip 进行压缩,因为 SILO 引导加载程序透明地解压缩 gzip 压缩的图像。

可启动映像的文件名并不重要,但按照惯例它被称为 vmlinuz 或 zImage。

因此,根据您所运行的架构和 Linux 版本,答案会有所不同。

最好的方式是让内核构建过程帮你压缩它。

相关内容