什么是MBR和
主引导引导扇区?什么是
主分区、
扩展分区、
逻辑分区?什么是活动
分区、
引导分区、
系统分区、
启动分区?一下子罗列这么多概念,恐怕很多人都搞不清它们的
区别和联系吧。网上虽然不少解释,但很多是模棱两可甚至是错误的,反而越弄越糊涂。猫猫煞费苦心的把这一大串概念研究了很长时间,试图搞明白,为了以后查阅方便,于是把对这些概念的理解总结了一下。而要想分清这些概念,真要费一点脑筋啊!
一、MBR和
主引导扇区
首先简要介绍MBR和
主引导扇区的关系。
主引导扇区是硬盘0号柱面,0号磁头的第一个扇区,大小为512字节。(注:硬盘可以用柱面、磁头和扇区定位)
MBR,占用
主引导扇区的前446字节,紧随其后的64字节是
分区表DPT,最后还剩两个字节则恒为55AA,表示结束符号。(下图,演示了它们的位置关系)
然后,具体说一说MBR和
分区表。
MBR,全称为Master Boot Record,即硬盘的
主引导记录。MBR,共446字节,一般在操作
系统安装时写入,但它并不属于操作
系统。MBR就是一段
引导程序,用于检测磁盘的
分区合法性和加载操作
系统,它的重要作用就是识别活动
分区,并
引导操作
系统。
分区表DPT,共64字节,记录了硬盘有多少
分区以及
分区的各种属性。由于一个
分区的信息要占用16字节,所以
分区表只能定义4个
分区,这就是为什么我们说硬盘一般最多只能分为4个
主分区(这里说“一般”是对基本磁盘而言,而对于动态磁盘则无此限制,但大部分都在使用基本磁盘,可以暂不考虑 )。
计算机开机后BIOS加电自检,一切正常后,找到第一个
启动设备(一般就是硬盘),然后从这个
启动设备的
主引导扇区读取MBR。MBR这段
引导程序识别活动
分区,
引导操作
系统。
二、
主分区、
扩展分区、
逻辑分区
正如前面所讲,
主分区是由
主引导扇区中64字节的
分区表所定义的,最多只能有4个。但为了满足更多
分区的需求,变产生了
扩展分区。形式上,如果拥有
扩展分区,就必须牺牲一个
主分区,而且最多有一个
扩展分区,也就是说:
主分区+
扩展分区<=4 and
扩展分区<=1。因此
扩展分区也可以看成一种特殊的
主分区。
但
扩展分区并不可以直接使用,
扩展分区又必须以
逻辑分区的形式出现,可以这样认为:
扩展分区包含着若干
逻辑分区,而且至少包含一个。
扩展分区中的
逻辑分区是以链式存在的。即每一个
逻辑分区都记录着下一个
逻辑分区的位置信息,依次串联。事实上每一个
逻辑分区都有一个和
主引导扇区类似的
引导扇区,
引导扇区里有类似的
分区表。该
分区表记录了该
分区的信息和一个指针,指向下一个
逻辑分区的
引导扇区。
因此,
逻辑分区是借鉴了
主分区的方法,相当于在一个
主分区下面建立了若干级“
主分区”。从上面的描述,猫猫推测,
逻辑分区是建立在操作
系统级别,由操作
系统识别的。另一个可以预测的现象是:一旦某一个
逻辑分区损害,跟在它后面的所有
逻辑分区都将丢失,而前面的
逻辑分区去可以保留。这也是链式结果的特点。
三、活动
分区、
系统分区、
启动分区、
引导分区
这四个术语和前面三个不同,前面三个是讲述
分区的“物理”形成。而这四个术语描述了
分区的功能,并且更易混淆。
首先,根据Windows XP随机帮助文档看,
引导分区就是
启动分区,两者是同一概念,所以下面就只讨论活动
分区、
系统分区和
启动分区。
系统分区和
启动分区比较。
这是两个极易混淆的概念,因为两者的含义似乎和它们的名字正好颠倒了。Windows帮助文件的术语表里是这样解释他们的:”
系统分区,包含加载 Windows(例如,Ntldr、Osloader、Boot.ini、Ntdetect.com)所需的硬件特定文件的
分区。
系统分区可以(但不是必须)与
启动分区相同。
启动分区,包含 Windows 操作
系统及其支持文件的
分区。
启动分区可以(但不是必须)与
系统分区相同。“
看起来是很糊涂,但说的简单些就是:
系统分区包含Ntldr、Osloader、Boot.ini、Ntdetect.com等文件,而
启动分区包含Windows和system32文件。所以,真正包含操作
系统内核文件的
分区是
启动分区,包含操作
系统引导文件的确实
系统分区,这是要特别注意的一点。
有些人就疑问了,我的Ntldr、Osloader、Boot.ini、Ntdetect.com和Windows、system32文件都在C盘,那是怎么回事?这很容易解释,你的C盘既是
系统分区也是
启动分区,只安装一个操作
系统的计算机大都属于这种情况 ,所以微软在括号里说“但不是必须”。
其实
系统分区时针对
引导来说的,而
启动分区时针对操作
系统来说的。像我的电脑C盘先安装了Vista,后来D盘安装了XP,现在C盘是
系统分区;至于哪个是
启动分区,就要看我用那个
系统了,进Vista,C盘就是
启动分区,进XP,D盘就是
启动分区。(再强调,
启动分区包含Windows内核文件,而
系统分区才包含操作
系统引导文件,不然会越看越糊涂的。)
最后要搞明白的是活动
分区,这一点,比较麻烦。
Windows帮助文档里的定义是:”活动
分区,基于 x86 计算机的
启动分区。活动
分区必须是基本磁盘上的
主要
分区。如果只使用 Windows,则活动
分区可以与
系统卷相同。“补充说明有:活动
分区必须是
主分区,一块硬盘上只可以有一个活动
分区。其他
主分区可以被标记为活动
分区。
而从
主引导扇区处看,活动
分区仅仅是在
分区表中,16个字节的最前面含有80标志的
分区信息所定义的
分区。
但猫猫对Windows帮助文档的定义不敢苟同(也许是我错了,但是我思来想去,只有这样可以解释通)。首先,我们知道活动
分区是通过
主引导扇区的
分区表标记的,所以理论上,每个
主分区都可以被标记为活动(只是不当的标记会导致
系统无法
启动)。Windows帮助文档说活动
分区,是基于x86的计算机的
启动分区,那不就是说是Windows文件所在
分区。可是对于双
系统来说,这种说法显然不对,因为双
系统的
启动分区是依据被
启动的
系统而定的。所以,我假定微软也把
系统分区和
启动分区的概念搞混淆了。
所以,结果变为,活动
分区是基于x86计算机的
系统分区。换句话说,活动
分区是一种
系统分区。在这种情况下,一个
主分区是不是
系统分区似乎并不具有价值,只有被标记为活动的
主分区才有价值。因为,只有标记为活动
分区,这个
系统分区的Windows
启动支持文件才会被加载,然后通过这些
引导存储在
启动分区的Windows内核文件,完全Windows的
启动。
所以,Windows可以被安装在
逻辑分区内(我发现我的电脑就是这样的),但必须在活动
分区的
启动支持文件里加上对这个
逻辑分区里Windows的
引导信息。具体到XP,就是boot.ini文件添加上对双
系统的
引导,而这个boot,ini文件必须在
启动分区。而我了一个实验,在XP下面通过
启动和故障恢复对话框修改boot.ini文件,发现修改的并非XP所在的
分区的boot.ini,而是Vista所在
分区的boot.ini。(我在
主分区C盘安装了Vista,
逻辑分区D盘安装了XP)。同时,我通过软件废除Vista的新式
引导方式,恢复xp的boot.ini式
引导方式(此时,C盘Vista已无法
引导),发现分别修改C盘和D盘的boot.ini,只有C盘的boot.ini才有效。再次印证了我的假设。
另外,如果两个
系统都安装在
主分区,则可以通过标记各自的安装
分区为活动
分区,而
启动不同的操作
系统。
参考资料:
Linux
引导过程内幕:http://www.ibm.com/developerworks/cn/linux/l-linuxboot/
维基百科-
主引导扇区:http://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E6%89%87%E5%8C%BA
硬盘
主引导记录详解(汇编代码详解):http://www.cnblogs.com/woodfish1988/archive/2007/11/25/971482.html
Windows XP随机帮助文档(Windows帮助文档是一个很好的东西,有些人优化
系统竟然把它删了,真是太不应该了。
呵呵,本文地址,猫猫的园地:http://blog.mm-share.cn/post/Partition-Comparison.html