硬盘分区是操作系统安装过程中经常谈到的话题。对于一些简单的应用,硬盘分区并不成为一种障碍,但对于一些复杂的应用,就不能不深入理解硬盘分区机制的某些细节。本文将深层次地探讨硬盘分区的基本原理及应用。 一,分区的一般概念 所谓分区,就是硬盘上建立来用作单独存储区域的部分,它分为主分区和扩充分区。主分区用来存放操作系统的引导记录(在该主分区的第一扇区)和操作系统文件;扩充分区一般用来存放数据和应用程序。 一个硬盘可以被分为1—4个分区,最多能有4个主分区。如果有扩充分区,则最多可以有3个主分区。一般只有一个扩充分区,它可以被划分成多个逻辑驱动器。我们必须显式地建立主分区,但不必显式地建立扩充分区。我们在建立第一个非主分区逻辑驱动器时,就隐式地建立了一个扩充分区,当我们增加逻辑驱动器时,也就是向该扩充分区中添加逻辑驱动器。 二,问题的提出 某台PC机上已经装上了DOS和Windows操作系统,它们共用一个主分区,另有一个逻辑驱动器D,现在准备在该机上装上UNIX操作系统。由于UNIX操作系统的文件系统与DOS/Windows不兼容,因此不能在现存的DOS分区上再装UNIX,而必须在硬盘上另建UNIX主分区。这样一个硬盘上就有多个(这里是两个)主分区,我们必须提供一种方法来实现操作系统的选择引导。 三,分区的深入理解 1.主分区和逻辑驱动器 主分区的特性是在任何时刻只能有一个是活动的,当一个主分区被激活以后,同一硬盘上的其他主分区就不能再被访问。所以一个主分区中的操作系统不能再访问同一物理硬盘上其他主分区上的文件。而逻辑驱动器并不属于某个操作系统,只要它的文件系统与启动的操作系统兼容,则该操作系统就能访问它。 主分区和逻辑驱动器的一个重要区别是:每个逻辑驱动器分配唯一的驱动器名(盘符),而在同一硬盘上的所有主分区共享同一个驱动器名,因为某一时刻只能有一个主分区是活动的。这就意味着某一时刻只能用共享驱动器名访问活动的那个主分区。 2.驱动器名的分配 启动系统时,活动分区上的操作系统将执行一个称为驱动器映像的过程,它给主分区和逻辑驱动器分配驱动器名。所有的主分区首先被映像,而逻辑驱动器用后续的字母指定。 例如,假定硬盘活动分区的操作系统的文件系统与所有的逻辑驱动器文件系统兼容,但如果逻辑驱动器文件系统与启动的操作系统的文件系统不兼容,该逻辑驱动器将被忽略。 如果你的PC有两个硬盘,则每个硬盘可以被分为1—4个分区,它们可以有各自的主分区和扩充分区。 如果文件系统兼容,操作系统将如上例那样分配驱动器名。 四,理解硬盘自举 1.硬盘结构概述 硬盘的0头0柱面1扇区叫主引导扇区,它不属于任何分区。主引导扇区上放有主引导记录,它主要由引导程序和分区表组成,它是由低级格式化程序建立的(一般由厂家完成)。分区表中含有各个分区的有关信息,如分区的起始及结束磁头号、磁道号、扇区号,分区是否是活动分区。当没有建立分区时,分区表是空的。主引导程序主要完成硬盘自举。 分区是由各操作系统的分区程序完成的,分区程序向分区表中填写分区信息。任何分区必须使用相应操作系统的格式化命令格式化后才能使用。每个分区的第一扇区是相应操作系统的引导扇区,上有引导记录。 2.硬盘启动的过程 系统自检后,固化在ROM中的19号中断复位硬盘,读取主引导记录到内存,检查分区表,寻找唯一的活动分区,并根据分区表信息到活动分区的第一扇区读取引导记录,把控制权交给引导记录的引导程序,由引导程序完成操作系统的加载。 3.控制操作系统的启动 方法1: 由于分区表格式对各个操作系统的分区程序都是透明的,因此可以用任一操作系统的分区程序来指定活动分区,重启计算机就可以切换到另一个主分区上的操作系统。 方法2: 由硬盘启动过程我们可以看到,19号中断将活动分区的第一扇区读入内存后,将控制权交给它。利用这样的一种特性,我们可以建立一个特殊的主分区,并将它设置为活动的,它的第一个扇区存放的不是引导记录,而是一个提供操作系统选择的程序,再由它来把你所选择的操作系统的引导记录读入内存并执行引导程序。这样的程序叫做引导管理程序,它可由操作系统或第三方软件开发商提供。 需要指出的是,我们在启动Windows 95/98时,按F8进入的选择界面并不是引导管理程序提供的,而是Windows在安装时写入本主分区第一扇区引导程序用来控制本操作系统启动方式的程序提供的。 五,问题的解决 通过上面的讨论,我们就可以轻易地解决文章开始提出的问题了。 1.备份数据 由于硬盘上要增加主分区,必须减小扩充分区,因此首先必须备份D盘数据(注意前面我们的假设:只有一个主分区和一个逻辑分区)。 2.建立UNIX分区 用UNIX系统盘启动系统,运行分区程序,建立UNIX主分区,格式化后安装操作系统。同时为UNIX建立一个逻辑驱动器用来存储数据和应用程序。 3.为DOS/Windows建立逻辑驱动器 用DOS系统盘启动系统,运行DOS分区程序,增加一个逻辑驱动器用来存储DOS/Windows数据和应用程序。 这样我们就可以使DOS/Windows和UNIX共享硬盘了。我们可以使用在“控制系统的启动”里讲的任意一种方法来选择启动DOS/Windows和UNIX。如果要使用第二种方法,必须安装引导管理程序。