Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315423
  • 博文数量: 135
  • 博客积分: 867
  • 博客等级: 准尉
  • 技术积分: 865
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-15 14:50
文章分类

全部博文(135)

文章存档

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结构

阅读(948) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~