作者:Andries Brouwer | 譯者:Asd L. Chen | v1.0(1996)
若磁碟超過 1024 柱面,且作業系統使用 BIOS INT13 介面(10 位元柱面欄位),將無法存取 1024 之後的區域。Linux 核心不使用 BIOS,故無此問題,但兩個例外:
fdisk。BIOS 讀取 MBR(磁區 0)並跳轉執行載入程式,載入程式使用 BIOS 服務。解決方法:確保核心與 LILO map 檔放在 BIOS 可存取、完全位於前 1024 柱面的分區(第一或第二顆磁碟)。給 LILO linear 參數可幫助協調幾何資訊。
MBR 分割表項目結構:
struct partition {
char active; // 0x80 可開機
char begin[3]; // 起始 CHS
char type; // 分割區類型
char end[3]; // 結束 CHS
int start; // 32-bit 起始磁區號 (LBA)
int length; // 32-bit 磁區數
};
Linux 僅使用 start、length(支援 2 TB 分區)。BIOS INT13 使用 24-bit CHS(10+8+6 位元),最大定址 7.875 GB。IDE 介面支援 256 磁區/軌、65536 柱面、16 磁頭(128 GB),但受 BIOS 限制僅 504 MB。業界以硬體/軟體轉譯突破。
核心偵測到管理程式會嘗試以相同方式重新對應幾何,使 Linux 看到與 DOS 相同分割。指令列指定幾何(hd=cyls,heads,secs)會停用重新對應。重新對應嘗試磁頭數 4,8,16,32,64,128,255 直到 C≤1024 或 H=255。
偵測到第一主分割區類型 0x55。重新對應幾何,忽略磁區 0 分割表,改用磁區 1。寫入磁區 0 導向磁區 1。可修改 ide.c 中 FAKE_FDISK_FOR_EZDRIVE 關閉。
第一主分割區類型 0x54(第一顆磁碟)。重新對應幾何,整碟偏移 63 磁區(舊磁區 63→新 0),從新磁區 0 讀取 MBR。為 DDO 留空間。
其他磁碟偵測到類型 0x51 或 0x53。重新對應幾何,不偏移。
舊版 OnTrack,以 MBR 簽名偵測(第 2、3 位元組偏移 ≤430)。