close
"開機" 萬言書 - PART I(本篇有版權, 不宜公開)

開機?琳達你又在搞什麼飛機啊!開機不就是把電源打開就好了嗎?還有什麼花樣啊!開機的確很簡單,你只要拿出你可愛的食指按下電腦的電源開關,那就一切萬 事 OK 了。可是如果今天我們 "電腦大哥" 跟你鬧彆扭,硬是無法正常開機進入 Windows 2000 作業系統時,此時你又該如何是好呢?難道就一不做二不休的讓它 "重新投胎做人"嗎?


不知各位讀者是否想過當你按下電腦的電源開 關到你可以看到 Windows NT / 2000 / XP 的登錄畫面,並進而輸入使用者帳號和密碼,成功的登入到 Windows NT / 2000 / XP(以下以 W2K 統稱之)作業系統,這中間的開機過程到底做了那些不為人知的事?如果有一天你無法開機成功,是否只有一個重新安裝的命運呢?也許只是一個重要的開機檔案遺 失或損壞了,此時只要將其復原回去即可。這些問題都牽涉到 W2K 在開機的過程中做了那些事,你可有很好奇?亦或是不得其門而入?今天可愛的琳達就要來為你揭開這神秘的面紗。

W2K開機程序

* 初始階段(Initial Phase)
* 開機載入階段(Boot Loader Phase)
* 核心載入階段(Kernel Load Phase)
* 核心初始化階段(Kernel Initiation Phase)
* 登錄階段(Logon Phase)


W2K 的開機過程大致分為以上 5 個階段,但這個順序和中間的處理過程會因硬體平台而有些不同,但大致上不脫中心架構。例如 Intel x86 系統和 RISC(Reduced Instruction Set Computing,精簡指令集運算)系統的開機過程及其必備的開機檔案就有著些許的差異,本篇專業名詞是針對 Intel x86 系統電腦的開機程序來作探討。首先我們來看一下 W2K在初始階段中做了那些動作?

初始階段(Initial Phase)

* 電源啟動自我檢測(POST,Power On Self Test)
* 選擇開機裝置(Selecting a Boot Device)
* 讀取主要啟動記錄(MBR,Master Boot Record)
* 讀取分割區開機磁區(PBS,Partition Boot Sector)


電源啟動自我檢測(POST,Power On Self Test)
當 你打開電源或重新啟動電腦時,電腦將會啟動存放在 BIOS 中的 POST(電源啟動自我檢測)程序,POST 主要的工作是負責對電腦各硬體設備做好初始設定與基本測試工作,以保證電腦能正常運作。例如確認實體記憶體(Physical Memory,RAM)大小及硬體組件(例:鍵盤、顯示器、磁碟機、Parallel Port、Serial Port、系統時間等)是否存在或可否運作。一旦電腦執行完自己的 POST 程序之後,其它裝在電腦中帶有自己 BIOS(Basic Input/Output System)的介面卡(例:顯示卡),也會執行其自定的 POST 工作程序。

* 註:所謂 BIOS 就是存放在電腦主機板上 Flash RAM(Random Access Memory)中的程式碼,其主要負責的工作除了提供電腦各硬體裝置的中斷服務外,同時當電腦開機時尚需對各系統作測試及初始設定電腦各硬體裝置,負責後 半部工作的程式碼,就是 POST 程式。

選擇開機裝置(Selecting a Boot Device)
結束完 POST 的檢測工作後,接下來將會根據定義在 BIOS 中的開機順序來選擇開機裝置,例如 BIOS 定義的搜尋順序是 A:--> C:--> CDROM(使用者可以根據實際需要自行修改 BIOS 開機裝置搜尋順序),則其將會進行如下開機裝置順序的尋找動作:



按照一般正常的開機狀況來講,我們通常會由硬碟來扮演開機裝置。

讀取主要啟動記錄(MBR,Master Boot Record)
當 硬碟被決定為開機裝置後,BIOS 會將位於開機硬碟的第一個磁區(即 MBR,Cylinder 0、Head 0、Sector 1)前面 446 Bytes 的啟動程式載入記憶體中執行,此時 BIOS 就將執行權交給 MBR 而功成身退了。MBR 中的啟動程式之主要工作是搜尋 MBR 中的硬碟分割表(Partition Table)記錄,以找到啟動分割區(Active Partition)所在位置,即硬碟分割表中的各分割區記錄的第一個 Byte(啟動狀態)若標示為 80(16)者,則該硬碟分割區即為啟動分割區(又稱為系統分割區),一個硬碟最多只會有一個分割區是啟動分割區。若 MBR 無法從硬碟分割表中得知系統分割區的位址所在或硬碟分割表己毀損,則會顯示 "Invalid partition table" 錯誤訊息。

* 註:在磁片(Floppy Disk)上是沒有所謂 MBR 這塊區域,因此當選擇開機裝置為軟碟時,則會省略這個步驟,而直接跳到下個步驟找尋開機磁區(Boot Sector)。雖然每顆硬碟都有包含 MBR 這塊區域,但 MBR 前面 446 Bytes 的啟動程式卻不一定都會用到,除非這顆硬碟是開機硬碟,不過 MBR 中的硬碟分割表,倒是一定會用到,要不然怎知硬碟的分割狀況。



如果 MBR 的內容毀損了,
該如何修復還原,
以利開機工作正常往下執行?

讀取分割區開機磁區(PBS,Primary Boot Sector)
當 MBR 啟動程式從硬碟分割表中得知系統分割區(System Partition)所在位址後,其會將位於系統分割區之開機磁區(Boot Sector,即該分割區的第一個磁區)中的開機程式(Boot Program)載入到記憶體執行,並依照開機程式中的設定去找尋 NTLDR 程式的所在位置,以便載入 NTLDR 檔案到記憶體執行,並且同時將控制權轉交給 NTLDR 而結束 MBR 啟動程式的工作。

若 MBR 從系統分割區找不到開機磁區的程式時,則會顯示 "Error loading operating system" 或 "Missing operating system" 錯誤訊息。如果是 NTLDR 這個檔案不見或毀損,則可能會顯示如下的錯誤訊息:
NTLDR is missing
Press any key to restart

如果開機裝置為軟碟時,而磁片的開機磁區又無法提供開機(Bootable)能力時,則會顯示如下的錯誤訊息:
Non-System disk or disk error
Replace and strike any key when ready

* 註:硬碟的每一個分割區都有開機磁區(Boot Sector),開機磁區中可能包含一些可執行或偵測的程式碼外,尚包含該分割區的檔案系統資訊,這些資訊是在該分割區格式化時建立的,並會因該分割區的 檔案系統(例:FAT、FAT32、NTFS)不同而有所不同。如果這個開機磁區是位於開機硬碟的啟動分割區(Active Partition),則這個開機磁區有一個特別的名字叫做主要開機磁區(Primary Boot Sector),PBS 中擺放著可啟動作業系統的程式碼,當在安裝 W2K時會對其中的內容稍做修改,以便在開機時可以尋找到 W2K 作業系統的開機載入程式(Boot Loader)- NTLDR,並將其載入至記憶體執行,當然 PBS 的內容也會因不同的作業系統而有所不同。
* 註:NTLDR 是一個隱藏唯讀系統檔案,其主要負責的工作有控制作業系統的選擇、硬體的檢測、W2K 作業系統的核心程式載入等。


如果 PBS 的內容毀損了,該如何修復還原;如果出現 "NTLDR is missing" 的錯誤訊息時又該如何修復還原,以利開機工作正常往下執行呢?

OK!我們今天" 開機" 的故事就到此暫告一段落,欲知詳情,別忘了下週同一時間,敬請收看 "MS Server 電子雜誌" 的 "開機" 萬言書 PART Ⅱ。
----------------
吳北北

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Estar007 的頭像
    Estar007

    Never give up!永不放棄

    Estar007 發表在 痞客邦 留言(0) 人氣()