zImage / vmlinux / Image生成的流程图

ARM 132浏览
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