主引导记录

  主引导记录,只有硬盘才有。软盘是没有的。它位于硬盘 0 道 0 磁头 1 扇区。也就是硬盘的第一个数据扇区,称为主引导扇区。硬盘的主引导扇区存储着一个主引导程序,以及一个主分区表。计算机从硬盘引导时,BIOS 引导程序读入主引导程序来引导计算机。主引导程序通过读取分区表的内容来确定用那个分区(逻辑驱动器)来启动,以及该逻辑驱动器从哪个磁道、哪个磁头、哪个扇区开始。由于硬盘由多个盘片组成,因此磁道往往也称柱面。
  引导扇区,位于每一个逻辑驱动器(或者说逻辑盘,也就是通常所说的 C: D: 之类)的头部的第一个扇区。软盘也有引导扇区。刚才说到的主引导程序就会寻找硬盘逻辑驱动器的位置,从而找到引导扇区,然后从引导扇区读入引导程序,让计算机来执行。当引导程序启动后,它会起到引导操作系统的功能。
  通常情况下,虽然 D: 也有引导扇区,但它不能启动。之所以 C: 能够启动而 D: 不能够启动是这样的:刚才提到位于主引导扇区的“主分区表”。之所以叫它“主”,是因为还有“子分区表”。主分区表里面存储着的分区信息,有两种:一种是可引导的逻辑驱动器,另一种是不可引导的扩展分区。而扩展分区的起始位置还存储着另外一张分区表,这就是所谓的子分区表。该分区表中的信息有两条,第一条应该是 D: 的位置。第二条应该是扩展分区剩余部分的位置。根据第二条,可以再找到一张子分区表,第一项记录的是 E: 的位置,第二条……以此类推。最后一张子分区表只有一条记录,表示那是扩展分区中最后一个磁盘了。
  也就是说,D: 的信息不在主分区表中,而主引导程序只关心主分区表中的内容,子分区表是由操作系统来处理的。所以 D: 不能引导。
  扩展分区的子分区表的记录中,每条分区记录的后八个字节分别是分区的相对扇区号和扇区数。所谓相对扇区号,是指该扇区号是相对分区表所在的扇区开始的,即分区起始扇区号减于分区表所在的扇区号。
  主分区表最多有 4 条记录。也就是说,如果不创建扩展分区,一共可以创建 4 个可引导的逻辑驱动器。BootStar 等软件一般采用修改以及备份主分区表的方式,来实现更多的引导选项。不过,这些软件会声明:同时只能有 4 个位于主分区表上面的分区可见。
  严格地说,引导扇区中的引导程序也是操作系统的组成部分之一。DOS / Windows 9x / NT 4 的引导程序各不相同。NT 4 / 2000 的引导程序一般就是 OSLoader 的一部分。主引导程序则大家大都采用同一个,无论是 Linux 还是 Windows。不过据说 XP 在安装时会自动采用它自己的主引导程序,导致和装在 MBR 中的 LILO 不兼容。FDISK /MBR 命令就是把主引导程序用标准的主引导程序覆盖,它不会影响分区表。著名的 One Half 病毒就是修改主引导程序同时加密分区表的病毒,如果直接用 FDISK /MBR,虽然病毒不复存在,但是分区表也没有解密,所以应该用专门的杀毒软件来修复。
  之所以一般我们说主分区是 C:,是因为 DOS/Windows 识别分区的时候,先处理主分区,从第一个物理硬盘到最后一个。接着才处理扩展分区。同时,如果第一个物理硬盘上面有活动分区的话(活动分区只有一个),这个分区就被第一个识别。对于 Windows 9x/MS-DOS 来说,驱动器的盘符是固定的。对于 Windows NT/2000 来说,除了引导盘(一般是 C:)之外的其他驱动器的盘符都可以改变。
  在 DOS/Windows 下,硬盘的盘符不能小于 C: ,所以一般情况下面 C: 总是第一个硬盘上的活动的主分区。原则上说,DOS 不允许同时有多个 DOS 识别的(FAT/FAT32)主分区存在,否则可能会出错。Windows 9x 也是如此。我曾经试过用 PQMAGIC 创建多个主分区,拒绝 PQMAGIC 自动建议的隐藏分区操作,然后用 Windows 98 启动盘启动,就发现 D: (第二个主分区)的目录显示混乱。
  一个逻辑驱动器文件系统的类型是保存在其引导扇区的,同时在分区表里面也有相应的表示。所以,要获取一个逻辑驱动器的文件系统类型有两种方法:读取分区表或者读取引导扇区。Windows 9x/NT 4 只读取分区表。Windows 2000 会采用读取引导扇区的方法。所以用 PQMAGIC 隐藏的分区会在 Windows 2000 的磁盘管理器里面一览无余。
  Windows 2000 的 OSLoader 如果在 Windows 98 启动盘的启动下面安装,那么可以安装在 FAT32 盘上,但是如果用 Windows Me 的启动盘,似乎只能安装在 FAT 上。不知道微软在 Me 启动盘里面放了什么东西。Me 启动盘甚至连 EMM386.EXE 都不能加载。
  可以查看和编辑磁盘上任意扇区的软件,常见的有两个:一个是 WinHex,它在 Windows 中运行。另一个是 Norton Utilities 中的 Diskedit,它在 DOS 上运行。Diskedit 的 98 版本有些 bug,难以操作超过 8 GB 的大磁盘。2002 版本中这些 bug 已被修正。
  你可以参看我写的初学者园地里面的《分区表和主引导记录》

返回 Windows 概览