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