Windows 2000 用OS Loader實現多重引導
實現多重引導的工具很多,如System Commander, 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,所以一般用OS Loader。 下面說說怎么利用OS Loader來實現多重引導: 舉例來說,我想在硬盤上同時裝上Windows98,windowsNT和Redhat Linux,怎樣才能實現多重引導呢? 你可以先裝Windows98,然后安裝WindowsNT。WindowsNT裝完以后,OS Loader也就自動裝上了。這時你的系統其實已經可以進行多重引導了。 但要想在這個基礎上再加一些操作系統的話,還需要再做一些工作。 如果足夠細心的話,在裝完WindowsNT以后,你會發現在C盤的根目錄下多了一個名叫bootsect.dos的文件,大小為512字節, 這是原來Windows98安裝在主分區第一個扇區里的引導代碼。 在安裝WindowsNT的時候,NT先把這個扇區的內容存到一個文件(即bootsect.dos)里,然后換上他自己的引導代碼,也就是OS Loader。 在進行多重引導的時候,如果選進入Windows98,OS Loader會把bootsect.dos讀進內存然后執行,從而引導到windows98。 在這里,我們要做的工作很簡單,就是想辦法把OS Loader的代碼讀出來,存到文件里去,也就是要把主分區第一扇區的512字節讀出來。在DOS下,這可以用debug來做,也可以自己寫一個小程序來實現。 但是如果裝Linux的話,問題就十分簡單了。Linux里有一個現成的實用程序可以用來直接讀寫扇區。 安裝Linux有兩點要注意的地方。 第一:在安裝lilo的時候,一定不要把lilo裝到MBR里去,因為現在是想用OS Loader來做多重引導。應該把lilo裝到主分區的第一扇區里(注意,這里的主分區指的不是C盤,而是安裝Linux的那個分區)。 第二:應該做一張啟動軟盤(bootdisk),以便你能夠進入到Linux里。因為現在lilo沒有裝在MBR里,暫時還不能直接從硬盤引導到Linux。 現在,裝完Linux后,用剛剛做的Linux啟動軟盤啟動,引導到Linux系統。 假設Linux裝在了第一個硬盤的第六個分區,那么在提示符下可以這么敲: dd if=/dev/hda6 of=bootsect.lnx count=1 回車 這句話的意思是把第一個硬盤第六分區(/dev/hda6)的第一個扇區的數據讀到文件bootsect.lnx里。 參數說明: if:in file(輸入文件) of:out file(輸出文件) count:讀寫次數 同樣可以把C盤第一扇區的數據讀到文件bootsect.wss里: dd if=/dev/hda1 of=bootsect.wss count=1 這就是OS Loader的引導代碼./dev/hda1就是dos下的C盤。 把這兩個文件copy到C盤的根目錄(當然也可以在其他地方)下。 再在C盤根目錄下找到boot.ini,除掉只讀屬性后用文本編輯工具打開。在[operating systems]段加上: C:bootsect.lnx='Linux' 存盤退出,再把boot.ini的只讀屬性加上。這樣就實現了用OS Loader引導Linux。 以后再裝別的操作系統時,有可能把OS Loader覆蓋掉, 這時只要再進到Linux里,使用dd命令: dd if=/dev/hda1 of=bootsect.new count=1 把新裝操作系統的引導代碼存到bootsect.new里,然后: dd if=bootsect.wss of=/dev/hda1 count=1 把OS Loader恢復回去。再在boot.ini里類似這樣加上一行: C:bootsect.new='new system' 就可以引導新裝的操作系統了。 順便提醒一下,每次重新編譯了Linux的內核(kernel), 都應該把lilo再讀出來: dd if=/dev/hda6 of=bootsect.lnx count=1 再把bootsect.lnx copy到C盤根目錄。否則使用了新內核的Linux很有可能引導失敗。 用OS Loader不是必須要裝WindowsNT,可以直接把bootsect.wss寫到C盤的第一扇區里, 再把boot.ini, ntldr, Ntdetect.com 拷貝到C盤根目錄下。
