PIXNET Logo登入

Never give up!永不放棄

跳到主文

永不放棄要超越困難,化危機為轉機。當問題不明時先耐心釐清問題,以問題可以找出解決之道。世間的問題_人事時地物,如何制宜. 出世間的問題_當下看破放下提起,如何神會, 要將難題化作進步的動力,需要不斷求進步。飲智海一滴,野人獻曝,請多指教。

部落格全站分類:圖文創作

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 9月 20 週五 201300:06
  • Windows 7 開機救援與動畫

Windows 7 開機救援與動畫

在55期的電腦王雜誌當中,我們繼續介紹Windows 7的重點新功能,由於官方beta版已經很容易取得了,我們將一部份重點擺在Windows 7的安裝方法。除了開機速度變快,開機動畫也從舊的「霹靂燈」樣式改成了四色旗飛過來合體的「呼吸燈」版本。頗有進化的感覺,還不賴。 我們順便錄了一段Windows 7內建救援程式(WinRE)的操作畫面,在Vista要啟用這個程式有兩種方法: 1. 用安裝光碟開機 2. 透過複雜的步驟安裝到硬碟
目前的測試版則是直接內建到Windows 7的開機選單裡,在開機過程快速的按下「F8」就會出現「Repair your computer」的選項,和舊版的WinRE好像稍微有點不同,登入和選擇語系的畫面似乎變得漂亮了點(如果沒記錯的話)。不過整體功能還是和 Vista差不多,可以做系統還原、修復開機問題,還可以從事先做好的全機備份映像檔還原系統,等於是簡單版的Ghost程式。其實這並不是什麼大改版, 不過對一般使用者來說會很直覺、方便。
(繼續閱讀...)
文章標籤

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

  • 個人分類:開機
▲top
  • 9月 09 週一 201317:55
  • 硬體抽象層(HAL, Hardware Abstraction Layer)- 维基百科

硬體抽象層

維基百科,自由的百科全書
 

硬體抽象層(HAL, Hardware Abstraction Layer),是抽象層的一種,是實作於硬體和執行於該電腦的軟體之間的一種特殊軟體。它的功用是將硬體方面的不同,隱藏並抽離於作業系統的核心之中。如此一來核心模式的程式碼就不必因為硬體的不同而需要修改。所以硬體抽象層可增進軟體的可移植性。


之所以有硬體抽象(Hardware abstraction)這個概念,是由於數位電腦具體的硬體(Hardware)操作相當繁雜,因此將具體的硬體操作抽象化簡,避免由於直接以具體的機器碼(Machine code)撰寫程式,而在將程式移植到不同硬體時,需要重寫整個程式。其概念與目的,類似於資料結構(Data structure)中的Abstract data type,皆為保護程式免受變化的衝擊。


前述的現象可藉由語言現象獲得一些啟示,當我們進行記憶時,我們抽象地記憶,而非具體地將具體的訊息記下,我們在記憶時,並不會記憶文章具體的長相,而是抽象的內容。如果不是如此,當你要以另一種語言重現該篇文章時,仍然需要將其抽象化,再將其轉譯為另一語言的寫法。在記憶談話時,也類似於此。


外部連結



  • Linux HAL

  • "開機" 萬言書 - PART III 講解Windows的HAL


 


 


 


 


 


 


 



(繼續閱讀...)
文章標籤

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

  • 個人分類:開機
▲top
  • 9月 09 週一 201317:38
  • "開機" 萬言書- PART I(本篇有版權, 不宜公開)

"開機" 萬言書 - 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 Ⅱ。
----------------
吳北北
(繼續閱讀...)
文章標籤

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

  • 個人分類:開機
▲top
  • 9月 09 週一 201317:30
  • "開機" 萬言書- PART II(本篇有版權, 不宜公開)

"開機" 萬言書 - PART II(本篇有版權, 不宜公開)
各位親愛的讀者,今天我們要繼續討論當開機經過初始階段(Initial Phase)後,它接下來的動作是什麼?不過在進入開機載入階段(Boot Loader Phase)之前,我們先來看看有那一些是在 W2K 開機時必須要存在的檔案及其擺放的地方(如下表所列),這些檔案若是不存在或是擺的路徑不對,都將會導致開機不成功的情況發生。
* 註:開機分割區(Boot Partition)指的是存放 W2K 作業系統程式的硬碟分割區,即 \WINNT 所在的那個分割區,此分割區可為主要分割區(Primary Partition)或邏輯分割區(Logical Partition),但系統分割區(System Partition)則必須是主要分割區且為啟動分割區(Active Partition)。若你的電腦只裝了一個 W2K 作業系統時,則系統分割區和開機分割區會位於同一個分割區,反之,若你有多個作業系統時,則系統分割區還是只有一個,即開機硬碟上的啟動分割區,而開機分 割區則會有多個。
以上所示之重要檔案若是遺失或損毀了,
該採取什麼樣的行動, 以讓 W2K 作業系統可以開機成功呢?
接下來我們就來看看以上這些檔案是在下面開機階段中何時出現及扮演著什麼樣的角色。
開機載入階段(Boot Loader Phase)
* 開機載入初始化(Initial Boot Loader)
* 選擇作業系統(Selecting the Operating System)
* 檢測硬體(Detecting Hardware)
* 選擇設定檔(Selecting a Configuration)
開機載入初始化(Initial Boot Loader)
當NTLDR 掌握控制權後,其會先將處理器(Processor)從真實模式(Real Mode)轉換到 32 位元平滑記憶體模式(32-bit Flat Memory Mode),因為 Intel x86 系統的電腦一啟動時,處理器為了能與某些專門是為 8 位元和 16 位元處理器所寫的軟體相容而將某些特性關掉而不啟動,因此這時候處理器模式是處於真實模式(類似 8088 或 8086 的 CPU),但為了讓 W2K 作業系統可以使用到所有可用的記憶體,而不像在傳統的 DOS 環境下,只能控制到所謂640 KB 的記憶體空間,其他部份則稱為延伸記憶體(Extended Memory),同時也不能建立虛擬記憶體(Virtual Memory)。因此在啟動其他功能及載入 W2K 作業系統之前,必須先將處理器轉換成 32 位元平滑記憶體模式才行。
接 下來再啟動內建在 NTLDR 中的迷你檔案系統驅動程式(Built-in mini-file system driver),以便辨識系統分割區和開機分割區的檔案系統(FAT、FAT32、NTFS)為何及如何存取該分割區中的檔案。這個內建在 NTLDR 中陽春版的迷你檔案系統驅動程式所具備的功能,剛好足以滿足在開機這段時間存取檔案的目的,至於完整版的檔案系統驅動程式將會在稍後的階段中載入。
選擇作業系統(Selecting the Operating System)
如 果你的系統是屬於多重開機設定(Multiple-Boot Configuration)時,則當開機載入初始化工作完成後,NTLDR 會顯示開機載入作業系統選單(Boot Loader Operating System Selection Menu)畫面,讓使用者可以選擇其想進入的作業系統(如下圖所示),至於這個選單的資料來源,則是定義在系統分割區根目錄的 Boot.ini 檔案中。
如 果你在倒數時間變成 0 之前沒有做任何的選擇,則 NTLDR 將會載入在 Boot.ini 檔案中所定義的預設作業系統,通常預設的作業系統是使用者最後安裝的作業系統,當然使用者可以根據實際需要去修改 Boot.ini 檔案中的設定,但因 Boot.ini 是一個隱藏唯讀系統檔案,所以在修改內容之前,必須將其唯讀屬性關掉。
如果你的系統是屬於單一開機設定 (single-boot configuration)時,即 Boot.ini 檔案中所定義的選單項目只有一個,另一個含意是你只有安裝一個作業系統且是 W2K 時,如此一來則不會顯示上面這個開機載入選單畫面,而是直接進入下一開機程式,接下來我們就來瞭解一下 Boot.ini 的內容(可與上圖互相對照比較):
當你想對 Boot.ini 內容從事修改的動作之前,你必須對其內容的每個部份做個瞭解,以免修改錯誤而導致開機失敗。接下來我們就對 Boot.ini 中的每個部份為各位讀者作個介紹:
基 本上 Boot.ini 檔案是由 [boot loader] 和 [operating system] 兩部份(Section)所構成,[boot loader] 這部份在定義選單倒數時間及預設要載入的作業系統為何,而 [operating system] 這部份則是在定義安裝在電腦系統上的作業系統有那些及其所在的開機分割區(Boot Partition)路徑。在 Boot.ini 檔案中是以 ARC 路徑(Advanced RISC Computing paths)來展現 W2K 作業系統所在的開機分割區位置是位於那一個硬碟控制器(Disk Controller)下的那一個硬碟中的那一個分割區,至於其他如 DOS/95/98/Me 作業系統則以大家所熟悉的方式來表示其所在路徑,例如 C:\,所以不在此多做介紹。
一般來說 ARC 路徑的表示法有下列二種:
下面我們就來研究一下上述二種 ARC 路徑的語法所表示之意為何:
multi(w)disk(x)rdisk(y)partition(z)\WINNT 語法介紹
SCSI(w)disk(x)rdisk(y)partition(z)\WINNT語法介紹
如 果在系統分割區的根目錄中沒有 Boot.ini 縱跡,則系統預設會去找第一個硬碟控制器(Disk Controller)下的第一個硬碟中的第一個分割區,即 multi(0)disk(0)rdisk(0)partition(1) 這個分割區。如果 W2K 作業系統沒有安裝在這個分割區,則會顯示如下的錯誤訊息,即使 Boot.ini 檔案存在,但其 ARC 路徑所指定的開機分割區中若沒有安裝 W2K 作業系統時,也會顯示如下的錯誤訊息:
若碰到上述所顯示之錯誤訊息,你該如何以最快的方法去檢查是因為 Boot.ini 檔案遺失或其 ARC 路徑指定錯誤而造成的問題?還是因為 Ntoskrnl.exe 檔案毀損或遺失所造成的問題?
如果你在開機載入作業系統選單(Boot Loader Operating System Selection Menu)畫面中,按下 F8 鍵,則會進入 Windows 2000 進階選項功能表,如下圖所示:
Windows 2000 進階選項功能表中的各個選項是代表什麼意思啊!當發生什麼樣的問題該選那一種選項呢?
檢測硬體(Detecting Hardware)
當 使用者選擇的作業系統是 W2K 作業系統時,則 NTLDR 會將 Ntdetect.com 這支程式載入到記憶體執行,此時會顯示如下的畫面。Ntdetect.com 主要的工作是偵測目前電腦安裝了那些硬體元件及其相關的設定資訊,並將其所收集到的資料建立成硬體清單(Hardware List)傳遞給 NTLDR,以備核心初始化階段(Kernel Initiation Phase)建立 HARDWARE 註冊機碼時使用。一般來說,Ntdetect.com 會偵測下列硬體元件:匯流排/介面卡類型、顯示卡、鍵盤、通訊埠(Communication Ports)、平行連接埠(Parallel Ports)、軟碟、滑鼠等裝置,同時還會收集系統韌體資訊,例如系統的日期和時間。
如果 Ntdetect.com 檔案毀損或遺失了,該如何修復以利開機正常進行?
如 果使用者選擇的作業系統是 DOS 或 Windows 95/98 時,則 NTLDR 將 Bootsect.dos 載入至記憶體,並將控制權移交給 Bootsect.dos 以正常啟動上述其他非 W2K 作業系統,例 DOS、Windows 95/98 或 Windows Me。
* 註:當你安裝 W2K 作業系統在 Inter x86 電腦時,W2K 安裝程式會將主要啟動磁區(PBS, Primary Boot Sector,即系統分割區的第一個磁區)的內容備份到一個名叫 Bootsect.dos 檔案,然後 W2K 再將 PBS 的內容置換成自己要用的 PBS 內容。W2K 的 PBS 中的程式碼主要的工作就是找到 NTLDR 所在位置並載入至記憶體。
如果 Bootsect.dos 檔案毀損或遺失了,該如何修復以讓 DOS、Windows 95/98 或 Windows Me開機成功呢?
選擇設定檔(Selecting a Configuration)
當 Ntdetect.com 收集完硬體資訊後,它會接著去尋找有關硬體設定檔的資料,接著你將會看到如下的「硬體設定檔/設定復原」功能表選單畫面,讓使用者選擇欲載入的硬體設定檔 (Hardware Profile),如果只有一個預設的硬體設定檔(Hardware Profile)- Profile 1時,則不會出現下面這個畫面。
當 W2K 在啟動電腦時,到底要啟動哪些裝置或這些裝置到底要使用什麼樣的設定,還有那些服務要啟動、那些服務不啟動,這些都是定義在硬體設定檔中。當 W2K 作業系統在安裝時,會建立一個名為 Profile 1 的硬體設定檔,在 Profile 1 硬體設定檔中,預設會啟用在安裝 W2K 作業系統時所安裝在電腦上的每個裝置。若為手提式電腦(Notebook),該硬體設定檔的名稱會是 Undocked Profile 或 Docked Profile,一般來說,硬體設定檔對手提式電腦比較有用,因手提式電腦的配備造價比較貴,例如一樣是 256 MB 的 RAM,用在桌上型電腦和手提式電腦上的價錢就差到 2 ~ 4 倍之譜,就算不理會價錢,以目前來說,桌上型電腦最多可支援到 2 ~ 4 GB 的 RAM,而手提式電腦最多只能支援到 1 GB 的 RAM,因此相較之下,我們可說手提式電腦的資源是有限的,所以為了善用資源的理由下,某些不需啟動的裝置或服務就將其關掉,以免浪費 CPU 和 RAM 的資源使用。例如現在你的手提式電腦是連上公司網路上 Internet 時,你就可以不要啟動數據機(Modem)裝置,如果你是在家連上 Internet 時,你就可以不要啟動網路卡。所以使用者可以根據使用狀況來選擇不同的硬體設定檔,只啟動必要的裝置及服務即可。如果你在倒數時間變成 0 之前沒有做任何的選擇,則預設會選擇第一個硬體設定檔,此時 Ntdetect.com 也就完成了它的工作使命而把控制權交還給 NTLDR。
至於硬體設體檔的建立及其內容的設定,我們則不在此專業名詞領域討論,若有與趣可至 W2K Server 的說明去得到你的解答哦,操作上非常簡單,不用害怕,你們一定可以自立更生的,我們下禮拜見囉!
----------------
吳北北
(繼續閱讀...)
文章標籤

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

  • 個人分類:開機
▲top
  • 2月 22 週三 201217:01
  • "開機" 萬言書 - PART III(本篇有版權, 不宜公開)


作者:吳翠鳳 (Linda Wu)
適用於 Win2000/XP/2003。
從電源開啟後的 POST,到 Windows 開機完成的詳細過程,包含圖解,
相當完整精彩的資料。
(繼續閱讀...)
文章標籤

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

  • 個人分類:開機
▲top
  • 2月 22 週三 201216:57
  • "開機" 萬言書 - PART IV_無圖




 








"開機" 萬言書 - PART IV 本篇作者:吳翠鳳 (Linda Wu)
刊登日期:2002/10/10





































































































































































琳達!你的電腦開機到底要開到什麼時候啊?你該升級 CPU 和增加記憶體了。各位讀者,別急躁!連續劇的最終結局總是大家急於知道的,而你們今天也終於可看到 W2K 成功完成開機流程的全貌了。
接下來我們就來繼續探討 W2K 機的核心初始化階段:










核心初始化階段(Kernel Initiation Phase)


  • 建立HARDWARE註冊機碼(Creating the HARDWARE Registry key)

  • 複製Current Control Set 註冊機碼(Creating Clone Current Control Set)

  • 裝置驅動程式的載入和初始化(Loading and Initializing Device Drivers)

  • 啟動服務(Starting Services)




在核心初始化階段的開始,微軟 W2K 作業系統的標幟就會顯示在螢幕上。
 
建立HARDWARE 註冊機碼(Creating the HARDWARE Registry key)
根據 Ntdetect.com 在開機載入階段(Boot Loader Phase)回報給 NTLDR 的硬體清單資料,在註冊機碼(Registry)資料庫中建立 HKEY_LOCAL_MACHINE\HARDWARE 之階層架構(如下圖所示),在 HARDWARE 架構下存放著電腦中有關實體硬體相關資訊,例如系統主機板上的硬體組件、特定硬體設備的中斷控制、系統資源的分配情形等。
當你執行 Regedit.exe(註冊機碼編輯器)所看到的整個註冊機碼樹狀架構,其實在 \WINNT\system32\config 目錄下都有相對的檔案來儲存其資料(如下圖所示),而 HKEY_LOCAL_MACHINE\HARDWARE 機碼下所有階層的資料,則是每次開機時由 Ntdetect.com 收集硬體資料後轉交 NTLDR 重建該階層架構下的所有數據,因此對其做任何修改也是沒有意義,故其在 \WINNT\system32\config 也沒有對應的檔案來儲存該階層架構下的數據。








在 \WINNT\system32\config 目錄中的這些檔案是否只要備份起來後,當這些檔案損毀或遺失了,就可直接還原到這個目錄即可?

 
複製Current Control Set註冊機碼(Creating Clone Current Control Set)
核心初始化階段的第二項工作就是將 NTLDR 所載入的控制集(即 CurrentControlSet)複製一份起來,這份複製的資料不會去做任何的修改,只是保留到登錄階段(Logon Phase)時使用,當使用者成功開機登入後,則這個複製的控制集將一無所用,也因此當你登入 W2K 作業系統後,根本在註冊機碼的樹狀架構中看不到這個複製的控制集。
 
裝置驅動程式的載入和初始化(Loading and Initializing Device Drivers)
將 W2K 核心程式和在核心載入階段(Kernel Load Phase)載入的低階裝置驅動程式正式初始化(Initialize)啟動,接下來核心程式(Kernel)搜尋 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 註冊機碼下所有的裝置驅動程式及服務,並載入 [Start] 值為 1 的裝置驅動程式,例如網路協定(Network Protocol),這些裝置驅動程式一載入記憶體便做初始化的動作,如果有錯誤發生,核心程式將會根據該裝置驅動程式下所定義的 [ErrorControl] 值來決定接下來的處理動作為何?如下圖所示:
接下來我們來看看不同的 [ErrorControl] 值會採取的動作是什麼?
























ErrorControl 說 明
 0 = Ingore 假如此裝置驅動程式或服務無法載入或初始化時,並不顯示任何的錯誤訊息繼續往下執行開機流程
 1 = Normal 假如此裝置驅動程式或服務無法載入或初始化時,則會顯示錯誤訊息及將該錯誤記錄在事件檢視器(Event Viewer)中的系統記錄(System Log),但仍會繼續往下執行開機流程
 2 = Severe 當此裝置驅動程式或服務在啟動時發生錯誤,表示對系統開機過程來講是一個嚴重的錯誤,故其會將該錯誤記錄在事件檢視器中的系統記錄,然後重新開機利用 LastKnownGood 控制集進行開機流程,如果開機流程已是利用 LastKnownGood 開機,則忽略所發生的錯誤並繼續往下執行開機流程,但仍然會將錯誤記錄在事件檢視器。
 3 = Critical 當此裝置驅動程式或服務在啟動時發生錯誤,表示對系統開機過程來講是一個關鍵性的錯誤,故其會將該錯誤記錄在事件檢視器中的系統記錄,然後重新開機利用 LastKnownGood 控制集進行開機流程,如果開機流程已是利用 LastKnownGood 開機,則停止往下執行開機流程並顯示錯誤訊息。

 
啟動服務(Starting Services)
當核心程式載入並啟動低階裝置驅動程式(Low-Level Device Drivers)後,則會話管理員(Session Manager)程式 - Smss.exe 將會啟動,會話管理員的資訊都記載在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 註冊機碼中,其中定義了在載入服務之前要執行那些程式,並透過會話管理員來啟動高階子系統(Higher-Order Subsystems)和服務、Win32 子系統程式(控制所有的 I/O 裝置和螢幕的顯示) - Csrss.exe,及建立分頁檔(Page File)等動作。
 
接下來我們就詳細研究一下會話管理員(Session Manager)到底處理了那些事情,並可從那裡看到蛛絲馬跡。首先我們先來看看會話管理員在載入服務之前要先執行那些程式,這是定義在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 下的 BootExecute 項目(如下圖所示),其預設值是 "autocheck autocheck *",但可定義超過一個以上的程式,下圖即為一例。
autocheck 這支程式主要功能是在開機時會對所有的硬碟分割區進行檢查的動作,如果發現某分割區有問題(例如:可能是上一次不正常停機所造成資料的寫入錯誤),則會對該分割區執行 chkdsk /f 的動作,以修復分割區上的錯誤。所以當系統開機發現分割區上資料有問題時,則你會在這個階段看見類似如下畫面所顯示的訊息:
當會話管理員執行完 BootExecute 項目所指定的程式後,W2K 核心程式將會從 \WINNT\system32\config 目錄下載入其他的註冊機碼。接下來會話管理員就會執行以下幾個動作,而這些動作都有定義在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 下的子機碼中:
 


  • 建立符號連結(Create Symbolic Link)
    會話管理員將會根據 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 下的 [DOS Devices] 機碼中所定義的資訊建立符號連結(Symbolic Links),所謂符號連結指的是用一簡單的"符號名稱"來代表一個檔案系統下的裝置元件,通常用在命令提示字元(Command Prompt)環境下。以下圖為例:我們用 "PRN" 來代表安裝在我們電腦上LPT1 埠的印表機,因此當我們在命令提示字元環境下可輸入 "copy qoo.txt prn" 時,即代表將 qoo.txt 列印到電腦 LPT1 埠所連接到的印表機裝置上。





  • 建立系統環境變數(Create System Environment Variables)
    接下來再根據 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 下的 [Environment] 機碼中所定義的資訊建立系統環境變數(如下圖所示)。





  • 建立虛擬記憶體 - 分頁檔(Create Virtual Memory - Page File)
    會話管理員會根據 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 下的 [Memory Management] 機碼中所定義的資訊建立分頁檔(Page File)- pagefile.sys,如下圖所示。





  • 啟動 Windows 子系統 - \WINNT\System32\Win32k.sys 和 \WINNT\System32\Csrss.exe
    會話管理員會載入 Windows 子系統(Subsystem)的核心模式(Kernel Mode) - Win32k.sys 和使用者模式(User Mode) - Csrss.exe 這二支程式,Windows 子系統控制了所有的 I/O 裝置和螢幕的顯示,其相關資訊定義在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 下的 [SubSystems] 機碼中,如此一來 W2K 將會從文字操作模式(Text Mode)轉換至圖形介面操作模式(Graphical User Interface),鍵盤和其他的輸出入裝置(Input/Output Device)也就可以開始運作了。



接下會話管理員還會繼續啟動其他定義在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 下的 [SubSystems] 機碼中的其他子系統,每個子系統各有其負責的工作,我們不在此多做介紹,我們以下圖來表示 W2k 的系統架構,看完這個圖,我相信各位讀者會有更進一步的認知。
 
同時我們順便來了解一下使用者模式(User Mode)的程序(Processes)和核心模式(Kernel Mode)的程序之間的差別在那?一般來說,作業系統元件和驅動程式是執行在核心模式下,在核心模式下執行的程序是可以和系統硬體、記憶體或裝置驅動程式 直接溝通,所以講求效能的驅動程式和服務擺在核心模式下執行,可讓這些程序和硬體溝通上較有效率。而應用程式和相關子系統的程序是在使用者模式下執行運作 的,在使用者模式下執行的程序是無法和系統硬體、記憶體或裝置驅動程式直接溝通,目的是為了防止這些程序會危害到系統的完整性。當其要使用系統資源,則會 將其需求轉交到核心模式,由核心模式下的程序來做掌控及分配的處理。同時當作業系統需要較多的記憶體處理工作時,它會將使用者模式下的程序從記憶體移轉到 硬碟,即我們俗稱的虛擬記憶體,那是因為使用者模式下的程序之優先等級(Priority)較核心模式下的程序來的低之緣故。


  • 啟動登入管理員 - \WINNT\System32\Winlogon.exe
    會話管理員會去啟動 Winlogon 程式,如此一來便結束了核心初始化階段(Kernel Initiation Phase),而進入了最後的登錄階段(Logon Phase)流程。











登錄階段(Logon Phase)


  • 開始登錄(Begin Logon)

  • 服務控制管理員(Service Control Manager)

  • 複製控制集(Clone Control Set)

  • 執行啟動程式(Run Startup Programs)



開始登錄(Begin Logon)
當 WIN32 子系統啟動後,會話管理員就會自動啟動了 Winlogon.exe,而 Winlogon.exe 就會去啟動服務子系統(Service Subsystem) - 服務控制管理員(Service Control Manager,SCM)程式 Services.exe 和本機安全管理程序(Local Security Authority,W2K 安全系統的核心元件)- Lsass.exe,而此時 Ctrl+Alt+Del 的登錄對話畫面就會出現了,當使用者同時按下 Ctrl、Alt、Del三個按鍵後,便會出現要求使用者輸入使用者帳號及密碼的登入畫面,而當使用者此輸入了使用者帳號及密碼以後,系統便會將使用者所 輸入的資訊傳給本機安全管理程序負責處理使用者認證的問題,一旦認證通過,使用者便可登入系統了。
 
服務控制器(Service Controller)
雖然使用者登入進到了 W2K 作業系統,但此時你可能會發現系統會有短暫的時間沒有反應,那是因為服務控制管理員程式 - Services.exe 正在進行最後一次的註冊機碼資料庫搜尋,搜尋在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 註冊機碼下所有的裝置驅動程式及服務,並載入 [Start] 值為 2 的服務(例如 Computer browser、Workstation、Server、Spooler、Netlogon等服務),至於載入的順序則決定於這些服務的依存性 (dependency),這些服務的依存性則定義在 [DependOnGroup] 及 [DependOnService] 這兩個值中(如下圖所示),DependOnGroup 是在定義當啟動這個驅動程式或服務之前至少須先載入那一個 Group 中的一個驅動程式或服務。以下圖為例,RemoteAccess 這個服務就必須依賴 NetBIOSGroup 這個群組之一的服務存在,如果 NetBIOSGroup 這個群組沒有一個服務起來,則 RemoteAccess 服務也無法啟動成功。而 DependOnService 則是在定義當啟動這個驅動程式或服務之前,那些驅動程式或服務必須己經載入啟動了,否則這個驅動程式或服務是無法啟動了。以下圖為 例,RemoteAccess 這個服務就必須依賴 RpcSS 這個服務的存在,如果 RpcSS 這個服務沒有起來,則 RemoteAccess 服務也無法啟動成功。
再以一個大家所熟悉的 Netlogon 服務為例,由下圖可得知 Netlogon 這個服務就必須依賴 LanmanWorkstation 和 LanmanServer 這二個服務存在,如果這二個服務沒有起來,則 Netlogon 服務也無法啟動成功。
複製控制集(Clone Control Set)
當使用者成功的登入至 W2K 作業系統後,系統此時認為「開機」這件事終於大功告成,所以核心程式會將複製的控制集(CLONE control set)拷貝到 LastKnownGood 控制集中,以備不時之需。但從這邊我們也可提醒使用者另一件事,若下次開機你所選擇的項目是使用「上次的良好設定(LastKnownGood)」時,則你這次開機成功到下次重新開機這段期間對 CurrentControlSet 所做的設定都將會遺失掉。








LastKnownGood 這個選項通常可用在什麼時機?

 
執行啟動程式(Run Startup Programs)
當 LastKnownGood 控制集複製完成後,基本上己算 W2K 開機成功了,但我們還是來稍微看一下 W2K 作業系統還會做些什麼事倩。W2K 作業系統將會執行屬於該使用者的登入設定檔(Logon Script)及定義在以下註冊機碼中預定要執行的程式或服務:


  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

  • \WINNT\Documents and Settings\All Users\Start Menu\Programs\Startup

  • \WINNT\Documents and Settings\\Start Menu\Programs\Startup


哇!"開機"萬言書終於在漫漫長月下可以劃下一個句點了!經過一個月的洗禮,不知各位讀者對"開機"這件事是否有了新的認知,往往一件看似簡單的事,裡面卻蘊含著無數的未知數及多少人的努力,讓我們大家共勉之。


 



(繼續閱讀...)
文章標籤

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

  • 個人分類:開機
▲top
1

7層能量音樂

個人資訊

Estar007
暱稱:
Estar007
分類:
圖文創作
好友:
累積中
地區:

靈動

最新文章

  • 金瓜【作用】1解毒,2保護胃粘膜,3防治糖尿病、降低血糖,4. 消除致癌物質,5. 促進生長發育
  • 鋼琴隨身教app v2.0.1安卓版
  • 中医把脉方法——精心收集的把脉口诀以及图表
  • Fwd: Fw: 李嘉誠身旁的女秘書辭職了,說出37條「潛規則」,難怪她能月薪千萬!
  • 手機輻射檢測器.APK
  • 中藥與食物app中關於水腫的中藥
  • 服用中藥之忌口
  • 苦茶油的正確使用
  • 百度盤:胎教音乐精选100首
  • 學會了這12招一生不得糖尿病

文章分類

toggle 知識+ (5)
  • 管理 (22)
  • 知識+ (39)
  • 電腦+ (47)
  • 藝文+ (34)
  • 網頁+ (8)
toggle 下載+ (8)
  • 關鍵字 (15)
  • 網路鄰居 (37)
  • 下載+1下載庫 (10)
  • 下載+2.Tools (63)
  • 下載+3.程式 (13)
  • 下載+music (9)
  • 下載+上傳 (9)
  • 電子書,視頻 (47)
toggle 康健 (10)
  • 淨土 (8)
  • 虛擬,觀光 (64)
  • 佛 (74)
  • 康健 (71)
  • 針灸按摩骨傷整骨 (39)
  • 中草藥 (12)
  • 氣功 (8)
  • 食療養生保健 (114)
  • 糖尿病 (11)
  • 乳酸菌-發酵 (11)
toggle 3D (9)
  • Mastercam (4)
  • 3dmax (5)
  • 美工 (21)
  • Cad (33)
  • SW (36)
  • UG (1)
  • proE (3)
  • 其他 (30)
  • catia (4)
toggle 機構,模具,數控,仿真 (6)
  • 製造 (8)
  • 汽機車 (27)
  • 機構 (34)
  • 模具 (17)
  • 數控 (23)
  • 仿真 (4)
toggle Windows (5)
  • 開機 (6)
  • 維修,解毒 (10)
  • PE (30)
  • XP (27)
  • Win7 (19)
  • 農藝 (22)
  • 未分類文章 (1)

文章搜尋

誰來我家

我去誰家

參觀人氣

  • 本日人氣:
  • 累積人氣: