您的位置:首页 > 运维架构 > Linux

linux开机流程与主要启动记录区(MBR)

2017-04-17 13:26 239 查看
我们在计算机概论里面谈到,没有执行软件的硬件是没有用的,除了会电人之外…,而为了计算机硬件系统的资源合理分配,因此有了操作系统这个系统软件的产生。由于操作系统会控制所有硬件并且提供核心的功能,因此我们的计算机能够认识硬盘中的文件系统,并且能够进一步读取银盘中的软件档案与执行该软件来达成各项软件执行的目的。

问题是,你有没有发现,及时操作系统也是软件,那么我的计算机又是如何认识这个操作系统软件并且执行它的。明明开机时我的计算机还没有任何软件系统,那么如何读取硬盘内的操作系统文件呢?这就要涉及到计算机的开机程序了。

在计算机概论里,我们谈到了BIOS和CMOS,CMOS是记录各项硬件的参数并且嵌入到主板上的存储器,BIOS则写入主板上的一个韧体(再次说明,韧体就是写入到硬盘上的一个软件程序);这个BIOS就是开机的时候,计算机系统会主动执行的第一个程序。

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

这个来及管理程序的目的是加载核心档案,由于开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此能够读取核心档案,然后接下来就是核心档案的工作,开机管理程序也就圆满成功,之后就是大家知道的操作系统的任务了。

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

1.BIOS:开机主动执行韧体,会认识第一个开机的装置;

2.MBR:第一个可开机装置的第一个扇区内的主要启动记录块,内含开机管理程序;

3.开机管理程序(boot loader):一支可读取核心档案来执行的软件;

4.核心档案:开始操作系统的功能。

有上面说明的我们会知道,BIOS与MBR都是硬件本身会支持的功能,至于boot Loader则是操作系统安装在MBR上面的一套软件了。由于MBR仅有446bytes而已,因此这个开机管理程序是非常小而美的。这个boot loader的主要任务有如下这些条目:

提供选单:用户可以选择不同的开机项目,这也是多重引导的重要功能!
载入核心档案:直接指向开机的程序区段来开始操作系统;
转交其他loader:将开机管理功能转交给其他loader负责;


上面两点还容易理解,但是第三点很有趣奥!那表示你的计算机系统里面可能具有两个以上的开机管理程序呢!有可能吗?我们的硬盘不是只有一个MBR而已?是没错了。但是开机管理程序除了可以安装MBR之外,还可以在每个分割槽的启动扇区(boot sector),这个特色才能造就多重引导的功能啊。

我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分割槽,其中第一、二分割槽分辨安装了windows和linux,你要在开机的时候选择用windows还是linux开机呢?假设MBR内安装的是可同时认为window/linux操作系统的开机管理程序,那么整个程序流程如下图所示:



在上图中我们可以发现,MBR的开机管理程序提供两个选单,选单一(M1)可以直接加载windows的核心档案来开机;选单二(M2)则是将开机管理工作交给了第二个分割槽的启动区(boot sector)。当使用者在开机的时候选择选单二时,那么整个开机管理工作就会交给第二个分割槽的开机管理程序了。当第二个开机管理程序启动后,该开机管理程序内仅有一个开机选单,因此就能够使用linux的核心档案来开机喽。这就是多重引导的工作情况喽,我们将上图做个总结:

每个分割槽都有自己的启动扇区(boot sector)
途中的系统槽为第一以及第二分割槽
实际可开机的核心档案是放置在各个分割槽内的
loader只会认识自己的系统槽内的可开机核心档案,以及其他的loader而已
loader可直接指向或者间接将管理权转交给另一个管理程序


那现在请你想一想,为什么人家常说,如果安装多重引导,最好先安装window再安装linux呢,这是因为:

linux在安装的时候,你可以选择将开机管理程序安装在MBR或者个分割槽的启动扇区,而且linux的
loader可以手动设定选单,所以你可以在linux的boot loader里面添加window开机的选项;
windows在安装的时候,它的安装程序会主动覆盖掉MBR以及自己所在的分割槽的启动扇区,你没有选择的机会,而且他没有让我们自己选单的功能。


因此,如果先安装linux再安装windows的话,那么MBR的开机管理程序只会有windows的项目,而不会有linux项目(因为原先在MRB内的linux的开机管理程序就会被覆盖)。那需要重新安装linux吗?当然不需要,你只要尽各种方法来处理MBR的内容即可。例如利用全中文的spfdisk软件来安装认识windows/linux的管理程序,也能够利用linux的救援方式来挽救MBR即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: