资源描述:
《linux 磁盘分区详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、系统引导过程及硬盘分区结构论述 作者:zhy 来自:LinuxSir.Orgouc.edu.cn 摘要:本文是理论性文档,主要讲述系统引导过程以及硬盘的物理结构; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 正文 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 一、系统引导过程简介 系统引导过程主要由以下几个步骤组成(以硬盘启动为例) 1、开机; 2、BIOS加电自检(POST---PowerOnSelfT
2、est),内存地址为0fff:0000; 3、将硬盘第一个扇区(0头0道1扇区,也就是BootSector)读入内存地址0000:7c00处; 4、检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介质,则显示”NoROMBASIC”,然后死机; 5、跳转到0000:7c00处执行MBR中的程序; 6、MBR先将自己复制到0000:0600处,然后继续执行; 7、在主分区表中搜索标志为活动的分区.如果发现没有活动分区或者不止一个活动分区,则停止; 8、将活动分区的第一个扇区读入内存地址0000:7c00处; 9、
3、检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示“MissingOperatingSystem”,然后停止,或尝试软盘启动; 10、跳转到0000:7c00处继续执行特定系统的启动程序; 11、启动系统. 以上步骤中(2),(3),(4),(5)步由BIOS的引导程序完成;(6),(7),(8),(9),(10)步由MBR中的引导程序完成. 一般多系统引导程序(如SmartBootManager,BootStar,PQBoot等)都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序之前让用户选择想要启动的分区.而某些系统自带的多系统引导程
4、序(如LILO,NTLoader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux中即为两个扇区的SuperBlock. 注:以上步骤中使用的是标准的MBR,多系统引导程序的引导过程与此不同. 二、硬盘结构及参数 3D参数(DiskGeometry):CHS(Cylinder/Head/Sector)C-Cylinder柱面数表示硬盘每面盘片上有几条磁道,最大为1024(用10个二进制位存储);H-Head磁头数表示硬盘总共有几个磁头,也就是几面盘片,最大为256(用8个二进制位存储);S-Sector扇区数表示每条磁道上有几个扇区,最大为63(
5、用6个二进制位存储). 1、引导扇区 BootSector组成 BootSector也就是硬盘的第一个扇区,它由MBR(MasterBootRecord),DPT(DiskPartitionTable)和BootRecordID三部分组成.MBR又称为主引导记录,占用BootSector的前446个字节(0~0x1BD),存放系统主引导程序(它负责从活动分区中装载并且运行系统引导程序).DPT即主分区表占用64个字节(0x1BE~0x1FD),记录磁盘的基本分区信息.主分区表分为四个分区项,每项16个字节,分别记录每个主分区的信息(因此最多可以有四个主分区).B
6、ootRecordID即引导区标记占用两个字节(0x1FE~0x1FF),对于合法引导区,它等于0xaa55,这是判别引导区是否合法的标志). BootSecor具体结构如图: 2、分区表结构简介 分区表由四个分区项构成,每一项结构如下: BYTEState:分区状态,0=未激活,0x80=激活(注意此项); BYTEStartHead:分区起始磁头号; WORDStartSC:分区起始扇区和柱面号,底字节的底6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位; BYTEType:分区类型,如0x0B=FAT32,0x83=Linux等,00
7、表示此项未用; BYTEEndHead:分区结束磁头号; WORDEndSC:分区结束扇区和柱面号,定义同前; DWORDRelative:在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址); DWORDSectors:分区大小(总扇区数). 在DOS或Windows系统下,基本分区必须以柱面为单位划分(Sectors*Heads个扇区),如对于CHS为764/256/63的硬盘,分区的最小尺寸为256*63*512/=7.875MB. 由于硬盘的第一个扇区已经被引导扇区占用,所