Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows 2003系統教程 >> Windows 2003常見問題解答 >> 談win2003與win2008啟動原理及雙啟動的故障解決

談win2003與win2008啟動原理及雙啟動的故障解決

日期:2017/1/25 11:52:20      編輯:Windows 2003常見問題解答

最近經常有學生詢問Win2008的啟動相關問題以及早期Windows版本與vista或win2008並存時的啟動問題,現在可以說正是處於操作系統新舊版本的過濾時期,這類問題會在一定時間內越來越多,所以本人就寫了這篇文章來談論一下新版操作系統的啟動原理以及如何解決新舊兩種操作系統並存時的故障。

我們還是先來看一下WinXP/2003的啟動過程,這個啟動過程其實還是挺復雜的,我在此畫了一個草圖:

 

1.jpg
大小: 19.59 K
尺寸:  x
浏覽: 0 次
點擊打開新窗口浏覽全圖

 

 

     當然這個圖並沒有把整個啟動過程中所涉及到的細節都描述出來,但主要部分已經有了,我們在此不進行詳細描述,例如:系統自檢成功後讀取MBR中的前446個字節的引導信息等,這些不是咱們今天討論的重點,我們只說說較為重要的幾點:
其中最為重要一步就是NTLDR:這個程序位於C盤根目錄下如圖所示:

 

 

2.jpg
大小: 25.66 K
尺寸: 401 x 255
浏覽: 0 次
點擊打開新窗口浏覽全圖

 

 

     NTLDR:全稱為NTOS Loader,操作系統加載程序。它的主要作用是解析Boot.ini文件,通過讀取Boot.ini文件,使系統在啟動過程中出現選擇菜單,由用戶選擇希望啟動的操作系統。除了NTLDR我們可以看到在C盤根目錄下還有一個boot.ini文件,這個文件在xp/2003中也是相當有分量的一個家伙!

     BOOT.INI:簡稱為啟動菜單文件,這個文件中存放了我們當前機器中操作的配置信息,安裝了幾個操作系統?分別位於哪個分區?給用戶的選擇提示是什麼?默認選擇時間是多長?等等。

     NTLDR除了讀取BOOT.INI文件中的啟動配置信息之外還會加載並執行C盤根目錄下的NTDETECT.COM文件,收集系統的硬件信息,NTDETECT.COM文件會調用BIOS中的內容來得到基本的硬件信息返回NTLDR以供操作系統使用,並將此信息保存到注冊表中。
     如果上述操作沒有問題就會再現我們比較熟悉的進度條了!
     然後就是加載Windows的內核文件:NTOS,全稱為:NTOSKRNL.EXE文件以及它所依賴的模板文件,如圖所示:

 

 

3.jpg
大小: 50.14 K
尺寸: 475 x 364
浏覽: 0 次
點擊打開新窗口浏覽全圖

 

 

     再往下就會將程序的執行權交給NTOSKRNL.EXE,下面的工作就由NTOSKRNL.EXE負責了!NTOSKRNL.EXE程序會通過調用一系統的函數,這也是整個啟動過程中最復雜的地方,也是最容易出現問題的地方,如果這一部分沒有問題,那麼就會生成系統的第一個進程:SMSS

     SMSS:會話管理子系統 Session Manager SubSystem 這是第一個用戶態的進程。會執行一些注冊表中某些表鍵中所定義的操作:如bootexecute、pendingfilerenameoperations、paging file等創建會創建出 CSRSS系統服務器進程和Winlogon登錄進程。

     CSRSS:Client/Server Runtime Server Subsystem作用:客戶端服務子系統,用以控制Windows圖形相關子系統,是用戶模式Win32子系統的一部分。csrss代表客戶/服務器運行子系統而且是一個基本的子系統必須一直運行。csrss用於維持Windows的控制。

      Winlogon:Windows登錄進程,主要作用是啟動LSASS進程(Local Security Authority Subsystem Service);如果是XP還會啟動Logonui進程,如果是Win2003就不會生成logonui;出現登錄提示框,提示用戶輸入用戶名和密碼,然後將些信息交給LSASS進行驗證,如果通過就會創建一個訪問令牌,最後由userinit程序執行用戶登錄和初始化腳本,至此,出現桌面後,我們的啟動工作就完成了。但在winlogon對用戶進行驗證的同時還會啟動services相關系統服務。

     Winlogon的過程其實還是很復雜的,因為中間涉及到用戶的認證和授權的問題,在此還是想簡單說一說,我們登錄系統的方式主要交互式登錄、系統登錄、網絡登錄、服務登錄和批處理登錄。用到最多的有交互式登錄、系統登錄、網絡登錄和服務服務,當然用戶最熟悉的肯定是交互式登錄,也就是人坐在電腦前,與你的愛機直接面對面的“交流”!那麼咱們就把交互式登錄的過程大體說一下:

     首先Winlogon作為登錄進程首先出現,准備一個用戶登錄的環境。然後開始加載一個DLL文件:MSGINA.DLL,此文件作用是在屏幕上出現一個“Ctrl+Alt+Del”的界面,提示用戶輸入用戶名和口令, 然後將收到的信息交給下一個進程:LSASS進程,進行用戶身份的認證,當然這裡又會有很多問題:工作組用戶的認證、單域用戶的認證、不同域用戶的認證等等,但不論是哪一種情況,都必須由LSASS進程負責認證。其中會涉及到一個服務:Netlogon,此服務主要是驗證NTLM的登錄、認證。如果是域的環境會幫助客戶機更新主機的DNS記錄以及定位域控制器,這也就是我們在聯系域控制器不成功時為什麼重新啟動netlogon這個服務的原因!我們拋開過舊的操作系統不談,那麼工作組環境一般使用的認證協議為:NTLM協議,如果是域環境使用的認證協議為:Kerberos V5協議。

     NTLM:使用的是挑戰/響應模式,過程如下:
     首先是客戶端發出一個連接請求,請求對方對自己的身份進行認證。但沒有傳具體口令。
     服務器端會給隨機發送一個8字節的挑戰信息,如:1234567812345678,然後將這個挑戰信息和當前session關連起來。
     客戶端收到挑戰信息後進行如下工作:a.根據自己的明文口令經過md4哈希後得到一個16字節的口令散列值;b.然後利用剛才得到的散列值將准備登錄的服務器名或者是域名等信息再次進行md5加密得到第二次的hash散列值;c.然後再利用第二次的散列值把8個字節的挑戰信息再次進行md5加密,又得到一個16字節散列值;d.最後將這個值作為響應傳給服務器。
     最後服務器端怎麼做,才知道你是不是一個合法用戶呢?因為服務器是有你的口令明文的,利用你的口令明文也做相同的操作,如果結果匹配,就認為對方是一個合法的用戶!
     Kerberos V5主要是對用戶的身份進行驗證並為用戶頒發用於訪問網絡服務的票證,適合於域等開放環境。認證過程是一個很復雜的過程,在此我只能是簡單說說而已。 

Copyright © Windows教程網 All Rights Reserved