BIOS初识

就像人的肉体和思想的关系一样,计算机硬件是软件的躯体,软件是硬件的灵魂。
没有硬件,软件无从谈起;没有软件,硬件就是一堆垃圾,毫无用处。

众所周知,操作系统是系统软件,对硬件的操控和各种应用软件的运行都要依靠操作系统。
操作系统控制硬件资源并提供核心功能(软件运行的平台),它可以识别硬盘上的文件系统并进一步读取和运行上面的软件,因此我们才能达成各种任务。
可以说,操作系统赋予了硬件生命,让硬件“活”了起来;操作系统为软件提供了生命必需品,让软件得以存活。
让硬件有生命、让软件活下去之后,操作系统还充当桥梁让它们得以沟通。

但是,按下开机按钮时操作系统并没有启动,此刻是谁在负责和硬件沟通呢?
而操作系统本身也是一种软件,那又是谁来识别这个系统软件并且运行它的?
或者换个问法?进入OS之后,OS是硬件和软件的桥梁,那进入OS之前,谁是硬件和OS的桥梁呢?
这就要靠计算机的开机程序。
目前的电脑,在开机程序上,主要有早期的BIOS和现在的UEFI两种。

BIOS(Basic Input Output System)

BIOS,基本输入输出系统,就是写入到主板上的一个程序。也是开机时计算机主动执行的第一个程序。

CMOS(Complementary Metal Oxide Semiconductor),互补金属氧化物半导体。
它是指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片,是电脑主板上的一块可读写的RAM芯片。
因为可读写的特性,所以在电脑主板上用来保存BIOS设置的各项硬件参数,这个芯片仅仅是用来存放数据的。

BIOS启动后,首先会分析计算机里有哪些存储设备。以硬盘为例,BIOS会根据设置(CMOS)取得能够开机的硬盘,然后到该硬盘里面去读取第一个扇区的MBR位置。
这里存放的446B的MBR信息保存着最基本的开机管理程序。到此,BIOS工作完成,接下来就交给MBR内的开机管理程序。

这个开机管理程序的目的是载入操作系统内核。
开机管理程序是操作系统在安装时提供的,所以它可以识别硬盘的文件系统,因此就能够读取文件,然后工作完成,接下来就交给内核,实际上就是操作系统,去运行。

大致流程就是:
1、BIOS:开机主动执行的固件,能识别第一个可开机的设备
2、MBR:第一个可开机设备的第一个扇区内的MBR信息块,内含开机管理程序
3、开机管理程序(boot loader):一个可读取操作系统核心文件来执行的软件
4、OS内核:操作系统的功能

总结起来,BIOS干两件事——找硬盘,找MBR;boot loader干两件事——识别文件系统,载入内核。
从上面也可以看出来,BIOS和MBR是硬件本身会支持的功能,而boot loader是操作系统安装在MBR上的一个软件。

整个MBR信息块也只有446B,所以boot loader也非常小,它主要有以下功能:
1、提供菜单:选择不同的开机项目
2、载入OS内核:直接指向可开机的程序区段来开始操作系统
3、转交其他loader:将开机管理功能转交其他loader负责

另一种表述:

X86 架构机器在上电之后,BIOS 系统首先进行基础的硬件初始化,将机器初始化到 一个已知的状态,接着 BIOS 将 PC 指针跳转到特定位置以便引导内核的启动,最终 将执行权从 BIOS 移交给内核。以上便是一个最简单的内核引导过程。

上面第三点可以看出,计算机可以存放不止一个boot loader,安装多个操作系统时就会有多个boot loader。
一块硬盘只能有一个MBR,但是boot loader不仅可以保存到MBR中,还可以保存到任何其他分区的开机扇区(boot sector)。
正是因为这个功能,多系统多重开机才得以实现。
比如,第一个分区安装Windows,第二个分区安装Linux,此时的开机菜单中,M1直接进入Windows,M2则进入到Linux系统的boot loader。
loader只认自己系统的核心文件和其他的loader。

有个说法是,如果要安装双系统,要先安装Windows,再安装Linux。
因为Windows在安装时它的loader会直接覆盖掉MBR以及自己所在分区的开机扇区,没有选择的机会。
而安装Linux则可以选择安装到MBR或者是安装到其他分区的开机扇区。

posted @ 2023-02-27 12:06  GPL-技术沉思录  阅读(141)  评论(0编辑  收藏  举报