巧用NT Loader實現多作業系統啟動 (轉)

worldblog發表於2007-12-03
巧用NT Loader實現多作業系統啟動 (轉)[@more@]

  巧用NT Loader實現多操作啟動 (裝載)
工作原理
  我們知道,的引導扇區的內容決定了系統啟動的方式,但是在多系統引導的情況下
,引導扇區的內容又取決於各系統的順序。如果首先安裝的是DOS,那麼引導扇區就是D
OS引導扇區,它執行時將載入IO.SYS,完成正常的DOS啟動工作。如果在DOS上又安裝了Wind
ows NT,那麼原先的DOS引導扇區將被NT的引導扇區覆蓋,但是為了實現與DOS的雙引導,NT
並未將其內容刪除,而是儲存在一個名為BOOTSECT.DOS的中。NT引導扇區執行時不再裝
入IO.SYS,而是裝入NTLDR,後者將顯示一個啟動選單,提示您是啟動NT還是啟動DOS。如果
選擇了啟動DOS,那麼NTLDR將執行檔案BOOTSECT.DOS,也就是儲存的DOS引導扇區,正常
的DOS啟動工作。如果此後又安裝了 95,那麼它在保持NT的啟動扇區不變的情況下,
用自己的引導扇區重寫檔案BOOTSECT.DOS,同時安裝自己的IO.SYS和MSDOS.SYS,而把DOS的
IO.SYS和MSDOS.SYS更名為IO.DOS和MSDOS.DOS。此時啟動選單中的相應項也由“MS-DOS”變
成了“ 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的Boot盤和盤。

  其次,也是最關鍵的一步,就是獲得不同作業系統的引導扇區檔案。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=″

  Workstation Version 4.00″

  multi(0)disk(0)rdisk(1)partition(1)WINNT=″Windows NT

  Workstation Version 4.00 [VGA mode]″ /basevo /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機上實現,但是鑑於實際中的情況複雜多
變、各個作業系統版本眾多,因此眾多玩家在試驗時還是要小心為妙,多作備份。
(塞外風情站 bbs.imu.edu.cn)


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

相關文章