x86架构linux内核引导过程分析,嵌入式Linux引导以及U-Boot移植深度分析

引言:本文简明扼要的介绍了嵌入式Linux的引导过程,X86体系的引导过程以及几种常见嵌入式处理器的引导过程,U-Boot的移植的基本步骤、常用命令如何使用。通过本文可以对嵌入式Linux的引导从概念到实际操作有一个总体清晰的认识

1.启动顺序

1.1 Bootloader

Bootloader(引导加载程序)本质上是一小段程序,其基本功能在于:

基本的硬件初始化

从闪存存储,网络或其他类型的非易失性存储中加载应用程序二进制文件(通常是操作系统内核)。

可能会对应用程序二进制文件进行解压缩

执行申请

除此基本功能之外,大多数Bootloader(引导加载程序)实现了Shell命令集以执行不同操作。

从存储或网络中加载数据,内存检查,硬件诊断和测试等

1.2 基于BIOS-X86的引导

x86处理器通常安装在在一块包含BIOS程序的非易失性存储器主板上。

在基于BIOS的旧x86平台上:BIOS负责基本的硬件初始化和从非易失性存储中加载一小段代码。

这段代码通常是第一阶段的引导程序bootloader,它将加载完整的引导程序bootloader本身。

bootloader可以解析文件系统,因此内核映象可以直接从普通文件系统中加载。

此顺序与现代基于EFI的系统不同。

x86架构linux内核引导过程分析,嵌入式Linux引导以及U-Boot移植深度分析_第1张图片

用于X86体系Linux的bootloader常用的有以下两种:

GNU GRUB(GRand UnifiedBootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

在X86架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。

详细信息请参考:http://www.gnu.org/software/grub/

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板,而且从6.0版也开始支持采用EFI结构的新型主板。

Syslinux常被用于自网络或者可移动存储介质(如USB/CD-ROM)引导 Linux

详细信息请参考:https://kernel.org/pub/linux/utils/boot/syslinux/

1.3 嵌入式CPU的引导

Case 1:CPU内部无引导代码

x86架构linux内核引导过程分析,嵌入式Linux引导以及U-Boot移植深度分析_第2张图片

CPU上电后,CPU开始在固定地址入口执行代码

CPU没有提供其他引导机制

硬件设计必须确保已连接存储芯片(如NOR闪存芯片)这样就可以在CPU启动的地址访问它并执行指令

第一级引导程序必须在此地址编程在该存储芯片中(如NOR)

NOR是强制性的,因为它允许随机访问,NAND不允许

注:这种方案已不常用,因为需要NOR FLASH

Case2:CP

你可能感兴趣的:(x86架构linux内核引导过程分析,嵌入式Linux引导以及U-Boot移植深度分析)