`
bigfirebird
  • 浏览: 128790 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zImage / vmlinux / Image生成的流程图

阅读更多
SRC_TREE    :=./
HEADER_PATH    :=arch/arm/boot/compressed
BOOT_PATH    :=arch/arm/boot/
KERNEL_PATH    :=arch/arm/kernel


-----------------------------------------------------------------------------------------------------------------------

1 SRC_TREE 目录下的vmlinux经过objcoy后生成二进制文件Image,Image在经过gzip压缩后生成piggy.o
   piggy.o是真正的内核镜像文件

2 HEADER_PATH/head.o ,head-xscal.o ,misc.o 的作用就是把piggy.o解压到指定的位置,然后执行piggy.o解压后的代码
  


HEADER_PATH/zImage
       ^
       |[objcopy]
       |
HEADER_PATH/vmlinux
       ^
       |[ld]
       |
       +-<--HEADER_PATH/head.o
       |
       +-<--HEADER_PATH/head-xscal.o
       |
       +-<--HEADER_PATH/misc.o
       |
       +-<--HEADER_PATH/piggy.o <-- HEADER_PATH/piggy.gz <--[gzip]-- BOOT_PATH/Image <--[objcopy]--SRC_TREE/vmlinux

-----------------------------------------------------------------------------------------------------------------------







-----------------------------------------------------------------------------------------------------------------------

SRC_TREE目录下的vmlinux是由一下三部分组成的:

$(vmlinux-init)

$(vmlinux-main)

kallsyms.o

vmlinux
   ^
   |
   +-<--$(vmlinux-init)
   |          ^
   |          |
   |          +--<--KERNEL_PATH/head.S
   |          |
   |          +--<--KERNEL_PATH/init_task.o
   |          |
   |          +--<--SRC_TREE/init/build-in.o
   |        
   +--< $(vmlinux-main)
   |          ^
   |          |$(cory-y)
   |          +--<--SRC_TREE/driver/built-in.o
   |          |
   |          +--<--SRC_TREE/mm/built-in.o
   |          |
   |          +--<--SRC_TREE/usr/built-in.o
   |          |
   |          +--<--SRC_TREE/kernel/built-in.o
   |          |
   |          +--<--SRC_TREE/mm/built-in.o
   |          |
   |          +--<--SRC_TREE/fs/built-in.o
   |          |
   |          +--<--SRC_TREE/ipc/built-in.o
   |          |
   |          +--<--SRC_TREE/securiy/built-in.o
   |          |
   |          +--<--SRC_TREE/crypto/built-in.o
   |          |
   |          +--<--SRC_TREE/block/built-in.o
   |          |
   |          +--<--arch/arm/kernel/built-in.o
   |          |
   |          +--<--arch/arm/mm/built-in.o
   |          |
   |          +--<--arch/arm/common/built-in.o
   |          |
   |          +--<--arch/arm/mach-pxa/built-in.o
   |          |
   |          +--<--arch/arm/nwfpe/buit-in.o
   |          |
   |          |$(lib-y)
   |          +--<--SRC_TREE/lib/built-in.o
   |          |
   |          +--<--arch/arm/lib/built-in.o
   |          |
   |          |$(drivers-y)
   |          +--<--SRC_TREE/drivers/buit-in.o
   |          |
   |          +--<--SRC_TREE/sound/buit-in.o
   |          |
   |          |$(net-y)
   |          +--<--SRC_TREE/net/buit-in.o
   |
   +--< kallsyms.o
分享到:
评论

相关推荐

    内核地址的确定. 如何生成vmlinux

    ### 内核地址的确定与vmlinux生成详解 #### 一、引言 Linux内核的构建过程中涉及多个步骤,其中包括编译、链接等环节。对于基于ARM架构的系统而言,内核链接过程尤为关键,它直接决定了内核如何在内存中布局,以及...

    Linux内核源码分析--zImage出生实录(Linux-3.0-ARMv7)1

    在`arch/arm/boot/Makefile`中,`$(obj)/Image`是`vmlinux`的目标,这意味着`vmlinux`被转换为一个非压缩的ELF格式的内核映像。接着,`$(obj)/compressed/vmlinux`从`$(obj)/Image`构建,这涉及到内核的压缩过程。...

    ARM+Linux的启动分析(zImage)

    3. **链接生成zImage**:最后,使用链接工具将vmlinux与解压缩代码(通常位于`arch/arm/boot/compressed/`目录下)链接生成zImage。 具体步骤如下: - 在`arch/arm/boot/Makefile`中定义了zImage的生成规则。 - `...

    linux2.6内核Zimage

    linux2.6内核,可以直接下载到开发板的通过编译的linux2.6内核。

    linuxzImage生成过程详解.pdf

    接下来,我们关注`zImage`的构建规则,从第212行开始,这些规则定义了如何从`vmlinux`生成`zImage`。 `build`和`boot`变量在`scripts/Kbuild.include`和`arch/arm/Makefile`中分别被定义。`MACHINE`变量则根据`...

    最新内核3.14以上编译uImage时一般要把zImage转换为uImage--实验通过

    随着Linux内核版本的不断演进,从3.14版本开始,在进行ARM架构下内核编译时,常常会遇到一个特定的要求:需要将编译生成的zImage文件转换为uImage格式。本文将详细介绍这一转换过程的原因、具体操作步骤以及背后的...

    Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)1

    zImage的入口是由arch/arm/boot/compressed/vmlinux.lds文件决定的。 三、MMU的设置 在zImage自解压过程中,MMU的设置是非常重要的。MMU必须关闭,指令Cache可以打开也可以关闭,数据Cache必须关闭。ARMv7架构下的...

    内核启动地址的一点总结[定义].pdf

    3. **piggy.gz**:使用gzip -9压缩arch/arm/boot/Image生成,压缩后的大小为1.55M。 4. **piggy.o**:编译arch/arm/boot/compressed/piggy.S,将piggy.gz包含到piggy.o中。 5. **/compressed/vmlinux**:通过arch/...

    linux启动流程分析.pdf

    这个文件是由`vmlinux-armv.lds.in`根据编译选项的不同生成的,还可能由`vmlinux-armo.lds.in`或`vmlinux-armv-xip.lds.in`生成。 2. **生成过程**:在`kernel/arch/arm/Makefile`中有生成vmlinux.lds的指令: ```...

    vmlinux-to-elf:通过提取内核符号表(kallsyms)从原始内核中恢复可完全分析的.ELF的工具

    该工具允许从vmlinux / vmlinuz / bzImage / zImage内核映像(原始二进制Blob或已存在但已剥离的.ELF文件)中获取具有可恢复功能和可变符号的完全可分析的.ELF文件。 为此,它将在内核中扫描内核符号表( ),这是...

    ARM+Linux的启动分析(zImage).pdf

    首先,通过编译链接vmlinux生成内核对象文件,然后使用链接脚本`vmlinux.lds`将它们链接成zImage。这个过程在`arch/arm/boot/Makefile`中进行。值得注意的是,zImage实际上是一个elf格式的文件,由`arch/arm/boot/...

    单元学习ARM+Linux的启动分析(zImage).pdf

    首先,通过编译链接vmlinux生成vmlinux.lds链接脚本,然后链接生成zImage。这个过程在`arch/arm/boot/Makefile`中被定义,zImage实际上是elf格式,由`arch/arm/boot/compressed/vmlinux`二进制化得到。在这个目录下...

    ANDROID之内核链接vmlinux.lds.doc

    ### 内核链接vmlinux.lds.doc:深入解析 #### 一、内核布局概述 内核布局涉及两个主要方面:特定于体系结构的部分和与体系结构无关的部分。特定于体系结构的部分负责硬件初始化、内存配置等工作,之后将控制权交给...

    内核加载1

    - **vmlinux生成**:根据`arch/arm/kernel/vmlinux.lds`链接脚本,将各个子目录下的`.o`文件链接成一个完整的内核映像`vmlinux`,包含调试信息和符号表,大约23MB。 - **去除冗余信息**:使用`arm-linux-gnu-...

    ARM_Linux_启动过程分析

    - **压缩**:使用`gzip`工具对非压缩内核二进制映像`arch/arm/boot/Image`进行压缩,生成`arch/arm/boot/compressed/piggy.gz`文件。 - **构建自解压功能**: - `piggy.s`文件定义了一个包含`./piggy.gz`的数据段。...

    Android的Linux内核与驱动程序

    - 编译完成后会生成两个重要的文件:`vmlinux` 和 `zImage`。 - `vmlinux` 是未压缩的内核ELF文件。 - `zImage` 是压缩后的内核映像文件。 - 编译过程涉及多个步骤,包括链接、复制、压缩等操作: - `LD vmlinux`...

    Linux启动过程

    2. **格式转换**:使用`arm-linux-objcopy`命令将vmlinux转换为二进制格式映象`arch/arm/boot/Image`,以便于加载到硬件上执行。 ##### 压缩内核映像 压缩内核映像的生成过程相对复杂: 1. **数据压缩**:首先,...

    linux内核启动流程1

    通过分析 zImage 的自解压过程和 start 代码,我们可以了解 Linux 内核启动流程的详细过程,并且了解到 zImage 的编译过程和自解压机制。 Linux 内核启动流程分析是 Linux 系统启动的关键步骤之一,理解这个过程...

    linux启动流程分析

    在生成`vmlinux`之后,通常还会对其进行压缩以形成`zImage`文件。压缩过程发生在`kernel/arch/arm/boot`目录下。`zImage`文件由压缩后的`vmlinux`和解压缩代码两部分组成。最终被写入到Flash中供系统启动使用。 ###...

Global site tag (gtag.js) - Google Analytics