linux2.6.35zImage生成流程简介
来源:互联网 发布:淘宝色情服务暗语 编辑:程序博客网 时间:2024/06/06 09:41
zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另外, Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。
先分析一下zImage的组成。在内核编译完成后会在arch/arm/boot/下生成zImage。
在arch/armboot/Makefile中:
$(obj)/zImage: $(obj)/compressed/vmlinux FORCE
$(call if_changed,objcopy)
由此可见,zImage的是elf格式的arch/arm/boot/compressed/vmlinux二进制化得到的
在arch/armboot/compressed/Makefile中:
HEAD= head.o
OBJS= misc.o decompress.o
$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o /
$(addprefix $(obj)/, $(OBJS)) FORCE
$(call if_changed,ld)
$(obj)/piggy.gz: $(obj)/../Image FORCE
$(call if_changed,gzip)
$(obj)/piggy.o: $(obj)/piggy.gz FORCE
这里我们可以看到,vmlinux主要依赖下面几个文件:
Ø vmlinux.lds
Ø head.o
Ø piggy.o
Ø decompress.o
piggy.o依赖piggy.gz
piggy.gz依赖arch/arm/boot/Image
查看arch/arm/boot/Makefile,得知
$(obj)/Image: vmlinux FORCE
$(call if_changed,objcopy)
@echo ' Kernel: $@ is ready'
其中Image是由内核顶层目录下的vmlinux二进制化后得到的。注意:arch/arm/boot/compressed/vmlinux是位置无关的,这个有助于理解后面的代码,链接选项中有个 –fpic参数:
EXTRA_CFLAGS := -fpic
总结一下zImage的组成,它是由一个压缩后的内核piggy.o,连接上一段初始化及解压功能的代码(head.o misc.o decompress.o)组成的。
- linux2.6.35zImage生成流程简介
- linux2.6.35zImage生成流程简介
- 基于Linux2.6.35内核的zImage启动过程研究
- make zImage的流程
- Linux2.6.35.7内核启动流程分析
- zimage 生成uimage
- zImage生成uImage
- 由zImage生成uImage
- zImage生成命令行
- zImage的生成过程
- 生成zimage的步骤
- linux zImage生成过程详解
- linux zImage生成过程详解
- linux zImage生成过程详解
- Linux zImage的生成过程
- linux zImage生成过程详解
- linux uImage/zImage生成过程
- linux2.6.21 make zImage时出现的错误(1)
- Android@id和@+id区别?
- git 命令的使用(二)
- 解决 Ubuntu 下风扇一直高速旋转的方法
- linux内核映像uImage与zImage的区别
- Linux下,不能以根用户身份运行google chrome 浏览器的解决办法
- linux2.6.35zImage生成流程简介
- Struts2请求处理流程及源码分析
- struts2.X心得3--struts2入门知识2
- 一些IT名词
- Java--Java运行机制
- C#中的三种循环:while、do..while..、for循环
- pthread_cond_wait()的实现原理
- chapter 2.2: Kernel Object 和 Data Structures
- Fragment资料