总体:bootloader->kernel->rootfs->qt/gtk/minigui
对于arm处理器通常从0地址开始执行,也就是bootloader.
bootloade启动过程:1. 初始化RAM-》初始化串口-》检测处理器类型-》设置LINUX启动参数-》调用linux内核映像。
初始化RAM:因为内核是运行在RAM中,因此必须先初始化RAM,为内核启动做准备。初始化 RAM 的任务包括设置 CPU 的控制寄存器参数,以便能正常使用 RAM 以及检 测RAM 大小等。
检测处理器类型:Linux 内核在启动过程中会根据该处理器类型调用相应的初始化程序。
Bootloader在执行过程中必须设置和初始化 Linux 的内核启动参数。即传递启动参数给内核主要采用两种方式:即通过 struct param_struct(2.4内核淘汰) 和struct tag(标记列表,tagged list)两种结构传递。
BootLoader 的启动过程可分为单阶段(Single-Stage)和多阶段(Multi-Stage)两种,通常多阶段的 BootLoader 具有更复杂的功能,更好的可移植性。从固态存储设备上启动的 BootLoader 大多采用两阶段,即启动过程可以分为 stage 1和 stage2:stage1完成初始化硬件,为stage2准备内存空间,并将stage2复制到内存中,设置堆栈,然后跳转到stage2。
BootLoader 的 stage1 通常包括以下步骤: ·硬件设备初始化 ·为加载 BootLoader 的 stage2 准备 RAM 空间 ·拷贝 BootLoader 的 stage2 到 RAM 空间中 ·设置好堆栈(why??) ·跳转到 stage2 的 C 入口点
BootLoader 的 stage2 通常包括以下步骤: ·初始化本阶段要使用到的硬件设备 ·将内核映像和根文件系统映像从flash上读到RAM中 ·调用内核