作者: Andries Brouwer, jaeb@cwi.nl
譯者: Asd L. Chen, asdchen@ms1.hinet.net
v1.0, 26 June 1996 翻譯日期: 10-13 November 1997
--------------------------------------------------------------------------------
所有有關(guān) disk geometry 及 1024 cylinder 的限制.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1. 問題所在
假如你的磁碟超過 1024 個磁簇(cylinders). 還有, 假如你的作業(yè)系統(tǒng)使用基本輸出入系統(tǒng)(BIOS).那麼你會遇到一個問題, 因為一般磁碟輸出入/輸入所使用的 INT13 BIOS 介面以一個 10 位元(bit) 的欄位來操作磁簇, 所以無法存取第 1024 及之後的磁簇.
幸運的是, Linux 不使用 BIOS, 所以沒有問題.
話是這麼說, 但有兩件事例外:
(1) 當你在啟動系統(tǒng)時, Linux 還沒開始執(zhí)行所以無法讓你避免這個問題.這對 LILO 以及類似的啟動載入程式(boot loaders)有些影響.
(2) 使用磁碟的所有作業(yè)系統(tǒng)必須同意分割區(qū)的位置.換句話說, 如果你在一顆磁碟上使用 Linux 以及, 例如 DOS, 那麼兩者必須以相同的方式解讀分割表的資料.這對 Linux 核心以及 fdisk 有些影響.
底下是對所有相關(guān)細節(jié)更詳細的描述.注意, 我使用 2.0.8 版核心原始程式做為參考.其它的版本可能有一點點出入.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2. 啟動
當系統(tǒng)啟動時, BIOS 從第一個磁碟(或從軟碟)讀取磁區(qū) 0 (一般通稱的 MBR - Master Boot Record, 主啟動磁區(qū))并跳至在該處的程式碼 - 通常是一些啟動載入程式(bootstrap loader).這些小小的啟動程式一般不會有自己的磁碟驅(qū)動程式而會使用 BIOS 所提供的服務(wù).這意謂著只有整個 Linux 核心都位於開頭的 1024 個磁簇內(nèi)時才能夠被啟動.
這個問題很容易解決: 確定核心(也許還包括其它啟動時用到的檔案, 像是 LILO map 檔) 是放在一個 BIOS 可以存取的到, 全都在開頭的 1024 個磁簇內(nèi)的分割區(qū)里 - 這可以(可能)是第一個或第二個磁碟.
另一點是啟動載入程式與 BIOS 必須同意彼此對磁碟邏輯(geometry)上的看法.給 LILO `linear" 這個選項參數(shù)可能會有些幫助.細節(jié)後述.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 磁碟 geometry 以及分割區(qū)
如果你的磁碟上有好幾種作業(yè)系統(tǒng), 每一種使用一個或多個分割區(qū).那麼對於分割區(qū)位於何處不同的看法可能導(dǎo)致災(zāi)難性的後果.
MBR 中包含一個分割表描述分割區(qū)(主分割區(qū): primary) 在那里.有四個表格給四個主要分割區(qū)使用, 它們看起來像
struct partition {
char active;/* 0x80: bootable, 0: not bootable */
char begin[3];/* CHS for first sector */
char type;
char end[3];/* CHS for last sector */
int start;/* 32 bit sector number (counting from 0) */
int length; /* 32 bit number of sectors */
};
(其中 CHS 是磁簇/磁頭/磁區(qū): Cylinder/Head/Sector 的縮寫)
因此, 有項資訊是重覆的: 分割區(qū)的位置可以由 24 位元的 begin 以及 end 欄位, 和 32 位元的 start 以及 length 欄位給定.
Linux 只使用 start 以及 length 欄位, 故最多可以處理包含 2^32 個磁區(qū)的分割區(qū), 也就是, 最大 2 TB 的分割區(qū).這是現(xiàn)今磁碟機的兩百倍, 所以也許足夠往後十年的需求.
推薦閱讀
- Linux Quota mini-HOWTO 磁盤空間限制
- ISP-Connectivity-mini-HOWTO
- faxsrv-mini-HOWTO 傳真機服務(wù)器
- 使用電池供電的 Linux Mini-HOWTO
- Automount mini-Howto 文件系統(tǒng)自動掛載程序
- FreeBSD如何跑diskless
- 制作U盤啟動的RAMDISK為根目錄的FREEBSD完全版
- FreeBSD如何跑diskless?
- Sun Solaris 不同規(guī)格的硬盤用Disksuite做鏡像的實現(xiàn)
- DiskSuite做raid 0的一些note
