问题是你有没有发现,既然操作系统也是软件,那么我的计算机优势如何认识这个操作系统 软件并且执行它呢?开机时我的计算机系统还没有任何软件系统,那他要如何读取硬盘内的操作系统文件呢?这就要牵涉计算机的开机程序了。下面我们来谈一下计算机的开机程序
在计算机概论里面我们谈到那个可爱的BIOS 和CMOS两个东西。CMOS是记录各项硬件参数且嵌入在主板上面得存储器,BIOS则是一个写入到主板上的一个韧体(韧体就是写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候计算机系统会主动执行的第一个程序了。
接下来BIOS回去分析计算机里面有哪些存储设备,我们以硬盘为例,BIOS会依据用户的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。MBR这个仅有446bytes的硬盘容量里面会放置最基本的引导加载程序,此时BIOS就功成圆满,而接下来就是MBR内的引导加载程序工作了。
这个引导加载程序的目的是在加载内核文件,由于引导加载程序是操作系统在安装时所提供的,所以他会识别硬盘内的文件系统的格式,因此就能够读取内核文件,然后接下来就是内核文件的工作,引导加载程序也功成圆满,之后就是大家所知道的操作系统的任务了
用一句通俗的话说,BIOS是帮着找到家门(硬盘),硬盘中的引导加载程序就是帮着找到家里的钱(内核),然后操作系统就开始工作了
简单的说,整个开机流程到操作系统之前的动作应该是这样的
BIOS:开机主动执行的韧体,会认识到第一个可开机的设备
MBR:第一个可开机设备的第一个扇区内的主引导分区块,内包含引导加载程序
引导加载程序(Boot loader): 一支可读取内核文件来执行的软件
内核文件: 开始操作系统的功能
由上面的说明,我们会知道,BIOS和MBR都是硬件本身会支持的功能,至于Boot Loader则是操作系统安装在MBR上面的一套软件。由于MBR仅有446bytes而已,因此这个引导加载程序是非常小而完美的。这个BootLoader的主要任务是一下项目。
提供菜单:用户可以选择不同的开机选项,这也是多重引导的重要功能
载入内核文件: 直接指向可开机的程序段来开始操作系统。
转交其他Loader:将引导加载功能转交给其他loader负责
上面的前两点还容易理解,但是第三点很有趣!那表示你的计算机系统里面可以具有两个以上的引导加载程序呢。有可能吗?我们的硬盘不是只有一个MBR而已?但是引导加载程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区。
举一个例子来说,假设你的个人计算机只有一块硬盘,里面分成4个分区。其中第一,二分区分别安装了Windows及Linux,你要如何在开机的时候选择用Windows还是Linux开机呢?假设MBR内安装的是可以同时识别Windows和Linux操作系统的引导加载程序,那么整个流程如下