uImage、zImage、bzImage、vmlinux区别
阅读数:189 评论数:0
跳转到新版页面分类
Linux
正文
一、概述
在 Linux 系统中,内核映像有几种不同的格式,分别是 vmlinux
、zImage
、bzImage
和 uImage
。每种格式都有其特定的用途和构建过程。
二、vmlinux
vmlinux 是未压缩的内核映像。它是编译过程中直接从源代码生成的,包含了完整的调试信息,因此文件大小比压缩后的版本要大得多。这个文件通常用于调试目的或者其他需要访问完整内核符号的场合。它是一个 ELF (Executable and Linkable Format) 文件,可以使用 GDB 等调试器直接分析。
vmlinuz是vmlinux的压缩文件,是bzImage/zImage文件的copy或是指向bzImage/zImage的链接。
三、zImage
zImage(“z”代表“zip”,即压缩的意思)是一个较早的压缩内核映像格式,适用于较小的系统,特别是早期的 x86 系统。zImage 文件小于 512KB,可以在系统的低端内存中解压。如果内核映像较大,zImage 可能无法使用,因为它可能不适合放在有限的内存空间中。
是ARM Linux常用的一种压缩映像文件。
四、bzImage
bzImage(“b”代表“big”或“boot”,而“z”依然代表“zip”)是一个更新的压缩内核映像格式,它允许内核映像更大(通常大于 512KB)。bzImage 通常用于现代的 x86 系统。它并不是使用 bzip2 压缩的;这个名字只是说明它支持“大”内核映像。bzImage 通常位于 /boot
目录下,并由引导加载器(如 GRUB)加载到内存中并执行。
五、uImage
是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的header,说明这个映像文件的类型、加载位置、生成时间、大小等信息。
六、initrd-x.x.x.img
initial ramdisk,一般被用来临时引导硬件到实际内核vmlinuz能够接管并继续引导的状态。