ARM Linux 启动过程分析:从内核映象到启动过程
需积分: 0 136 浏览量
更新于2024-07-27
收藏 224KB PDF 举报
Linux启动过程分析
Linux启动过程是指从系统启动到Linux内核完全初始化的整个过程。这个过程可以分为多个阶段,每个阶段都有其特定的任务和实现机制。在ARM平台上,Linux启动过程可以分为以下几个阶段:
1. 内核映象的生成
在Linux启动过程中,内核映象是指包含Linux内核代码的文件。内核映象可以是非压缩的,也可以是压缩的。非压缩内核映象是真正的Linux内核代码,而压缩内核映象是把非压缩内核映象作为数据进行压缩打包,并加上了解压缩代码。
生成非压缩内核映象的过程是:首先,内核的各个模块经过编译、链接,在内核源代码的顶层目录下生成vmlinux文件,这是一个ELF格式的映象。然后,用arm-linux-objcopy命令把vmlinux转换为二进制格式映象,生成arch/arm/boot/Image文件。
生成压缩内核映象的过程是:首先,用gzip对非压缩内核二进制映象arch/arm/boot/Image进行压缩,生成arch/arm/boot/compressed/piggy.gz文件。然后,在arch/arm/boot/compressed/目录下有三个文件:piggy.s、head.S和vmlinux-lds。piggy.s定义了一个包含./piggy.gz文件的数据段;head.S包含了对gzip压缩过的内核进行解压的代码;vmlinux-lds是链接脚本。这些文件经过编译链接,在arch/arm/boot/compressed/目录下产生vmlinux文件,这是一个ELF格式的映象。最后,用arm-linux-objcopy命令把arch/arm/boot/compressed/vmlinux转换为二进制格式映象,生成arch/arm/boot/compressed/zImage文件。
2. 启动引导程序
启动引导程序是指从系统启动到Linux内核完全初始化的过程中,负责加载和初始化Linux内核的程序。在ARM平台上,启动引导程序通常是U-Boot。
启动引导程序的主要任务是:
* 加载Linux内核映象
* 初始化系统硬件
* 初始化Linux内核
3. 内核初始化
内核初始化是指Linux内核完全初始化的过程。在这个过程中,Linux内核会进行系统硬件的初始化、内存管理的初始化、进程管理的初始化等。
在ARM平台上,Linux内核初始化的过程可以分为以下几个阶段:
* 内核解压缩:如果使用压缩内核映象,需要对其进行解压缩。
* 内核初始化:Linux内核会进行系统硬件的初始化、内存管理的初始化、进程管理的初始化等。
* 系统启动:Linux内核会启动系统服务和应用程序。
Linux启动过程是一个复杂的过程,涉及到多个阶段和机制。在ARM平台上,Linux启动过程可以分为内核映象的生成、启动引导程序、内核初始化等几个阶段。
2011-01-26 上传
2023-03-16 上传
2015-06-20 上传
2014-03-31 上传
2010-09-22 上传
2010-01-19 上传