ARM Linux启动过程详解
需积分: 11 183 浏览量
更新于2024-07-27
收藏 155KB PDF 举报
"这篇文档详细分析了ARM Linux的启动过程,包括非压缩和压缩内核映像的生成步骤。作者张俊岭通过讲解基于AT91SAM9260EK板的Linux内核2.6.211版本,阐述了内核如何从加载到解压,最终执行的过程。"
在ARM架构的Linux系统中,启动过程是一个复杂但有序的序列,涉及到硬件初始化、内核加载、解压(如果内核是压缩的)以及初始化阶段。这个过程可以分为以下几个关键步骤:
1. **引导加载器**:在系统上电或复位后,首先执行的是固件或引导加载器,如U-Boot。引导加载器负责初始化基本硬件,如内存控制器,设置处理器模式,并从存储设备加载内核映像。
2. **内核映像加载**:内核映像有两种形式,非压缩和压缩。非压缩内核映像是直接由编译链接生成的二进制格式,可以直接执行。而压缩内核映像是经过gzip压缩的,需要先解压。非压缩内核映像通常由`make Image`命令生成,而压缩内核映像由`make zImage`命令生成。
- **非压缩内核映像**:从`vmlinux`(ELF格式)通过`arm-linux-objcopy`转换成`Image`(BIN格式)。
- **压缩内核映像**:首先使用gzip对`Image`进行压缩得到`piggy.gz`,然后在`arch/arm/boot/compressed/`目录下,通过`piggy.s`,`head.S`和`vmlinux-lds`编译链接生成`vmlinux`(ELF格式),再通过`arm-linux-objcopy`转换成`zImage`。
3. **内核解压**:如果是压缩内核,引导加载器会将`zImage`加载到内存中,然后执行解压代码(包含在`head.S`中),解压后的内核映像是非压缩的`Image`。
4. **内核初始化**:解压完成后,内核开始执行初始化代码,这包括设置页表,初始化内存管理,设备驱动初始化,初始化进程调度等。
5. **初始化RAMdisk或根文件系统**:根据配置,内核可能需要挂载初始RAMdisk或者找到实际的根文件系统(例如通过网络或NFS)。
6. **启动第一个用户空间程序**:一旦根文件系统准备就绪,内核会启动`init`进程,这是系统的第一个用户空间程序,负责进一步的系统初始化和服务的启动。
7. **系统运行**:`init`进程根据`/etc/inittab`配置启动指定级别的运行级别服务,至此,系统进入正常运行状态。
整个启动过程的复杂性在于每个步骤都涉及硬件特定的配置和软件初始化,且不同平台可能会有不同的引导加载器和内核配置。理解这个过程对于调试和优化Linux在ARM设备上的启动性能至关重要。
2009-05-19 上传
2023-07-13 上传
2023-05-26 上传
2023-09-04 上传
2023-12-06 上传
2023-05-31 上传
2023-04-04 上传
huber
- 粉丝: 79
- 资源: 25
最新资源
- 新型智能电加热器:触摸感应与自动温控技术
- 社区物流信息管理系统的毕业设计实现
- VB门诊管理系统设计与实现(附论文与源代码)
- 剪叉式高空作业平台稳定性研究与创新设计
- DAMA CDGA考试必备:真题模拟及章节重点解析
- TaskExplorer:全新升级的系统监控与任务管理工具
- 新型碎纸机进纸间隙调整技术解析
- 有腿移动机器人动作教学与技术存储介质的研究
- 基于遗传算法优化的RBF神经网络分析工具
- Visual Basic入门教程完整版PDF下载
- 海洋岸滩保洁与垃圾清运服务招标文件公示
- 触摸屏测量仪器与粘度测定方法
- PSO多目标优化问题求解代码详解
- 有机硅组合物及差异剥离纸或膜技术分析
- Win10快速关机技巧:去除关机阻止功能
- 创新打印机设计:速释打印头与压纸辊安装拆卸便捷性