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。
最後,對於想讓Windows和Linux在兩塊硬碟上並存的網友,給出下列引導建議:
首先,建議把所有的Windows放在一個硬碟,所有Linux放在另一個硬碟。如果不然,下列的某些建議可能無法實現。
一、用Linux多餘用Windows的類型
這類可用Grub作主引導程式,這樣就不必在意每個引導程式安裝的位置了。因為Grub是通吃所有硬碟的。
(1) 先把所有Windows裝好。
(2) 再一個個的裝Linux,把帶有你想用的Grub版本的Linux放在最後安裝。
(3) 安裝最後一個Linux時就把Grub安裝在Linux盤的MBR上。
這樣開機後Grub菜單出來,你可以選擇:
1、 選擇Grub菜單中的任何一個Linux系統。
2、 進入NT OS Loader 菜單選擇任何一個Windows系統。
二、用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也不笨。兩者雖然互有不足,但如果配合起來使用,不管你有幾個硬碟,幾個系統,都可以設計出一個快潔完善的引導方案。