ARM Linux 启动过程分析:从内核映象到启动过程

需积分: 0 0 下载量 187 浏览量 更新于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启动过程可以分为内核映象的生成、启动引导程序、内核初始化等几个阶段。