vmlinux, zImage, Image的区别.doc_第1页
vmlinux, zImage, Image的区别.doc_第2页
vmlinux, zImage, Image的区别.doc_第3页
vmlinux, zImage, Image的区别.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

vmlinux, zImage, Image的区别从下面的内核编译过程,可以看出vmlinux, arch/arm/boot/compressed/vmlinux, arch/arm/boot/Image, arch/arm/boot/zImage 之间的区别. LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready AS arch/arm/boot/compressed/head.o GZIP arch/arm/boot/compressed/piggy.gz AS arch/arm/boot/compressed/piggy.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is readyvmlinux 是一个elf格式的文件Image 是经过objcopy 处理了的只包含内核代码,数据的一个文件, 已经不是elf格式的了。此时还没有经过压缩arch/arm/boot/compressed/vmlinux 是经过压缩的Image和加入了解压头的elf格式的文件arch/arm/boot/zImage 是经过objcopy处理了的可以直接下到对应的地址执行的内核镜像objcopy:GNU 实用工具程序objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中。Objcopy使用GNU BFD库去读或写目标文件。Objcopy可以使用不同于源目标文件的格式来写目的目标文件(也即是说可以将一种格式的目标文件转换成另一种格式的目标文 件)。通过以上命令行选项可以控制Objcopy的具体操作。Objcopy在进 行目标文件的转换时,将生成一个临时文件,转换完成后就将这个临时文件删掉。Objcopy使用BFD做转换工作。如果没有明确地格式要求,则 Objcopy将访问所有在BFD库中已经描述了的并且它可以识别的格式,请参见GNUpro Decelopment Tools中“using ld”一章中“BFD库”部分和“BFD库中规范的目标文件格式”部分。通过使用srec作为输出目标(使用命令行选项-o srec),Objcopy可以产生S记录格式文件。通 过使用binary作为输出目标(使用命令行选项-o binary),Objcopy可以产生原始的二进制文件。使用Objcopy产生一个原始的二进制文件,实质上是进行了一回输入目标文件内容的内存转 储。所有的符号和重定位信息都将被丢弃。内存转储起始于输入目标文件中那些将要拷贝到输出目标文件去的部分的最小虚地址处。使用Objcopy生成S记录格式文件或者原始的二进制文件的过程中,-S选项和-R选项可能会比较有用。-S选项是用来删掉包含调试信息的部分,-R选项是用来删掉包含了二进制文件不需要的内容的那些部分。内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。如 何生成uImage文件?首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就 完成制作工具。然后在内核目录下运行makeuImage,如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比 zImage多64个字节。其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数。U-boot的U是“通用”的意思。zImage 是ARMLinux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明 这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区 别。另外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。在博创2410开发板上的过程示例xiehappyending linux-2.6.24.4$ make uImage CHK include/linux/version.hmake1: “include/asm-arm/mach-types.h”是最新的。 CHK include/linux/utsrelease.h CALL scripts/checksyscalls.sh:1097:2: warning: #warning syscall fadvise64 not implemented:1265:2: warning: #warning syscall migrate_pages not implemented:1321:2: warning: #warning syscall pselect6 not implemented:1325:2: warning: #warning syscall ppoll not implemented:1365:2: warning: #warning syscall epoll_pwait not implemented CHK include/linux/compile.hdnsdomainname: Unknown host Kernel: arch/arm/boot/Image is ready Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImagemkimage command not found - U-Boot images will not be built Image arch/arm/boot/uImage is ready roothappyending linux-2.6.24.4# cp mkimage /usr/local/binroothappyending linux-2.6.24.4# which mkimage /usr/local/bin/mkimagexiehappyending linux-2.6.24.4$ make uImage CHK include/linux/version.hmake1: “include/asm-arm/mach-types.h”是最新的。 CHK include/linux/utsrelease.h CALL scripts/checksyscalls.sh:1097:2: warning: #warning syscall fadvise64 not implemented:1265:2: warning: #warning syscall migrate_pages not implemented:1321:2: warning: #warning syscall pselect6 not implemented:1325:2: warning: #warning syscall ppoll not implemented:1365:2: warning: #warning syscall epoll_pwait not implemented CHK include/linux/compile.hdnsdomainname: Unknown host Kernel: arch/arm/boot/Image is ready Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImageImage Name: Linux-2.6.24.4Created: Fri Apr 16 16:08:40 2010Image Type: ARM Linux Kernel Image (uncompressed)Data Size: 1831944 Bytes = 1789.01 kB = 1.75 MBLoad Address: 0x30008000Entry Point: 0x30008000 Image arch/arm/boot/uImage is readyxiehappyending linux-2.6.24.4$ ls -l arch/arm/boot/zImage -r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论