基于ARM的Linux的启动分析
说明: 本文主要的分析基于ARM的linux-2.6.17内核启动过程分析
基于ARM 的Linux 的启动分析
说明: 本文主要的分析基于ARM的linux-2.6.17内核启动过程分析。
1、Linux 内核的启动方案:
由/arch/arm/Makefile的代码:
define archhelp
echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)' echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' echo '* xipImage - XIP kernel image, if configured
(arch/$(ARCH)/boot/xipImage)'
echo ' bootpImage - Combined zImage and initial RAM disk'
echo ' (supply initrd image via make variable
INITRD=<path>)'
echo ' install - Install uncompressed kernel'
echo ' zinstall - Install compressed kernel'
echo ' Install using (your) ~/bin/installkernel or'
echo ' (distribution) /sbin/installkernel or'
echo ' install to $$(INSTALL_PATH) and run lilo'
endef
可以看出,主要有三种启动方案,分别是:
echo '* zImage - Compressed kernel image (arch/$
(ARCH)/boot/zImage)'
echo ' Image - Uncompressed kernel image (arch/$
(ARCH)/boot/Image)'
echo ' bootpImage - Combined zImage and initial RAM disk'
echo ' (supply initrd image via make variable INITRD=<path>)'。
Linux内核有两种映像:一种是非压缩内核,叫 Image,另一种是它的压缩版
本,叫zImage。根据内核映像的不同,Linux内核的启动在开始阶段也有所不同。 zImage是Image经过压缩形成的,所以它的大小比 Image小。但为了能使用 zImage,必须在它的开头加上解压缩的代码,将 zImage解压缩之后才能执行, 因此它的执行速度比Image要慢。但考虑到嵌入式系统的存储空容量一般比较小, 采用zImage可以占用较少的存储空间,因此牺牲一点性能上的代价也是值得的。 所以一般的嵌入式系统均采用压缩内核的方式(另外bootpImage 是编译包含 zImage和initrd的映像,可以通过make变量INITRD=<path>提供initrd映像)
2.典型启动方案的代码结构:
(1).Image启动方案的代码结构:
#arch/arm/boot/Makefile:
$(obj)/Image: vmlinux FORCE
$(call if_changed,objcopy)
@echo ' Kernel: $@ is ready'
由此可见,Image由vmlinux 二进制化得到的。
Image的是由kernel/vmlinux构成的。
(2).zImage启动方案的代码结构:
你可能喜欢
- 硬盘启动bt5cdlinux
- linux驱动开发
- arm_linux开发环境搭建
- linux驱动开发详解
- BT5下CDLinux+U盘启动破解无线网络,解决各种破解中的疑难杂症12页
- 使用GRUB硬盘启动CDlinux、Beini、slax等linux系统1页
- Bt5(cdlinux)U盘版制作7页
- 2《硬盘启动CDlinux、Beini、slax等linux系统 教程》2页
- WinPE+BT5(CDlinux)教程3页
- Bt5(cdlinux)U盘版制作与破解10页
- linux设备驱动开发硬件平台LDD6410用户手册52页
- linux驱动开发之内核线程3页
- 嵌入式linux内核及驱动开发6页
- “手把手教你学linux驱动开发”OK6410系列之01---模块编程7页
- linux驱动开发学习笔记5页
- linux设备驱动程序开发总结5页


