主頁 > 知識庫 > 談win2003與win2008啟動原理及雙啟動的故障解決方法

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

熱門標(biāo)簽:湘潭電銷外呼系統(tǒng)軟件公司 如何撤銷百度地圖標(biāo)注信息注冊 南京智能語音電銷機器人功能 深圳外呼系統(tǒng)線路哪家公司做得好 安康電銷外呼系統(tǒng) 北京市400電話辦理 怎么在地圖標(biāo)注地址 電話機器人相關(guān)新聞 南通手機外呼系統(tǒng)供應(yīng)商

      最近經(jīng)常有學(xué)生詢問Win2008的啟動相關(guān)問題以及早期Windows版本與vista或win2008并存時的啟動問題,現(xiàn)在可以說正是處于操作系統(tǒng)新舊版本的過濾時期,這類問題會在一定時間內(nèi)越來越多,所以本人就寫了這篇文章來談?wù)撘幌滦掳娌僮飨到y(tǒng)的啟動原理以及如何解決新舊兩種操作系統(tǒng)并存時的故障。

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

     當(dāng)然這個圖并沒有把整個啟動過程中所涉及到的細(xì)節(jié)都描述出來,但主要部分已經(jīng)有了,我們在此不進行詳細(xì)描述,例如:系統(tǒng)自檢成功后讀取MBR中的前446個字節(jié)的引導(dǎo)信息等,這些不是咱們今天討論的重點,我們只說說較為重要的幾點:

其中最為重要一步就是NTLDR:這個程序位于C盤根目錄下如圖所示:

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

     BOOT.INI:簡稱為啟動菜單文件,這個文件中存放了我們當(dāng)前機器中操作的配置信息,安裝了幾個操作系統(tǒng)?分別位于哪個分區(qū)?給用戶的選擇提示是什么?默認(rèn)選擇時間是多長?等等。

     NTLDR除了讀取BOOT.INI文件中的啟動配置信息之外還會加載并執(zhí)行C盤根目錄下的NTDETECT.COM文件,收集系統(tǒng)的硬件信息,NTDETECT.COM文件會調(diào)用BIOS中的內(nèi)容來得到基本的硬件信息返回NTLDR以供操作系統(tǒng)使用,并將此信息保存到注冊表中。

     如果上述操作沒有問題就會再現(xiàn)我們比較熟悉的進度條了!

     然后就是加載Windows的內(nèi)核文件:NTOS,全稱為:NTOSKRNL.EXE文件以及它所依賴的模板文件,如圖所示:

     再往下就會將程序的執(zhí)行權(quán)交給NTOSKRNL.EXE,下面的工作就由NTOSKRNL.EXE負(fù)責(zé)了!NTOSKRNL.EXE程序會通過調(diào)用一系統(tǒng)的函數(shù),這也是整個啟動過程中最復(fù)雜的地方,也是最容易出現(xiàn)問題的地方,如果這一部分沒有問題,那么就會生成系統(tǒng)的第一個進程:SMSS

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

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

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

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

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

     NTLM:使用的是挑戰(zhàn)/響應(yīng)模式,過程如下:

     首先是客戶端發(fā)出一個連接請求,請求對方對自己的身份進行認(rèn)證。但沒有傳具體口令。

     服務(wù)器端會給隨機發(fā)送一個8字節(jié)的挑戰(zhàn)信息,如:1234567812345678,然后將這個挑戰(zhàn)信息和當(dāng)前session關(guān)連起來。

     客戶端收到挑戰(zhàn)信息后進行如下工作:a.根據(jù)自己的明文口令經(jīng)過md4哈希后得到一個16字節(jié)的口令散列值;b.然后利用剛才得到的散列值將準(zhǔn)備登錄的服務(wù)器名或者是域名等信息再次進行md5加密得到第二次的hash散列值;c.然后再利用第二次的散列值把8個字節(jié)的挑戰(zhàn)信息再次進行md5加密,又得到一個16字節(jié)散列值;d.最后將這個值作為響應(yīng)傳給服務(wù)器。

     最后服務(wù)器端怎么做,才知道你是不是一個合法用戶呢?因為服務(wù)器是有你的口令明文的,利用你的口令明文也做相同的操作,如果結(jié)果匹配,就認(rèn)為對方是一個合法的用戶!

     Kerberos V5主要是對用戶的身份進行驗證并為用戶頒發(fā)用于訪問網(wǎng)絡(luò)服務(wù)的票證,適合于域等開放環(huán)境。認(rèn)證過程是一個很復(fù)雜的過程,在此我只能是簡單說說而已。

     首先:客戶端通過DNS定位KDC服務(wù)器

     其次:客戶端用戶使用密碼或者是其他方式如智能卡向KDC請求票證授予票證(Ticket-Granting Ticket, TGT),這個請求在登錄時會自動完成。要獲取特定服務(wù)的其他票證,需要票證授予票證。票證授予票證類似于護照。與護照一樣,票證授予票證可標(biāo)識您的身份并允許您獲取多個“簽證”,此處的“簽證”(票證)不是用于出國,而是用于遠程計算機或網(wǎng)絡(luò)服務(wù)。

     然后:KDC對用戶的身份進行驗證,如果沒有問題可創(chuàng)建票證授予票證,并采用加密形式將其發(fā)送回客戶機。

     再次:客戶機使用其口令來解密票證授予票證(TGT),得到有效的TGT后,客戶端使用該TGT票證訪問授票服務(wù)(TGS)。

     再次:TGS接著向客戶端頒發(fā)服務(wù)票證。

     最后:客戶端向所請求的網(wǎng)絡(luò)服務(wù)出示服務(wù)票證。服務(wù)票證向此服務(wù)證明用戶的身份。同時也向該用戶證明服務(wù)的身份。

Winlogon進程

Msgina.dll文件

Netlogon服務(wù)

     以上只是用草草幾句話把Winxp/2003的啟動過程作了一個大體的介紹,從其中我可以看到NTLDR和boot.ini起了重要的作用,這也是和Vista/Win2008的不同之處。下面咱們就來看看Vista/2008的啟動過程。

     我們知道在XP/2003中進行操作系統(tǒng)加載的文件是NTLDR,然后再讀取boot.ini文件但這兩個文件已經(jīng)到了壽終正寢的時候了!在VISTA以后的操作系統(tǒng)中我們再也見不到親愛的NTLDR和Boot.ini了!嗚。。。。。。

Vista/2008的啟動流程,如圖所示:

     在這個圖中,大家可以看到從系統(tǒng)啟動到BIOS到MBR這一部分內(nèi)容基本上和早期版本操作系統(tǒng)是一樣的,不用多說,那么這個PBR是什么東西呢?

PBR:分區(qū)引導(dǎo)記錄 Partition Boot Record

由Vista 在安裝格式時生成的一段代碼,由這段代碼去找Bootmgr程序,并將程序的執(zhí)行權(quán)交給Bootmgr。那么這個Bootmgr又是個什么東西?

Bootmgr:啟動管理器,相當(dāng)于XP/2003時期的Ntldr,這個程序可以完成操作系統(tǒng)加載,最主要的作用就是讀取BCD中的數(shù)據(jù),我們知道在XP/2003中啟動配置信息都存放在boot.ini文件中,但到了VISTA/2008以后,啟動配置信息就放到了BCD中了!

BCD:Boot Configure Data 引導(dǎo)配置數(shù)據(jù),它的作用就是用于存放當(dāng)前機器上的操作系統(tǒng)信息,安裝了多少操作系統(tǒng),每個操作系統(tǒng)所在分區(qū)等等。

當(dāng)Bootmgr成功從BCD中讀取出引導(dǎo)信息后就會顯示啟動菜單供用戶選擇,然后Bootmgr會將程序的執(zhí)行權(quán)交給Winload.exe

Winload.exe它的的作用是將核心的系統(tǒng)文件加載到內(nèi)存并加載基本的驅(qū)動程序,還有一個新功能就是支持bitlocker在此不做討論。winload.exe執(zhí)行成功后,就將執(zhí)行權(quán)交給了系統(tǒng)的內(nèi)核文件Ntoskrnl。

     以上是簡單把vista/2008的啟動過程大體說了一下,而我們今天的重點講的是BCD這個東西,這是和XP/2003區(qū)別最大的地方了!

    剛才我們已經(jīng)說了BCD保存著啟動的相關(guān)配置信息,它取代了boot.ini文件,而且存儲格式也變化了相當(dāng)大的變化,以至于我們都不認(rèn)識它了,它是按照注冊表的格式進行保存的,是一個二進制文件,啟動成功后也確實要被加載到注冊表中,因此也有人說Vista/2008的啟動信息存放于注冊表中。下面咱們就來認(rèn)識認(rèn)識此文件:

BCD文件位于活動分區(qū)下的boot文件夾內(nèi),如圖所示:

    那么這個BCD文件是一個二進制文件,我們就不能像boot.ini文件那樣對它直接修改了,必須借此一些工具才可以如:控制面板中的系統(tǒng)、msconfig工具、bcdedit.exe工具、wmi開發(fā)接口。但在此功能較強的應(yīng)該是bcdedit.exe和WMI開發(fā)接口,但大家最常用的應(yīng)該是Bcdedit.exe,這個工具也同一般的外部命令一樣位于windows下的system32文件夾下,如圖所示:

如果我們直接在命令行下執(zhí)行bcdedit.exe就是顯示操作系統(tǒng)配置條目,如圖:

那么如果我們使用 bcdedit.exe /? 這就是顯示使用方法:

下面給出bcdedit.exe的常用參數(shù):

/createstore 新建空的啟動配置數(shù)據(jù)存儲。

/copy 復(fù)制存儲中的項。

/create 在存儲中新建項。

/delete 刪除存儲中的項。

/deletevalue 刪除存儲中的項選項。

/set 設(shè)置存儲中的項選項值。

下面咱們就以一個實例來講解一下雙啟動的故障修復(fù)

參考圖形:

環(huán)境描述:先在C盤安裝了一個Win2003,然后又在D盤安裝了一個Win2008。

分析:那么C盤現(xiàn)在是系統(tǒng)分區(qū),如果用Win2003啟動的話,那么啟動分區(qū)就是C盤,否則就是D盤。雖然2008現(xiàn)在安裝在D盤,但還是要向系統(tǒng)分區(qū)也就是C盤修改了三個地方:PBR、Bootmgr、BCD。只要安裝了Vista或是2008就一定會向系統(tǒng)分區(qū)中修改這三個地方。

故障產(chǎn)生:現(xiàn)在C盤的Win2003因為某種原因需要重新安裝,那么原來的三個信息PBR、Bootmgr、BCD都沒有了,因此D盤的2008不能啟動了。

解決方法:只要還原C盤的PBR以及Bootmgr和BCD文件即可!

方法:使用Win2008的安裝光盤進行命令行修復(fù)模式或者是第三方的小工具!

然后輸入命令:bootsect sys /nt60 就會重建PBR的相關(guān)信息!

實現(xiàn)過程:利用Win2008安裝光秀的命令行修復(fù)模式

現(xiàn)在我把C盤的Win2003重新安裝一遍。(當(dāng)然大家用Ghost也可以)安裝成功后就直接進入WIN2003,Win2008無法啟動!

進入Win2003之后,我們來查看系統(tǒng)分區(qū)下的相關(guān)文件:

發(fā)現(xiàn)只有Ntldr,不見bootmgr和boot文件夾當(dāng)然也沒有BCD信息了!下面我們開始修復(fù):

方法

把載入Win2008的安裝光盤。然后啟動,如圖所示:

點擊:修復(fù)計算機,出現(xiàn)下圖:

顯示當(dāng)前沒有找到要修復(fù)的操作系統(tǒng),點擊:下一步

點示:命令提示符,出現(xiàn)下圖:

出現(xiàn)命令行提示符,但大家注意了這里的盤符是X盤,這是為什么呢?原來這只是一個虛擬出來的盤符,大家可千萬不要在此輸入修復(fù)命令,一定不成功的!我們要切換到真正光盤所在的盤符:

下面我們的操作就在此提示符下進行:

在上圖中所用到的命令我已經(jīng)使用紅框做了標(biāo)記,

其中幾個復(fù)制命令是為了生成bootmgr以及BCD,bootsect.exe /nt60 SYS是為了更新Win2008的PBR。

最后EXIT退出!

重新啟動,不必再手動選擇從光盤啟動系統(tǒng)也會自動從光盤啟動,再進入“修復(fù)計算機模式”會自動出現(xiàn)下圖所示:

選擇“修復(fù)并重新啟動”。重啟修復(fù)正常后進入Win2008系統(tǒng)。但不能啟動Win2003,這是因為BCD中沒有Win2003的配置信息,如圖所示:

在Win2008系統(tǒng)下用bcdedit.exe 修復(fù)雙啟動菜單,在BCD中加入Win2003的配置信息,相關(guān)命令如下:

a. 創(chuàng)建基于ntldr的OS加載器項: /d為用戶選擇時的提示內(nèi)容,可以隨意輸入

bcdedit /create {ntldr} /d “Windows Server 2003”

b. 設(shè)置OS所在分區(qū)

bcdedit /set {ntldr} device partition=D: (D: 為XP的系統(tǒng)所在分區(qū))

c. 設(shè)置OS所使用的ntldr文件位置

bcdedit /set {ntldr} path \ntldr

d. 使此OS項加入到bootmgr界面中

Bcdedit /displayorder {ntldr} –addlast

e. 生成此項的描述信息:

Bcdedit /set {ntldr} description “Windows 2003”

具體操作如圖所示:

再次查看就有我們新建的啟動項了:

我們可以重新啟動計算機,進行測試:

至此,修復(fù)操作終于結(jié)束了!我的天呀!累死我了!

注意:如果某個節(jié)點我們不需要了,也可以刪除節(jié)點,如:bcdedit –delete {ntldr} -f

那么如果你手頭沒有Win2008的安裝光盤,也可以借助第三方工具來修復(fù)和Win2008相關(guān)的信息。我在此從網(wǎng)上下載了一個修復(fù)工具:BCDautofix,操作起來更為簡單!

實現(xiàn)過程:借助第三方工具修復(fù)Win2008的啟動故障

方法: 從網(wǎng)上下載修復(fù)的小工具,如BCDautofix。

雙擊BCDautofix.exe 如圖所示:

然后重新啟動計算機:

出現(xiàn):

進入系統(tǒng)后發(fā)現(xiàn) bootmgr、BCD等信息都已經(jīng)回來了!

至此修復(fù)成功!不行了,堅持不住了,我去睡覺了!。。。。。。。。。。。。 

本文出自 “杜飛” 博客,轉(zhuǎn)載請與作者聯(lián)系!

標(biāo)簽:朔州 清遠 棗莊 金華 榆林 湖北 怒江 鹽城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《談win2003與win2008啟動原理及雙啟動的故障解決方法》,本文關(guān)鍵詞  談,win2003,與,win2008,啟動,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《談win2003與win2008啟動原理及雙啟動的故障解決方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于談win2003與win2008啟動原理及雙啟動的故障解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章