Windows Preinstallation Environment

Windows Preinstallation Environment
本文轉自:http://blog.csdn.net/drwei/archive/2004/10/09/129693.aspx


  Windows PreInstallation Environment(Windows PE)直接從字面上翻譯就是“Windows預安裝環境”,微軟在2002年7月22日發佈,它的原文解釋是:“Windows預安裝環境(Windows PE)是帶有限服務的最小Win32子系統,基於以保護模式運行的Windows XP Professional內核。它包括運行Windows安裝程序及腳本、連接網絡共享、自動化基本過程以及執行硬件驗證所需的最小功能。”換句話說,你可把Windows PE看作是一個只擁有最少核心服務的Mini操作系統。微軟推出這麼一個操作系統當然是因爲它擁有與衆不同的系統功能,如果要用一句話來解釋,我認爲與Win9X/2000/XP相比,Windows PE的主要不同點就是:它可以自定義製作自身的可啓動副本,在保證你需要的核心服務的同時保持最小的操作系統體積,同時它又是標準的32位視窗API的系統平臺。當然,現在這麼說也許難以理解,沒有關係,下面讓我們來仔細研究它。

Windows PE概覽

  即使有剛纔的解釋,你一定還是對這個全新概念的Mini操作系統一頭霧水,沒關係,在這裏我將演示一下其運行的全過程,相信看過之後你或許就會有大致的瞭解。大多數人獲得的Windows PE光碟(包括我手上這張ISO鏡像光碟)應該是一張“Windows XP OPK”CD,意思就是Windows XP OEM預安裝工具包CD。實際上,Windows XP OPK CD是Windows PE 32位版本的一個可引導副本,也就是說,這張CD已經是個用Windows PE定義製作的操作系統了,我們可直接用它來引導系統。先看看這張CD的目錄結構吧,總共有352MB,是不是有些大呢?其實由於這是個副本(至少包含了不少驅動程序),大小是由當時自定義製作決定的,若是Windows PE的32位非自定義版本,其在磁盤上的鏡像大約爲120MB。

 1.引導Windows PE

  筆者考慮到網絡環境等問題,主要的使用環境是VMware虛擬機和Virtual PC虛擬機,不過這兩種虛擬機環境與實際PC環境幾乎沒有區別(就是說如果你不清楚虛擬機也沒關係,就當是在真實PC上直接運行)。
  將BIOS中設置成光驅引導,並開始啓動系統,當屏幕畫面上出現“Press any key boot from cd”時,按任意鍵從光驅上的Windows PE引導啓動。如果你的存儲設備驅動不被支持,在啓動時按下F6鍵可加載特殊設備的驅動。當啓動到桌面時系統會做一些如調整分辨率的工作,最後打開默認的CMD命令行解釋工具,大家看看,是貨真價實的圖形操作環境哦。
  可以看到桌面上空空如也,不要指望可以拿鼠標點來點去,畢竟是個什麼應用程序都沒有安裝的最小化圖形操作系統。但它確實是標準的視窗環境,光碟上帶有記事本,在命令行下輸入“Notepad”並回車就可打開;另外儘管光碟上帶有的可執行的命令行工具有限,但明顯可以自己添加,看看這是什麼?沒錯,是我們最熟悉的掃雷遊戲(現在知道題頭所指了吧,呵呵),拿鼠標先玩玩吧,這是筆者從大家熟悉的WinXP操作系統中加入的(方法很簡單,用ISO工具直接拷入剛纔的鏡像文件就可以了)。
  那麼還是先回到CMD命令行工具中吧。默認的目錄是/I386/system32/,輸入命令行“dir *.exe /w”可查看有哪些可運行的程序。下面我們實際研究一下對個人用戶有實際意義的Windows PE特性的操作。
  在光碟鏡像中可同時看到32位和64位操作系統的工具,對於個人用戶來講,你可用它直接引導沒有安裝任何系統的機器,並在其上實現32位系統的許多功能,這在後面會一一道來。

 2.Windows PE對網絡的支持

  剛纔dir時我們看到了ping命令,熟悉這個命令的讀者應該都知道,只有安裝了TCP/IP協議才能使用,那麼不管三七二十一,先來ping自己試試吧,在CMD中鍵入“ping 127.0.0.1”,回車搞定,顯然是可ping通的,這證明TCP/IP協議確實已在運行。再試一試光碟上另一個命令IPConfig,鍵入運行,看到IP地址已經自動分配好了。既然網絡確實已經連接,那讓我們來實際操作使用吧(這裏可能有不少從視窗系統開始接觸計算機的朋友會對操作不知所措,其實並沒有想象中那麼困難,你可以在CMD中使用命令工具帶“/?”參數來查詢具體使用方法,如果你機器上本來就裝有XP,那麼在幫助中心查詢就更方便了,多實驗一下,掌握命令行以後你會發現方便很多)。
  現在我的物理機和虛擬機構成了一個虛擬網絡,使用光碟鏡像中的net命令,在虛擬機中鍵入“net view”查看已連接的服務器,這裏顯示的服務器“XQ-B6QAS26953 EC”,名字表示虛擬機已通過網絡連接了我的物理機器。我的物理機器上有一個名爲TUKU的文件夾已經共享,所以再鍵入“net use e://XQ-B6QAS26953EC/TUKU”,意思是將物理機器上的共享目錄TUKU鏡像爲虛擬機器上的E盤,成功後可在虛擬機裏自由地訪問共享目錄,這時就可通過這個來做遠程安裝等工作。net命令還有不少參數,自己可以查閱並多加嘗試,纔可以發揮Windows PE強大的網絡環境功能,如果只是簡單地訪問服務器,上面的兩個命令參數基本足夠了。不過這裏要記住用Windows PE的機器可訪問其他操作系統的機器,而逆操作是不能的,這是由於Windows PE本身的限制,我們後面再講這個問題。事實說明,Windows PE啓動後就可以使用網絡環境。
  
 3.利用Windows PE創建、刪除、格式化和管理NTFS文件系統分區

  對於個人用戶來說這個功能很是實用和方便。但不少朋友在dir完以後就叫苦,怎麼只有format.com,沒有fdisk啊,根本沒辦法分區嘛。其實這是個誤解,Windows XP中針對磁盤管理工作有專用的命令行工具DiskPart.exe,它是一種文本模式命令解釋程序,能讓你通過使用腳本或從命令提示符直接輸入來管理對象(磁盤、分區或卷),Windows PE使用的當然也是DiskPart。
  在CMD模式下鍵入“diskpart”並回車進入DiskPart命令行解釋。鍵入“list disk”,顯示有兩塊硬盤,分別爲磁盤0和磁盤1。鍵入“select disk=0”執行,意思是選擇指定磁盤,並將焦點轉移到此磁盤,接下來的操作就都是針對它的(後面的操作都是一樣,在磁盤、分區或捲上使用DiskPart命令前,必須首先將對象列表,然後選擇要給予焦點的對象,只有對象擁有焦點時,鍵入的任何DiskPart命令纔對該對象進行操作)。鍵入“detail disk”可以查看磁盤0的細節信息,現在磁盤0整個是一個活動分區C,格式爲FAT32,容量爲16G。下面我們以實際操作將磁盤0分爲兩個區,分別爲NTFS格式的8G主分區C和FAT32格式8G邏輯分區D,而將磁盤1整個轉爲FAT32格式的分區E來演示Windows PE對磁盤的管理操作:

  (1)執行“select disk=0”,將焦點轉到磁盤0。執行“select partition 1”,將焦點轉到磁盤0的分區活動C上面。
  (2)執行“delete partition”將原來的分區C刪除。
  (3)執行“create partition primary size=8000”回車,在磁盤0上建立一個新的8000MB的主分區,焦點會自動轉到新建立的分區上。
  (4)接着執行“create partition extended”回車,將磁盤0上剩餘的磁盤空間建立爲擴展分區。
  (5)完成上一步後再執行“create partition logic”回車,將剛建立的擴展分區創建爲一個邏輯分區。
  (6)至此,我們就已經把原來一個活動分區C的磁盤0創建爲有一個主分區和一個邏輯分區了,不過這兩個分區還沒有驅動器號,執行“select partition 1”將焦點轉到主分區1,然後執行“assign letter=C”,將驅動器號C:分配給主分區。執行“active”回車將主分區設爲活動使其可以引導系統。
  (7)接下來執行“select partition 3”將焦點轉到邏輯分區,執行“assign”回車,意思是系統將下一個可用的驅動器號分配給邏輯分區,由於驅動器號D、E均被佔用(D爲磁盤1分區佔用,E爲光驅佔用),所以系統將F分配給了邏輯分區。不過沒關係,我們先不管驅動器號的順序,到這裏我們對磁盤0的操作就結束了,剩下的目標是將磁盤1的活動分區D轉換爲分區E。
  (8)執行“select disk 1”將焦點轉到磁盤1,執行“select partition 1”將焦點轉到活動分區D。
  (9)由於磁盤1的D分區是活動的主分區,所以設其驅動器號爲E,顯然是要將它重新建立爲一個非主分區的驅動器,那麼它就不會佔據驅動器號D而將它讓給磁盤0的邏輯分區了。執行“delete partition”刪除原來分區D,執行“create partition extended”將磁盤1上所有的磁盤空間建立爲擴展分區。
  (10)完成上步後再執行“create partition logic”將剛建立的擴展分區創建爲一個邏輯分區。
  (11)最後執行“assign”自動分配驅動器號,系統仍然把D分配給了它(不過在機器重新啓動後系統會自動調整將D分配給磁盤0的邏輯分區,磁盤1的邏輯分區會使用驅動器E,而光驅就順延到F了,重啓一次系統這些改變都會自動實現)。
  (12)現在我們對機器上硬盤的重新分區工作就結束了,執行“exit”退出DiskPart命令行解釋工具,然後執行“format c: /fs:ntfs”,將剛纔建立的DISK 0主分區格式化爲NTFS文件格式的分區,同理執行“format d: /fs:fat32”、“format f: /fs:fat32”將分區D、F格式化,我們最終的操作就完成了。
  (13)完成後執行“exit”重新啓動機器,可以再次進入“DiskPart”來查看分區情況是否正確。
  上面的操作基本包括了對磁盤的創建、刪除、格式化和管理,如果你再仔細讀讀幫助說明,保證你在掌握它強大的功能以後不再想使用Fdisk去管理磁盤。實際上你如果在使用Windows XP,這些知識都非常實用。此外“DiskPart”工具最方便的地方是支持腳本,在這裏就不詳細說明了。

Windows PE的限制

  上面我們已經將Windows PE特性的基本操作都實踐了一下,應該可以體會到Windows PE對個人的方便之處,但是就像上文所說的那樣,Windows PE只是有限功能的Mini操作系統,要正確使用Windows PE,當然也要了解它的一些限制。

  1.爲了防止將它用作盜版操作系統,在連續使用24小時後Windows PE將自動退出並重啓。
  2.你可從Windows PE計算機通過網絡直接訪問服務器和共享。但不能從網絡上的另一個位置訪問Windows PE計算機上的任何文件或文件夾。Windows PE通過TCP/IP及其上的NetBIOS獲得到達文件服務器的網絡連接,不支持其他方法(如IPX/SPX網絡協議)。
  3.因爲涉及反盜版,所以只能從Windows XP Professional CD建立Windows PE的自定義版本。而不能從Windows XP Home Edition或Windows 2002 Server操作系統家族的任何成員建立。
  4.Windows PE太大,不能放在軟盤上。Windows PE僅包括可用Win32 API的子集(包括I/O(磁盤和網絡)和核心Win32 API)。如果Win32下運行的服務基於Win32 API子集,則它在Windows PE是否可用需具體分析。這裏不詳細列出Windows PE不支持的API了,反正rundll32.exe和shell.dll等是不被支持的,想要在Windows PE下面玩Quake的朋友還是趁早放棄。

Windows PE的作用

  不少朋友看到這兒無論是否有收穫,肯定都會想Windows PE到底對自己有什麼明確的作用,這裏不妨總結一二。

 1.方便易用的啓動工具盤

  通過剛纔的敘述,大家可以看出,Windows PE啓動相當快捷,而且對啓動環境要求不高;最可貴的是,雖然名爲啓動盤,其功能卻幾乎相當於安裝了一個Windows XP的“命令行版本”——別忘了網絡支持哦。因此,對於個人計算機用戶,只要將其刻錄在一張光碟上,便可放心地去解決初始化系統之類的問題;而對小型網絡環境(如網吧等)用戶來說,這一功能尤其實用。
  
 2.有趣的硬盤使用功能

  自定義的Windows PE不僅可放到那些可移動存儲設備如CD上,還可以放在硬盤上使用。因爲許多朋友會認爲將Windows PE的自定義版本放在硬盤上沒有什麼意義,其實不然。把Windows PE放在硬盤上應該是最爲有趣的地方,且不說你的操作系統損壞無法進入的情況下啓動硬盤上的Windows PE可以方便地修復,關鍵是由於Windows PE在硬盤上,所以在Windows PE環境下安裝應用程序就有了可能。呵呵,撇開題外話不講,這裏看一下如何把自定義的Windows PE放到硬盤上吧(只能在硬盤上放置Windows PE的32位版本)。

  首先要安裝恢復控制檯:

  (1)將Windows XP Professional CD放在CD-ROM驅動器中,這裏指定其爲cd_drive。
  (2)在命令行CMD窗口中運行cd_drive/i386/winnt32.exe /cmdcons。

  然後將Windows PE自定義可引導副本放置在硬盤上,如下操作:

  (1)在目標硬盤上,創建“C:/Minint”的目錄(這裏必須將目錄命名爲“Minint”)。
  (2)將Windows PE“根目錄/i386”下的所有內容複製到C:/Minint。
  (3)從Windows PE根目錄下將Winbom.ini複製到目標硬盤的根目錄。
  (4)在目標硬盤上,將“C:/Cmdcons/txtsetup.sif”的只讀屬性改爲讀/寫。
  (5)在目標硬盤上,將“C:/Minint/txtsetup.sif”複製到“C:/Cmdcons”進行覆蓋。
  (6)重新啓動目標計算機。在“引導”菜單上,選擇引導到“命令控制檯”,計算機將使用Windows PE引導。
  
 3.Windows XP OPK CD的本職工作

  上面說了其實我們拿到的是Windows PE的一個可執行副本,即Windows XP OPK(Windows XP OEM預安裝工具包)CD。從名字都知道它原來的本職工作是爲了方便OEM工作的。如果你在Windows操作系統環境下打開光碟,它就會自動運行Autorun爲你的系統安裝一個“Windows安裝管理器”的工具包。利用它,你可以輕易製造出帶有計算機廠商OEM標誌的Windows安裝鏡像。雖然這是Windows XP OPK CD的主要本職工作,但顯然對我們個人沒什麼意義,當然,如果你想把手上的Windows安裝CD都打上自己獨有的印記,並在朋友的機器上安裝時炫一下,那麼使用它是個好主意。當然自己的“印記”絕非OEM標誌那麼簡單,實際上你還可任意設定Windows PE攜帶的軟件,並可設置這些軟件在Windows PE啓動時運行;理想的情形下你甚至可以爲自定義的Windows PE版本加上類似於Windows Explorer的圖形外殼程序——要不怎麼叫專爲廠商OEM設計呢?

四、自定義Windows PE

 1.自定義Windows XP OPK CD的啓動過程

  這當然是最簡單的自定義方法,簡單到你只需在軟盤上放一個自己編寫的INI文件就可以了。

  進入Windows XP OPK CD中的Windows PE目錄,可找到一個名爲“Startopk.cmd”的文件,實際上此CD引導系統啓動到後期,就會執行Startopk.cmd(這裏的CMD文件類似於BAT批處理文件,可以手動編輯)。打開Startopk.cmd,裏面只有一行命令“factory -Windows PE”,其意思是找到Winbom.ini文件,並順序處理這個文件中的命令部分。Winbom.ini對Windows PE的啓動過程至關重要,我們來看一下能默認用它實現哪些功能:

  (1)將測試裝置複製到目標計算機上,並運行硬件診斷程序。
  (2)運行程序,例如分區和格式化驅動器的應用程序。
  (3)使用“net use”命令建立網絡連接,以及將目錄更改到預安裝映像的位置。

  因此要自定義Windows PE的啓動過程當然不能放過Winbom.ini,這裏的關鍵就是系統會如何找到這個文件了——因爲原來CD介質上的Winbom.ini文件顯然是不可改寫的。這裏Windows PE做了一個巧妙的設計,使得Factory.exe將首先在可移動媒體驅動器(如軟盤驅動器)根目錄搜索Winbom.ini文件。所以你只需編輯Winbom.ini文件,並將其放到軟盤的根目錄下,在Windows XP OPK CD啓動時將插入此軟盤,那麼Factory命令就會優先讀取軟驅上的Winbom.ini文件內容,通過這種方式就可以控制手上這張Windows XP OPK CD的啓動了。
  明白瞭如何控制Windows XP OPK CD的啓動,那麼啓動任務的定義就在於Winbom.ini文件本身的內容了,實際上Windows XP OPK C運行命令factory -Windows PE時,它將按下面順序處理Winbom.ini文件中的命令部分:[Windows PE.Net]、[DiskConfig]、[OEMRunOnce]、[OEMRun]、[Windows PE](除Restart項)、[UpdateSystem]、[Windows PE]中的Restart項。當然實際上,Winbom.ini文件中遠不止這些部分,但對於通常的製作,這些關鍵項已足夠。我們可以打開手上這張Windows XP OPK CD的Winbom.ini文件直觀地看看,內容出乎意料的簡單吧?由於Winbom.ini的支架已經寫好,默認參數也已設定,若要自定義,只要加入其所包含各項的命令參數就能達到你想要的啓動效果,當然這種定義也是有一定限制的,詳細設置方式可閱讀Windows XP OPK CD上的參考說明,都是非常簡明的英語,並且大多數都有例子說明,所以並不難懂。
  
 2.製作Windows PE的可啓動ISO副本

  上文已提到,通常我們拿到的Windows XP OPK CD是Windows PE基於32位版本的可引導副本,通過自定義啓動過程可以取得一定的自由性。但如果希望配置Windows PE使用不同的驅動程序組、或加入自定義的程序等,上述方法就不可取了。這時可創建自定義的Windows PE版本,這當然也是Windows PE最有特點之處。在加入自定義特性之前,讓我們先來看一下Windows PE自定義版本的創建過程:

  1.在硬盤上創建一個新目錄,假設爲“build_location”。
  2.將OPK CD插入CD驅動器,下面指定表示爲“cd_drive”。
  3.將cd_drive/Windows PE下的所有文件複製到build_location目錄。
  4.將cd_drive/tools/platform目錄中的Factory.exe和Netcfg.exe文件複製到build_location目錄。如果正在創建Windows PE的32位版本,對應Platform的值爲x86。
  5.從CD驅動器取出OPK CD。
  6.如果正在創建Windows PE的32位版本,將Windows XP Professional CD插入CD-ROM中。
  7.在命令行模式下進入build_location,運行以下命令:

  Mkimg.cmd source_directory destination_directory [image_name]

  上面提過,CMD類似於BAT批處理文件,Mkimg.cmd與Startopk.cmd在同一目錄,你發現它還可以帶參數運行:其中“source_directory”用於指定Windows XP Professional 32位版本CD的位置,如果source_directory是CD-ROM,則只需指定驅動器號,要注意在source_directory中不要包括後置斜槓;“destination_directory”用於指定生成版本的存放路徑(不是ISO文件,而是硬盤版本)。“image_name”可選,當然這裏的目的是要生成ISO鏡像文件,所以應在此指定其路徑和文件名。需要注意,你可將ISO文件刻錄到CD上,若要此CD能夠成爲系統啓動光盤,請在創建ISO文件前刪除i386目錄下的Bootfix.bin文件。

 3.自定義特性的加入

  按照上面的步驟就可製作出Windows PE的可啓動ISO副本,但顯然還沒有做什麼自定義的工作。進入Windows XP OPK CD中的Windows PE目錄,可看到除了上面提到的Mkimg、Startopk文件外,還另有一個CMD文件:Startnet.cmd,上面已經說過Windows PE引導系統啓動到後期,就會執行Startopk.cmd。然而當你創建自己的Windows PE版本時,它將使用Startnet.cmd中的命令而不是Startopk.cmd了。默認Startnet.cmd文件並沒有直接使用“factory -Windows PE”命令,我們大致看一下其中的內容:

  regsvr /32 /s netcfgx.dll
  factory -minint
  netcfg -v -Windows PE
  net start dhcp
  net start nla
  a:/floppy.cmd

  你可看到Startnet.cmd的這一版本包括factory -minint命令(意思是使用“即插即用”安裝網絡接口卡),而後面那些命令更可靈活控制安裝和啓動網絡服務。顯然,對Startnet.cmd我們有自由的修改權利,因此可使自定義的Windows PE副本按照我們的意願去執行啓動任務。例如在Startnet.cmd加入“net use e: //網絡某可見服務器/此計算機的共享目錄”命令,那麼Windows PE啓動後就自動將這一服務器(即網上鄰居中可見的域中主機)的共享目錄映射爲本地硬盤E了。而更復雜、更自由的操作方式是通過編寫CMD文件來處理,例如Startnet.cmd默認中的“a:/floppy.cmd”命令。
  Floppy.cmd是一個可選命令,這一文件中可包含通常在命令提示符下運行的任何命令,例如啓動應用程序或打開運行腳本的其他命令行窗口。你只要編寫Floppy.cmd,並將其放到軟盤的根目錄下(也可使用其他文件名和存儲位置,但要相應修改Startnet.cmd的內容),待到使用Windows PE啓動系統時,將此軟盤放入軟驅,即可實現更爲靈活的自定義內容。例如在Floppy.cmd加入命令“format c: /fs:ntfs”,那麼Windows PE在啓動時如果搜索到有Floppy.cmd文件,就會執行將C盤格式化爲NTFS格式的命令;當然如果沒有把軟盤放入軟驅,Windows PE也不會出錯。這實際上給了我們極大的自由度,通過控制“a:/floppy.cmd”文件的編寫而使Windows PE啓動時做出多樣化執行任務的選擇。例如在本文連載(上)中所提到的,如果是新機器,你可將分區、格式化、轉換文件格式等一系列磁盤管理命令編寫成Diskpart腳本,然後加入到Floppy.cmd中,這樣使用Windows PE啓動機器後,就會自動完成分區等一系列操作,大大減輕了工作的繁瑣程度,特別是在完成批量裝機等重複任務時,工作的強度將大爲降低。
  
  最後對自定義作一個總結:如果你不想製作Windows PE的啓動副本,可使用Windows XP OPK CD啓動機器,並通過軟盤上的Winbom.ini控制啓動過程。如果想實現更多的自定義內容,請製作ISO啓動副本,並將其刻錄至光盤,這樣啓動機器後將通過光盤中的Startnet.cmd或軟盤上的Floppy.cmd實現自定義。顯然Windows PE有着非常靈活而強大可控制的啓動方式,這無疑是你選擇它來替代其他啓動方式的理由。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章