《資訊技術》 磁碟引導開機(上) 科工所 黃耀輝 前言 目前大部份作業系統的安裝步驟都儘量自動化,連開機引導程序 也一併處理了。或許大家似乎感覺不到開機程序的存在,但它仍掌 握著作業系統的命脈,當它真的不見了(如病毒破壞或安裝不當), 可會動彈不得。 再者,如果善用「系統開機程序」,不管是系統啟動或備份將更 容易。故筆者想藉本文與讀者切磋心得,一起討論Windows、DOS環 境下的開機問題。 開機步驟 大致上,硬體(韌體)部份的啟動步驟約略如下(如果發現其中 有錯誤,可參考使用手冊,針對該部份進行檢查): 當電源供應器啟動且“Microprocessor timer chip”接收到良好 訊號後,CPU開始執行“ROM BIOS”(Basic Input-Output System), 而後執行POST(Power On Self Test,含CMOS、CPU、RAM、KeyBoard、 Video、Disk...),完成後,ROM BIOS將按照CMOS設置中的啟動順 序搜尋軟、硬碟驅動器及CDROM、網路服務器等有效的啟動驅動器, 讀入MBR(Master Boot Record,主系統引導記錄),然後將系統控 制權交給引導記錄,由引導記錄完成系統的啟動。 由於MBR與引導 扇區(boot sector)比較小,通常它主要任務是讀入第二個啟動碼 (loader Code),第二個啟動碼再再讀入第三個啟動碼,直到啟動 操作系統核心程式。 對硬碟而言,如果MBR有正確的引導記錄,即依選項指向至各相對 分割(Partition);否則尋找PBR(Partition Bot Record)table, 指向設定為active之分割。如果被指定分割之引導扇區有正確之啟 動碼,即載入相對之啟動程式,例如引導扇區為NT之啟動碼,則會 載入根目錄之ntldr引導程式;如引導扇區為9x之啟動碼,則會載入 根目錄之io.sys核心程式。 分割規劃 目前的硬碟容量都很大,妥善規劃是有必要的。筆者常應用SPFDisk (SPFDisk是一支綜合了『硬碟分割工具』以及『啟動管理程式』的 軟體,請詳見網址http://spfdisk.sourceforge.net/note.htm)來 管理分割。例如:建立、備份、隱藏、設定System ID等。主分割 (Primary)數量可達4個,而其中主分割之ㄧ可設為擴充分割 (Extended),建立一個新的邏輯分割(Logic)表;而邏輯分割又 可建立擴充分割,繼續循環延伸,使用者可視實際之需要作合適安 排。 當筆者安裝操作系統前,習慣先備份MBR,且每次只顯示一個主分 割,其餘同類分割都予以隱藏,避免系統互相干擾。等多系統全部 安裝完畢後再回存MBR,並使用多系統開機管理程序啟動作業系統。 (單)多系統開機程序 目前與開機管理(Boot Manager)有關的市售軟體甚多,大部份 必須安裝後才能執行,啟動碼安裝的地方有MBR、分割啟動磁區或分 割,也有些與作業系統混用。有些可能會因重寫MBR而造成某些備份 軟體無法辨識分割表。因需經安裝才能使用,那麼當系統當機後只 能藉該軟體所建立之急救片來應變了。 為避免有侵權嫌疑,故本文避開市售軟體部份,僅將介紹幾個使 用方便的軟體,如:SPFDisk、ntldr、” GRUB for DOS” 等。因 關係系統底層操作,具有相當危險性,若非熟悉,建議不要輕易嘗 試安裝於硬碟。讀者若有興趣,可參考後文之實際演練說明。 (一) SPFDisk   使用SPFDisk所建立的多系統開機程序,可安裝在MBR或分割。 安裝在MBR最方便,但相容性較差,可能導致很多軟體無法辨 識分割表(Partition table),而無法做備份。而安裝在啟 動磁區,相容性較高,會佔用一個分割,則該分割之System ID必須設定成SPF專用,且設為Active。DOS或Windows無法共 用該分割,故無法編輯該開機選單,要修改時仍必須透過 SPFDISK。   開機程序為光棒式操作,選單選項可設置隱藏同類主分割。無 法載入『引導碼映像檔』或『可開機磁碟硬像檔』,但SPFDisk 為單一檔案,圖形介面操作,使用容易,可隨時執行備份或重 建,很是方便。 (二) ntldr   ntldr是NT系統的開機管理程式,當開機程序被引導至某分割, 而該分割引導扇區為NT引導碼時,會載入根目錄下一個叫ntldr 的隱藏檔。ntldr會尋找並載入Boot.ini、Bootsect.dos、 Bootsect.w40、NTdetect.com、NTbootdd.sys等檔案。   其中Bootsect.dos、Bootsect.w40為啟動IO.sys的引導碼映像 檔,需要啟動DOS或9X系統時才需要,檔名可配合Boot.ini更 改;如果有SCSI設備才需要NTbootdd.sys檔。Boot.ini為可編 輯的開機選單,Boot.ini語法請詳 http://support.microsoft.com/?kbid=289022。   ntldr可重新導引至指定分割之引導扇區,或啟動『引導碼映 像檔』與『可開機磁碟硬像檔』,但不能隱藏分割。如果ntldr 是被其他多系統開機程序所引導時,會出現多重多系統開機畫 面,而ntldr也可再繼續引導其他多系統開機程序。   由於ntldr、boot.ini、NTdetect.com等檔案容易備份,故重 建很容易。不過引導扇區則必須經由作業系統安裝,或利用修 復控制台【註A】相關指令或bootpart(請詳見網址 http://www.winimage.com/bootpart.htm)等類似軟體安裝引 導碼。   至於Bootsect.dos、Bootsect.w40等『引導碼映像檔檔案』, 可使用sys.com、bootpart等類似軟體安裝引導碼於引導扇區 後,再用savepart、winmbr或debug.exe相關工具軟體製造該 檔案。由於它們跟分割配置有關,所以很難與其他電腦共享, 但在同台電腦裡是允許被其他多系統開機程序所啟動的。   Ntldr若要啟動『可開機磁碟硬像檔』時,必須使用VFloppy (請詳http://download.pchome.net/php/dl.php?sid=15880/) 等類似軟體製作『引導碼映像檔』,而且僅支援標準格式之映 像檔(Image)。 (三)“GRUB for DOS”   由於DOS界面單純,容易利用軟碟開機或製成磁碟映像檔由光碟 開機後啟動,而且DOS環境下有甚多程式或指令可供運用,例如 驅動光碟、網路連線、驅動SCSI或USB等外部設備。解壓縮、編 輯、複製或移動檔案等。因此在DOS環境下再起動多系統開機程 序,甚具靈活性。而“GRUB for DOS”(GRand Unified Bootloader is a GNU project for multi-OS boot loader。請詳見網址 http://newdos.yginfo.net/grubdos.htm)或LoadLin(請詳見 網址http://elserv.ffm.fgan.de/~lermen/,啟動Linux系統, 選單可用DOS批次檔)等多系統開機程序皆為此類上選,“GRUB for DOS之可編輯式選單為menu.lst;但亦可進入命令列模式, 直接輸入指令。它允許分組配置分割之隱藏,可指向分割之引導 扇區,載入引導碼,或載入『引導碼映像檔』檔案(請見上面 ntldr相關描述),啟動系統。更可不需『引導碼映像檔』 (ntldr則需要),直接啟動『標準磁碟映像檔』。   使用時可將一分割設為DOS開機(使用 Sys.com [drive], format /s [drive]或bootpart等類似軟體),其餘各種需要的 DOS製成可開機磁碟映像檔(核心檔案即可),將它們與 “Windows 9X”同放在此分割,但要注意各『引導碼映像檔』 用途不同,請適當區分命名。(待續)