用NT Loader實現多操作系統啓動

用NT Loader實現多操作系統啓動
 
工作原理:磁盤的引導扇區的內容決定了系統啓動的方式,但是在多系統引導的情況下,引導扇區的內容又取決於各系統安裝的順序。如果首先安裝的是DOS,那麼引導扇區就是DOS引導扇區,它運行時將載入IO.SYS,完成正常的DOS啓動工作。如果在DOS上又安裝了Windows NT,那麼原先的DOS引導扇區將被NT的引導扇區覆蓋,但是爲了實現與DOS的雙引導,NT並未將其內容刪除,而是保存在一個名爲BOOTSECT.DOS的文件中。NT引導扇區運行時不再裝入IO.SYS,而是裝入NTLDR,後者將顯示一個啓動菜單,提示您是啓動NT還是啓動DOS。如果選擇了啓動DOS,那麼NTLDR將運行文件BOOTSECT.DOS,也就是保存的DOS引導扇區,執行正常的DOS啓動工作。如果此後又安裝了Windows 95,那麼它在保持NT的啓動扇區不變的情況下,用自己的引導扇區重寫文件BOOTSECT.DOS,同時安裝自己的IO.SYS和MSDOS.SYS,而把DOS的IO.SYS和MSDOS.SYS更名爲IO.DOS和MSDOS.DOS。此時啓動菜單中的相應項也由“MS-DOS”變成了“Microsoft Windows”,如果選擇它,NTLDR同樣執行BOOTSECT.DOS,但是此時這個文件的內容已不是DOS的引導扇區,而是Win 95的引導扇區,它將直接啓動Win 95而不是DOS。
從上面可以看出,NT與DOS以及Win 95的雙引導實際上是由NTLDR根據用戶的不同選擇執行不同的引導扇區文件來完成的。因此,我們只要找到所有要啓動操作系統的引導扇區文件即可完成多操作系統的啓動。不過,還有一個小問題需要考慮,就是IO.SYS和MSDOS.SYS的更名問題。我們知道,MS-DOS和Windows 95都使用文件IO.SYS和MSDOS.SYS,爲了防止衝突,啓動DOS時,Win 95的IO.SYS和MSDOS.SYS將分別更名爲WINBOOT.SYS和MSDOS.W40,啓動Win 95時,DOS的IO.SYS和MSDOS.SYS將更名爲IO.DOS和MSDOS.DOS。在DOS和Win 95雙引導系統中,這些工作都是由Win 95的IO.SYS來完成的。因此,在用NTLDR來實現多操作系統啓動時必須提供一種方法來完成這種更名工作,否則將不能正常啓動DOS或者Win 95。幸好,NTLDR實現時考慮了這個問題,專門設置了兩個開關參數:/Win 95和/Win 95DOS。
具體步驟
首先,必須做好安裝前的準備工作,包括:備份硬盤上的數據(非常重要);製作NT安裝磁盤(插入NT的CD-ROM,在i386目錄下執行WINNT32/OX);如果需要安裝Linux,那麼製作Linux的Boot盤和Root盤。其次,也是最關鍵的一步,就是獲得不同操作系統的引導扇區文件。NT就不必說了,既然是圍繞NT來實現多系統引導,系統的引導扇區就是NT的引導扇區。
下面筆者主要討論一下如何獲得DOS、Win 95和Linux的引導扇區文件。
1. DOS
首先安安裝DOS操作系統,然後安裝NT,此時C盤根目錄下的BOOTSECT.DOS文件就是DOS的引導扇區文件。
2. Win 95
在上一步的基礎上安裝Win 95。安裝之前首先備份剛獲得的DOS引導扇區文件,安裝成功之後,C盤根目錄下的BOOTSECT.DOS文件就是Win 95的引導扇區文件,將其保存爲BOOTSECT.W40,並將備份的DOS引導扇區文件重命名爲BOOTSECT.DOS。
3. Linux
安裝Linux,然後在Linux系統下運行以下命令:
dd if=/dev/hda? of=/mnt/c-drive/bootsect.lnxbs=512 count=1
其中/dev/hda?是Linux的引導分區,/mnt/c-drive是C盤在Linux中的mount點。然後更改/etc/lilo.conf文件,增加一行:
boot=/mnt/c-drive/bootsect.lnx,讓LILO將Linux的引導扇區寫到文件bootsect.lnx中。
由於Linux安裝時重寫了C盤的引導扇區,NT將不能正常啓動,所以必須對其進行修復。具體步驟爲:首先用DOS啓動盤引導系統,然後運行下列命令:
fdisk /mbr刪除主引導記錄,最後再用NT安裝盤修復NT以恢復NT的主引導扇區(關於如何修復NT,有興趣的讀者可以參見有關文章)。
至此,我們獲得了所有要啓動操作系統的引導扇區文件,而且正確修復了NT的引導扇區,下一步就是修改NT的BOOT.INI文件,最終實現多操作系統引導了。
修改之前的BOOT.INI大致如下所示:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(1)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(1)partition(1)\WINNT=″Windows NT
Workstation Version 4.00″
multi(0)disk(0)rdisk(1)partition(1)\WINNT=″Windows NT
Workstation Version 4.00 [VGA mode]″ /basevideo /sos
C:\=″Microsoft Windows″
修改之後它將變爲:
(相同部分略)
C:\bootsect.w40=″Windows 95″ /WIN95
C:\bootsetc.dos=″MS-DOS″ /WIN95DOS
C:\bootsect.lnx=″Linux″
其中/WIN95和/WIN95DOS的作用我們前面已經進行了討論。
最終結果
在完成了所有操作之後重啓系統,NT Loader將顯示以下啓動菜單供您選擇:
″Windows NT Workstation Version 4.00″
″Windows NT Workstation Version 4.00 [VGA mode]″
″Windows 95″
″MS-DOS″
″Linux″
根據選擇的不同,系統啓動不同的操作系統,從而實現了多操作系統的啓動。
總 結:以上方法是筆者實踐經驗的總結,已在多臺PC機上實現,但是鑑於實際中的情況複雜多變、各個操作系統版本衆多,因此衆多玩家在試驗時還是要小心爲妙,多作備份。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章