Linux内核的装载

  • 硬件初始化:初始化处理器、内存、外设等。
  • 加载内核:从存储介质读取内核映像到内存。
  • 预处理:设置启动参数、修改映像头部信息等。
  • 转移控制权:将控制权转移给内核入口点。

为什么需要Bootloader

  • 硬件初始化:确保硬件处于正确状态。
  • 加载操作系统:从存储介质读取内核到内存。
  • 系统配置:设置启动参数、选择启动选项。
  • 多引导选择:允许用户选择启动哪个操作系统。
  • 系统维护和升级:提供备份、固件更新等功能。

bootloader与内核和根文件系统的关系

启动顺序:bootloader->linux-kernel->rootfile->app

  • 引导加载程序:初始化硬件、加载Linux内核、配置系统参数。
  • Linux内核:管理硬件资源,提供系统核心功能和服务。
  • 根文件系统:包含操作系统所需的基本文件和目录结构。
  • 应用程序:运行于用户空间,利用内核提供的服务完成特定功能。

bootloader的两个阶段启动过程

预引导阶段:硬件初始化,加载第二阶段的bootloader代码。

  • 基本的硬件初始化(关闭看门狗和中断,MMU(带操作系统),CACHE。配置系统工作时钟)
  • 为加载stage2准备RAM空间
  • 拷贝内核映像和文件系统映像到RAM
  • 设置堆栈指针sp
  • 跳到stage2的入口点

操作系统加载阶段:加载并启动操作系统内核。

  • 初始化本阶段要使用到的硬件设备(led uart等)
  • 检测系统的内存映射
  • 加载内核映像和文件系统映像
  • 设置内核的启动参数