zoukankan      html  css  js  c++  java
  • 磁盘分区(二)

              整理自《鸟哥的Linux私房菜》,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/微笑

        我们在上一篇中说到:分区表只有记录4组数据的空间,那么是怎么做到一个磁盘分成4个以上分区的?是通过扩展分区来处理的。

    1.扩展分区与逻辑分区

        扩展分区的想法是:既然第一个扇区所在的分区表只能记录4条数据,那么就利用额外的扇区来记录更多的分区信息。实际上如图所示:

                                            image

       在此例中,硬盘的4个分区记录只用到2个,P1为主分区,P2为扩展分区。请注意:扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身不能被拿来格式化。然后我们可以通过扩展分区所指向的那个区块继续作分区的记录。

       图中扩展分区继续分出5个分区,这5个分区就被称为逻辑分区。同时注意一下,由于逻辑分区是由扩展分区继续切出来的分区,所以它们使用的范围就是扩展分区的范围。上述分区在Linux中的设备文件名分别如下:

    • P1:/dev/hda1
    • P2:/dev/hda2
    • L1:/dev/hda5
    • L2:/dev/hda6
    • L3:/dev/hda7
    • L4:/dev/hda8
    • L5:/dev/hda9

    而/dev/hda3和/dev/hda4保留给主分区或扩展分区,所以逻辑分区的设备号从5开始。

        关于主分区、扩展分区和逻辑分区的特性:

    1. 主分区与扩展分区最多可以有4个(硬盘的限制)。
    2. 扩展分区最多只能有一个(操作系统的限制)。
    3. 逻辑分区是由扩展分区继续分割出来的分区。
    4. 能够被格式化后作为数据访问的分区为主分区与逻辑分区。扩展分区无法格式化。
    5. 逻辑分区的数量依操作系统而不同,在Linux中,IDE硬盘最多有59个逻辑分区(5-63),SATA硬盘则有11个逻辑分区(5-15)。

        2.开机流程与主引导分区

        我们知道操作系统要运行在计算机上,我们的计算机是如何认识这个操作系统并且执行它的。开机时我们的计算机还没有任何软件系统,那么它要如何读取硬盘内的操作系统文件?这就要涉及到开机程序了!

        这里就要不得不提一个概念BIOS,它是一个写入到主板上的韧体(韧体就是写入到硬件上的一个软件程序)。这个BIOS就是开机的时候计算机执行的第一个程序了。简单地说,整个开机流程到操作系统之前的流程:

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

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

       (3)引导加载程序(Boot loader):一个可读取内核文件来执行的软件。

       (5)内核文件:开始操作系统的功能。

        其中Boot loader是操作系统安装到MBR的一套软件。由于MBR仅有446B,所以这个引导加载程序是小巧而完美的:

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

        我们看第三点,这说明引导加载程序不但可以安装到MBR还可以安装在每个分区的引导扇区(boot sector)。这个特色造就了“多重引导”功能。

        我们举个例子如下图:

                                              image

        假设计算机只有一个硬盘,分成4个分区,其中第1、2分区分别安装了Windows和Linux,要如何在开机时候选择Windows和Linux呢?假设MBR内装的是可同时识别Windows/Linux的引导加载程序,则流程就如上图所示。由图中我们可以看到,MBR的引导加载程序提供两个菜单,菜单一(M1)可以直接加载Windows的内核文件来开机;菜单二(M2)将引导加载工作交给第二个分区的启动扇区。当用户选择M2时,那么整个引导加载工作就会交个第二分区的引导加载程序了。

        我们将上图做个总结:

    1. 每个分区都有自己的启动扇区(boot sector)。
    2. 图中的系统分区为第一和第二分区。
    3. 实际可开机的内核文件是放置到各分区的。
    4. loader只会认识自己分区内的可开机内核文件,以及其他loader而已。
    5. loader可直接指向或者是间接将管理权交给另一个管理程序。

                           捕获

  • 相关阅读:
    《Dive into Python》Study_Notes
    Python 各种应用收集
    Remotely disconnect a terminal services session
    stop the bibi
    SQL写法(累积)
    Django’s admin html editor — TinyMCE
    Djangobook note
    清除windows系统垃圾
    ubuntu下PDF乱码解决方法
    using的几种用法
  • 原文地址:https://www.cnblogs.com/hust-ghtao/p/4004195.html
Copyright © 2011-2022 走看看