|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-05-08, 11:35 AM | #1 |
榮譽會員
|
多系統啟動表單的終結方案 - 2K/XP自帶的OS Loader!
前言
實現多重啟始的工具很多,如System Commander,bootstar, Linux的lilo,和WindowsNT自帶的OS Loader等等。其原理不外乎兩種:一是修改MBR(Master Boot Record),在MBR的最後用jmp指令跳到自己的代碼上來,從而控制引導過程;另一種方法是修改主分區裡第一個扇區的引導代碼,來實現多重啟始。 MBR(即主引導記錄),指的是硬碟的第0個柱面(cylinder)的第0磁道(track)的第0扇區(sector)。主分區,對於dos,windows等使用fat文件系統的操作系統來說,就是C碟; 在Linux下,則是指root文件系統所在的分區。 System Commander和lilo用的是修改MBR的方法;OS Loader則用後一種方法。修改MBR會造成嚴重的相容問題,可能被某些殺毒軟體誤認為是病毒殺掉。我不喜歡亂改MBR,所以一般用OS Loader。下面以linux為例說說怎麼利用OS Loader來實現多重啟始: 一、安裝OS Loader:假如想在硬碟上同時裝上Windows98,windowsNT和Redhat Linux,你可以先裝Windows98,然後安裝WindowsNT。WindowsNT裝完以後,OS Loader也就自動裝上了。如果這個順序有錯誤,你需要用到附件裡的程序和指令碼,它可以為你安裝上OS Loader,這時你的系統其實已經可以進行多重啟始了。 二、獲取各種OS的引導文件:在OS Loader再加一些操作系統,需要在裝完WindowsNT以後想辦法把其它OS的引導代碼讀出來,存到文件裡去,也就是要把主分區第一扇區的512字元讀出來。在DOS下,這可以用debug或是norton diskedit來做,也可以自己寫一個小程序來實現。 OS Loader安裝時所必須的文件如下: = = Ntldr - 隱藏唯讀檔 - 載入操作系統 = Boot.ini - 隱藏系統檔案 - 通常在x86電腦上建立操作系統載入啟動表單 = Bootsect.dos - 隱藏文件 - 在另一個操作系統被選擇是被Ntldr載入 = = Ntdetect.com - 隱藏唯讀檔 - 通常檢查有效硬體並建立硬體列表 = Ntbootdd.sys - 只用在從SCSI硬碟啟動的系統上 = 其實裝完OS Loader以後系統就已經有了一個bootsect.dos, 這個就是win9x的引導文件。下面用debug的方法通常不會用到。 debug -R cx cx 0000 200//設置讀取長度CX為512字元 -L 100 2 0 1 //讀取主啟始扇區至記憶體ds:100處 -N bootsect.w98 //假設你是在Win98下, 將啟始扇區文件存為bootsect.w98 -W 100//寫bootsect.w98文件 -Q//退出Debug程序 Linux裡有一個現成的實用程序可以用來直接讀寫扇區。 安裝Linux有兩點要注意的地方。 第一:在安裝lilo的時候,一定不要把lilo裝到MBR裡去,因為現在是想用OS Loader來做多重啟始。應該把lilo裝到主分區的第一扇區裡(注意,這裡的主分區指的不是C碟,而是安裝Linux的那個分區)。 第二:應該做一張啟動軟碟(bootdisk),以便你能夠進入到Linux裡。因為現在lilo沒有裝在MBR裡,暫時還不能直接從硬碟引導到Linux。在Linux中則按下面方法可得到Linux的啟始扇區文件: 以Red Hat Linux 6.0為例: #dd if=/dev/hda3 of=bootsect.lnx bs=512 count=1 這裡假設你Red Hat Linux LILO安裝在/hda3上,啟始扇區文件存為bootsect.lnx。 以FreeBSD3.2為例: #dd if=/dev/rwd02 of=bootsect.bsd bs=512 count=1 這裡假設你FreeBSD安裝在第二個基本分區上,啟始扇區文件存為bootsect.bsd。 將Linux啟始扇區文件存入DOS分區 按上述方法獲取的Linux啟始扇區文件會存放在Linux分區上,NT OS Loader無法直接讀取,需要將它儲存在NT OS Loader所在的分區上,一般是C碟。 以Red Hat Linux 6.0為例: #mount -t msdos /dev/hda1 /mnt #cp bootsect.lnx /mnt/bootsect.lnx 以FreeBSD3.2為例: #mount -t msdos /dev/wd0s1 /mnt #cp bootsect.bsd /mnt/bootsect.bsd 三、修改boot.ini文件 開啟Boot.ini文件,加入你想要引導的操作系統引導記錄,即可大功告成。如: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] C:\bootsect.w98="Microsoft Windows 98" C:\bootsect.lux="Red Hat Linux 6.0" C:\bootsect.bsd="FreeBSD Release 3.2" multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect 四、附件: 本文件為DOS下的RAR自解文件,下載後改名為.exe,可以在dos或windows下自解壓到c:\os目錄下(其中install指令碼基於c:\os目錄新增),大家可根據自已的實際情況修改。 本文件只提供了新增OS Loader表單的功能,若要啟動其它OS,再次強調:請注意不要將其安裝到MBR,只將它的引導模塊安裝到自身份區。,然後將其第一個扇區(512字元)提取來存成文件,加入boot.ini即可。 MS的osloader比較有趣,先出的版本不能引導後出的os, 所以.net server裡面帶的os loader最好用 可以引導MS以前的所有OS... 另外如果先裝xp,後裝2k, 造成xp不能啟動 只要把xp安裝碟的\i386\ntdetect.com和ntldr放到C碟即可 其他類推. 2K的winnt.exe,用於寫啟始區,ntdetect.com和ntldr正是XP的,.net沒有正式版,但我想XP的文件應該可以引導.NET,結果不行,我試過.. net的 基於rc2 en版本 ,中文表單還要一個bootfont.bin, 補充一些工具&資料給大家 : 1.工具: 補充一個自動修改boot.ini的小工具,這下不用手工去寫那個512K的引導文件了! 最新的bootpart 2.5版本。 BOOTPART 2.50 : Boot Partitition for Windows NT/2000/XP. New : support LBA large disk Easy tool to add a partition to the Windows NT multi boot menu (for example, OS/2 boot manager or Linux partition). NEW : Easy addition of Dos6.22 and Win95 in WinNT menu, repair the WinNT boot sector. Small freeware from G. Vollant (WinImage). Web : http://www.winimage.com/bootpart.htm 該版本全面支持win2k/xp,完善支持Linux,突破大硬碟限制,可以在xp的命令提示字元視窗下流暢執行。強烈推薦。 使用方法詳解:(可以打bootpart /?看幫助) bootpart :列出各分區的使用情況,並用數字標明分區號。 bootpart [分區號] [檔案名] :將操作系統所在分區的啟動信息儲存為一個文件,放在當前目錄中。若加再上一個操作系統的名稱則將啟動項增加boot.ini的啟動表單中,再加LBA參數,則突破lilo的大硬碟限制。這點對恢復linux的啟動最有用。例:bootpart 8 LBA bootsect.lnx Redhat Linux 意思為:將linux所在分區(本人的為8)的啟動信息儲存為bootsect.lnx文件,並加入到多啟動表單中,顯示名稱為「Redhat Linux」。 bootpart List :列出你多啟動表單的項目。 bootpart dos622 boot:C: 重建dos6.22的啟動信息。(若你不懂得如何安裝dos6.22系統,你只要將dos6.22的系統檔案複製到C碟中,執行該命令就等於安裝了。) bootpart win95 boot:C: 重建win95或win98的啟動信息。 bootpart winnt boot:C: 重建winnt/win2k/xp/net的啟動信息。 呵呵!這回不怕各種系統啟動,資料信息丟失了。 2.考資訊: http://www.tldp.org/HOWTO/mini/Linux+NT-Loader.html |
送花文章: 3,
|