当前位置:首页>Linux>ARM Linux内核编译生成文件的各种格式

ARM Linux内核编译生成文件的各种格式

  • 2026-10-01 14:49:28
ARM Linux内核编译生成文件的各种格式
Linux的内核有多种存在形式,文件名一定程度上能够指明内核的格式,不过有时也不准,需要用file命令进一步确认。这里以ARM平台介绍各种格式的内核。

vmlinux

原始elf格式内核

32位

64位

它包含了内核的所有代码、数据以及调试符号表,体积非常庞大(通常几十到上百MB)。因为它包含了大量调试信息,所以主要用于内核调试(如使用GDB),不能直接用于启动系统。

Image

将 vmlinux 中的符号表、调试信息和注释剥离后,生成的纯二进制镜像文件,体积缩小很多,是可以直接烧录到存储设备中运行的内核,但此时文件仍未压缩。

32位

64位

32位是纯数据文件,没有特别的头,而64位在编译成vmlinux时text段最开始有一个固定的、64字节的头部,file可以通过这个头部识别到文件的类型。

zImage

压缩并可以自解压的内核,文件头部是一小段解压程序,后面紧跟着压缩后的内核数据。启动时,这段头部代码会先运行,将自身解压到内存中,然后再跳转到真正的内核入口。通常用于32位ARM平台。

uImage

U-Boot 打包的 zImage,在已有的 zImage 文件最前面加上一个64字节的专用头部(U-Boot Header) 。
可以对比uImage和zImage的前面一些字节,红色框内就是uboot添加的内容

bootpImage

zImage+initrd的镜像,initrd中包含一个最小的根文件系统。

xipImage

XIP表示eXecute-In-Place,就地执行,直接在非易失性存储(如 NOR Flash)上运行的内核镜像。
下面这些镜像都是基于64位的Image压缩而来

Image.gz

gzip压缩

Image.lz4

LZ4压缩

Image.bz2

bzip2压缩

Image.lzma

lzma压缩

Image.lzo

lzop压缩

以上是官方内核能够生成的镜像,对于有些平台和产品会对内核做进一步处理,比如将设备树文件和内核合并成一个文件,也会给内核重命名,后缀可能是bin、img等等,到底是什么格式最好用file命令确定。

最新文章

随机文章