ARM Linux内核启动流程详解
需积分: 11 130 浏览量
更新于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,这个进程会继续启动系统服务和用户空间程序,完成系统启动。
这个过程在不同的架构和实现上可能略有不同,但基本流程保持一致。深入理解这个过程对嵌入式开发人员和系统调试人员尤其重要,有助于优化系统性能和解决启动问题。
2012-05-20 上传
2022-12-18 上传
2009-09-01 上传
2009-04-19 上传
点击了解资源详情
2009-05-19 上传
点击了解资源详情
点击了解资源详情
wanjx1234
- 粉丝: 1
- 资源: 10
最新资源
- 明日知道社区问答系统设计与实现-SSM框架java源码分享
- Unity3D粒子特效包:闪电效果体验报告
- Windows64位Python3.7安装Twisted库指南
- HTMLJS应用程序:多词典阿拉伯语词根检索
- 光纤通信课后习题答案解析及文件资源
- swdogen: 自动扫描源码生成 Swagger 文档的工具
- GD32F10系列芯片Keil IDE下载算法配置指南
- C++实现Emscripten版本的3D俄罗斯方块游戏
- 期末复习必备:全面数据结构课件资料
- WordPress媒体占位符插件:优化开发中的图像占位体验
- 完整扑克牌资源集-55张图片压缩包下载
- 开发轻量级时事通讯活动管理RESTful应用程序
- 长城特固618对讲机写频软件使用指南
- Memry粤语学习工具:开源应用助力记忆提升
- JMC 8.0.0版本发布,支持JDK 1.8及64位系统
- Python看图猜成语游戏源码发布