ARM Linux内核启动流程详解
需积分: 11 115 浏览量
更新于2024-07-30
收藏 155KB PDF 举报
"这篇文档详细分析了ARM Linux的启动过程,特别关注了内核的压缩与非压缩映像的生成步骤。作者张俊岭在2008年8月9日编写此文档,以AT91SAM9260EK开发板和Linux内核2.6.21为基础,讲解了内核如何从加载到运行的详细流程。"
在理解ARM Linux启动过程之前,首先要区分压缩内核映像和非压缩内核映像。非压缩内核映像是未经压缩的Linux内核代码,可以直接执行。它由`makeImage`命令生成,通过以下步骤:
1. 内核的各个模块编译和链接,形成顶层目录下的`vmlinux`文件,这是一个ELF格式的映像。
2. 使用`arm-linux-objcopy`将`vmlinux`转换为二进制格式的`arch/arm/boot/Image`。
压缩内核映像则是一个自解压的可执行映像,它首先对非压缩内核映像进行gzip压缩,然后附加解压缩代码。生成过程如下:
1. 使用gzip对`arch/arm/boot/Image`进行压缩,得到`arch/arm/boot/compressed/piggy.gz`。
2. `arch/arm/boot/compressed`目录下的`piggy.s`、`head.S`和`vmlinux-lds`文件编译链接,生成ELF格式的`vmlinux`文件。
3. 通过`arm-linux-objcopy`将`vmlinux`转换为二进制格式的`arch/arm/boot/compressed/zImage`。
启动流程大致分为以下几个阶段:
1. **引导加载器阶段**:通常由Bootloader(如U-Boot)负责,读取并解码存储设备上的内核映像(压缩或非压缩),并将控制权传递给内核。
2. **解压缩阶段**(仅针对压缩内核):如果加载的是压缩内核,Bootloader会跳转到解压缩代码,解压内核映像到内存中的特定位置。
3. **设置硬件环境**:内核初始化必要的硬件,如内存管理单元(MMU)、中断控制器等,并设置页表。
4. **初始化进程调度器**:设置调度算法,准备启动第一个用户空间进程。
5. **初始化文件系统**:挂载根文件系统,使得内核可以访问文件和配置。
6. **启动初始进程**:通常为/sbin/init,这个进程会继续启动系统服务和用户空间程序,完成系统启动。
这个过程在不同的架构和实现上可能略有不同,但基本流程保持一致。深入理解这个过程对嵌入式开发人员和系统调试人员尤其重要,有助于优化系统性能和解决启动问题。
点击了解资源详情
114 浏览量
204 浏览量
108 浏览量
118 浏览量
231 浏览量
101 浏览量
2009-05-19 上传
wanjx1234
- 粉丝: 1
最新资源
- 探索HTML技术在压缩包子文件中的应用
- HTML日程规划工具:day-planner使用指南
- 深入解读奥美品牌成长的成功秘诀与技巧
- QuestStore: 一站式管理学生、教师及任务的CMS平台
- 易语言实现API函数SHFileOperationA复制文件教程
- 自动导航至百度的Chrome新标签页扩展程序
- 深入解析AXIS1.4客户端调用方法与源码工具
- 品牌知识全攻略:提升品牌价值与成功技巧
- ListViewCtrlEx_Demo:自定义ClistCtrl控件演示
- 易语言SUI界面引擎完整源码解析与应用
- HTML压缩包子文件解压缩教程
- Python实现Dockerfile自动优化工具
- Epsilon库V0.6.0发布:Python开发者的新选择
- 谷歌师兄开发IT社区英语学习资源
- 实现Android日历控件的手势滑动功能
- 实现AWS Lambda中的SQLite数据库持久化存储