玩轉(zhuǎn)ESXi_07:詳解Windows7啟動流程與常見故障 每天使用計算機必須要經(jīng)過的一個步驟就是啟動,上一章節(jié)《玩轉(zhuǎn)ESXi_06:詳解操作系統(tǒng)引導(dǎo)與啟動概念》中,我們詳細(xì)講解系統(tǒng)啟動的基本流程,對于理解和處理win7系統(tǒng)開機啟動流程及常見故障維護(hù)有很大幫助的。 對于處于IT一線的運維工程師們每天都在用計算機,卻不知道它是怎樣啟動的,似乎總感覺有些別扭吧。 當(dāng)然,還有一個目的,就是為后續(xù)講解Exsi系統(tǒng)啟動流程做鋪墊! 一、啟動過程 舉例,我的電腦在BIOS里面設(shè)置硬盤啟動。 ⑴、按下主機電源開關(guān), 主板BIOS開始自檢; ⑵、自檢通過后,主板bios找到硬盤上的第一個扇區(qū)主引導(dǎo)記錄MBR; ⑶、MBR引導(dǎo)程序開始讀取硬盤分區(qū)表DPT,分析其中參數(shù)查找活動分區(qū),找到活動分區(qū)中的分區(qū)引導(dǎo)記錄PBR,并且把控制權(quán)交給PBR; ⑷、PBR搜索活動區(qū)中的啟動管理器bootmgr,找到后,PBR把控制權(quán)交給bootmgr(相當(dāng)于xp里的ntldr文件)。 ⑸、bootmgr尋找活動分區(qū)中的boot文件夾中的BCD文件(啟動配置數(shù)據(jù),相當(dāng)于xp里的boot.ini文件)。 ⑹、找到BCD后,bootmgr首先從BCD 中讀取啟動管理器bootmgr菜單的語言版本信息,然后再調(diào)用bootmgr與相應(yīng)語言的BOOTMGR.EXE.MUI (在boot文件夾對應(yīng)語言文件夾中)組成相應(yīng)語言的啟動菜單; 如果存在著多個操作系統(tǒng)并且選擇操作系統(tǒng)的等待時間不為0的話,這時就會在顯示器上顯示操作系統(tǒng)的選擇界面。如果沒有多系統(tǒng),不顯示選擇界面,直接進(jìn)入windows 7系統(tǒng)。 ⑺、選擇windows 7系統(tǒng)后,bootmgr就會讀取BCD里win7系統(tǒng)所在的盤里的windows\system32\winload.exe文件,并且將控制權(quán)交給winload.exe(windows內(nèi)核載入程序)。 ⑻、Winload.exe加載Ntoskrnl.exe和hal.dll(windows7內(nèi)核、硬件、服務(wù))等;
⑼、接下來Ntldr ⑽、驅(qū)動程序加載完成后,最開始只有idle和system進(jìn)程,system進(jìn)程(PID為4),會做如下設(shè)置: i、創(chuàng)建 smss.exe進(jìn)程,它是Windows會話管理器進(jìn)程, 負(fù)責(zé)用戶登錄和登出管理,也是系統(tǒng)中第一個用戶進(jìn)程。 注意,并非system.exe進(jìn)程,如果你看到system.exe進(jìn)程名(一般出現(xiàn)c:\windows目錄下,表示你中病毒了)! ⑾、smss進(jìn)程(由內(nèi)核線程創(chuàng)建),會做如下設(shè)置: i、創(chuàng)建autochk.exe進(jìn)程來檢查磁盤,加載 win32K.sys(Windows子系統(tǒng)的內(nèi)核模式部分),初始化系統(tǒng)環(huán)境變量,控制所有輸入/輸出設(shè)備以及訪問顯示設(shè)備等; ii創(chuàng)建 csrss.exe進(jìn)程,主要管理windows圖形相關(guān)任務(wù),維持Windows的控制,管理所有由該會話創(chuàng)建的進(jìn)程和線程(創(chuàng)建或者刪除線程和一些16位的虛擬MS-DOS環(huán)境)等,比如,用戶登出時向他們發(fā)送退出通知。 iiii、創(chuàng)建winlogon進(jìn)程; iv、創(chuàng)建wininit.exe(vista以后才有該進(jìn)程,注意與XP區(qū)別); v、創(chuàng)建虛擬內(nèi)存頁面文件等。 ⑿、Winlogon進(jìn)程依次創(chuàng)建其他進(jìn)程,如下: i、創(chuàng)建系統(tǒng)服務(wù)services.exe進(jìn)程(vista以后由wininit.exe負(fù)責(zé)加載),啟動系統(tǒng)服務(wù)和加載Auto驅(qū)動; ii、創(chuàng)建本地安全驗證Lsass.exe進(jìn)程(vista以后由wininit.exe負(fù)責(zé)加載); iii、創(chuàng)建logonui.exe 此進(jìn)程,這個時候,顯示歡迎界面,選擇賬號,輸入密碼就可以登錄到系統(tǒng)中了(如果只有一個用戶,并且沒有密碼,則歡迎界面會一閃而過); iv、創(chuàng)建Userinit.exe進(jìn)程(密碼發(fā)給Lsass.exe進(jìn)程,驗證通過后被創(chuàng)建),用來對該用戶初始化工作; v、創(chuàng)建explorer.exe進(jìn)程(由Userinit.exe進(jìn)程創(chuàng)建),這個時候你才可以進(jìn)入到工作桌面了,淘寶購物、QQ、文檔、PPT等工作了。 現(xiàn)在,我們來了解下,在WindowsXP系統(tǒng)下(windows 7大同小異),system進(jìn)程、smss.exe、csrss.exe、winlogon.exe等進(jìn)程的關(guān)系,如下圖7.1所示: 圖7.1 ⒀、運行空閑(Idle)進(jìn)程,等待您登錄系統(tǒng)了,從而啟動整個windows 7系統(tǒng)。用戶輸入賬號與密碼后, Userinit.exe進(jìn)程執(zhí)行用戶環(huán)境的初始化工作,然后查詢注冊表HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/Shell鍵的值,默認(rèn)為explorer.exe,啟動它。然后Userinit進(jìn)程退出。 因此explorer.exe進(jìn)程沒有父進(jìn)程,它用來顯示系統(tǒng)的桌面環(huán)境,包括桌面圖標(biāo)和文件管理,請不要將此進(jìn)程與瀏覽器進(jìn)程(iexplore.exe)混淆! 這個過程簡單地概括為:
Windows 7系統(tǒng): WindowsXP系統(tǒng):BIOS-COMS——MBR-DPT——PBR-ntlrd——boot.ini-系統(tǒng)內(nèi)核
注:傳統(tǒng)BIOS+MBR分區(qū)表的啟動方式將會漸漸被EFI 我們再來對此下windowsXP與windows7,如下圖所示: 圖7.2 二、常見故障分析 2.1、MBR 常見提示:一般MBR出故障時就是開機時左上角光標(biāo)一直閃的情況。 癥狀分析:就是已經(jīng)啟動了硬盤,而MBR為空或無法讀取。 2.2、分區(qū)表(DPT)故障
常見提示:An 癥狀分析:最常見的DPT故障就是活動分區(qū)的丟失,造成硬盤啟動時不知道該讀取哪個分區(qū),所以也就找不到系統(tǒng)。 2.3、PBR故障
常見提示:A 癥狀分析:即根據(jù)分區(qū)表而去啟動活動分區(qū),但是活動分區(qū)上的PBR出了故障,自然就是磁盤讀取錯誤 2.4、讀取PBR找尋引導(dǎo)文件(bootmgr)時出現(xiàn)各種問題
常見提示:NTlrd 癥狀分析:造成這種原因一般有三種情況:
1)活動分區(qū)標(biāo)記錯誤,即目前的活動分區(qū)不是原來的活動分區(qū),自然在該分區(qū)下就找不到引導(dǎo)文件提示XXX
2)PBR設(shè)置錯誤,啟動系統(tǒng)時去尋找bootmgr,是因為尋找bootmgr的命令寫在PBR中,PBR不去找bootmgr而去找NTlrd或別的文件(NTlrd是NT5.X,XP系統(tǒng)的引導(dǎo)文件),自然就是PBR上的命令寫錯了 3)的確是bootmgr損壞丟失 2.5、BCD故障
常見提示:主要特征為上面一個白色橫欄,上面寫著windows 癥狀分析:即BCD文件丟失或損壞或設(shè)置,造成bootmgr無法找到讀取BCD或者無法根據(jù)BCD的設(shè)置找到系統(tǒng)并啟動,所以反饋出如上信息。 2.6、winload.exe或內(nèi)核文件故障
常見提示:藍(lán)屏 癥狀分析:大多情況下是系統(tǒng)文件被病毒或者什么原因破壞,可以嘗試過PE里替換系統(tǒng)文件,有時PE方法無效則重裝會更快解決問題。 2.7、驅(qū)動故障
常見提示:出現(xiàn)win7 癥狀分析:自然就是驅(qū)動無法加載造成無法啟動,黑屏好解決,大多顯卡驅(qū)動問題。藍(lán)屏基本沒救了,重裝系統(tǒng)。 2.8、服務(wù)項或啟動項故障
常見癥狀:開機時卡在歡迎界面,或者進(jìn)入桌面后只有一個鼠標(biāo)等等等各種在歡迎界面時或界面后的不正常現(xiàn)象。 癥狀分析: 1)系統(tǒng)關(guān)鍵服務(wù)被禁止; 2)開機必須啟動的文件被損壞或設(shè)置被篡改(注冊表中); 3)第三方服務(wù)項或啟動項的干擾。 附件:Windows關(guān)鍵文件 smss.exe被叫作會話管理子系統(tǒng),負(fù)責(zé)啟動用戶的會話,是重要的引導(dǎo)操作。如創(chuàng)建環(huán)境變量,啟動csrss和進(jìn)行排隊在系統(tǒng)引導(dǎo)前的文件拷貝操作(它處理Windows文件保護(hù)并通過Winlogon創(chuàng)建登陸會話)。自Win7,smss作為系統(tǒng)重要進(jìn)程,中斷smss會導(dǎo)致系統(tǒng)藍(lán)屏。 csrss.exe是客戶/服務(wù)器運行子系統(tǒng)用戶態(tài)的主要部分。由于大部分Win32子系統(tǒng)操作被移入核心態(tài)驅(qū)動(Win32.sys),所以它主要負(fù)責(zé)Win32控制臺窗口、創(chuàng)建或刪除線程和部分16位虛擬MS-DOS環(huán)境。它是一個核心子系統(tǒng)必須總在運行,因而中斷該進(jìn)程將導(dǎo)致藍(lán)屏死機。NTSD中設(shè)置標(biāo)識可以調(diào)試它。 wininit.exe是Windows啟動/關(guān)閉服務(wù)。 logonui.exe叫Windows登陸用戶界面,關(guān)系到Windows用戶切換屏幕。 winlogon.exe屬于Windows登陸管理。它處理系統(tǒng)上的登陸和登出過程。 userinit.exe在啟動時管理不同需要的啟動順序,如建立網(wǎng)絡(luò)連接和啟動Windows shell,由winlogon.exe調(diào)用。 lsass.exe負(fù)責(zé)加強系統(tǒng)上的安全策略,檢查登陸進(jìn)系統(tǒng)的用戶并創(chuàng)建安全令牌。 services.exe管理啟動和停止系統(tǒng)服務(wù)。該進(jìn)程同樣處理系統(tǒng)引導(dǎo)時自動啟動服務(wù)和系統(tǒng)關(guān)閉時停止服務(wù)。 svchost.exe是一個通用服務(wù)主進(jìn)程名,它從動態(tài)鏈接庫運行,屬于微軟服務(wù)主進(jìn)程。啟動時,svchost.exe檢查服務(wù)注冊表服務(wù)構(gòu)建它必須加載的服務(wù)列表。 explorer.exe叫Windows 資源管理器,也叫用戶shell,從它我們看到熟悉的任務(wù)欄、桌面等,能通過任務(wù)管理器停止。它有命令行選項。 Slsvc.exe管理所有Windows許可活動。 spoolsv.exe管理所有本地和網(wǎng)絡(luò)打印隊列以及控制所有打印工作。 lsm.exe叫本地會話管理。它主要用來管理終端服務(wù)器連接。 conime.exe叫做控制臺IME,主要用作亞洲語言??梢酝ㄟ^修改注冊表加載。 dllhost.exe是COM+主進(jìn)程控制IIS中的進(jìn)程并被許多程序使用。 winmgmt.exe是Windows客戶端管理核心組件。當(dāng)首次客戶端應(yīng)用程序連接或管理應(yīng)用程序連續(xù)請求它的服務(wù)時它初始化。 ntdll.dll是描述NT層DLL(NT Layer DLL)的文件,它包含NT kernel的功能,實際可看作映射表。 希望本篇文章對在處于維護(hù)一線的IT工程師們有幫助! |
|