OSLoader實現多系統方案(轉)

ba發表於2007-08-15
OSLoader實現多系統方案(轉)[@more@]本文僅做參考

現今有許多系統載入程式,例如bootstart,bootselect,OS bootmanager...當然少不了著名的System com-mander 。但是這些程式有的要佔用一個主引導區,有的每次開機的時候都要寫一次MBR,總之使用雖然挺方便但是很容易被一些防毒軟體認為MBR有病毒(我曾經使用SC4.0後用KV300防毒,結果KV300發現MBR有病毒,殺掉後SC4就有問題了)。而且每次開機都寫一遍mbr,自己心裡總覺得有點不舒服。於是希望使用一種安全又沒有上述軟體缺點的多系統載入程式,以滿足我既希望使用MS的系統,又想嘗試Unix的穩定和強大的願望。微軟的Win NT 本身就附帶了一個很好的多系統載入程式--OS Loader。

1.使用OS Loader的好處
它不單獨佔用一個主區,而且每次啟動時不需要重寫MBr,增加啟動的item也很方便。因此我選擇了它。但是它有個比較大的毛病--當新安裝了其他型別的系統,它是不能夠檢測得到,而且也不會自動增加相應的item 結合個人的實踐已經得到了比較滿意的解決。可以實現MSOS+Linux+BSD+Unix多啟動。如果要增加其他型別的系統的話,也相當容易。


2.如何安裝OS Loader實現多啟動
首先你不需要真正地安裝Winnt 4.0/5.0,你現在需要的是隻是OSLoader這能進行多引導的部分。方法如下:
在windows下的命令列提示符下,假設你的光碟機是I:(我的光碟機就是I:)。可以按照下面的做法去做(#號是註釋)
" md c: tboot #建立一個專門的目錄
md c: tbootsystem32 #建立放置ntoskrnl.exe的目錄
md c: tbootwinnt #放置winnt.exe和dosnet.inf的目錄
copy I:i386winnt.exe c: tbootwinnt
copy I:i386dosnet.inf c: tbootwinnt
copy I:i386 tldr c:
expand I:i386 toskrnl.ex_ c: tbootsystem32 toskrnl.exe #解壓縮NT的核心
copy I:i386ootfont.* c: #複製文字檔案以便在開機是可以顯示中文
"
你或者將上面的命令列寫成批處理檔案來自動完成。複製好後,退到純dos7下,執行lock命令,要不然安裝OS Loader的時候一定會報錯而當機。接著執行" c: tbootwinntwinnt.exe /b" 。隨後它會報錯,不理會它。
按F3退出。這時候OS Loader已經將MBR重些了一次。下一次啟動的時候就會出現OSLoader的啟動畫面。不過
你還得自己手動改C:oot.ini的內容以適合你的要求。


3.哪些檔案是必須的
要使用OS Loader,必須的檔案只有4個: ntldr、dosnet.inf、winnt.exe、ntoskrnl.exe。在上面安裝的過
程中可以看得很清楚,總共才不到1MB。如果你嫌麻煩,可以到我的主頁上下載安裝檔案(是我製作好的標準
安裝程式)。另外,你如果使用的是NT 4.0中文版,那麼你可以將bootfont.bin檔案也複製到c:,這樣啟動
選單就可以顯示中文。


4.如何使用
一般在第一次使用時,先退到dos下,進入ntbootwinnt目錄,不過注意在執行winnt.exe之前必須對分割槽進
行解鎖,也就是鍵入lock命令,否則一執行winnt.exe就會導致當機。Lock完成以後,鍵入"winnt/b",安
裝程式會報錯,無須理會它,按f3推出即可。OS Loader已經重寫了MBR,並且可以引導你的作業系統了。不過
它只能夠識別到Dos6.22或者Windows(我估計是透過檢查c盤的io.sys,command.com,msdos.sys 等檔案來識
別的)。要想引導其他型別的系統還要費些工夫。


5.多引導的原理
根據水木清華BBS上面的相關文章,結合我自己的實際經驗和理解,我認為0OS Loader的原理是:把來自其它
作業系統的啟動扇區資訊變成一個檔案,大小一般是512位元組,在啟動OS Loader 的時候,它讀入這檔案並啟動
選擇的作業系統,也就是說,這個系統或是不同模式的Windows NT,或是任何其它型別的作業系統,例如Linux
、FreeBSD。根據以上原理,我們可以知道要引導多系統的話,關鍵是如何獲取相應的啟動扇區前
512位元組的啟動資訊。一般對於Linux等類Unix系統,可以用dd 命令來獲取。而對於Windows/Dos/Nt,一般沒有類似dd這類命令。如果是想獲取不是c盤的啟動資訊,可能要進入Linux等系統下面,用dd命令來獲取。



6.如何引導其它型別的系統的例項
a.Linux 系列
我的方法是用PQmagic4.0建立一個Linux ext2主分割槽並啟用為活動分割槽,然後建立一個Swap分割槽。重新啟動後用RedHat 的安裝光碟來啟動,正常安裝Linux。注意:在選取安裝LILO在MBR還是它所在的主分割槽的時候,一定要選安裝在Linux分割槽上!否則LILO將會代替OS Loader。
  安裝結束後,進入Linux的命令列,然後先將C盤掛上。方法如下:
  #mkdir /mnt/c    #建立一個c資料夾,C盤準備掛在c上
#mount -t vfat /dev/hda1 /mnt/c   #將C盤掛在c上 ,不過是否hda1則要看你的c盤是不是第一個主分割槽
#如果是第二個主分割槽就是hda2,如此類推然後,確定你的Linux分割槽(指Ext2分割槽)是那個裝置,例如hda2。如果你不知道,可以鍵入" mount"看看就可以了。弄清楚後,假設你的Linux 分割槽是hda2 ,在命令列下輸入:
#dd if= /dev/hda2 of=/mnt/ntboot.lnx bs=512 count=1
對以上命令我想解釋一下,它的大致意思是: dd if= Linux分割槽的盤號(或者對應的設
備) of=啟動扇區檔案存放的路徑 bs=對應扇區前?位元組 count=1 。在本例中Linux分割槽的盤號是/dev目錄下的
hda2 ,將啟動扇區前512位元組存成名稱為ntboot.lnx,在/mnt目錄下的檔案。
然後輸入:
#cp /mnt/ntboot.* /mnt/c
把扇區檔案複製到C盤下面。這樣獲取啟動扇區前512位元組資訊的任務就完成了。Reboot
後在進入C盤,再用回Pqmagic將C盤啟用成活動分割槽,並且在c:oot.ini裡面新增一下資訊:
" c: tboot.lnx = "RedHat Linux 6.0 " " 注意它的格式,它是增加在[Operating System]下面的。

B.FreeBSD 系列
在水木清華的BBS上面,關於引導FreeBSD的方法大致是做一張Linux的引導盤,含有LILO的。然後用軟盤上
的LILO啟動FreeBSD,獲取軟盤上的扇區檔案才能正常引導等等(由於一時間找不到相關資料,所以這些只是
憑印象的記憶,可能有誤)。而根據上面的原理,我認為完全可以仿照獲取Linux啟動扇區的方法來獲取BSD啟
動扇區資訊。只是要小心分辨到底在BSD下面那個是它的引導分割槽。
具體做法是:
正常安裝FreeBSD,在選取將載入程式安裝的位置和方式的時候,注意一定不要選安裝在MBR,選第三項。目
的也是和上面的一樣,讓MBR由OS Loader來佔有。重新啟動的時候進入BSD(如果在安裝FreeBSD的時候你沒有將它啟用為活動分割槽的話,你只能透過軟盤啟動FreeBSD了),也是使用dd命令。不過相對於Linux對於硬碟命名而言,FreeBSD不是用had或者hdb等命名方法。
它用wds0,wds1等命名。在本例中FreeBSD的分割槽是wds03。先將c盤掛上,然後所以輸入:
#dd if =/dev/wds03 of=/mnt/ntboot.bsd bs=512 count=1
#cp /mnt/ntboot.* /mnt/c
最後Reboot,進入c盤,用Pqmagic將C盤重新啟用成活動的,並且在boot.ini中增加相應的item即可。可以說安裝FreeBSD並且實現多引導並不象水木清華BBS上講的那麼複雜,不過也許是因為我使用的FreeBSD版本較高,以及我是在FreeBSD下獲取啟動扇區的原因吧。



7.關於使用OS Loader的一些FAQ
a.如果想引導Dos6.22如何做?
可以這樣做,做一張Dos6.22啟動盤備用,另外先備份c:ootsect.dos為ntboot.w98。然後在進入windows之
前按F8,進入第七項。啟動硬碟上的Dos6.22這是c盤上的windows的dos7的io.sys等檔案會變成了字尾是.w40
的檔案了。這是重新啟動,用剛才的軟盤啟動。然後在A:下sys c:。進入C盤的ntbootwinnt目錄,執行"winnt
/b",這時候生成的c:ootsect.dos就是Dos6.22的啟動扇區檔案(剛才的ntboot.w98就是Win98的啟動扇區文
件)。同樣將c:ootsect.dos 備份成ntboot.dos。然後在boot.ini中新增相應的item。

B.怎樣修改預設的啟動選項
編輯c:oot.ini,注意在[Boot Loader]下面有一個Default=?的行,修改?成為你希望作為預設系統所對應
的啟動扇區檔案即可。例如我改成:Default= c: tboot.lnx ,對應就是啟動時預設進入Linux。

C.對於大硬碟如何解決多系統的安裝
這是個挺麻煩的問題,一般對於>1024柱面,採用LBA模式的硬碟是不能夠將Linux 或者FreeBSD等系統安裝在
超過8.4GB之後的。因為由於這個限制使LILO或者Boot Easy失效或安裝失敗。一般儘可能將要啟動的系統安裝
在<1024柱面的空間。詳細的解決方法可以參考我另外一篇文章《10.1G硬碟安裝多系統手記》。


8.後記
透過以上方法,我已經成功地安裝了Windows9x/NT /dos6.22 ,Linux,FreeBSD等系,Unix也嘗試過,不過由
於Linux等也和Unix差不多,所以沒有長期使用Unix。在Win95/98, Win NT4.0/5.0 中英文版,Dos6.22, Red
-Hat Linux 5.0/5.1/5.2/6.0,FreeBSD 2.2.6/3.0/3.2上透過。現在給出我一直使用的boot.ini內容給各位參
考#這個檔案很簡單,但是包含了三類系統。儘管BSD和Linux都是類Unix,但是還是不同。


[Boot Loader]
Timeout=30
Default=C:
[Operating Systems]
c: tboot.lnx = "RedHat Linux release-6.0 "
c: tboot.bsd = "FreeBSD stable ver 2.2.6 "
C: = "MS Windows 98 4.10--1998"

對於最龐大的多系統引導檔案可以如下:
[Boot Loader]
Timeout=30
Default=C:
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows NT 中文工作站4.00"
multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows NT 中文工作站4.00 [安全模式
]" /basevideo /sos
multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows 2000 專業版"
multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows 2000 專業版 [安全模式]"
/basevideo /sos
C: ="主引導區記錄"
C: tboot.w98="Microsoft Windows 98"
C: tboot.dos="MS-DOS 6.22" /Win95DOS
C: tboot.bsd="Free BSD 2.2.6"
C: tboot.rh6="RedHat Linux 6.0"
C: tboot.s35="Slackware Linux 3.4"

總共10個item,螢幕幾乎都被佔滿了,也真夠嚇人的。我想即使是要求很高的使用者也會對OS Loader滿意吧。
因為System Commander能做的它也基本上能做,關鍵是不會去搶MBR,不用次次都擦寫MBR。如果配合NT 中文
版的OS Loader V4.00,那麼就可以在啟動選單顯示中文,這可是其它的引導軟體沒有的優點啊!關於使用NT OS Loader來實現多系統引導的原理、方法和實戰到這裡就結束了。至於安裝多少個系統,有沒有必要使用它,這就看個人需要了。

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

相關文章