磁盘的分区和引导

风行水上 @ 2010-07-01 17:16:50
标签:

    硬盘结构

    硬盘,由很多柱面(Cylinder)组成,每个柱面,有一定数量的磁头(Head),每个磁头又可分为一定数量个扇区(Sector)。
    磁盘的定位可义用类似于三维坐标的形式表示,即(柱面,磁头,扇区)或者(C, H, S) 。这种表示方法被称为 CHS(Cylinder-Head-Sector) Address 。C和H的索引都从0开始,S的索引则从1开始。如果把三维坐标转换为一维坐标,就是 LBA(Logical Block Addressing),表示的是从磁盘第一个扇区算起的第几个扇区。LBA的索引从0开始。

    目前常见的硬盘,每个柱面有255个磁头,每个磁头有63个扇区,即

    • HPC = Heads per Cylinder = 255 (0..254)
    • SPT = Sector per Track = 63 (1..63)

    据此也很容易在 CHS 地址和 LBA 地址这间进行转换:

    • LBA = SPT*(HPC*C + H) + S - 1
    • S = LBA%SPT + 1
    • H = LBA/SPT%HPC
    • C = LBA/(HPC*SPT)

    MBR (Master Boot Record)

    MBR(Master Boot Record),即硬盘的主引导记录,存储在硬盘的第一个扇区。

    它由三个部分组成,主引导记录MBR、硬盘分区表DPT(Disk Partition Table)和硬盘有效标志。

    MBR 数据结构

    偏移 长度 描述
    0x0000 440 引导代码
    0x01B8 4 磁盘标识
    0x01BC 2 一般为 0x0000
    0x01BE 64 四个16byte的DPT
    0x01FE 2 MBR 有效标志 0xAA55

    可见,MBR最多能标识4个主要分区(Primary Partition)。扩展分区是主分区的一种,用于划分更多的逻辑分区

    硬盘分区结构信息

    偏移 长度(字节) 描述
    00H 1 分区状态:00=非活动分区;80=活动分区;其它数值没有意义
    01H 3 分区起始扇区的 CHS Address。详见表格下方。
    04H 1 文件系统标志位。详见表格下方
    05H 3 分区结束扇区的CHS Address。详见表格下方
    08H 4 分区起始扇区的 LBA Address
    0CH 4 分区总的扇区数

    分区总的扇区数是一个4字节的无符号整数,因此,每个分区理论上不能超过 2^32*512 = 2*2^40 = 2 TB

    分区表中CHS Address 的表示和计算

    • 第一个字节是磁头号(Head),用到全部8位
    • 第二个字节的低6位是扇区号(Sector)
    • 第二个字节的高2位加上每三个字节的全部表示磁柱号(Cylinder)

    常见文件系统标志位

    • 04h : FAT16
    • 05h : 扩展MS_DOS分区
    • 07h : NTFS
    • 0Bh : 使用32BIT_FAT表,磁盘空间最大2GB
    • 0Ch : 使用32BIT_FAT表,采用LBA模式,调用INT13扩展中断
    • 0Fh : 扩展MS_DOS分区,采用LBA模式,调用INT13扩展中断
    • 82h : Linux分区
    • 83h : Linux 交换分区

    每个分区(Partition)也有自己的引导扇区,被称为 VBR(Volume Boot Record) 或者 Partition Boot Sector,即该分区的第一扇区。

    MBR中的引导代码通常寻找第一个活动分区(Active Partition),并将控制权交给该分区的引导代码,进而进行系统引导。

    Windows NT 系列 (..., 2000, XP, 2003) 的系统引导

    在当前分区的根目录下寻找文件 NTLDR ,由该文件负责进一步的引导。

    文件 boot.ini 是 NTLDR 的配置文件,可以通过配置改变引导方式。

    文件 bootfont.bin 是用来汉化引导过程中的中文字符的。

    文件 "ntdetect.com" 被ntldr调用来检测当前系统环境。

    相关资源

    标签:

      分享到:
      comments powered by Disqus

      32/36ms