ARMLinux启动过程详解

需积分: 11 1 下载量 75 浏览量 更新于2024-07-30 收藏 155KB PDF 举报
"ARM Linux启动分析.pdf" ARM Linux的启动过程是一个复杂而有序的流程,涉及到硬件初始化、引导加载器、内核解压、初始化阶段等多个环节。以下是对这个过程的详细解析: 1. 引导加载器:在系统上电后,首先运行的是存储在ROM中的Bootloader,如U-Boot。Bootloader负责初始化硬件,包括CPU、内存控制器、时钟、串口等,同时它还负责加载内核映像到RAM中。 2. 内核映像类型:内核映像有两种形式,非压缩和压缩。非压缩内核映像是直接可执行的二进制文件,由`makeImage`命令生成,它首先通过编译链接得到ELF格式的`vmlinux`,然后使用`arm-linux-objcopy`转换为BIN格式的`Image`。压缩内核映象则是通过`makezImage`命令,先用gzip压缩`Image`文件得到`piggy.gz`,再结合其他文件(如`piggy.s`, `head.S`, `vmlinux-lds`)编译链接,最后生成可执行的压缩内核`zImage`。 3. 内核解压:当Bootloader加载了压缩内核`zImage`后,会执行解压代码`head.S`来解压`piggy.gz`,解压后的结果是原始的非压缩内核映像。 4. 内核初始化:解压完成后,内核开始执行初始化代码,包括设置内存管理、设备驱动初始化、文件系统挂载等。在这个阶段,系统开始识别和配置硬件设备,为用户提供基本的服务。 5. 设备树(Device Tree):在ARM架构中,设备树是描述硬件配置的重要方式,它提供了一种灵活的方式来告诉内核哪些设备存在以及如何与它们交互。在启动过程中,设备树通常作为内核的一部分被加载和解析。 6. 引导参数:Bootloader在加载内核时可以传递参数,这些参数可能会影响内核的行为,例如内存大小、启动设备等。 7. 用户空间启动:内核初始化完成后,会启动第一个用户进程通常是init进程,它是系统用户空间进程的起点。init进程根据配置文件(如System V init或Systemd)来启动其他服务和守护进程,逐渐构建完整的操作系统环境。 8. 系统运行:至此,ARM Linux系统已经完全启动,可以接受用户的输入并执行各种任务。 ARM Linux的启动过程是一个涉及硬件初始化、内核加载、解压、初始化和服务启动的复杂序列。理解这一过程对于调试、优化和定制Linux系统具有重要意义。