Windows NT/2000/XP開機過程研究


   從開啟電腦電源開始, 一直到螢幕上出現登入交談窗的這段過程, 都屬於 Windows
NT 的開機過程。當然, 任何作業系統的開機過程不外乎是將系統核心 檔案從磁碟或 BIOS
中載入記憶體、並加以執行, 接著再對整個系統進行初始 化的動作, 然後等待使用者的
操作; Windows NT 亦然, 現在就讓我們一起來瞧 瞧 Windows NT 的開機過程。

   經常自己組裝、維修電腦的讀者或許都曾經在電腦 POST 的時候發生一些小問 題,
關於這方面的問題解決, 您可以參考主機板所附上的使用手冊, 或是參考坊 間的電腦 DIY
書籍。

   MBR 載入 Active Partition 的 PBS

   完成 POST 的動作之後, BIOS 會根據 CMOS 上的設定, 到開機磁碟(通常都 是硬碟
)的第0軌讀取、執行 MBR(Master Boot Record)裏面的程式。MBR 的 作用是讀取磁碟分割
表(Partition Table)裏面所設定的 Active Partition, 說得更 精準一點, MBR 會讀取、
執行 Active Partition 第 0 個磁區(Sector 0)的內容, 這個磁區稱為 Partition Boot Se
ctor, 而在 PBS 裏面放著一段可以用來載入作業 系統的程式, 這段程式是裝設作業系統
時, 由作業系統所放入的。正因為 MBR 啟動了 PBS 的執行, 所以現在整個電腦即將進入
載入作業系統的動作。 當然, 如果 MBR 找不到 Active Partition, 那麼 MBR 就會在螢
幕上顯示像 Missing Operating System 等等的錯誤訊息, 所以如果您的 Windows NT 無
法正 常開啟, 而您又在螢幕上看到類似這樣的錯誤訊息, 原因大多就是出在硬碟的磁 碟分
割表。

   PBS 載入 Windows NT 的 OS Loader

   PBS 是一段由作業系統提供的程式, 它的目的是用來載入作業系統, 而首先被 PBS
載入的 Windows NT 開機檔案就是 ntldr, 您可以在 Windows NT 電腦的 第一顆硬碟根目
錄找到這個檔案, 而且 ntldr 也只能放在這裏, 否則 Windows NT 將無法啟動。因為 nt
ldr 是個系統檔案, 所以您必須調整檔案總管的檔案檢 視選項, 或者在 DOS 視窗中替 d
ir 指令加上 /a 參數, 才能找到這個檔案。 ntldr 肩負著啟動 Windows NT 作業系統的
重責大任, 整個 Windows NT 系統 的載入過程都是由它所主導。不過除了 ntldr 之外, 還
有些檔案也必須與它同在 第一顆硬碟的根目錄之中:

   * Ntdetect.com 是 Windows NT 開機時, 用來偵測硬體周邊的程式。

   * bootfont.bin 提供了 Windows NT 中文版開機時的中文字形。

   * Boot.ini 這是個 text 文字檔案, 它記錄了 Windows NT 時的選項內容。

   * Bootsect.dos 它的內容是 Windows 95 或 DOS 版本的 PBS, 如果您利用 NT OS L
oader 對 DOS 與 Windows NT 進行多重開機, 那麼也必須有這個檔案。

   * Ntbootdd.sys 如果您裝設了 SCSI 介面的硬碟, 那麼也必須有這個驅動程式。

   多重開機選項

   當 ntldr 開始執行之後, 您會在螢幕上看到如圖1 的多重開機選項畫面, 多重開
機選項是 ntldr 根據 Boot.ini 的內容而決定的, 而 Boot.ini 是個 text 文字檔, 因此
您可以自行修改 Boot.ini 的內容而改變多重開機選項。 之前曾經提到 Bootsect.dos, 這
個檔案的內容是 Windows 95/DOS 版本的 PBS, 如果您利用 OS Loader 的多重開機選項選擇
以之前裝設的 Windows 95 或 DOS 來開機, 那麼 ntldr 將會載入 Bootsect.dos 的內容
, 並將控制權轉交給 它, 接下來, 您的電腦就會以 Windows 95 或 DOS 來開機了。

   偵測硬體周邊設備

   如果您在多重開機選項中是以 Windows NT 作為開機作業系統, 那麼接著 ntldr 還
會執行 Ntdetect.com 來偵測電腦的硬體周邊設備, 而 Ntdetect.com 會將電腦 硬體的偵測
結果傳回給 ntldr, 這時候螢幕上會顯示「NTDECT V1.0 正在檢查硬 體...」。

   選擇硬體設定檔

   接下來 ntldr 會在螢幕上顯示一段文字, 提示您是否要更換硬體設定檔, 如果您
這時按下了空白鍵, ntldr 會出現一個讓您選擇硬體設定檔的畫面; 但如果您並 沒有按下空
白鍵, ntldr 將會載入預設的硬體設定檔。

   或者您也可以先按下空白鍵, 再在進入選擇硬體設定檔的畫面以選擇上一次可以 順
利開機的硬體設定, 有時候您可能會需要這個功能讓您順利啟動 Windows NT。

   您可以利用滑鼠按鈕雙按控制臺中的系統圖示, 再以系統內容交談窗的硬體設定 檔
頁來處理有關硬體設定檔的設定。如圖2, 您可以復制、刪除硬體設定檔, 也 可以修改修改
硬體設定檔的內容或名稱, 還可以調整 ntldr 等待使用者選擇硬體 設定檔的時間。

   載入系統核心

   接下來, ntldr 將要載入 Windows NT 的系統核心了, 在這個時候, ntldr 將會
載入 Windows NT 核心檔案, 也就是 Ntoskrnl.exe, 以及 Hal.dll(Hardware Adaptation
Layer)您會在黑底白字的螢幕上看到許多點(.)陸續的顯示在螢幕 上, 然後 ntldr 將讀取
登錄系統 HKEY_LOCAL_MACHINE\SYSTEM 的內容。

   Windows NT 將開啟作業系統時, 所有與硬體相關的資料通通放在 HKEY_LOCAL_MACHI
NE\SYSTEM\ControlSetXXX 裏面, 如下頁圖3, 這是我電 腦的 Windows NT 登錄系統資料
, 你可以發現其中有 ControlSet001、 ControlSet002 等兩筆 ControlSetXXX 機碼。然
而, 到底哪一個機碼會在 Windows NT 系統開機時被載入使用呢?

   關鍵就在於 Select 機碼的 Default 數值的內容了。如圖3 的右窗格, Select 機
碼的 Default 數值是 1, 這表示HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001 機碼中的資料
將會被用作Windows NT 系統開機時的硬體預設資料, 如果你曾 在如圖4 的硬體設定檔/設
定復原功能表選擇其他的硬體設定檔, 那麼 ntldr 將 會載入該硬體設定檔所對映到的 Co
ntrolSet。

   而且 ntldr 還會將開機時所用的 ControlSet 編號記錄到 Select 機碼的 Current
數值裏面, 例如這次開機是以 ControlSet001 的硬體資料作為硬體設定檔的內 容, 那麼 S
elect 機碼的 Current 數值內容就會是 1。不過 ntldr 並不會直接使 用 HKEY_LOCAL_MAC
HINE\SYSTEM\ControlSetXXX 裏面所記錄的資料, 而 是將資料復制到 HKEY_LOCAL_MACHIN
E\SYSTEM\CurrentControlSet 機碼裏 面。

   在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet 底下有個 Services 子機碼, S
ervice 底下的每一個子機碼所記錄的都是 Windows NT 系統在開機時 應該要載入的服務(S
ervice)項目, 這時 ntldr 將會檢查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Se
rvice 底下每一筆服務 項目子機碼的 Start 數值的內容, 如果 Start 數值內容是 0,
那麼 ntldr 將會在 這時載入該服務項目的驅動程式。 這時的 ntldr 是在 CPU 為 real mod
e 的狀態之下, 利用 BIOS int 13 的系統呼 叫來載入這些驅動程式; 如果你的硬碟是 SC
SI 介面, 那麼這時 Ntbootdd.sys 將 可以派上用場, 用來載入這些驅動程式。

   系統核心的初始化

   接下來 Windows NT 的開機過程即將進入系統核心初始化的步驟, 當 Windows NT 系
統核心開始進入初始化的時候, 系統的主導權已經從 ntldr 轉交給 Ntoskrnl.exe 手上,
而整個螢幕會呈現藍色的畫面, 並顯示 Windows NT 的版 本、Build 序號, 以及電腦上
所配置的 CPU 和記憶體數量。 Ntoskrnl.exe 首先會根據 ntldr 所給予的資料(實際上是
由 Ntdetect.com 所偵 測, 再傳給 ntldr)建立一個 HKEY_LOCAL_MACHINE\HARDWARE 機碼,
也就是說這個機碼的內容會因每次開機而透過 Ntdetect.com 的重新偵測而有所 更新。

   接下來 Ntoskrnl.exe 將會檢查HKEY_LOCAL_MACHINE\SYSTEM\CurrentCon trolSet\Se
rvice 底下每一筆服務項目子機碼的 Start 數值的內容, 如果 Start 數值 內容是 1,
那麼 ntldr 將會在這時載入該服務項目的驅動程式。

   Session Manager(Smss.exe) 的作用就是用來載入這些 Start 數值內容為 1 的 服務
項目, 而在 這時 ntldr 將會檢查HKEY_LOCAL_MACHINE\SYSTEM\Cu rrentControlSet\Cont
rol\SessionManager機碼裏面將有足夠的資料供 Session Ma nager 使用。

   登入系統

   接著, Windows NT 將會進入 GUI 畫面, 並且由 Ntoskrnl.exe 啟動Winlogon.exe
準備讓使用者進行登入的動作, Winlogon.exe 會再啟動一個稱為Local Security Adminis
tration 的程式(Lsass.exe), Lsass.exe 將負責顯示登入交談窗等等讓使用 者輸入使用
者名稱、密碼的動作。這時候的 Windows NT 可能還在進行一些諸 如對網路相關驅動程式初
始化的工作, 不過你依舊可以進行登入的動作。

   接著 Service Control(Screg.exe)還會再對HKEY_LOCAL_MACHINE\SYSTEM\Cu rrentCo
ntrolSet\Service 底下每一筆服務項目子機碼的 Start 數值的內容進行檢查, 如果 Star
t 數值內容是 2, 那麼Screg.exe 將會在這時載入該服務項目的驅動程式。 一直到這裏為
止, Windows NT 總算完成整個開機的動作, 而使用者也登入到 Windows NT 系統之中,
開始操作 Windows NT,這樣便成功的開啟Windows NT的系統了。
arrow
arrow
    全站熱搜

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