博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编译kernel:make Image uImage与zImage的区别
阅读量:7120 次
发布时间:2019-06-28

本文共 2120 字,大约阅读时间需要 7 分钟。

  http://blog.chinaunix.net/uid-25322094-id-3589796.html

内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。    那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。     如 何生成uImage文件?首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就 完成制作工具。然后在内核目录下运行make uImage,如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比 zImage多64个字节。其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数。U-boot的U是“通用”的意思。zImage 是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明 这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区 别。另外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。

  http://blog.chinaunix.net/uid-20799298-id-99670.html

======0. 生成顶层下的vmlinux    

            /usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-ld -EL -p --no-undefined -X -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o arch/arm/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/arm/kernel/built-in.o arch/arm/mm/built-in.o arch/arm/common/built-in.o arch/arm/mach-s3c2410/built-in.o arch/arm/mach-s3c2400/built-in.o arch/arm/mach-s3c2412/built-in.o arch/arm/mach-s3c2440/built-in.o arch/arm/mach-s3c2442/built-in.o arch/arm/mach-s3c2443/built-in.o arch/arm/plat-s3c24xx/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o arch/arm/lib/lib.a lib/lib.a arch/arm/lib/built-in.o lib/built-in.o drivers/built-in.o sound/built-in.o net/built-in.o --end-group              
======1. 生成Image二进制文件,未压缩的     
            /usr/local/arm/4.3.3/bin/arm-none-linux-gnueabi-objcopy -O binary -R .note -R .comment -S  vmlinux arch/arm/boot/Image
======2. arch/arm/boot/compressed/目录下压缩../Image得到piggy.gz
            gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz
======3. arch/arm/boot/compressed目录下 head.S 编译生成 head.o
======4. arch/arm/boot/compressed/目录下 piggy.S生成 piggy.o
======5. arch/arm/boot/compressed/目录下 misc.c 生成 misc.o
======6. 生成arch/arm/boot/compressed/vmlinux
======7. 生成zImage
======8. 将zImage用mkimage工具制作成uImage

 

转载地址:http://dmfel.baihongyu.com/

你可能感兴趣的文章
【跃迁之路】【424天】程序员高效学习方法论探索系列(实验阶段181-2018.04.05)...
查看>>
火狐放不了html5 video MP4格式
查看>>
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器...
查看>>
通过提交信息来关闭issue
查看>>
Angular学习笔记之集成三方UI框架、控件
查看>>
leetcode318. Maximum Product of Word Lengths
查看>>
解决“有边框的子元素宽度设定绝对值后,缩放浏览器会错位”的两种方法
查看>>
Python基础之使用期物处理并发
查看>>
一天一个设计模式之JS实现——工厂模式
查看>>
微信小程序 — 速学速查笔记
查看>>
/proc/pid/cmdline采坑
查看>>
shell基本教程
查看>>
Laravel自定义模板指令小结
查看>>
PHP下载文件、限速、X-sendfile
查看>>
MapReduce多种join实现实例分析(一)
查看>>
NW.js入门(2)
查看>>
一个表单验证例子
查看>>
4 张动图解释为什么(什么时候)使用 Redux
查看>>
让你的网站秒配 HTTPS 证书
查看>>
翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
查看>>