硬盘基本参数表
硬盘基本参数表
中断向量表中,int 0x41 的中断向量位置(4 * 0x41 =0x0000:0x0104)存放的并不是中断程序的地
址而是第一个硬盘的基本参数表。对于100%兼容的BIOS 来说,这里存放着硬盘参数表阵列的首地址
F000h:E401h。第二个硬盘的基本参数表入口地址存于int 0x46 中断向量中。
表硬盘基本参数信息表
位移大小说明
0x00 字柱面数
0x02 字节磁头数
0x03 字开始减小写电流的柱面(仅PC XT 使用,其它为0)
0x05 字开始写前预补偿柱面号(乘4)
0x07 字节最大ECC 猝发长度(仅XT 使用,其它为0)
0x08 字节控制字节(驱动器步进选择)
位0 未用
位1 保留(0) (关闭IRQ)
位2 允许复位
位3 若磁头数大于8 则置1
位4 未用(0)
位5 若在柱面数+1 处有生产商的坏区图,则置1
位6 禁止ECC 重试
位7 禁止访问重试。
0x09 字节标准超时值(仅XT 使用,其它为0)
0x0A 字节格式化超时值(仅XT 使用,其它为0)
0x0B 字节检测驱动器超时值(仅XT 使用,其它为0)
0x0C 字磁头着陆(停止)柱面号
0x0E 字节每磁道扇区数
0x0F 字节保留。
硬盘设备号命名方式
硬盘的主设备号是3。其它设备的主设备号分别为:
1-内存,2-磁盘,3-硬盘,4-ttyx,5-tty,6-并行口,7-非命名管道
由于1 个硬盘中可以存在1--4 个分区,因此硬盘还依据分区的不同用次设备号进行指定分区。因此
硬盘的逻辑设备号由以下方式构成:
设备号=主设备号*256 + 次设备号
也即dev_no = (major<<8) + minor
两个硬盘的所有逻辑设备号见下表所示。
表硬盘逻辑设备号
逻辑设备号对应设备文件说明
0x300 /dev/hd0 代表整个第1 个硬盘
0x301 /dev/hd1 表示第1 个硬盘的第1 个分区
0x302 /dev/hd2 表示第1 个硬盘的第2 个分区
0x303 /dev/hd3 表示第1 个硬盘的第3 个分区
0x304 /dev/hd4 表示第1 个硬盘的第4 个分区
0x305 /dev/hd5 代表整个第2 个硬盘
0x306 /dev/hd6 表示第2 个硬盘的第1 个分区
0x307 /dev/hd7 表示第2 个硬盘的第2 个分区
0x308 /dev/hd8 表示第2 个硬盘的第3 个分区
0x309 /dev/hd9 表示第2 个硬盘的第4 个分区
其中0x300 和0x305 并不与哪个分区对应,而是代表整个硬盘。
从linux 内核0.95 版后已经不使用这种烦琐的命名方式,而是使用与现在相同的命名方法了。
5.4.3.5 硬盘分区表
为了实现多个操作系统共享硬盘资源,硬盘可以在逻辑上分为1--4 个分区。每个分区之间的扇区号
是邻接的。分区表由4 个表项组成,每个表项由16 字节组成,对应一个分区的信息,存放有分区的大小
和起止的柱面号、磁道号和扇区号,见下表所示。分区表存放在硬盘的0柱面0头第1个扇区的0x1BE--0x1FD
处。
表硬盘分区表结构
位置名称大小说明
0x00 boot_ind 字节引导标志。4 个分区中同时只能有一个分区是可引导的。
0x00-不从该分区引导操作系统;0x80-从该分区引导操作
系统。
0x01 head 字节分区起始磁头号。
0x02 ctor 字节分区起始扇区号(位0-5)和起始柱面号高2 位(位6-7)。0x03 cyl 字节分区起始柱面号低8 位。
0x04 sys_ind 字节分区类型字节。0x0b-DOS; 0x80-Old Minix;
0x83-Linux …
0x05 end_head 字节分区的结束磁头号。
0x06 end_ctor 字节结束扇区号(位0-5)和结束柱面号高2 位(位6-7)。0x07 end_cyl 字节结束柱面号低8 位。
0x08--0x0b start_ct 长字分区起始物理扇区号。
0x0c--0x0f nr_cts 长字分区占用的扇区数。
__