原文轉自
Windows PE的全名是WindowsPreinstallationEnvironment(WinPE)直接從字面上翻譯就
是“Windows預安裝環境”。微軟的本意是:WinPE僅用做系統維護,并設置了各種限制。可以簡單的理解為:PE是Windows系統的超級精簡版、超級權限版(以系統system賬戶登錄)!對于無法進入系統、修復系統、分區、重裝系統等問題都可以進入PE進行操作,因此PE是系統維護強大的武器!
微軟原版的PE,只有“命令行”即DOS窗口。網上流傳的各種版本都是“高手們”修改出來的,甚至有的PE可以作為系統來使用,這都偏離了微軟的本意。我不主張“肆意擴展”PE的功能來彰顯“技術”,但是“可視化操作界面、常用功能的集成”這些都是必要且必須的,我會在以后的文章中逐一解說。
通常PE啟動有兩種方式:1.加載到內存 2.直接在某個介質(例如光盤)啟動。兩種方式各有利弊:加載到內存就會對內存大小要求高;直接在某種介質啟動速度就會減慢。但是就如今電腦配置飛速發展的趨勢來看,內存大小已經不是限制因素,因此多數是以“加載到內存”的方式啟動。
下面簡要介紹Windows PE的命名規則:
Windows PE 1.x表示Windows XP內核。(x表示系統版本,例如SP1)
Windows PE 1.5表示Windows 2003內核。(x表示系統版本,例如SP1)
Windows PE 2.x表示Windows Vista內核。(x表示系統版本,例如SP1)
Windows PE 3.x表示Windows 7內核。(x表示系統版本,例如SP1)
Windows PE 4.x表示Windows 8內核。(x表示系統版本,例如SP1)
舉例:PE 1.3表示Windows XP SP3內核的PE。
Windows PE 1.x(1.5類似)引導過程(以網上常見的PE為例):
第1步.內核啟動:光盤啟動后,自動尋找光盤WXPE目錄下的SETUPLDR.BIN,并加載它(始引導文件,相當于NT系統的NTLDR),需要同目錄下的NTDETECT.COM(同NT系統的同名文件);引導文件中指示了WINNT.SIF(WINNT.XPE)的位置(相當于XP系統BOOT.INI)。
WINNT.XPE內容如下:
[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\WXPE\System32"
OsLoadOptions = "/minint /fastdetect /rdpath=MiniPE\winpe.IM_"
以上內容表示:
1.以“ramdisk方式”加載光盤鏡像文件;
2.啟動后的系統路徑為\WXPE\System32,這里相當于我們平常的\Windows\System32;
3.該配置文件指示了系統鏡像(IS_、ISO、IM_或IMA,也就是常說的“內核”)的位置。
第2步.加載外置程序:外置程序的加載依賴于PECMD.INI(有的存在于WINPE.IS_ 的WXPE\SYSTEM32\目錄下;有的在Programs文件夾的某個目錄下...),其中形如"LOAD \MiniPE\WinPE.INI"的語句即為加載外置程序的配置文件(WinPE.INI)。這個文件可以在任何可見分區(PE下可見的分區),PECMD在執行時自動搜索所有“可見分區\MiniPE\下的WinPE.INI”,再根據WinPE.INI實現加載外部程序。(例如外置程序在PE.WIM包里面,或者直接存在某個文件夾下,說明:以上目錄各個版本PE名稱略有不同)。
簡單理解:光盤引導文件(例如pe.bif)——SETUPLDR.BIN——WINNT.XPE——啟動PE1.x。
Windows PE 3.x(2.x類似)引導過程(詳見Waik說明文件):
簡明過程:光盤啟動后自動加載引導文件,將控制權交給Bootmgr,Bootmgr讀取Boot\BCD,根據BCD文件的信息讀取Sources\Boot.wim文件,進入PE。
詳細過程(微軟Waik說明文檔):
1.加載特定媒體上的啟動扇區(MBR)。將控制傳遞給Bootmgr。Bootmgr從啟動配置數據(BCD)中提取基本的啟動信息,并將控制權傳遞給Boot.wim中包含的Winload.exe文件。然后Winload.exe加載相應的硬件抽象層(HAL),并加載系統注冊表配置單元和必需的啟動驅動程序。完成加載后,將會準備執行內核Ntoskrnl.exe的環境。
2.執行Ntoskrnl.exe,完成環境設置。將控制權傳遞給會話管理器(SMSS)。
3.SMSS加載注冊表的剩余部分,配置運行Win32子系統(Win32k.sys)的環境及其各種進程。SMSS加載用于創建用戶會話的Winlogon進程,然后啟動服務和剩余的非必要設備驅動程序及安全子系統(LSASS)。
4.Winlogon.exe根據注冊表值HKLM\SYSTEM\Setup\CmdLine來運行設置。如果存在%SYSTEMDRIVE%\sources\setup.exe,Winpeshl.exe將啟動它,否則Winpeshl.exe將查找在%SYSTEMROOT%\system32\winpeshl.ini中指定的應用程序。如果未指定任何應用程序,則Winpeshl.exe將執行cmd /k %SYSTEMROOT%\system32\startnet.cmd。默認情況下,Windows PE包含一個將啟動Wpeinit.exe的Startnet.cmd文件。Wpeinit.exe加載網絡資源,并與網絡組件(如DHCP)進行協調。
5.Wpeinit.exe完成后,將顯示命令提示符窗口。此時,WinPE 3.1的啟動過程完成。
簡單理解:光盤引導文件(例:pe.bif)——bootmgr——BCD——boot.wim——啟動PE3.x。