linux内核相关镜像zImage、zImage、bzImage、vmlinuz、vmlinux、Image关系分析(摘自《国嵌-嵌入式Linux内核驱动进阶班实验手册》)

来源:互联网 发布:m2齿条数据 编辑:程序博客网 时间:2024/06/16 03:41

嵌入式系统构建之2440开发板内核制作,目地是让大家学会嵌入式内核的配置与编译,学习时应注意与前面X86平台内核制作做对比。比如,从生成的镜像上来看,在pc的x86平台下,我们生成的是bzImage、这里我们生成的是uImage,它们有什么联系?下面来讨论一下这几种镜像之间的关系:

*  zImage与uImage

zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。

*  zImage与bzImage

bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的,bzImage中的bz容易引起误解,bz表示“big zImage”。 bzImage中的b是“big”意思。 zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有 gzip解压缩代码。所以你不能用gunzip 或 gzip –dc解包vmlinuz。

*  vmlinuz与vmlinux

vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。zImage和bzImage是vmlinuz的存在形式,在x86系统中,我们是直接通过将bzImage拷贝为/boot/vmlinuz获得vmlinuz的。

vmlinux 是ELF文件,即编译出的最原始的文件,或者称之为基本内核。vmlinuz(zImage或bzImage)是由ELF文件vmlinux经过objcopy后得到binary文件Image,再经过压缩后的文件。

原创粉丝点击