Chinaunix首页 | 论坛 | 博客

分类:

2009-01-04 14:07:25



我们在计算机概论里面谈到了,没有执行软体的硬体是没有用的,除了会电人之外..., 而为了电脑硬体系统的资源合理分配,因此有了作业系统这个系统软体的产生。由于作业系统会控制所有的硬体并且提供核心功能, 因此我们的电脑就能够认识硬碟内的档案系统,并且进一步的读取硬碟内的软体档案与执行该软体来达成各项软体的执行目的。

问题是,你有没有发现,既然作业系统也是软体,那么我的电脑又是如何认识这个作业系统软体并且执行他的? 明明开机时我的电脑还没有任何软体系统,那他要如何读取硬碟内的作业系统档案啊?嘿嘿!这就得要牵涉到电脑的开机程序了! 底下就让我们来谈一谈这个开机程序吧!

在计算机概论里面我们有谈到那个可爱的BIOS与CMOS两个东西, CMOS是记录各项硬体参数且嵌入在主机板上面的储存器,BIOS则是一个写入到主机板上的一个韧体(再次说明, 韧体就是写入到硬体上的一个软体程式)。这个BIOS就是在开机的时候,电脑系统会主动执行的第一个程式了!

接下来BIOS会去分析电脑里面有哪些储存设备,我们以硬碟为例,BIOS会依据使用者的设定去取得能够开机的硬碟, 并且到该硬碟里面去读取第一个磁区的MBR位置。 MBR这个仅有446 bytes的硬碟容量里面会放置最基本的开机管理程式, 此时BIOS就功成圆满,而接下来就是MBR内的开机管理程式的工作了。

这个开机管理程式的目的是在载入(load)核心档案, 由于开机管理程式是作业系统在安装的时候所提供的,所以他会认识硬碟内的档案系统格式,因此就能够读取核心档案, 然后接下来就是核心档案的工作,开机管理程式也功成圆满,之后就是大家所知道的作业系统的任务啦!

简单的说,整个开机流程到作业系统之前的动作应该是这样的:

   1. BIOS:开机主动执行的韧体,会认识第一个可开机的装置;
   2. MBR:第一个可开机装置的第一个磁区内的主要开机记录区块,内含开机管理程式;
   3. 开机管理程式(boot loader):一支可读取核心档案来执行的软体;
   4. 核心档案:开始作业系统的功能...

由上面的说明我们会知道,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()软体来安装认识Windows/Linux的管理程式, 也能够利用Linux的救援模式来挽救MBR即可。

Tips:

开机管理程式与Boot sector的观念是非常重要的,我们会在后续的章节分别介绍,您在这里只要先对于(1)开机需要开机管理程式, 而(2)开机管理程式可以安装在MBR及Boot Sector两处这两个观念有基本的认识即可, 一开始就背太多东西会很混乱啦!     
阅读(2330) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~