?? 從nt引導程序來啟動linux.txt
字號:
作者:IP浪子
日期:99-5-26 下午 09:47:03
從NT引導程序來啟動LINUX
原文By Gustavo Larriera 中文譯文: By "o k"
--------------------------------------------------------------------------------
今天,象你我這些技術專家,經常不得不應付以下情形,就是讓LINUX和NT兩個不同的系統在同一臺機器中和平共處。已經有了許多相關的HOW-TO文獻--去看一看是個不壞的建議--去看如何設定LILO(The Linux Loader,Linux引導程序)以完成此類工作的那些。遺憾的是,經典文獻基本沒有涉及NT 引導程序。是的,我知道對不少人而言,Linux和NT間存在著門戶之爭:-) 但從一個IT技術者的角度而言,主要目標只是如何圓滿完成這個工作而已。
現實生活中的很多時候,要求我們安裝Linux時,不能去改變已有的NT引導方式。比如, 很可能那是你老板的機器,并且他/她非常喜歡自己的機器永遠以自己熟悉的方式啟動;-) 本文將集中介紹如何設定NT引導程序使其能引導Linux(當然也要能繼續引導NT!)
我希望這些小技巧能使Linux的使用者以最簡單的方式達到通過NT引導程序來啟動Linux的目的。以下介紹適用于采用Intel兼容CPU的NT4.0服務器和工作站。
引子
你費了好多口舌,終于讓老板同意在她的機器上裝Linux。她NT用得很開心,Word啦,Excel啦,還有其它小東東,得心應手。她也并不固執,決定也可以試試Linux的啦,Linux裝就裝吧,不過有一個條件:她喜歡繼續通過她熟悉的,能啟動NT或DOS的那菜單來引導。她的意志就是你的意志,于是你決定不用LILO來雙重引導她的機器。
MBR有所幫助
你應該牢牢記住的最重要的一點是,許多軟件產品會利用硬盤上面僅有的那個寶貴的主引導記錄(Master Boot Record,MBR)NT是這樣,沒有選擇余地;Linux也可以這樣,如果你喜歡。機器的BIOS會執行儲存在當前激活分區的信息,來初始化你希望的操作系統。
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文件。
現在你老板可以從她的NT Loader菜單中選擇Linux了。NTLDR將會裝載BOOTSECT.INI,她就可以看到LILO的提示。她就可以去嘗試她新的Linux機器了。最后,你可以設定LILO在選擇提示時能去引導Linux和C: 上的DOS。你的老板就可以再次回到C: 分區上的NT Loader。 前文描述的方法可以反復進行,如果你希望能選擇引導多個Linux,就必須為每一個Linux都產生一個相應的引導扇區映象文件。
--------------------------------------------------------------------------------
版權所有 (C) 1999 NJLUG
出版于第36期《Linux公報》1999年1月 中文版第三期
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -