文章目录
Linux内核镜像格式
【小比较】
| Image | zImage |
|---|---|
| 内核映像文件 | 映像压缩文件 |
| 大约4MB | 不到2MB |
常用Linux 内核镜像格式
- Linux内核有多种格式的镜像,包括vmlinux,Image,zImage,bzImage,uImage, xipImage,bootpImage等。
kernel镜像格式:vmlinux
-
vmlinux是可引导的、未压缩、可压缩的内核镜像,vm代表Virtual Memory.(表示Linux支持虚拟内存)由用户对内核源码编译得到,实质是elf格式的文件;vmlinux是最原始的内核文件
- elf 格式文件
- ELF(Executable and Linkable Format)可执行可链接格式,是UNIX实验室作为二进制接口发布的;
- 在elf格式的文件中,除过二进制代码代码,还包含可执行文件的某些信息,比如符号表等。
- elf 格式文件
kernel 镜像模式:Image
- Image 是经过objcopy处理的只包含二进制数据的内核代码,它已经不是elf格式了,但还没有经过压缩。
- objcopy:
- 拷贝一个目标文件的内容到另一个目标文件(将一种目标格式的文件转换成另外一种格式的目标文件);
- 通过使用binary作为输出目标(-o binary),可以产生一个原始的二进制文件,实质是将所有的符号信息和重定位信息删除,只剩下二进制数据。
- objcopy:
kernel 镜像格式:zImage
- zImage 是ARM Linux常用的一种压缩镜像文件,它是由vmlinux经过obicopy,生成Image,然后由二进制数据加上解压代码经gzip压缩而成;
- 这种格式的Linux镜像文件多存放在NAND上,适用于小内核的情况;
kernel镜像模式:bzImage
-
bz表示big zImage,其格式与zImage类似,但采用了不同的压缩算法,注意,bzImage的压缩率更高 ,是压缩的内核映像。
-
zImage/bzImage:它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有解压缩代码。两者的不同之处在于,老的zImage解压缩内核到低端内存(第一个 640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么可以采用zImage或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。
kernel 镜像模式:uImage
-
uImage是uboot专用的镜像文件,它是在 zImage 之前加上一个长度为0x40的头信息(tag)(也就是说uImage 是一个二进制文件),在头信息内说明了该镜像文件的类型、加载 位置、生成时间、大小等信息.换句话说,若直接从uImage的0x40位置开始执行,则zImage和uImage没有任何区别.命令格式是#make uImage.这种格式的Linux镜像文件多存放在NAND上.
kernel镜像格式:xipImage
- 这种格式的Linux镜像文件多存放在NorFlash上,且运行时不需要拷贝到内存SDRAM中,可以直接在NorFlash中运行.
参考
- https://www.cnblogs.com/big-devil/p/7625880.html