Windows(多)操作系統(tǒng)啟動過程 收藏
一.WinPE啟動原理
移動硬盤PE啟動原理
WinPE文件組成:
引導(dǎo)文件:NTLDR和NTDETECT.COM
系統(tǒng)文件:WinNT.XPE(WinPE.XPE)和WinPE.IS_(或WinPE.IM_),有些WinPE沒有內(nèi)置中文支持,所以還要WNPEFONT.BIN來支持中文。
外置程序:WinPE.INI(也可以是其它文件名,如PESOFT.INI等)和OP.WIM
加載系統(tǒng)文件:
1.NTLDR和NTDETECT.COM做相關(guān)引導(dǎo)工作
2.WinNT.XPE引向MiniPE\WinPE.IS_(=WinPE.ISO=WXPX) \SYSTEM32\
加載外置程序:
3.PECMD.INI(位于”WXPE\SYSTEM32”目錄下)引向MiniPE\WinPE.INI
4.WinPE.INI指向MiniPE\OP.WIM并為外置程序分配盤符B:然后把相關(guān)程序裝入B盤
注意:
以上路徑和文件名可按自己的習(xí)慣更改。
以上是老毛桃WinPE啟動原理,但一般WinXP盤中帶的WinPE沒有OP.WIM文件,原因在于它已經(jīng)把OP.WIM中程序解壓出來了(更應(yīng)該說是老毛桃把外置程序壓縮到了OP.WIM中)。
制作一個簡單WinPE啟動盤:
從網(wǎng)上下載一個WinXP操作系統(tǒng)(如電腦公司,番茄花園,雨林木風(fēng))或WinPE系統(tǒng)(如老毛桃WinPE,深山紅葉WinPE)后解壓到移動硬盤(如H:)根目錄下,在H盤中找到NTDETECT.COM和SETUPLDR.BIN兩個文件(這兩個文件一般在AXPE文件中)后復(fù)制到H盤根目錄下并將SETUPLDR.COM重命名為NTLDR(無后綴名),再將H盤設(shè)置為活動分區(qū),然后重啟電腦從硬盤啟動就會進入WinPE,
硬盤PE啟動原理
WinPE文件組成:
Avldr, Peldr, WinPE.XPE, WNPEFONT.BIN, AXPE目錄(有WINPE.IM_,SETUPLDR.BIN,NTDETECT.COM)
這些文件在不同WinPE中命名有可能不同。
這些文件可在用系統(tǒng)盤安裝WinPE后備份,然后你就可以根據(jù)以下方法通過復(fù)制這幾個文件來安裝WinPE了。
注意:這幾個文件也可以用來做移動硬盤WinPE了。
Windows NT5啟動管理器: 將以上文件復(fù)制到系統(tǒng)盤(假如是C:)根目錄下,在boot.ini添加C:\AVLDR=“你喜歡的名字”即可。我們可以這樣理解:AVLDR-->pelder-->SETUPLDR.BIN-->NTDETECT.COM-->WinPE.XPE-->WINPE.IM_
Windows NT6管理器:同樣將以上文件復(fù)制到系統(tǒng)根目錄下,然后用easyBCD或bcdedit命令添加引導(dǎo)文件即可。引導(dǎo)文件是AVLDR還是peldrq我還試過。但我個人認為是peldr,我認為peldr就是GRUB4DOS中g(shù)rldr的重命名,而WinPE.XPX就相當(dāng)于menu.lst.
因為我不WindowsNT管理添加WinPE選項,所以沒試過,有志者可以去試驗。
Grub4dos菜單:這就簡單了,同樣要將以上文件復(fù)制到根目錄下,avldr可不要了,在grub中添加chainloader (hdx,y)/peldr就可以。
二.WinXP+Win2000啟動原理 電源開啟自檢過程BIOS--> 初始化啟動過程MBR-->引導(dǎo)程序載入過程NTLDR (boot.ini或hiberfil.sys或Bootsect.dos)-->檢測和配置硬件過程NTDETECT.COM-->內(nèi)核加載過程NTOKRNL.EXE-->用戶登錄過程-->即插即用設(shè)備的檢測過程
1.pagefile.sys
虛擬內(nèi)存文件(大小經(jīng)常自己發(fā)生變動,小的時候可能只有幾十兆,大的時候則有數(shù)百兆),也叫頁面文件,跟你的休眠有關(guān)系,是在你物理內(nèi)存不足的時候調(diào)用的(當(dāng)運行一個程序需要大量數(shù)據(jù)、占用大量內(nèi)存時,內(nèi)存就會被“塞滿”,并將那些暫時不用的數(shù)據(jù)放到硬盤中,而這些數(shù)據(jù)所占的空間就是虛擬內(nèi)存),是系統(tǒng)文件,所以不能刪除(在別的操作系統(tǒng)下刪除,但是你下次登陸,他又自動生成),但是可以禁用和修改: 我的電腦>>屬性>>高級>>性能>>設(shè)置>>性能選項>>高級>>更改。我強烈的建議你不要禁用,否則后果很嚴重
2.boot.ini
3.bootfont.bin
4.AUTOEXEC.BAT
5.CONFIG.SYS
專業(yè)的系統(tǒng)啟動配置文件,它主要用于加載內(nèi)存管理程序、設(shè)置擴充內(nèi)存及擴展內(nèi)存、加載有關(guān)硬件驅(qū)動程序,設(shè)置有關(guān)環(huán)境變量等,為用戶計算機的正常使用創(chuàng)造必要的用戶環(huán)境(在DOS時代,精通Config.SYS文件往往是“專家”的標(biāo)志)。
(在Windows 95/98中,系統(tǒng)已經(jīng)自帶了內(nèi)存管理、環(huán)境變量等設(shè)置功能,Config.sys文件的作用已經(jīng)遠遠沒有那么重要了,它仍在“服役”的原因主要是為了保持對老版本DOS應(yīng)用程序的兼容) 6.DOS內(nèi)核三文件
MSDOS.SYS: 管理和啟動系統(tǒng)的各個部件,為DOS的引導(dǎo)作好準(zhǔn)備工作
IO.SYS: 負責(zé)系統(tǒng)的基本輸入和輸出,即DOS與各部件之間的聯(lián)系
COMMAND.COM: DOS與用戶的接口,它主要提供了一些DOS的內(nèi)部命令,并能接受、判別并執(zhí)行用戶輸入的命令
具有這三個文件的磁盤就是引導(dǎo)盤。而除此之外還包含許多DOS外部命令的磁盤則稱為系統(tǒng)盤。
7.Windows內(nèi)核兩文件
NTLDR: A: 將處理器的實模式改為32位平面內(nèi)存模式
B: 運行適當(dāng)?shù)男∥募到y(tǒng)驅(qū)動程序
C: 讀boot.ini文件或hiberfil.sys文件
D: 裝載所選操作系統(tǒng)
NTDETECT.COM: 搜索計算機硬件并將硬件信息列表傳送給NTLDR
系統(tǒng)的引導(dǎo)過程:
預(yù)引導(dǎo)階段:
1、電源自檢程序開始運行::::檢測系統(tǒng)的總內(nèi)存以及其他硬件設(shè)備的狀況 2、磁盤主引導(dǎo)記錄被裝入內(nèi)存,并且程序開始執(zhí)行 3、通過主引導(dǎo)記錄查找到活動分區(qū),活動分區(qū)的引導(dǎo)扇區(qū)被裝入內(nèi)存 4、NTLDR從引導(dǎo)扇區(qū)被裝入并初始化 引導(dǎo)階段-初始引導(dǎo)加載器階段:
5、NTLDR將處理器的實模式改為32位平面內(nèi)存模式 6、NTLDR開始運行適當(dāng)?shù)男∥募到y(tǒng)驅(qū)動程序,小文件系統(tǒng)驅(qū)動程序是建立在NTLDR 內(nèi)部的,這使NTLDR能讀FAT或NTFS文件系統(tǒng)分區(qū)。 引導(dǎo)階段-操作系統(tǒng)選擇階段:
7、NTLDR讀boot.ini文件(如果在系統(tǒng)根目錄下發(fā)現(xiàn)有Hiberfil.sys文件且該文件有 效,那么NTLDR將讀取Hiberfil.sys文件里的信息并讓系統(tǒng)恢復(fù)到休眠以前的狀態(tài), 這時并不處理boot.ini文件) 8、NTLDR裝載所選操作系統(tǒng) * 如果NT/XP被選擇,,NTLDR運行Ntdetect.com * 對于其他的操作系統(tǒng),NTLDR裝載并運行Bootsect.dos然后向它傳遞控制。 windows NT過程結(jié)束。
引導(dǎo)階段-硬件檢測(和配置選擇)階段
9、NTDETECT.COM 搜索計算機硬件(如果有多個硬件配置列表,那么將會出現(xiàn)配置文件選擇菜單,如果只有一個則不會顯示)并將硬件信息列表傳送給NTLDR,NTLDR將這些硬件信息信息寫進注冊表“HKEY_LOCAL_MACHINE”中的Hardware中
加載內(nèi)核階段
10、.然后NTLDR裝載NTOKRNL.EXE內(nèi)核程序,硬件抽象層HAL.DLL和系統(tǒng)信息集 合。 11、NTLDR搜索系統(tǒng)信息集合,并裝載設(shè)備驅(qū)動配置以便設(shè)備在啟動時開始工作 12、NTLDR把控制權(quán)交給NTOKRNL.EXE,這時,啟動程序結(jié)束,裝載階段開始 8.故障解決
如果你已經(jīng)安裝了一個新版本的操作系統(tǒng),但是后面又安裝了一個舊版本的操作系統(tǒng),當(dāng)舊版本操作系統(tǒng)安裝完畢以后可能會發(fā)現(xiàn)無法進入原先的新版本的操作系統(tǒng)。如果碰到類似問題,那么問題一定出現(xiàn)在NTLDR 和NTDETECT.COM 版本上面。由于舊版本的NTLDR 和NTDETECT.COM 不能夠識別新版本操作系統(tǒng)的NTOSKRNL.EXE,造成系統(tǒng)不能夠啟動(一般顯示黑屏)。解決方法很簡單,只需要使用新版本的NTLDR 和NTDETECT.COM 替換舊版本的就可以了。
9.啟動過程詳解
NTLDR一般存放于C盤根目錄下,是一個具有隱藏和只讀屬性的系統(tǒng)文件。它的主要職責(zé)是解析Boot.ini文件。如果你對它的理解還不是很清楚,那么下面我們就以Windows XP為例介紹NTLDR在系統(tǒng)引導(dǎo)過程中的作用。 Windows XP在引導(dǎo)過程中將經(jīng)歷預(yù)引導(dǎo)、引導(dǎo)和加載內(nèi)核三個階段,這與Windows 9X直接讀取引導(dǎo)扇區(qū)的方式來啟動系統(tǒng)是完全不一樣的,NTLDR在這三個階段的引導(dǎo)過程中將起到至關(guān)重要的作用。
1.預(yù)引導(dǎo)階段 在預(yù)引導(dǎo)階段里計算機所做的工作有:運行POST程序,POST將檢測系統(tǒng)的總內(nèi)存以及其他硬件設(shè)備的狀況,將磁盤第一個物理扇區(qū)加載到內(nèi)存,加載硬盤主引導(dǎo)記錄并運行,主引導(dǎo)記錄會查找活動分區(qū)的起始位置。接著活動分區(qū)的引導(dǎo)扇區(qū)被加載并執(zhí)行,最后從引導(dǎo)扇區(qū)加載并初始化NTLDR文件。 2.引導(dǎo)階段
在引導(dǎo)階段中,Windows XP將會依次經(jīng)歷初始引導(dǎo)加載器階段、操作系統(tǒng)選擇階段、硬件檢測階段以及配置選擇階段這四個小的階段。 (1)在初始引導(dǎo)加載器階段中,NTLDR將把計算機的微處理器從實模式轉(zhuǎn)換為32位平面內(nèi)存模式,在實模式中,系統(tǒng)會為MS-DOS預(yù)留640KB大小的內(nèi)存空間,其余的內(nèi)存都被看做是擴展內(nèi)存,在32位平面模式中系統(tǒng)將所有內(nèi)存都視為可用內(nèi)存,然后NTLDR執(zhí)行適當(dāng)?shù)男⌒臀募到y(tǒng)驅(qū)動程序,這時NTLDR可以識別每一個用NTFS或FAT格式的文件系統(tǒng)分區(qū),至此初始引導(dǎo)加載器階段結(jié)束。 (2)當(dāng)初始引導(dǎo)加載器階段結(jié)束后將會進入操作系統(tǒng)選擇階段,如果計算機上安裝了多個操作系統(tǒng),由于NTLDR加載了正確的Boot.ini文件,那么在啟動的時候?qū)霈F(xiàn)要求選擇操作系統(tǒng)的菜單,NTLDR正是從boot.ini文件中查找到系統(tǒng)文件的分區(qū)位置。如果選擇了NT系統(tǒng),那么NTLDR將會運行NTDETECT.COM文件,否則NTLDR將加載BOOTSECT.DOS,然后將控制權(quán)交給BOOTSECT.DOS。如果Boot.ini文件中只有一個操作系統(tǒng)或者其中的timeout值為0,那么將不會出現(xiàn)選擇操作系統(tǒng)的菜單畫面,如果Boot.ini文件非法或不存在,那么NTLDR將會嘗試從默認系統(tǒng)卷啟動系統(tǒng)。 小提示:NTLDR啟動后,如果在系統(tǒng)根目錄下發(fā)現(xiàn)有Hiberfil.sys文件且該文件有效,那么NTLDR將讀取Hiberfil.sys文件里的信息并讓系統(tǒng)恢復(fù)到休眠以前的狀態(tài),這時并不處理Boot.ini文件。 (3)當(dāng)操作系統(tǒng)選擇階段結(jié)束后將會進入硬件檢測階段,這時NTDETECT.COM文件將會收集計算機中硬件信息列表,然后將列表返回到NTLDR,這樣NTLDR將把這些硬件信息加載到注冊表“HKEY_LOCAL_MACHINE”中的Hardware中。 (4)硬件檢測階段結(jié)束后將會進入配置選擇階段,如果有多個硬件配置列表,那么將會出現(xiàn)配置文件選擇菜單,如果只有一個則不會顯示。 3.加載內(nèi)核階段
在加載內(nèi)核階段中,NTLDR將加載NTOKRNL.EXE內(nèi)核程序,然后NTLDR將加載硬件抽象層(HAL.dll),接著系統(tǒng)將加載注冊表中的“HKEY_MACHINESystem”鍵值,這時NTLDR將讀取“HKEY_MACHINESystemselect”鍵值來決定哪一個ControlSet將被加載。所加載的ControlSet將包含設(shè)備的驅(qū)動程序以及需要加載的服務(wù)。再接著NTLDR加載注冊表“HKEY_LOCAL_MACHINESystemservice”下的start鍵值為0的底層設(shè)備驅(qū)動。當(dāng)ControlSet的鏡像CurrentControlSet被加載時,NTLDR將把控制權(quán)傳遞給NTOSKRNL.EXE,至此引導(dǎo)過程將結(jié)束。 小提示:如果在啟動的時候按F8鍵,那么我們將會在啟動菜單中看到多種選擇啟動模式,這時NTLDR將根據(jù)用戶的選擇來使用啟動參數(shù)加載NT內(nèi)核,用戶也可以在Boot.ini文件里設(shè)置啟動參數(shù)。 三.WinVista+Win2008+Win7啟動原理
一般順序為:BIOS-->MBR--> Bootmgr -->BCD-->Winload.exe-->內(nèi)核加載。
Windows 7操作系統(tǒng)啟動過程詳解,一般順序為:BIOS-->MBR--> Bootmgr -->BCD-->Winload.exe-->內(nèi)核加載。
1) 開機后,BIOS進行開機自檢(POST),然后選擇從硬盤進行啟動,加載硬盤的MBR并把控制權(quán)交給MBR(MBR是硬盤的第一個扇區(qū),它不在任何一個分區(qū)內(nèi));
2) MBR會搜索64B大小的分區(qū)表,找到4個主分區(qū)(可能沒有4個)的活動分區(qū)并確認其他主分區(qū)都不是活動的,然后加載活動分區(qū)的第一個扇區(qū)(Bootmgr)到內(nèi)存;
3) Bootmgr尋找并讀取BCD,如果有多個啟動選項,會將這些啟動選項反映在屏幕上,由用戶選擇從哪個啟動項啟動。
4) 選擇從Windows 7啟動后,會加載C:\windows\system32\winload.exe,并開始內(nèi)核的加載過程,內(nèi)核加載過程比較長,比較復(fù)雜,這里就不一一講了。
在這個過程中,bootmgr和BCD存放在Windows 7的保留分區(qū)里,而從Winload.exe開始,就開始進入到C盤執(zhí)行內(nèi)核的加載過程了。
WinXP+Win7+Win2008多啟動過程。
先看各版本windows操作系統(tǒng)的系統(tǒng)文件:
Windows共有: autoexec.bat MS-DOS批處理文件
config.sys 系統(tǒng)啟動配置文件(可無,為保持對老版本DOS應(yīng)用程序的兼容而存在)
pagefile.sys 虛擬內(nèi)存文件
WinXP獨有: boot.ini
bootfont.bin
io.sys
msdos.sys
ntdetect.com
ntldr
Win7獨有: hibefil.sys 存儲系統(tǒng)休眠前的信息
bootmgr 啟動管理即BootManager
boot目錄
//ghldr
Win2008獨有: hibefil.sys 存儲系統(tǒng)休眠前的信息
bootmgr 啟動管理即BootManager
boot目錄
//ghldr
一.先安裝WinXP到C盤,然后在XP下安裝Win7到D盤,最后在XP下安裝Win2008到E盤,安裝結(jié)束后,操作如下:
1.C盤下除autoexec.bat config.sys pagefile.sys boot.ini bootfont.ini io.sys msdos.sys ntdetect.com ntldr 和 bootmgr boot目錄 以外的文件夾都可以刪除。
D 盤下除autoexec.bat config.sys pagefile.sys hibefil.sys 都可以刪除。
E 盤下除autoexec.bat config.sys pagefile.sys hibefil.sys 都可以刪除。
2.備份bootmgr boot目錄 。
3.重裝WinXP到C盤,將bootmgr boot目錄 復(fù)制到C盤根目錄下,重啟后如果沒有MBR菜單,則在WinXP下用EsayBCD軟件的Manage Bootloader功能可以恢復(fù)。操作過程:啟動EasyBCD--﹥單擊Manage Bootloader--﹥單擊Reinstall the Vista Bootloader--﹥Write MBR--﹥關(guān)閉窗口--﹥重啟電腦。
二.先安裝WinXP到C盤,再XP下安裝Win7到D盤,安裝結(jié)束后,操作如下:
1.C盤下除autoexec.bat config.sys pagefile.sys boot.ini bootfont.ini io.sys msdos.sys ntdetect.com ntldr 和 bootmgr boot目錄 以外的文件夾都可以刪除。
D 盤下除autoexec.bat config.sys pagefile.sys hibefil.sys 都可以刪除。
2.備份bootmgr boot目錄 。
3.重裝WinXP到C盤,將bootmgr boot目錄 復(fù)制到C盤根目錄下,重啟后如果沒有MBR菜單,則在WinXP下用EsayBCD軟件的Manage Bootloader功能可以恢復(fù)。操作過程:啟動EasyBCD--﹥單擊Manage Bootloader--﹥單擊Reinstall the Vista Bootloader--﹥Write MBR--﹥關(guān)閉窗口--﹥重啟電腦。
三.先安裝WinXP到C盤,再XP下安裝Win2008到E盤,安裝結(jié)束后,操作如下:
1.C盤下除autoexec.bat config.sys pagefile.sys boot.ini bootfont.ini io.sys msdos.sys ntdetect.com ntldr 和 bootmgr boot目錄 以外的文件夾都可以刪除。
E 盤下除autoexec.bat config.sys pagefile.sys hibefil.sys 都可以刪除。
2.備份bootmgr boot目錄 。
3.重裝WinXP到C盤,將bootmgr boot目錄 復(fù)制到C盤根目錄下,重啟后如果沒有MBR菜單,則在WinXP下用EsayBCD軟件的Manage Bootloader功能可以恢復(fù)。操作過程:啟動EasyBCD--﹥單擊Manage Bootloader--﹥單擊Reinstall the Vista Bootloader--﹥Write MBR--﹥關(guān)閉窗口--﹥重啟電腦。
Windows7
MBR建議采用結(jié)構(gòu)
早期版本的 Windows
Windows Server 2008 Ntldr~Boot.ini WindowXP WinServer2003 Grub引導(dǎo),非Grub引導(dǎo) Bootmgr~BCD Grub引導(dǎo),非Grub引導(dǎo) WinNT5系列 假設(shè)1:按 一. 順序裝了多個系統(tǒng),而把 二.2 的兩個備份文件復(fù)制到C盤根目錄下,在XP用EsayBCD軟件的Manage Bootloader功能操作后,在MBR只有WinXP和Win7這兩個操作系統(tǒng),現(xiàn)在我們要把Win2008加到MBR中,操作如下:啟動EasyBCD--﹥單擊ADD/Remove Entries--﹥選擇Windows選項卡--﹥選擇Type為Windows Visat/Longhorn--﹥Name為Windows Sever 2008 或 其它自己喜歡的名字--﹥Driver為E:--﹥單擊Add Entry--﹥重啟電腦。MBR有了Win2008.
假設(shè)2:按 一. 順序裝了多個系統(tǒng),而把 三.2 的兩個備份文件復(fù)制到C盤根目錄下,在XP用EsayBCD軟件的Manage Bootloader功能操作后,在MBR只有WinXP和Win2008這兩個操作系統(tǒng),現(xiàn)在我們要把Win7加到MBR中,操作如下:啟動EasyBCD--﹥單擊ADD/Remove Entries--﹥選擇Windows選項卡--﹥選擇Type為Windows Visat/Longhorn--﹥Name為Windows7 或 其它自己喜歡的名字--﹥Driver為D:--﹥單擊Add Entry--﹥重啟電腦。MBR沒有了Win7.
通過以個兩個假設(shè)說明了什么,我也不清楚,但我們可以明白多操作系統(tǒng)的一些操作了。我個人認為是激活WIN7后在C盤上產(chǎn)生的grldr造成的,不深究,等正式版發(fā)布后再探討。
對于 一鍵Ghost WinPE 超級急救盤 矮人DOS工具箱 等工具可以放到Boot.ini中啟動,最好不要在MBR中與”Windows7” “ Windows Server 2008” “Windows Vista” 和 “早期版Windows”并列,也就是說你安裝了Windows NT6 至NT7的版本之后MBR 中只能有NT6至NT7的windows 版本,“早期版本的 Windows”選項控制NT5版本(Windows 2000/XP/Server 2003),我們只有選擇了“早期版本的 Windows”選項,由 BOOTMGR 將啟動控制權(quán)移交給 NTLDR 并自動切換為 NTLDR 菜單,這時才可以繼續(xù)選擇需要啟動 Windows XP 還是 Windows Server 2003。換言之,NTLDR 啟動菜單就像是 BOOTMGR 啟動菜單的子菜單一樣
發(fā)表于
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/cz_water/archive/2009/08/23/4476329.aspx |
|