vmlinux, zImage, Image的区别.doc

上传人:cl****1 文档编号:551750176 上传时间:2024-01-08 格式:DOC 页数:4 大小:19.50KB
返回 下载 相关 举报
vmlinux, zImage, Image的区别.doc_第1页
第1页 / 共4页
vmlinux, zImage, Image的区别.doc_第2页
第2页 / 共4页
vmlinux, zImage, Image的区别.doc_第3页
第3页 / 共4页
vmlinux, zImage, Image的区别.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《vmlinux, zImage, Image的区别.doc》由会员分享,可在线阅读,更多相关《vmlinux, zImage, Image的区别.doc(4页珍藏版)》请在金锄头文库上搜索。

1、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/bo

2、ot/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格式的文件a

3、rch/arm/boot/zImage 是经过objcopy处理了的可以直接下到对应的地址执行的内核镜像objcopy:GNU 实用工具程序objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中。Objcopy使用GNU BFD库去读或写目标文件。Objcopy可以使用不同于源目标文件的格式来写目的目标文件(也即是说可以将一种格式的目标文件转换成另一种格式的目标文 件)。通过以上命令行选项可以控制Objcopy的具体操作。Objcopy在进 行目标文件的转换时,将生成一个临时文件,转换完成后就将这个临时文件删掉。Objcopy使用BFD做转换工作。如果没有明确地格式要求,则 Objco

4、py将访问所有在BFD库中已经描述了的并且它可以识别的格式,请参见GNUpro Decelopment Tools中“using ld”一章中“BFD库”部分和“BFD库中规范的目标文件格式”部分。通过使用srec作为输出目标(使用命令行选项-o srec),Objcopy可以产生S记录格式文件。通 过使用binary作为输出目标(使用命令行选项-o binary),Objcopy可以产生原始的二进制文件。使用Objcopy产生一个原始的二进制文件,实质上是进行了一回输入目标文件内容的内存转 储。所有的符号和重定位信息都将被丢弃。内存转储起始于输入目标文件中那些将要拷贝到输出目标文件去的部分的

5、最小虚地址处。使用Objcopy生成S记录格式文件或者原始的二进制文件的过程中,-S选项和-R选项可能会比较有用。-S选项是用来删掉包含调试信息的部分,-R选项是用来删掉包含了二进制文件不需要的内容的那些部分。内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。

6、如 何生成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专用的映像文件,它是在zIma

7、ge之前加上一个长度为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 incl

8、ude/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:

9、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

10、 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/checksyscal

11、ls.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 imple

12、mented 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 = 1

13、789.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 -rwxrwxr-x 1 xie xie 1831944 04-16 12:14 arch/arm/boot/zImagexiehappyending linux-2.6.24.4$ ls -l arch/arm/boot/uImage -rw-rw-r- 1 xie xie 1832008 04-16 16:08 arch/arm/boot/uImageuImage比zImage大64个字节,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号