雙硬碟多系統引導深入探究(轉)

post0發表於2007-08-11
雙硬碟多系統引導深入探究(轉)[@more@]

Linux和Windows多系統共存時,引導過程相對來說比較複雜。而且容易引起一些錯誤概念。比如經常看到有的網友這樣問:“我要引導XXX Linux,應該用Lilo,Grub,還是NT OS Loader?”

其實常見的Linux引導途徑,只有引導軟盤,Lilo,Grub,和在MS-DOS環境下用Loadin.exe引導。而 NT OS Loader是不能夠引導Linux的。大家“所謂的”用NT OS Loader引導Linux時,中間都要透過Lilo或者Grub這一步。In another word,如果你的Linux安裝時候就沒有安裝載入程式,而是打算一直用軟盤引導的話,你也就無法用 NT OS Loader去引導這個Linux。

用NT OS Loader引導Linux的過程應該是這樣:NT OS Loader->grub (or lilo) ->Linux。

這個過程是透過如下幾個步驟實現的:

1, 在MBR或某個分割槽的引導扇區上安裝Grub或者Lilo,使其成功引導Linux。

2,在Linux下用dd命令把被安裝的Grub或者Lilo讀出來並寫在一個檔案上,這個步驟相當於給Grub或者Lilo做了個備份,隨後即使原來裝 Grub或者Lilo的地方被清除掉,也可以用留下來的這個檔案藉助NT OS Loader實現跟以前一模一樣的引導過程。

3, 修改Boot.ini讓NT OS Loader引導剛才讀出來的Grub或者Lilo。

至於這個被NT OS Loader 引導起來的Grub能幹些什麼,完全看你自己的配置,可以透過修改Menu.lst檔案讓他引導任何受支援的系統或者另外的載入程式。你可以讓他引導僅僅一個Linux,並把預設時間設定為0,從而造成NT OS Loader直接引導Linux的假象。也可以讓他引導從Linux到Unix,BSD的N個系統,排出長長的一個系統列表。我甚至曾經讓NT OS Loader 和 Grub兩者之間互相迴圈引導。

如此看來,NT OS Loader和Grub是平起平坐的,他們之間互相可以引導,但對於系統的支援卻是各有自家的本事。 NT OS Loader離開了Grub就別想引導Linux/Unix/BSD;而Grub雖說很強,也不可能繞過NT OS Loader對MS的 NT4/2000/XP/Server2003直接進行引導。

但是像MS-DOS,Windows9X/Me這樣的系統概念就模糊了。說得通俗一點,這類微軟的早期系統既可以被NT OS Loader直接引導,也可以被Grub直接引導。如果你機器上只有一個MS-DOS/9X/Me,而沒有NT OS Loader時就裝了Grub的話,Grub就會直接引導這個系統。而如果你裝Grub時已經有NT OS Loader,那麼Grub就會透過NT OS Loader來引導這個系統。甚至可以這樣:硬碟1上的NT OS Loader -> 硬碟1上的Grub -> 硬碟2上的 Windows9X/Me/MS-DOS。(符號- >表示直接引導)

另外還有幾點需要注意。

1, Grub理論上可以引導任何相同或不同硬碟上的NT OS Loader,但反之,想用NT OS Loader引導不同硬碟上的Grub卻不行。這裡不同硬碟上的Grub是指這個Grub在被dd成檔案之前安裝在跟NT OS Loader不同的硬碟上。

2, Grub和Grub之間可以直接互相引導(不過互相迴圈引導次數過多會記憶體溢位而當機,即使中間透過NT OS Loader來間接引導也不能避免, Grub對記憶體的要求似乎比NT OS Loader高),但NT OS Loader和NT OS Loader之間卻不可以。只能透過Grub把兩個 NT OS Loader連起來。使之可以間接互相引導。而這樣連起來的兩個NT OS Loader即使互相迴圈引導次數再多也不會出現錯誤。

3,同一臺機器上的一個Linux可以被不同的N個Grub引導。但一個NT系統卻不能被兩個NT OS Loader引導。M$可能在後面做了什麼,讓NT 核心的系統安裝時候就被綁在了預設的NT OS Loader上(可以是跨硬碟的繫結)。安裝一結束,你就只能用這個NT OS Loader來引導他。任何想從別的NT OS Loader引導這個NT系統的嘗試,都會被一個找不到檔案的錯誤拒之門外。

4,硬碟1上的NT OS Loader -> 硬碟1上的Grub -> 硬碟2上的 MS-DOS。在用這種引導方式時,假如最後被引導的 MS-DOS上裝有Windows3.x,那麼MS-DOS雖然會正常啟動,但Windows3.x卻會因提示無法找到檔案而無法正常進入。解決辦法是在硬碟2中裝一個NT OS Loader。就會按如下過程順利啟動:

硬碟1上的NT OS Loader -> 硬碟1上的Grub -> 硬碟2上的 NT OS Loader -> 硬碟2上的 MS-DOS -> 進入Windows3.x。

不過目前還在用Windows3.x的可能全國也沒幾個了。各位就當故事聽吧。

最後,對於想讓Windows和Linux在兩塊硬碟上並存的網友,給出下列引導建議:

首先,建議把所有的Windows放在一個硬碟,所有Linux放在另一個硬碟。如果不然,下列的某些建議可能無法實現。

1, 用Linux多餘用Windows的型別

這類可用Grub作主載入程式,這樣就不必在意每個載入程式安裝的位置了。因為Grub是通吃所有硬碟的。

(1) 先把所有Windows裝好。

(2) 再一個個的裝Linux,把帶有你想用的Grub版本的Linux放在最後安裝。

(3) 安裝最後一個Linux時就把Grub安裝在Linux盤的MBR上。

這樣開機後Grub選單出來,你可以選擇:

1、 選擇Grub選單中的任何一個Linux系統。

2、 進入NT OS Loader 選單選擇任何一個Windows系統。

2, 用Windows多餘用Linux的型別

這類可用NT OS Loader作主載入程式。然而由於NT OS Loader不支援跨硬碟引導其他載入程式,Grub就必須裝在Windows盤裡。

(1) 分割槽時要在Windows盤裡的最後多劃出一個分割槽,分割槽大小在理論上有512位元組就夠了,實際上一般習慣分出幾M(太小了也不支援)。格式化成FAT和ext均可。

(2) 之後就按照“1,”裡的順序安裝所有系統。

(3) 在完成“1,”之後,進入Linux,進入Grub提示符,用setup (hdx,x) 把Grub安裝在Windows盤後面新劃出來的那個小分割槽裡。

(4) 用dd命令把那個小分割槽的前512位元組讀出來存成檔案。

(5) 把檔案新增到NT OS Loader的啟動選項中。

(6) 把Windows盤設定成主啟動硬碟。

這樣開機後NT OS Loader選單出來,你可以選擇:

1、選擇NT OS Loader選單中的任何一個Windows系統。

2、進入Grub 選單選擇任何一個Linux系統。

Grub是很靈活的軟體,NT OS Loader也不笨。兩者雖然互有不足,但如果配合起來使用,不管你有幾個硬碟,幾個系統,都可以設計出一個快潔完善的引導方案。

文中涉及到的一些具體操作,比如Linux下安裝Grub,Linux下dd命令的詳細用法,還有Grub、NT OS Loader的配置檔案修改方法等等,論壇裡到處都有詳細操作的文章。我就不在各位大蝦面前班門弄斧了

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945159/,如需轉載,請註明出處,否則將追究法律責任。

相關文章