【轉貼】磁碟引導開機 科工所 黃耀輝





purk
2005-07-13, 10:22 PM
http://www.ascc.net/nl/93/2004/02.txt
《資訊技術》

磁碟引導開機(上)

科工所 黃耀輝

前言

目前大部份作業系統的安裝步驟都儘量自動化,連開機引導程序
也一併處理了。或許大家似乎感覺不到開機程序的存在,但它仍掌
握著作業系統的命脈,當它真的不見了(如病毒破壞或安裝不當),
可會動彈不得。

再者,如果善用「系統開機程序」,不管是系統啟動或備份將更
容易。故筆者想藉本文與讀者切磋心得,一起討論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”同放在此分割,但要注意各『引導碼映像檔』
用途不同,請適當區分命名。(待續)

http://www.ascc.net/nl/93/2005/02.txt

《資訊技術》

磁碟引導開機(下)

科工所 黃耀輝

(文續第2004期第28頁)

實際演練

讀者或許看了前(2004期)文說明仍不知所以然,因此筆者想使
用軟碟做綜合說明,讓讀者對操作有較清楚的概念,讀者若有興趣
可做做看。

1.首先準備一張1.44M之軟碟片,請不要設為防寫,放進軟碟機
(假設為A:)。

2.到http://www.winimage.com/下載winimage(shareware),執行
安裝。

3.到http://freedos-32.sourceforge.net/release.html下載
fd32-image(檔名為fd32002b.zip),解壓縮後會有一個fd32.img
『標準磁碟映像檔』,先放在硬碟。接者執行winimage,打開
fd32.img,僅保留grub資料夾與裡面全部檔案,其餘皆刪除,再
用滑鼠點選Disk->Write Disk,寫入軟碟片。本磁碟片為Linux版
的GRUB,但格式為fat,檔案可在DOS或Windows環境下處理。

4.到微軟網站或http://www.bootdisk.com/下載DOS及2000(或XP)
之『開機磁碟映像檔』,先放在硬碟。然後執行winimage,打開
DOS映像檔,再用滑鼠點選Image→“Boot Sector Properties”
→ Save →“boot Floppy file”存為dosa.bin(檔名可自設)。
再打開2000(或XP)映像檔,用滑鼠點選Image→“Boot Sector
Properties”→ Save →“Boot Floppy file”存為nta.bin(檔
名可自設)﹞W述dosa.bin為啟動軟碟Io.sys之『引導碼映像檔』;
nta.bin為軟碟啟動setupldr.bin(與ntldr同)之『引導碼映像檔』。

5.請將上述之dosa.bin與nta.bin複製到軟碟,再到Windows 2000或
XP之啟動分割,將ntldr、boot.ini、NTdetect.com複製到軟碟
(請先打開資料夾選項,暫時取消『隱藏保護的作業系統檔案』、
隱藏檔案和資料夾→顯示所有檔案和資料夾)。再到軟碟,將ntldr
更名為setupldr.bin。

6.請合法複製DOS核心檔案Io.sys、msdos.sys、command.com等檔案
到軟碟根目錄。

7.到http://nu2.nu/jo/下載jo.sys,存到軟體根目錄。當MSDOS啟
動時會提示使用者按鍵,是否要重新指向CDROM引導扇區,繼續導
引光碟開機。

8.到http://newdos.yginfo.net/grubdos.htm下載“GRUB for DOS
0.1.4”(檔名為grub014.zip),先解壓縮到硬碟,僅保留boot
資料夾(含裡面全部檔案)及根目錄之grub.exe等檔案,其餘皆
刪除,再將留下的檔案複製到軟碟。

9.接著,到軟碟grub資料夾內,使用一般文書編輯軟體打開menu.lst
檔,參考該軟體使用說明或下列範例修改內容。

範例:(#為說明行,可捨去)

#等待30秒,若未按鍵則自動啟動第二個選項。
timeout 30
default 2

# Entry 1:第一個選項。啟動A碟根目錄dosa.bin,而dosa.bin會
# 載入A碟根目錄之io.sys,再由io.sys繼續載入其他程式。
title Boot from Floppy A:
root (fd0)
chainloader (fd0)/dosa.bin

# Entry 2:第二個選項。啟動A碟根目錄nta.bin,而nta.bin會載
# 入setupldr.bin,根據boot.ini再次引導。因本例boot.ini係複
# 製自硬碟,故啟動程序也會與之相同,可當急救用。
title Loadin A: ntldr
root (fd0)
chainloader (fd0)/nta.bin

# Entry 3:第三個選項。指向第一個硬碟之第一分割,載入引導碼
# (需正確才能往下導引),將其設為active。隱藏第一個硬碟之
# 第二、三分割(假如有此分割的話)。
title HD0-0
unhide (hd0,0)
hide (hd0,1)
hide (hd0,2)
rootnoverify (hd0,0)
chainloader +1
makeactive

# Entry 4:第四個選項。指向第一個硬碟之第二分割,載入引導碼
# (需正確才能往下導引),將其設為active。隱藏第一個硬碟之
# 第一、三分割(假如有此分割的話)。
title HD0-1
unhide (hd0,1)
hide (hd0,0)
hide (hd0,2)
rootnoverify (hd0,1)
chainloader +1
makeactive

10.如選DOS開機,可事先於CONFIG.SYS內加入install=grub.exe,
或於autoexec.bat內加入
“grub.exe --config-file=(fd0)/boot/grub/menu.lst”,自
動開啟選單;也可進入DOS後再執行。Grub.exe後如未加參數,
則預設值為“(hd0,0)/boot/grub/menu.lst”。若找不到menu.lst
則進入命令列模式,由使用者自行下達命令。其中有一項功能為
載入『標準開機片映像檔』模擬軟碟開機,轉錄該軟體說明如下
(dos98se.img為位在第二個硬碟第一個分割之『可開機磁碟映
像檔』):

map (hd1,0)/dos98se.img (fd0)
chainloader (hd1,0)/dos98se.img
rootnoverify (fd0)
boot

結語

由於目前新台幣三、四千元左右即可買到80G以上的硬碟,使用者
對如何妥善規劃分割,安裝多系統等課題,益感興趣。尤其在家裡,
因空間、經濟或管理因素,多人共用一台電腦的情形相當普遍。如
果熟悉分割管理與多系統開機程序,讓各操作系統有適當的獨立與
共享,將提高電腦使用效益,減少管理界面。而且有助於系統的模
組化安裝、備份或重建【註B】。(本文作者任職於本院科工所)
(全文完)

〔附註〕

註 A:

Description of the Windows XP Recovery Console 請詳

http://support.microsoft.com/default.aspx?scid=kb;EN-US;314058

Description of the Windows 2000 Recovery Console 請詳

http://support.microsoft.com/default.aspx?scid=kb;EN-US;229716

註 B:

  以Windows作業系統而言,可備份與回存驅動程式,可清除安全性識
別碼(SID)。可將「我的文件夾」、email、「我的最愛」、fonts、
userprofiles等重新設定,轉向其他分割。各種小型工具軟體可參
考『光碟開機系統』之操作模式(請詳http://www.911cd.net/forums),
整理成準綠色軟體放於其他分割。這些都有利於個人資料備份與回
存,不致因丟失作業系統而盡毀。而作業系統與大型應用軟體若不
想重新安裝,則可由備份服務器回存(網路下載或儲存媒體拷貝),
再使用本文介紹的方式,重建MBR與引導扇區,啟動作業系統。