我们在计算机概论里面谈到了,没有运行软件的硬件是没有用的,除了会电人之外...,
而为了计算机硬件系统的资源合理分配,因此有了操作系统这个系统软件的产生。由於操作系统会控制所有的硬件并且提供核心功能,
因此我们的计算机就能够认识硬盘内的文件系统,并且进一步的读取硬盘内的软件文件与运行该软件来达成各项软件的运行目的。
问题是,你有没有发现,既然操作系统也是软件,那么我的计算机又是如何认识这个操作系统软件并且运行他的?
明明启动时我的计算机还没有任何软件系统,那他要如何读取硬盘内的操作系统文件啊?嘿嘿!这就得要牵涉到计算机的启动程序了!
底下就让我们来谈一谈这个启动程序吧!
在计算机概论里面我们有谈到那个可爱的BIOS与CMOS两个东西,
CMOS是记录各项硬件参数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个韧体(再次说明,
韧体就是写入到硬件上的一个软件程序)。这个BIOS就是在启动的时候,计算机系统会主动运行的第一个程序了!
接下来BIOS会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS会依据使用者的配置去取得能够启动的硬盘,
并且到该硬盘里面去读取第一个磁区的MBR位置。
MBR这个仅有446 bytes的硬盘容量里面会放置最基本的启动管理程序,
此时BIOS就功成圆满,而接下来就是MBR内的启动管理程序的工作了。
这个启动管理程序的目的是在加载(load)核心文件,
由於启动管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件,
然后接下来就是核心文件的工作,启动管理程序也功成圆满,之后就是大家所知道的操作系统的任务啦!
简单的说,整个启动流程到操作系统之前的动作应该是这样的:
BIOS:启动主动运行的韧体,会认识第一个可启动的装置;
MBR:第一个可启动装置的第一个磁区内的主要启动记录区块,内含启动管理程序;
启动管理程序(boot loader):一支可读取核心文件来运行的软件;
核心文件:开始操作系统的功能...
由上面的说明我们会知道,BIOS与MBR都是硬件本身会支持的功能,至於Boot
loader则是操作系统安装在MBR上面的一套软件了。由於MBR仅有446 bytes而已,因此这个启动管理程序是非常小而美的。
这个boot loader的主要任务有底下这些项目:
提供菜单:使用者可以选择不同的启动项目,这也是多重启动的重要功能!
加载核心文件:直接指向可启动的程序区段来开始操作系统;
转交其他loader:将启动管理功能转交给其他loader负责。
上面前两点还容易理解,但是第三点很有趣喔!那表示你的计算机系统里面可能具有两个以上的启动管理程序呢!
有可能吗?我们的硬盘不是只有一个MBR而已?是没错啦!但是启动管理程序除了可以安装在MBR之外,
还可以安装在每个分割槽的启动磁区(boot sector)喔!瞎密?分割槽还有各别的启动磁区喔?
没错啊!这个特色才能造就『多重启动』的功能啊!
我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分割槽,其中第一、二分割槽分别安装了Windows及Linux,
你要如何在启动的时候选择用Windows还是Linux启动呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的启动管理程序,
那么整个流程可以图示如下:
图2.4.1、启动管理程序的工作运行示意图
在上图中我们可以发现,MBR的启动管理程序提供两个菜单,菜单一(M1)可以直接加载Windows的核心文件来启动;
菜单二(M2)则是将启动管理工作交给第二个分割槽的启动磁区(boot sector)。当使用者在启动的时候选择菜单二时,
那么整个启动管理工作就会交给第二分割槽的启动管理程序了。
当第二个启动管理程序启动后,该启动管理程序内(上图中)仅有一个启动菜单,因此就能够使用Linux的核心文件来启动罗。
这就是多重启动的工作情况啦!我们将上图作个总结:
每个分割槽都拥有自己的启动磁区(boot sector)
图中的系统槽为第一及第二分割槽,
实际可启动的核心文件是放置到各分割槽内的!
loader只会认识自己的系统槽内的可启动核心文件,以及其他loader而已;
loader可直接指向或者是间接将管理权转交给另一个管理程序。
那现在请你想一想,为什么人家常常说:『如果要安装多重启动,
最好先安装Windows再安装Linux』呢?这是因为:
Linux在安装的时候,你可以选择将启动管理程序安装在MBR或各别分割槽的启动磁区,
而且Linux的loader可以手动配置菜单(就是上图的M1, M2...),所以你可以在Linux的boot
loader里面加入Windows启动的选项;
Windows在安装的时候,他的安装程序会主动的覆盖掉MBR以及自己所在分割槽的启动磁区,你没有选择的机会,
而且他没有让我们自己选择菜单的功能。
因此,如果先安装Linux再安装Windows的话,那MBR的启动管理程序就只会有Windows的项目,而不会有Linux的项目
(因为原本在MBR内的Linux的启动管理程序就会被覆盖掉)。
那需要重新安装Linux一次吗?当然不需要,你只要用尽各种方法来处理MBR的内容即可。
例如利用全中文的spfdisk(http://spfdisk.sourceforge.net/)软件来安装认识Windows/Linux的管理程序,
也能够利用Linux的救援模式来挽救MBR即可。
Tips:
启动管理程序与Boot sector的观念是非常重要的,我们会在第二十章分别介绍,您在这里只要先对於(1)启动需要启动管理程序,
而(2)启动管理程序可以安装在MBR及Boot Sector两处这两个观念有基本的认识即可,
一开始就背太多东西会很混乱啦!