• 认识电脑的开机流程与主引导分区(MBR)


     

      在前篇随笔中,已经谈到了CMOS与BIOS,CMOS是记录各项硬件参数(包括系统时间、设备的I/O地址、CPU的电压和频率等)且嵌入到主板上面的存储器,BIOS是一个写入到主板上的韧体(韧体是写入到硬件上的一个软件程序)。

      这个BIOS是在开机的时候计算机系统会主动执行的第一个程序

      接下来,BIOS会去分析计算机里面有哪些存储设备,以硬盘为例,BIOS会依据用户的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区中的主引导分区(Master Boot Record,MBR)位置。MBR这个仅有446bytes的硬盘容量里面会放置最基本的引导加载程序(Boot loader),此时BIOS就功成圆满,接下来就是MBR内的引导加载程序的工作了。

      这个引导加载程序的目的是加载内核文件,由于引导加载程序是操作系统在安装的时候所提供的,所以它会识别硬盘内的文件系统格式,因此就能够读取内核文件,接下来就是内核文件的工作了,之后就是我们所知道的操作系统的任务。

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

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

      2.MBR:第一个可开机设备的第一个扇区内的主引导分区块,内含引导加载程序。

      3.引导加载程序:一只可读取内核文件来执行的软件。

      4.内核文件:开始操作系统的功能。

      BIOS与MBR都是硬件本身会支持的功能,至于Boot loader(引导加载程序)则是操作系统安装在MBR上面的一套软件。由于MBR仅有466bytes而已,因此这个引导程序是非常小而完美的。这个boot loader的主要任务有下面几项:

    • 提供菜单:用户可以选择不同的开机选项,这也是多重引导的重要功能呢。
    • 载入内核文件:直接执行可开机的程序区段来开始操作系统。
    • 转交其他loader:将引导加载功能转交给其他loader负责。

      上述boot loader的三条任务中,前两条很好理解,但第三条很有趣。那表示你的计算机系统里面可能具有两个以上的引导加载程序。值得特别指出的是引导加载程序(loader)除了可以安装在MBR之外,还可以安装在每个分区的引导扇区。分区还有个别的启动扇区?这个特色才能造就”多重引导“的功能。

      我们举一个例子来说明,假设你的个人计算机只有一块硬盘,里面分成四个分区,其中第一、二分区分别安装了Windows及Linux,你要如何在开机的时候选择用Windows还是Linux开机呢?假设MBR内安装的是可同时识别Windows/Linux操作系统的引导加载程序,那么整个流程如下图:

      在上图中,我们发现,MBR的引导加载程序提供两个菜单,菜单一(M1)可以直接加载Windows的内核文件来开机;菜单二(M2)则是将引导加载工作交给第二个分区的启动扇区。当用户在开机的时候选择菜单二时,那么整个引导加载工作就会交给第二分区的引导加载程序。当第二个引导加载程序启动后,该引导加载程序(上图中)仅有一个开机菜单,因此就能够使用Linux的内核文件来开机。这就是多重引导的工作情况。我们将上图作个总结。

    • 每个分区都拥有自己的启动扇区。
    • 图中的系统分区为第一及第二分区。
    • 实际可开机的内核文件是放置到各分区内的。
    • loader只会认识自己的系统分区内的可开机内核文件,以及其他loader而已。
    • loader可直接指向或者是间接将管理权转交给另一个管理程序。
    • 每个分区都有自己的启动扇区,loader可以安装在MBR或启动扇区上,loader只会识别自己分区内的可开机内核文件。
  • 相关阅读:
    几个计算广告学的课程
    Jie Bao 牛人cv
    如果英剧《黑镜子》拍第三季,你来写一集剧本策划,你想写一个什么样的故事呢? 知乎
    设计模式之迭代器与组合模式
    javascript 时钟clock
    项目中的需求蔓延
    一个产生随机random markers 例子
    设计模式之模板方法模式
    设计模式之反(向)模式
    转:用函数式编程技术编写优美的 JavaScript
  • 原文地址:https://www.cnblogs.com/xiongwei/p/9156228.html
Copyright © 2020-2023  润新知