2012年(135)
分类: LINUX
2012-07-22 22:23:22
几个内核成品文件介绍
进入linux内核目录
# cd linux-2.6.28_smdk6410/
第一个:vmlinux
# ls vmlinux -lh
得到
-rwxr-xr-x. 1 root root 41M Apr 7 20:38 vmlinux
可见大小为41M,此内核为未压缩,且把符号表也一起编译进去了。
第二个:vmlinux
# ls arch/arm/boot/compressed/vmlinux -lh
得到
-rwxr-xr-x. 1 root root 2.1M Apr 7 20:38 arch/arm/boot/compressed/vmlinux
可见大小为2.1M,此内核为未压缩,但符号表没有一起编译进去。
第三个:zImage
# ls arch/arm/boot/zImage -lh
得到
-rwxr-xr-x. 1 root root 2.0M Apr 7 20:38 arch/arm/boot/zImage
可见大小为2.0M,此内核为由 arch/arm/boot/compressed/vmlinux 经过zip算法压缩过,并且文件头集成有解压缩代码,所以zImage具有自解压功能
=========以下资料来自http://blog.csdn.net/cybertan/article/details/5217850===========
1 vmlinux:
说明:vmlinux是非压缩的ELF对象,并且包括symbols,comments,debug info(如果用-g编译)
在根目录下,会产生一个vmlinux , 这个是第一产生的image,它包括如下:
arch/arm/kernel/head.o ----> head.S
arch/arm/kernel/init-task.o
init ---> main.c ,start_kernel函数在此
usr/built-in.o
arch/arm/kernel
arch/arm/mm
arch/arm/common
arch/arm/mach-XXX
arch/arm/nwfpe
kernel
mm
fs
ipc
security
/lib/lib.a
arch/arm/lib
drivers
net
2:Image : 在 .arch/arm/boot下
vmlinux去掉注释,调试信息,符号表,用objcopy命令
3:vmlinux: 此文件 为 arch/arm/boot/compressed/vmlinux
将Image用 gzip 压缩 -> piggy.gz ,然后用asm变成 piggy.o
piggy.o
misc.o --->>arch/arm/boot/compressed/misc.c
head.o --->>arch/arm/boot/compressed/head.S
4: arch/arm/boot/compressed/vmlinux 用OBJCOPY 去除misc.c,head.S中的symbols,comments,debug info,变为zImage
5:uboot启动使用的uimage:
uImage是在zImage(缺省生成的uImage是在zImage基础上)或者.arch/arm/boot/Image(非压缩的内核)加上一个头,长度为64字节.头的信息为image_header_t结构