内容摘自:鸟哥私房菜 http://cn.linux.vbird.org/linux_basic/0130designlinux.php#fig2.2.1
没有运行软件的硬件是没有用的,除了会电人之外,而为了计算机硬件系统的资源合理分配,因此有了操作系统这个软件系统的产生。由于操作系统会控制所有的硬件并且提供核心的文件操作功能,因此我们计算机就能够认识硬盘内的文件系统,并且进一步的读取硬盘内的软件文件与运行改软件来表达成各项软件的运行目的。
那么问题来了,既然操作系统也是软件,那么我的计算机又是如何认识这个操作系统的软件并且运行它的呢?明明启动时我的计算机还没有任何软件系统,那他要如何读取硬盘内的操作系统文件呢?这就要牵涉到计算机的启动程序了。
了解计算机概论我们可以知道,计算机有BIOS与CMOS两个东西,CMOS是记录各项硬件参数且嵌入在主板上面的存储器,BIOS则是一个写入到主板上的一个韧体(韧体就是写入到硬件上的一个软件程序)。这个BIOS就是在启动的时候,计算机系统会主动运行的第一个程序了!
接下来BIOS会去分析计算机里面有哪些存储设备,我们以硬盘为例,BIOS会依据使用者的配置去取得能够启动的硬盘,并且到该硬盘里面去读取第一个磁区的MBR(启动记录区Master Boot Record)位置。MBR这个仅有446bytes的硬盘容量里会放置基本的启动管理程序,此时BIOS就成功圆满完成任务,而接下来就是MBR内的启动管理程序的工作了。
这个启动管理程序的目的就是在加载(load)核心文件,由于启动管理程序是操作系统在安装时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件,然后接下来是核心文件的工作,启动管理程序也就成功圆满完成任务,之后就是大家所知道的操作系统的任务了。
整个启动的流程到操作系统之前的动作应该是这样:
1.BIOS 启动主动运行的韧体,会认识第一个可启动的装置;
2.MBR:第一个可启动装置的第一个磁区内的主要启动记录区块,内含启动管理程序;
3.启动管理程序(boot loader):一支可读取核心文件来运行的软件;
4.核心文件:开始操作系统的功能。。。
由上面的说明我们会知道,BIOS与MBR都是硬件本身会支持的功能,至於Boot loader则是操作系统安装在MBR上面的一套软件了。由於MBR仅有446 bytes而已,因此这个启动管理程序是非常小而美的。 这个boot loader的主要任务有底下这些项目:
1.提供菜单:使用者可以选择不同的启动项目,这也是多重启动的重要功能!
2.加载核心文件:直接指向可启动的程序区段来开始操作系统;
3.转交其他loader:将启动管理功能转交给其他loader负责。