我們經常不得不應付以下情形,就是讓Linux和NT兩個不同的系統在同一台機器中和平共處。已經有了許多相關的HOW-TO文獻--去看一看是個不壞的建議--去看如何設定LILO,以完成此類工作的那些。遺憾的是,經典文獻基本沒有涉及NT 引導程序。是的,對不少人而言,Linux和NT間存在著門戶之爭, 但我們的目標只是如何圓滿完成這個工作而已。 NT安裝後,MBR會被修改成去引導一個在激活分區的根目錄下,叫NTLDR的程序。原來的MBR會被存到一個叫BOOTSECT.DOS的小文件中。NT安裝完成後要記住絕不能覆蓋這個MBR, 否則NT將無法啟動。以防萬一, NT的用戶需要NT的應急修復磁盤(Emergency Repair Disk,ERD)。 記住了這些後,就要注意設定LILO時*不能*裝到MBR中去,而是裝到Linux的root分區中去。這樣,對NT而言,不會帶來問題;而Linux沒有MBR也可以活下去。 NT之引導過程 當NTLDR啟動, NT用戶看到"OS Loader V4.xx" 後,它會切換處理器到386狀態,並啟動一個非常小的文件系統。接著,它會去讀BOOT.INI文件,看是否有其它操作系統存在,並顯示一個選擇菜單。下面是一個典型的BOOT.INI: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="NT V4 is here" multi(0)disk(0)rdisk(0)partition(2)\WINNT="NT V4 VGAMODE" /basevideo /sos C:\="DOS is here" TBOOT.INI有兩部分構成。 "boot loader section"部分指定菜單在屏幕上的停留時間,和缺省菜單選項。"opearating systems section" 部分指定可選的操作系統種類。可以看到機器可以啟動NT(以標准模式或VGA安全模式)和DOS。從這個例子我們可以推斷,DOS從硬盤C:(第一個硬盤的第一個分區)啟動,而 NT從第二個分區啟動。典型安裝時,會以DOS的FAT文件系統格式化一個C:的分區,然後將NT裝在另外一個NTFS(NT文件系統)的分區。 如果用戶選擇了啟動NT, 另外一個程序NTDETECT.COM,就會開始進行硬件檢查。如果一切正常,NT內核就會被裝入,正如我們都知道的那樣。 再來看如果啟動的不是NT的情形。此時,NTLDR 需要知道非NT OS引導所必需的引導扇區是哪個。此時,相應的引導扇區映象必須要在一個小小的512字節的文件中。比如,要引導DOS,NTLDR 將會尋找一個叫BOOTSECT.DOS的引導扇區映象文件。 這個映象文件是NT的安裝程序產生的。 那麼, 引導Linux又是怎樣呢?這很簡單,需要的只是一個引導扇區映象文件,姑且稱之為BOOTSECT.LIN (在本文稍後會看到如何得到這個文件)。 必須將BOOTSECT.LIN 放到C:, 並要修改 BOOT.INI。此時"operating systems ection"部分看起來應該是這樣的: [operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="NT V4 is here" multi(0)disk(0)rdisk(0)partition(2)\WINNT="NT V4 VGAMODE" /basevideo /sos C:\="DOS is here" C:\BOOTSECT.LIN="Now Linux is here" 修改BOOT.INI, 可以用任何普通ASCII文本編輯器(比如記事本)。這個文件的正常屬性為系統-隱藏-只讀,所以你必須用 'attrib' DOS 命令或在NT中,用文件屬性對話框中來變更屬性。 Linux 現在我們將注意力轉到Linux。我們需要安裝Linux,定制LILO,產生BOOTSECT.LIN文件。 第一步是裝好Linux。我們都知道怎麼做:為Linux選適當的系統,SWAP,和用戶分區,運行安裝程序,等等。一切順利時,這一步在45分鐘之內就可以完成。 接下去就要定制LILO。我們知道怎麼做,但要注意*不能* 將LILO裝到MBR中去(除非你想將NT吞了:-))。設定LILO時,要選擇將它裝到你Linux 的root分區。如果你還不知道如何設定LILO, 就花幾分鐘讀讀HOW-TO文獻,或者就用一些好的安裝程序,我是用S.u.S.E.的, 因此我的安裝程序就是 'yast' (Yet Another Setup Tool)。 LILO定制好之後,(為行文方便, 此處假設Linux的root分區是/dev/hda3)我們必須用'dd'來產生引導記錄映象文件。以root Login後,按以下做: # dd if=/dev/hda3 bs=512 count=1 of=/dosc/bootsect.lin 如果沒有能將FAT C: partition mount成為 /dosc,譬如說由於這個分區被以NTFS方式格式化,不能訪問這個分區。此時可以將 BOOTSECT.LIN寫到一個以DOS方式格式化的磁盤中,或者NT能讀的其它什麼分區也可以。如果BOOTSECT.LIN不是被放到C:\,要記住此時應相應修改BOOT.INI文件。 最後,你可以設定LILO在選擇提示時能去引導Linux和C: 上的DOS。你就可以再次回到C: 分區上的NT Loader。 前文描述的方法可以反復進行,如果你希望能選擇引導多個Linux,就必須為每一個Linux都產生一個相應的引導扇區映象文件。