歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

突破極限 解決大硬盤上安裝Sco Unix新思路

一、問題提出

硬盤越做越大,然我喜歡讓我憂。10年前就遇到過在586電腦BIOS不認識超過8.4G容量硬盤的問題,以及Windows Nt操作系統不認大硬盤(容量超過8.4G)的問題,對於Linux 通過LILO啟動的時候也不能突破硬盤8.4G容量的限制。

原因主要是這樣,過去的BIOS使用的是8位尋址方式編號從0到7,故他表示的范圍是0-255之間變化,硬盤容量大小的計算方法是:512X磁頭數X柱面數X每磁道扇區數,每個扇區的大小是512字節,所以最大尋址范圍是: (1024 * 255 * 63 * 512/1024/1024)=8.4G  。

目前的電腦主板BIOS普遍采用48位尋址,早已解決了137G硬盤的限制,最近我們機房服務器升級更換批舊服務器,需要把UNIX系統更換到新機器上,機房到了一批新Dell OptiplesGx755 PC,配置有120G硬盤,用作UNIX Server,操作系統為Sco UNIX Open Server 5.0.6。

先按默認參數在其上安裝UNIX,安裝完畢後發現,進入UNIX後只能找到8G的硬盤空間。因為這批機器是專門配置為在UNIX下工作的,剩下約112G無法利用,硬盤的利用率只有7%,資源浪費極大。我們就開始做實驗繼續嘗試不同的方法解決問題。

二、一組實驗結果

為了攻克這一課題,我們用代替法反復實驗,在HP,IBM,多款120G硬盤的PC上,采用了不SCO 提供的大容量硬盤安裝模式,在biosgeom指定參數安裝Sco OpenServer 5.0.6,發現下列情況:

(a)在IBM、HP多款PC上安裝UNIX等正常引導,但發安裝OS的硬盤,拆到DELL機器上,卻不能正常引導,開機顯示“NO OS";

(b)在dell pc上安裝120G的UNIX,改用大硬盤安裝參數時,不能正常引導,開機顯示“NO OS”,使用默認方式只能認到8G磁盤空間,浪費極大。所以我認為,Dell Optiplex Gx755 pc 應該可以支持Unix,否則8G的UNIX也不能用。

三、分析原因

根據上述情況,我認為關鍵問題出在硬盤的主引導扇區(位於整個硬盤的0磁道0柱面1扇區)上,再深入分析一下,硬盤的主引導扇區的組成為主引導記錄(1BEH byte)+分區表(40H byte)+結束標志(2H byte)。

UNIX系統的安裝程序會把硬盤參數寫入主引導記錄:第一次安裝UNIX時,由於原硬盤上的主引導記錄不是UNIX格式,安裝程序會想硬盤寫入UNIX格式的主引導記錄;以後用缺省參數重裝UNIX;如果原有主引導記錄已經是UNIX格式,則安裝程序不再修改主引導記錄;如果采用biosgeom指定參數安裝,UNIX的安裝程序將重寫主引導記錄。

默認安裝UNIX時,安裝程序識別硬盤最多有1024個Cylinder,當硬盤實際Cylinder數量小於1024,安裝程序在主引導記錄寫入實際的Cylinder,Head,Sectors數(磁盤大小=cylinders x heads x sectors per track x 512);當大於1024時,安裝程序在主引導記錄中標記硬盤的cylinder數為1024,連同head,sectors數一起寫到

硬盤的主引導記錄,這些參數表示硬盤的總容量大小,而UNIX分區大小則在分區表中定義。在UNIX引導時系統顯示的Cylinder,Head,Sectors數就是從主引導記錄中讀取的。Dell P c引導UNIX時,如果主引導記錄中的Cylinder數超過1024,將導致BIOS 引導程序無法找到操作系統,而顯示“NO OS"。

四、解決方法

現在市面上的硬盤的硬盤控制器內部安裝了一個地址翻譯器,早已突破了1024柱面的限制,但我們在安裝系統的時候還是要注意,一定要在BIOS中將硬盤設置成LBA模式。下面我們解決問題的思路是這樣的,可以假設在安裝了120G的UNIX的硬盤上,主引導記錄換成能正常引導8G的UNIX硬盤的主引導記錄,引導系統時,應該可以找到操作系統,只要機器能夠引導,UNIX就能夠找到的空間由分區表確定。真正有價值的東西不會輕易退出歷史的舞台,Debug就是這樣的經典作品之一,但到了關鍵時刻還得請他出馬。

操作步驟:

(a)安裝一台可以正常引導8G UNIX的Dell Pc;

(b) 做一張DOS引導U盤,要帶Debug.exe工具,在BIOS設置第一引導設置為USB-HDD模式(U盤制作啟動盤方法參考其他文章)。

(c)在安裝8G UNIX的Dell Pc上用軟盤引導,進入Debug,提取硬盤的主引導記錄,保存在U盤上。

-a 100
CS:0100 mov ax 201
CS:0103 mov bx,200
CS:0106 mov cx,1
CS:0109 mov dx,80
CS:010C int 13
CS:010E int 20
CS:0110
-g=100
-rcx,
:1be
-n A:UBOOT.8G
-w 200
Writing 1be bytes
-q
 


(d)重新安裝UNIX系統,在出現的boot:後面輸入defbootstr biosgeom=(15665,255,63)安裝過程中,選擇把整個硬盤給UNIX系統。上述的15665,255,63分別表示為硬盤的C ylinders數、Heads數、sectors-per-track數,head=255:表示LBA模式。

(e)再次用U盤引導安裝了120G UNIX的PC,用步驟三中提取的主引導記錄替換現有的主引導記錄。

-a 100
CS:0100 mov ax 201
CS:0103 mov bx,200
CS:0106 mov cx,1
CS:0109 mov dx,80
CS:010C int 13
CS:010E int 20
CS:0110
-g=100
-n A:UBOOT.8G
-l 200
CS:0100 mov ax,301
CS:0103
-g=100
q


經過這樣處理後,Dell Gx755 pc 能正常引導120G UNIX

五、結束語

(a).系統引導時,顯示的柱面數為1024,實驗表明,不影響使用;

(b).進入UNIX系統,用df -v命令查看硬盤空間為110G,屬於正常現象,硬盤的格式化容量比標稱容量小;另外還可以用用dkinit /dev/rhd00(或rhd01)看到系統使用了所有的柱面信息。 這裡hd00代表整個物理硬盤hd01代表第一個分區,在UNIX系統裡硬盤是字符設備所以文件名以”r”開頭。

(c).按這種方法安裝UNIX,主引導扇區只要一次提取,可多次使用。是個成熟穩定的解決方案;

(d).另外對於硬盤參數的獲取一可以把磁盤拆下來看,還可以直接用工具軟件如Diskman 、PowerMax來測出其值

Copyright © Linux教程網 All Rights Reserved