一. 硬盘结构简介z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 1. 硬盘参数释疑z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 到目前为止, 人们常说的硬盘参数还是古老的 CHS(Cylinder/Head/Sector)参数. 那么为什么要使用这些参数,它们的意义是什么?它们的取值范围是什么?z5q金州视窗!了解黔西南,从金州视窗开始! 很久以前, 硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘. 也就是硬盘盘片的每一条磁道都具有相同的扇区数.由此产生了所谓的3D参数 (Disk Geometry). 既磁头数(Heads), 柱面数(Cylinders),扇区数(Sectors),以及相应的寻址方式.z5q金州视窗!了解黔西南,从金州视窗开始! 其中:z5q金州视窗!了解黔西南,从金州视窗开始! 磁头数(Heads)表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 255 (用 8 个二进制位存储);z5q金州视窗!了解黔西南,从金州视窗开始! 柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 1023(用 10 个二进制位存储);z5q金州视窗!了解黔西南,从金州视窗开始! 扇区数(Sectors) 表示每一条磁道上有几个扇区, 最大为 63(用 6个二进制位存储).z5q金州视窗!了解黔西南,从金州视窗开始! 每个扇区一般是 512个字节, 理论上讲这不是必须的,但好象没有取别的值的.z5q金州视窗!了解黔西南,从金州视窗开始! 所以磁盘最大容量为:z5q金州视窗!了解黔西南,从金州视窗开始! 255 * 1023 * 63 * 512 / 1048576 = 8024 GB ( 1M =1048576 Bytes )或硬盘厂商常用的单位:z5q金州视窗!了解黔西南,从金州视窗开始! 255 * 1023 * 63 * 512 / 1000000 = 8414 GB ( 1M =1000000 Bytes )z5q金州视窗!了解黔西南,从金州视窗开始! 在 CHS 寻址方式中, 磁头, 柱面, 扇区的取值范围分别为 0到 Heads - 1,0 到 Cylinders - 1, 1 到 Sectors (注意是从 1 开始).z5q金州视窗!了解黔西南,从金州视窗开始! 2. 基本 Int 13H 调用简介z5q金州视窗!了解黔西南,从金州视窗开始! BIOS Int 13H 调用是 BIOS提供的磁盘基本输入输出中断调用, 它可以完成磁盘(包括硬盘和软盘)的复位, 读写, 校验, 定位, 诊断,格式化等功能.它使用的就是 CHS 寻址方式, 因此最大识能访问 8 GB 左右的硬盘 (本文中如不作特殊说明, 均以 1M = 1048576 字节为单位).z5q金州视窗!了解黔西南,从金州视窗开始! 3. 现代硬盘结构简介z5q金州视窗!了解黔西南,从金州视窗开始! 在老式硬盘中, 由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道, 因此会浪费很多磁盘空间 (与软盘一样). 为了解决这一问题,进一步提高硬盘容量, 人们改用等密度结构生产硬盘. 也就是说,外圈磁道的扇区比内圈磁道多. 采用这种结构后, 硬盘不再具有实际的3D参数,寻址方式也改为线性寻址, 即以扇区为单位进行寻址.z5q金州视窗!了解黔西南,从金州视窗开始! 为了与使用3D寻址的老软件兼容 (如使用BIOSInt13H接口的软件), 在硬盘控制器内部安装了一个地址翻译器,由它负责将老式3D参数翻译成新的线性参数. 这也是为什么现在硬盘的3D参数可以有多种选择的原因(不同的工作模式, 对应不同的3D参数, 如 LBA, LARGE, NORMAL).z5q金州视窗!了解黔西南,从金州视窗开始! 4. 扩展 Int 13H 简介z5q金州视窗!了解黔西南,从金州视窗开始! 虽然现代硬盘都已经采用了线性寻址, 但是由于基本 Int13H 的制约, 使用 BIOS Int 13H 接口的程序, 如 DOS 等还只能访问 8 G以内的硬盘空间.为了打破这一限制, Microsoft 等几家公司制定了扩展 Int 13H 标准(Extended Int13H), 采用线性寻址方式存取硬盘, 所以突破了 8 G的限制,而且还加入了对可拆卸介质 (如活动硬盘) 的支持.z5q金州视窗!了解黔西南,从金州视窗开始! 二. Boot Sector 结构简介z5q金州视窗!了解黔西南,从金州视窗开始! 1. Boot Sector 的组成z5q金州视窗!了解黔西南,从金州视窗开始! Boot Sector 也就是硬盘的第一个扇区, 它由 MBR (MasterBoot Record),DPT (Disk Partition Table) 和 Boot Record ID 三部分组成.z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! MBR 又称作主引导记录占用 Boot Sector 的前 446 个字节( 0 to 0x1BD ),存放系统主引导程序 (它负责从活动分区中装载并运行系统引导程序).z5q金州视窗!了解黔西南,从金州视窗开始! DPT 即主分区表占用 64 个字节 (0x1BE to 0x1FD),记录了磁盘的基本分区信息. 主分区表分为四个分区项, 每项 16 字节,分别记录了每个主分区的信息(因此最多可以有四个主分区).z5q金州视窗!了解黔西南,从金州视窗开始! Boot Record ID 即引导区标记占用两个字节 (0x1FE and0x1FF), 对于合法引导区, 它等于 0xAA55, 这是判别引导区是否合法的标志.z5q金州视窗!了解黔西南,从金州视窗开始! Boot Sector 的具体结构如下图所示 (参见 NightOwl大侠的文章):z5q金州视窗!了解黔西南,从金州视窗开始! 下面还有喔 (39%) │ 结束 ← <q> │ ↑/↓/PgUp/PgDn 移动│ ? 辅助说明 │z5q金州视窗!了解黔西南,从金州视窗开始! 0000 ¦------------------------------------------------¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ Master Boot Record ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 主引导记录(446字节) ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01BD ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01BE ¦------------------------------------------------¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01CD ¦ 分区信息 1(16字节) ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01CE ¦------------------------------------------------¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01DD ¦ 分区信息 2(16字节) ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01DE ¦------------------------------------------------¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01ED ¦ 分区信息 3(16字节) ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01EE ¦------------------------------------------------¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! 01FD ¦ 分区信息 4(16字节) ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦------------------------------------------------¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 01FE ¦01FF ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 55 ¦ AA ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦------------------------------------------------¦z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 2. 分区表结构简介z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 分区表由四个分区项构成, 每一项的结构如下:z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! BYTE State : 分区状态, 0 =未激活, 0x80 = 激活 (注意此项)z5q金州视窗!了解黔西南,从金州视窗开始! BYTE StartHead : 分区起始磁头号z5q金州视窗!了解黔西南,从金州视窗开始! WORD StartSC : 分区起始扇区和柱面号,底字节的低6位为扇区号,z5q金州视窗!了解黔西南,从金州视窗开始! 高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位z5q金州视窗!了解黔西南,从金州视窗开始! BYTE Type : 分区类型, 如0x0B = FAT32, 0x83 = Linux 等,z5q金州视窗!了解黔西南,从金州视窗开始! 00 表示此项未用,07 = NTFSz5q金州视窗!了解黔西南,从金州视窗开始! BYTE EndHead : 分区结束磁头号z5q金州视窗!了解黔西南,从金州视窗开始! WORD EndSC :分区结束扇区和柱面号, 定义同前z5q金州视窗!了解黔西南,从金州视窗开始! DWORD Relative :在线性寻址方式下的分区相对扇区地址z5q金州视窗!了解黔西南,从金州视窗开始! (对于基本分区即为绝对地址)z5q金州视窗!了解黔西南,从金州视窗开始! DWORD Sectors : 分区大小 (总扇区数)z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 注意: 在 DOS / Windows 系统下,基本分区必须以柱面为单位划分z5q金州视窗!了解黔西南,从金州视窗开始! ( Sectors * Heads 个扇区), 如对于 CHS 为 764/255/63 的硬盘,分区的z5q金州视窗!了解黔西南,从金州视窗开始! 最小尺寸为 255 * 63 * 512 / 1048576 = 7.844 MB.z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 3. 扩展分区简介z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 由于主分区表中只能分四个分区, 无法满足需求,因此设计了一种扩展z5q金州视窗!了解黔西南,从金州视窗开始! 分区格式. 基本上说, 扩展分区的信息是以链表形式存放的,但也有一些特z5q金州视窗!了解黔西南,从金州视窗开始! 别的地方.z5q金州视窗!了解黔西南,从金州视窗开始! 首先, 主分区表中要有一个基本扩展分区项,所有扩展分区都隶属于它,z5q金州视窗!了解黔西南,从金州视窗开始! 也就是说其他所有扩展分区的空间都必须包括在这个基本扩展分区中.对于z5q金州视窗!了解黔西南,从金州视窗开始! DOS / Windows 来说, 扩展分区的类型为 0x05.z5q金州视窗!了解黔西南,从金州视窗开始! 除基本扩展分区以外的其他所有扩展分区则以链表的形式级联存放, 后z5q金州视窗!了解黔西南,从金州视窗开始! 一个扩展分区的数据项记录在前一个扩展分区的分区表中,但两个扩展分区z5q金州视窗!了解黔西南,从金州视窗开始! 的空间并不重叠.z5q金州视窗!了解黔西南,从金州视窗开始! 扩展分区类似于一个完整的硬盘, 必须进一步分区才能使用.但每个扩z5q金州视窗!了解黔西南,从金州视窗开始! 展分区中只能存在一个其他分区. 此分区在 DOS/Windows环境中即为逻辑盘.z5q金州视窗!了解黔西南,从金州视窗开始! 因此每一个扩展分区的分区表(同样存储在扩展分区的第一个扇区中)中最多z5q金州视窗!了解黔西南,从金州视窗开始! 只能有两个分区数据项(包括下一个扩展分区的数据项).z5q金州视窗!了解黔西南,从金州视窗开始! 扩展分区和逻辑盘的示意图如下:z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ --------z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 主扩展分区(/dev/hda2) ¦ ^z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 扩 展 ¦ 分区项1 ¦-- ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦------------¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 分区表 ¦ 分区项 2 ¦--+-- ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 逻辑盘 1 (/dev/hda5) ¦<-/ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦ 主z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 扩展分区 2 ¦<----/z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ 扩z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 扩 展 ¦ 分区项1 ¦-- ¦ ¦------------¦ ¦ 展z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 分区表 ¦ 分区项 2 ¦--+-- ¦-----------------------¦ ¦ ¦ 分z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 逻辑盘 2 (/dev/hda6) ¦<-/ ¦ 区z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 扩展分区 3 ¦<----/ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 扩 展 ¦ 分区项1 ¦-- ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦------------¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 分区表 ¦ 分区项 2 ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 逻辑盘 3 (/dev/hda7) ¦<-/ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ---------z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 扩 展 ¦ 分区项1 ¦-- ¦ ¦------------¦ ¦ 展z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 分区表 ¦ 分区项 2 ¦--+-- ¦-----------------------¦ ¦ ¦ 分z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 逻辑盘 2 (/dev/hda6) ¦<-/ ¦ 区z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 扩展分区 3 ¦<----/ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 扩 展 ¦ 分区项1 ¦-- ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦------------¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 分区表 ¦ 分区项 2 ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ 逻辑盘 3 (/dev/hda7) ¦<-/ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦ ¦ ¦z5q金州视窗!了解黔西南,从金州视窗开始! ¦-----------------------¦ -------------z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 三、系统启动过程主要由一下几步组成(以硬盘启动为例):z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 1. 开机 :-)z5q金州视窗!了解黔西南,从金州视窗开始! 2. BIOS 加电自检 ( Power On Self Test -- POST )z5q金州视窗!了解黔西南,从金州视窗开始! 内存地址为 0ffff:0000z5q金州视窗!了解黔西南,从金州视窗开始! 3. 将硬盘第一个扇区 (0头0道1扇区, 也就是BootSector)z5q金州视窗!了解黔西南,从金州视窗开始! 读入内存地址 0000:7c00 处.z5q金州视窗!了解黔西南,从金州视窗开始! 4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55,若不等于z5q金州视窗!了解黔西南,从金州视窗开始! 则转去尝试其他启动介质,如果没有其他启动介质则显示z5q金州视窗!了解黔西南,从金州视窗开始! "No ROM BASIC" 然后死机.z5q金州视窗!了解黔西南,从金州视窗开始! 5. 跳转到 0000:7c00 处执行 MBR 中的程序.z5q金州视窗!了解黔西南,从金州视窗开始! 6. MBR 首先将自己复制到 0000:0600 处,然后继续执行.z5q金州视窗!了解黔西南,从金州视窗开始! 7. 在主分区表中搜索标志为活动的分区.如果发现没有活动z5q金州视窗!了解黔西南,从金州视窗开始! 分区或有不止一个活动分区, 则转停止.z5q金州视窗!了解黔西南,从金州视窗开始! 8. 将活动分区的第一个扇区读入内存地址 0000:7c00处.z5q金州视窗!了解黔西南,从金州视窗开始! 9. 检查 (WORD) 0000:7dfe 是否等于 0xaa55,若不等于则z5q金州视窗!了解黔西南,从金州视窗开始! 显示 "Missing Operating System" 然后停止,或尝试z5q金州视窗!了解黔西南,从金州视窗开始! 软盘启动.z5q金州视窗!了解黔西南,从金州视窗开始! 10. 跳转到 0000:7c00处继续执行特定系统的启动程序.z5q金州视窗!了解黔西南,从金州视窗开始! 11. 启动系统 ...z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 以上步骤中 2,3,4,5 步是由 BIOS 的引导程序完成.6,7,8,9,10z5q金州视窗!了解黔西南,从金州视窗开始! 步由MBR中的引导程序完成.z5q金州视窗!了解黔西南,从金州视窗开始! 一般多系统引导程序 (如 SmartFDISK, BootStar, PQBoot等)z5q金州视窗!了解黔西南,从金州视窗开始! 都是将标准主引导记录替换成自己的引导程序, 在运行系统启动程序z5q金州视窗!了解黔西南,从金州视窗开始! 之前让用户选择要启动的分区.z5q金州视窗!了解黔西南,从金州视窗开始! 而某些系统自带的多系统引导程序 (如 lilo, NT Loader等)z5q金州视窗!了解黔西南,从金州视窗开始! 则可以将自己的引导程序放在系统所处分区的第一个扇区中, 在 Linuxz5q金州视窗!了解黔西南,从金州视窗开始! 中即为 SuperBlock (其实 SuperBlock 是两个扇区).z5q金州视窗!了解黔西南,从金州视窗开始! z5q金州视窗!了解黔西南,从金州视窗开始! 注: 以上各步骤中使用的是标准 MBR,其他多系统引导程序的引导z5q金州视窗!了解黔西南,从金州视窗开始! 过程与此不同.
|