hanzp
驱动牛犊
驱动牛犊
  • 注册日期2003-05-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1516回复:5

高分求磁盘文件系统引导扇区的资料

楼主#
更多 发布于:2003-08-12 21:29
我的程序中需要要FAT16引导区的详细说明,我以前在站上找到的只有一些简单说明,如第几个字节是什么意思。我需要详细一点的。谢谢
hanzp920@163.com

最新喜欢:

hongsinghongsi...
CINDS
驱动牛犊
驱动牛犊
  • 注册日期2001-03-26
  • 最后登录2005-08-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-13 09:49
MBR  

    主引导扇区由两个部分组成:即主引导记录MBR和硬盘分区表DPT,在总共512字节的主引导分区里其中MBR占446个字节(偏移0--偏移1BDH),DPT占64个字节(偏移1BEH--偏移1FDH),最后两个字节“55,AA”(偏移1FEH偏移1FFH)是分区的结束标志。

    主引导记录(MBR)中包含了硬盘的一系列参数和一段引导程序。

启动过程:  
    1. BIOS 加电自检 ( Power On Self Test -- POST )内存地址为 0ffff:0000
  2. 将硬盘第一个扇区 (0头0道1扇区, 也就是BootSector)读入内存地址 0000:7c00 处.
  3. 检查 (WORD) 0000:7dfe 是否等于 0xaa55,若不等于则转去尝试其他启动介质,如果没有其他启动介质则显示
   \"No ROM BASIC\" 然后死机.
  4. 跳转到 0000:7c00 处执行 MBR 中的程序.
  5. MBR 首先将自己复制到 0000:0600 处,然后继续执行.
  6. 在主分区表中搜索标志为活动的分区.如果发现没有活动分区或有不止一个活动分区, 则转停止.
  7. 将活动分区的第一个扇区读入内存地址 0000:7c00处.
  8. 检查 (WORD) 0000:7dfe 是否等于 0xaa55,若不等于则显示 \"Missing Operating System\" 然后停止,或尝试
   软盘启动.
  9. 跳转到 0000:7c00处继续执行特定系统的启动程序.
  10. 启动系统 ...

    一般多系统引导程序 (如 SmartFDISK, BootStar, PQBoot等)都是将标准主引导记录替换成自己的引导程序, 在运行系统启动程序之前让用户选择要启动的分区.
  而某些系统自带的多系统引导程序 (如 lilo, NT Loader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中, 在 Linux中即为 SuperBlock (其实 SuperBlock 是两个扇区).

  注: 以上各步骤中使用的是标准 MBR,其他多系统引导程序的引导过程与此不同.

◆与你到永久
CINDS
驱动牛犊
驱动牛犊
  • 注册日期2001-03-26
  • 最后登录2005-08-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-13 09:51
BootSector相关


FAT32的BPB
FAT32的BPB定义如下:
typedef struct
{
          word BytesPerSector; //每扇区字节数
          byte SectorsPerCluster; //每簇扇区数
          word ReservedSectors; //保留扇区数
          byte NumberOfFATs; //FAT的个数
          word RootEntries; //根目录项数(FAT32不用)
          word TotalSectors; //分区总扇区数(FAT32不用)
          byte MediaDescriptor; //分区介质标识
          word SectorsPerFAT; //每个FAT占的扇区数(FAT32不用)
          word SectorsPerTrack; //每道扇区数
          word Heads; //磁头数
          dword HiddenSectors; //隐含扇区数
          dword BigTotalSectors; //分区总扇区数
          dword BigSectorsPerFat; //每个FAT占的扇区数
          word ExtFlags; //扩展标志
          word FS_Version; //文件系统版本
          dword RootDirStartClus; //根目录起始簇号
          word FSInfoSec; //指向包含BIGFATBOOTFSINFO结构的扇区
          word BkUpBootSec; //后备引导区的位置
          byte Reserved[12]; //备用
}BPB_FAT32;

扩展BIOS参数块
EBPB的结构如下:
typedef struct //Extended BIOS Paramenter Block
{
          byte PhysicalDriveNumber; //物理硬盘号
          byte CurrentHead; //当前磁头
          byte ExtBootRecSign; //扩展引导记录标志
          dword SerialNumber; //序列号
          char VolumeLabel[11]; //卷标
          char FSID[8]; //文件系统标识
}EBPB;

 

◆与你到永久
CINDS
驱动牛犊
驱动牛犊
  • 注册日期2001-03-26
  • 最后登录2005-08-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-13 09:53
<Microsoft Extensible Firmware Initiative FAT32 File System Specification.doc>
附件名称/大小 下载次数 最后更新
2003-08-13_Microsoft Extensible Firmware Initiative FAT32 File System Specificat (211KB)  15
◆与你到永久
CINDS
驱动牛犊
驱动牛犊
  • 注册日期2001-03-26
  • 最后登录2005-08-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-13 09:53
自己看吧
附件名称/大小 下载次数 最后更新
2003-08-13_FAT General Overview of On-Disk Format.df.pdf (108KB)  14
◆与你到永久
hanzp
驱动牛犊
驱动牛犊
  • 注册日期2003-05-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-13 18:28
3x
游客

返回顶部