Linux内核的装载
- 硬件初始化:初始化处理器、内存、外设等。
- 加载内核:从存储介质读取内核映像到内存。
- 预处理:设置启动参数、修改映像头部信息等。
- 转移控制权:将控制权转移给内核入口点。
为什么需要Bootloader
- 硬件初始化:确保硬件处于正确状态。
- 加载操作系统:从存储介质读取内核到内存。
- 系统配置:设置启动参数、选择启动选项。
- 多引导选择:允许用户选择启动哪个操作系统。
- 系统维护和升级:提供备份、固件更新等功能。
bootloader与内核和根文件系统的关系
启动顺序:
bootloader->linux-kernel->rootfile->app
- 引导加载程序:初始化硬件、加载
Linux
内核、配置系统参数。 - Linux内核:管理硬件资源,提供系统核心功能和服务。
- 根文件系统:包含操作系统所需的基本文件和目录结构。
- 应用程序:运行于用户空间,利用内核提供的服务完成特定功能。
bootloader的两个阶段启动过程
预引导阶段:硬件初始化,加载第二阶段的
bootloader
代码。
- 基本的硬件初始化(关闭看门狗和中断,
MMU
(带操作系统),CACHE
。配置系统工作时钟) - 为加载
stage2
准备RAM
空间 - 拷贝内核映像和文件系统映像到
RAM
中 - 设置堆栈指针
sp
- 跳到
stage2
的入口点
操作系统加载阶段:加载并启动操作系统内核。
- 初始化本阶段要使用到的硬件设备(led uart等)
- 检测系统的内存映射
- 加载内核映像和文件系统映像
- 设置内核的启动参数