新闻  |   论坛  |   博客  |   在线研讨会
Linux中bootloader介绍
嵌入式Linux | 2023-01-10 17:26:49    阅读:862   发布文章

一个嵌入式Linux系统从软件的角度通常分为以下四个层次:

  • 引导加载程序。包括固化在firmware中的boot代码(可选),和Bootloader两大部分。

  • Linux内核。

  • 文件系统。

  • 应用程序。

Bootloader概念

在嵌入式操作系统中,Bootloader是硬件启动的引导程序,是运行操作系统的前提;在操作系统内核或用户应用程序运行之前运行的一小段代码,对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境,类似于X86计算机中的BIOS固件;Bootloader不属于操作系统,一般采用汇编语言和C语言开发,需要针对特定的硬件平台(比如arm、powerpc、MIPS等)编写,Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。

Bootloader的两种操作模式

自启动模式:在这种模式下,Bootloader从目标机上的某个固态存储设备上将操作系统(kernel)加载到RAM中运行(读取bootcmd参数),整个过程并没有用户的介入。

交互模式:在这种模式下(uboot可在倒计时按任意键进入到这种模式),目标机上的Bootloader将通过串口或网络等方式从开发主机(Host)上下载内核映像和根文件系统映像等到RAM中,可以被 Bootloader写到目标机上的固态存储媒质中,或者直接进行系统的引导。也可以通过串口接收用户的命令。

Bootloader的基本功能
  • 初始化相关硬件

  • 把bootloader自搬运到RAM中

  • 执行用户的命令

  • 访问环境变量

  • 通过网络/串口通信

  • 读写RAM/FLASH

  • 加载并执行内核

常见的Bootloader
  • Redboot:Redhat公司随eCos发布的一个BOOT方案,是一个开源项目,Linux操作系统引导,在线读写Flash。

  • ARMboot:ARM平台的开源固件项目,2002年ARMboot终止了维护。

  • U-Boot:ARMboot并入了PPCBoot,和其他一些平台的Loader合称U-Boot,是目前最常用的bootloader。

  • Blob、Bios-lt、Bootldr、vivi等


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
专注于嵌入式Linux知识的分享、交流
推荐文章
最近访客