
硬盤基本參數表
硬盤基本參數表
中斷向量表中,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 長字分區占用的扇區數。
__