查看單個文章
舊 2006-02-08, 05:02 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 Windows PreInstallation Environment深入研究

Windows PreInstallation Environment深入研究

  編者按:在第3期中介紹了WinPE的使用及功能,本期將揭示WinPE最有魅力的一面,那無疑就是自訂了——

四、自訂WinPE

 1.自訂Windows XP OPK CD的啟動程序

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

  進入Windows XP OPK CD中的WinPE目錄,可找到一個名為「Startopk.cmd」的文件,實際上此CD啟始系統啟動到後期,就會執行Startopk.cmd(這裡的CMD文件類似於BAT批次處理文件,可以手動編輯)。開啟Startopk.cmd,裡面只有一行指令「factory -WinPE」,其意思是找到Winbom.ini文件,並順序處理這個文件中的指令部分。Winbom.ini對WinPE的啟動程序至關重要,我們來看一下能預設用它實現哪些功能:

  (1)將測試裝置複製到目標電腦上,並執行硬體診斷程序。

  (2)執行程序,例如分區和格式化驅動器的應用程式。

  (3)使用「net use」指令建立網路連接,以及將目錄更改到預安裝映像的位置。

  因此要自訂WinPE的啟動程序當然不能放過Winbom.ini,這裡的關鍵就是系統會如何找到這個文件了——因為原來CD介質上的Winbom.ini文件顯然是不可改寫的。這裡WinPE做了一個巧妙的設計,使得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 -WinPE時,它將按下面順序處理Winbom.ini文件中的指令部分:[WinPE.Net]、[DiskConfig]、[OEMRunOnce]、[OEMRun]、[WinPE](除Restart項)、[UpdateSystem]、[WinPE]中的Restart項。當然實際上,Winbom.ini文件中遠不止這些部分(圖1),但對於通常的製作,這些關鍵項已足夠。我們可以開啟手上這張Windows XP OPK CD的Winbom.ini文件直觀地看看(圖2),內容出乎意料的簡單吧?由於Winbom.ini的支架已經寫好,預設參數也已設定,若要自訂,只要加入其所包含各項的指令參數就能達到你想要的啟動效果,當然這種定義也是有一定限制的,詳細設定方式可閱讀Windows XP OPK CD上的參考說明,都是非常簡明的英語,並且大多數都有例子說明,所以並不難懂(圖3)。
  
 2.製作WinPE的可啟動ISO副本

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

  1.在硬碟上新增一個新目錄,假設為「build_location」。

  2.將OPK CD插入CD驅動器,下面指定表示為「cd_drive」。

  3.將cd_drive\winpe下的所有文件複製到build_location目錄。

  4.將cd_drive\tools\platform目錄中的Factory.exe和Netcfg.exe文件複製到build_location目錄。如果正在新增WinPE的32位版本,對應Platform的值為x86。

  5.從CD驅動器取出OPK CD。

  6.如果正在新增WinPE的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.自訂特性的加入

  按照上面的步驟就可製作出WinPE的可啟動ISO副本,但顯然還沒有做什麼自訂的工作。進入Windows XP OPK CD中的WinPE目錄,可看到除了上面提到的Mkimg、Startopk文件外,還另有一個CMD文件:Startnet.cmd,上面已經說過WinPE啟始系統啟動到後期,就會執行Startopk.cmd。然而當你新增自己的WinPE版本時,它將使用Startnet.cmd中的指令而不是Startopk.cmd了。預設Startnet.cmd文件並沒有直接使用「factory -WinPE」指令,我們大致看一下其中的內容:

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

  你可看到Startnet.cmd的這一版本包括factory -minint指令(意思是使用「即插即用」安裝網路接頭卡),而後面那些指令更可靈活控制安裝和啟動網路服務。顯然,對Startnet.cmd我們有自由的修改權利,因此可使自訂的WinPE副本按照我們的意願去執行啟動工作。例如在Startnet.cmd加入「net use e: \\網路某可見伺服器\此電腦的共享目錄」指令,那麼WinPE啟動後就自動將這一伺服器(即網路芳鄰中可見的域中主機)的共享目錄映射為本機硬碟E了。而更複雜、更自由的操作方式是通過編寫CMD文件來處理,例如Startnet.cmd預設中的「a:\floppy.cmd」指令。

  Floppy.cmd是一個可選指令,這一文件中可包含通常在命令提示字元下執行的任何指令,例如啟動應用程式或開啟執行指令碼的其他指令行視窗。你只要編寫Floppy.cmd,並將其放到軟碟的根目錄下(也可使用其他檔案名和儲存於位置,但要相應修改Startnet.cmd的內容),待到使用WinPE啟動系統時,將此軟碟放入軟式磁碟機,即可實現更為靈活的自訂內容。例如在Floppy.cmd加入指令「format c: /fs:ntfs」,那麼WinPE在啟動時如果搜尋到有Floppy.cmd文件,就會執行將C碟格式化為NTFS格式的指令;當然如果沒有把軟碟放入軟式磁碟機,WinPE也不會出現錯誤。這實際上給了我們極大的自由度,通過控制「a:\floppy.cmd」文件的編寫而使WinPE啟動時做出多樣化執行工作的選項。例如在本文連載(上)中所提到的,如果是新機器,你可將分區、格式化、轉換文件格式等一系列磁牒管理指令編寫成Diskpart指令碼,然後加入到Floppy.cmd中,這樣使用WinPE啟動機器後,就會自動完成分區等一系列操作,大大減輕了工作的繁瑣程度,特別是在完成批量裝機等重複工作時,工作的強度將大為降低。
  
  最後對自訂作一個總結:如果你不想製作WinPE的啟動副本,可使用Windows XP OPK CD啟動機器,並通過軟碟上的Winbom.ini控制啟動程序。如果想實現更多的自訂內容,請製作ISO啟動副本,並將其燒錄至光碟,這樣啟動機器後將通過光碟中的Startnet.cmd或軟碟上的Floppy.cmd實現自訂。顯然WinPE有著非常靈活而強大可控制的啟動方式,這無疑是你選項它來替代其他啟動方式的理由。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次