嵌入式Linux学习-BIOS和Boot loader详解笔记

电子说

1.2w人已加入

描述

1.BIOS****和引导装入程序

为桌面计算机拥电后,一种叫作BIOS的软件系统会立即接管对系统处理器的控制.

[BIOS是Basic Input/Output Software (基本输入输出软件)的缩写,但直际上. BIOS在计算机系统中发挥的作用已经远远超过了最初设计该软件时的目标,而且越来越复杂。

通常. BIOS系统都是保存在闪存(Flash)里面的。

BIOS是一组复杂的系统配置软件例程,它记录了计算机硬件体系结构的底层细节信息。

在系统加电时候,BIOS会立即接管对系统处理器的控制,它最主要任务就是初始化系统硬件,特别是内存子系统,然后将操作系统从硬盘emmcFlash中读出并加载。

初始化系统的几个重要任务如下:

(1)初始化关键硬件组件,例如SDRAM控制器,I/O控制器等

(2)初始化系统内存,并准备将系统系统控制权移交给相应的操作系统。

(3)分配系统资源,例如内存以及外设控制器的中断电路。

(4)提供相应的机制,用于定位和加载操作系统映像。

(5)加载操作系统,并将系统控制权移交给操作系统,将必要的启动信息,例如系统全部内存块的数量、尺寸,串行通信端口的速度以及其它底层硬件配置数据传递给操作系统。

BIOS的首要任务就是启动内存子系统。内存初始化之后,就可以作为一种资源进行使用,很多BIOS完成内存初始化后第一个动作就是将自身复制到DRAM中,以便获得更快的执行速度。

一、BIOS

1.功能:进行自我检测与读取bootloader

2.大致工作流程

①系统启动之后,加载BIOS,并通过BIOS去加载CMOS的信息,并且借由CMOS内的设置值取得主机的各项硬件配置,例如CPU与接口设备的沟通频率、启动设备的查找顺序、硬盘的大小与类型、系统时间、各周边总线是否启动PnP、各接口设备的I/O地址。以及与CPU沟通的IRQ中断等的信息

②取得上面这些信息后,BIOS开始自我检测。然后开始执行硬件检测的初始化,并设置PnP设备,之后再定义出可启动的设备顺序,接下来就会开始进行启动设备的数据读取了

③BIOS会指定启动的设备好让我们可以读取此盘中的操作系统内核文件,由于不用的操作系统它的文件系统格式不同,

此时就需要一个启动引导程序(boot loader)来处理内核文件加载问题,boot loader就在启动设备的第一个扇区,也就是MBR。

二、bootloader

1.概念与特点

Boot loader是一段硬件引导程序,主要是为了内核的运行做准备的,其运行在操作系统内核之前。主要作用是:初始化硬件设备,建立一个内存空间。

将系统的硬件环境和软件环境调整到一个合适的状态,也即是为调用内核准备好环境。而且不同的目标版也需要不同的Boot loader支持。

嵌入式系统中:

固态存储设备的典型空间分配结构:

[Boot loader]—[Bootparameters]—[Kernel]—[Root filesystem]

SDRAM控制器

Boot loader具有两种操作模式,即启动模式和下载模式。

下载模式:是指通过串口或者网络,从主机上下载文件(比如:内核镜像和根文件系统镜像等),这些下载的文件保存在目标机的RAM中,通过Boot loader,这些文件会由RAM中写道FLASH中。

启动模式:即Boot loader从目标机上的某个固态存储设备将操作系统加载到RAM中运行。

Boot loader有两个运行过程,成为stage1和stage2。

stage1的主要步骤是:硬件初始化、为stage2准备RAM空间、将stage2复制到RAM空间、设置堆栈、跳到stage2的C入口点。

stage2的主要步骤是:初始化stage2要使用的硬件设备、检查系统存储、从FLASH中读取内核镜像和根文件系统镜像到RAM中、设置内核参数、调用内核。

对于电脑等大型嵌入式系统:

boot loader可以存在MBR中,也可以存在文件系统的boot srctor中。总之,boot loader最后的功能都是用来加载内核文件

2.MBR与boot loader的关系

在安装Windows的时候,Windows系统会默认在MBR内会安装一份boot loader,并且在自己文件系统的boot sector内也会安装有boot loader。

在安装Linux的时候,你可以选择将boot loader安装在MBR,也可以选择不安装在MBR中

3.启动扇区:boot sector

每一个文件系统中都含有一个bootsector,并且这个启动扇区内也包含有boot loader。因此MBR中提供有选项功能,你可以选择启动哪一个文件系统的boot sector内的boot loader来加载不同的操作系统

4.内核文件加载结构图

过程详解

SDRAM控制器

MBR内提供了选项功能,你可以选择不同的选项来加载文件系统例如:

你可以选择加载Windows系统的boot sector内的启动引导程序,来最终进入Windows系统。

也可以选择Linux系统的bootsrctor内的启动引导程序,来最终进入Linux系统

三、内核加载

boot loader读取内核文件后,接下来Linux就会将内核加压缩到内存中,并且利用内核的功能,开始测试与驱动个各周边的设备,抱愧存储设备、CPU、网卡、声卡等

此时Linux内核会以自己的功能重新检测一次硬件,而不一定会使用BIOS检测到的硬件信息。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分