一、問題提出
硬盤越做越大,然我喜歡讓我憂。10年前就遇到過在586電腦BIOS不認識超過8.4G容量硬盤的問題,以及Windows Nt操作系統(tǒng)不認大硬盤(容量超過8.4G)的問題,對于Linux 通過LILO啟動的時候也不能突破硬盤8.4G容量的限制。
原因主要是這樣,過去的BIOS使用的是8位尋址方式編號從0到7,故他表示的范圍是0-255之間變化,硬盤容量大小的計算方法是:512X磁頭數(shù)X柱面數(shù)X每磁道扇區(qū)數(shù),每個扇區(qū)的大小是512字節(jié),所以最大尋址范圍是: (1024 * 255 * 63 * 512/1024/1024)=8.4G 。
目前的電腦主板BIOS普遍采用48位尋址,早已解決了137G硬盤的限制,最近我們機房服務(wù)器升級更換批舊服務(wù)器,需要把UNIX系統(tǒng)更換到新機器上,機房到了一批新Dell OptiplesGx755 PC,配置有120G硬盤,用作UNIX Server,操作系統(tǒng)為Sco UNIX Open Server 5.0.6。
先按默認參數(shù)在其上安裝UNIX,安裝完畢后發(fā)現(xiàn),進入UNIX后只能找到8G的硬盤空間。因為這批機器是專門配置為在UNIX下工作的,剩下約112G無法利用,硬盤的利用率只有7%,資源浪費極大。我們就開始做實驗繼續(xù)嘗試不同的方法解決問題。
二、一組實驗結(jié)果
為了攻克這一課題,我們用代替法反復(fù)實驗,在HP,IBM,多款120G硬盤的PC上,采用了不SCO 提供的大容量硬盤安裝模式,在biosgeom指定參數(shù)安裝Sco OpenServer 5.0.6,發(fā)現(xiàn)下列情況:
(a)在IBM、HP多款PC上安裝UNIX等正常引導(dǎo),但發(fā)安裝OS的硬盤,拆到DELL機器上,卻不能正常引導(dǎo),開機顯示“NO OS";
(b)在dell pc上安裝120G的UNIX,改用大硬盤安裝參數(shù)時,不能正常引導(dǎo),開機顯示“NO OS”,使用默認方式只能認到8G磁盤空間,浪費極大。所以我認為,Dell Optiplex Gx755 pc 應(yīng)該可以支持Unix,否則8G的UNIX也不能用。
三、分析原因
根據(jù)上述情況,我認為關(guān)鍵問題出在硬盤的主引導(dǎo)扇區(qū)(位于整個硬盤的0磁道0柱面1扇區(qū))上,再深入分析一下,硬盤的主引導(dǎo)扇區(qū)的組成為主引導(dǎo)記錄(1BEH byte)+分區(qū)表(40H byte)+結(jié)束標志(2H byte)。
UNIX系統(tǒng)的安裝程序會把硬盤參數(shù)寫入主引導(dǎo)記錄:第一次安裝UNIX時,由于原硬盤上的主引導(dǎo)記錄不是UNIX格式,安裝程序會想硬盤寫入UNIX格式的主引導(dǎo)記錄;以后用缺省參數(shù)重裝UNIX;如果原有主引導(dǎo)記錄已經(jīng)是UNIX格式,則安裝程序不再修改主引導(dǎo)記錄;如果采用biosgeom指定參數(shù)安裝,UNIX的安裝程序?qū)⒅貙懼饕龑?dǎo)記錄。
默認安裝UNIX時,安裝程序識別硬盤最多有1024個Cylinder,當硬盤實際Cylinder數(shù)量小于1024,安裝程序在主引導(dǎo)記錄寫入實際的Cylinder,Head,Sectors數(shù)(磁盤大小=cylinders x heads x sectors per track x 512);當大于1024時,安裝程序在主引導(dǎo)記錄中標記硬盤的cylinder數(shù)為1024,連同head,sectors數(shù)一起寫到
硬盤的主引導(dǎo)記錄,這些參數(shù)表示硬盤的總?cè)萘看笮?而UNIX分區(qū)大小則在分區(qū)表中定義。在UNIX引導(dǎo)時系統(tǒng)顯示的Cylinder,Head,Sectors數(shù)就是從主引導(dǎo)記錄中讀取的。Dell P c引導(dǎo)UNIX時,如果主引導(dǎo)記錄中的Cylinder數(shù)超過1024,將導(dǎo)致BIOS 引導(dǎo)程序無法找到操作系統(tǒng),而顯示“NO OS"。
四、解決方法
現(xiàn)在市面上的硬盤的硬盤控制器內(nèi)部安裝了一個地址翻譯器,早已突破了1024柱面的限制,但我們在安裝系統(tǒng)的時候還是要注意,一定要在BIOS中將硬盤設(shè)置成LBA模式。下面我們解決問題的思路是這樣的,可以假設(shè)在安裝了120G的UNIX的硬盤上,主引導(dǎo)記錄換成能正常引導(dǎo)8G的UNIX硬盤的主引導(dǎo)記錄,引導(dǎo)系統(tǒng)時,應(yīng)該可以找到操作系統(tǒng),只要機器能夠引導(dǎo),UNIX就能夠找到的空間由分區(qū)表確定。真正有價值的東西不會輕易退出歷史的舞臺,Debug就是這樣的經(jīng)典作品之一,但到了關(guān)鍵時刻還得請他出馬。
操作步驟:
(a)安裝一臺可以正常引導(dǎo)8G UNIX的Dell Pc;
(b) 做一張DOS引導(dǎo)U盤,要帶Debug.exe工具,在BIOS設(shè)置第一引導(dǎo)設(shè)置為USB-HDD模式(U盤制作啟動盤方法參考其他文章)。
(c)在安裝8G UNIX的Dell Pc上用軟盤引導(dǎo),進入Debug,提取硬盤的主引導(dǎo)記錄,保存在U盤上。
(d)重新安裝UNIX系統(tǒng),在出現(xiàn)的boot:后面輸入defbootstr biosgeom=(15665,255,63)安裝過程中,選擇把整個硬盤給UNIX系統(tǒng)。上述的15665,255,63分別表示為硬盤的C ylinders數(shù)、Heads數(shù)、sectors-per-track數(shù),head=255:表示LBA模式。
(e)再次用U盤引導(dǎo)安裝了120G UNIX的PC,用步驟三中提取的主引導(dǎo)記錄替換現(xiàn)有的主引導(dǎo)記錄。
經(jīng)過這樣處理后,Dell Gx755 pc 能正常引導(dǎo)120G UNIX
五、結(jié)束語
(a).系統(tǒng)引導(dǎo)時,顯示的柱面數(shù)為1024,實驗表明,不影響使用;
(b).進入UNIX系統(tǒng),用df -v命令查看硬盤空間為110G,屬于正常現(xiàn)象,硬盤的格式化容量比標稱容量小;另外還可以用用dkinit /dev/rhd00(或rhd01)看到系統(tǒng)使用了所有的柱面信息。 這里hd00代表整個物理硬盤hd01代表第一個分區(qū),在UNIX系統(tǒng)里硬盤是字符設(shè)備所以文件名以”r”開頭。
(c).按這種方法安裝UNIX,主引導(dǎo)扇區(qū)只要一次提取,可多次使用,是個成熟穩(wěn)定的解決方案;
(d).另外對于硬盤參數(shù)的獲取一可以把磁盤拆下來看,還可以直接用工具軟件如Diskman 、PowerMax來測出其值.
新聞熱點
疑難解答