1.首先咱们得搞清除uimage 和zimage的定义和概念
1)大小:内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M.
2)用途: uimage是uboot专用的映像文件。它是在zImage之前加上一个长度为64字节"头",说明这个内核的版本,加载位置,生成时间,大小等信息。其0x40之后与zImage没区别、
3)如何生成uImage文件呢?
(1)在uboot的/tools目录下寻找mkimage文件mkimage /usr/local/bin目录
然后cp mkimage /usr/local/bin,这样就完成了制作工具。
(2)但是咱们还需要一个类似引导文件的脚本,于是有如下脚本:
mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -n "Linux kernel Image by embedclub" -d zImage uImage
-A 架构 优化等级 操作系统 -T 类型是kernel -C 没有经过解压的 -a(加载地址) 0x30008000 -e(入口) 0x30008040 -n(名字) -d(源文件) zImage uImage(目标)
这当中的-A -C 什么的编译选项不太懂,望大神指教
3)把mkaz2uimage 拷贝到 linux---xxxx/arch/arm/boot/
4)直接执行./mkz2uimage
可以看见如下信息
说明了创建时间,kernel类型,数据大小,下载地址,入口地址。
5)这时候就看见uImage 出来了
---------------------扩展--------------------------------
2.现在我们回头来看看刚刚编译完内核的时候生成的几个镜像文件
1)vmlinux
在linux的根目录下,是编译出来的最原始内核文件,未压缩
2)zImage 是vmlinux经过gzip压缩后的文件
3)uimage 是u-boot专用内核映像文件