Linux内核加载过程
通常,Linux内核都是经过gzip加载过之后的映像文件。
bootloader复制压缩内核到内存空间。
内核自解压。
运行内核。
编译完成的Linux内核存放在哪里?
./vmlinux elf格式未压缩内核。
arch/arm/boot/compressed/vmlinux 压缩以后的elf格式内核。
arch/arm/boot/zImage 压缩内核。
压缩内核(zImage)的入口
/arch/arm/boot/compressed/vmlinux.lds 该文件为编译器指定link顺序。
ENTRY(_start) 压缩内核从.start段开始执行。
在/arch/arm/boot/compressed/head.S中执行以下爱操作:
(1)检测系统空间。
(2)初始化C代码空间。
(3)跳转到C代码decompress_kernel,
arch/arm/boot/compressed/misc.c中。