1. 程式人生 > >win7 Embedded EWF與HORM特性(實戰驗證)

win7 Embedded EWF與HORM特性(實戰驗證)

目錄(?)[+]

前言

         這兩天在網上搜了很久,發現描述EWF特性的文章,大部分都是關於xp embedded的。真正運用在win7 embedded的少之又少,特別是中文描述的就更少了。於是,將自己這兩天整理的結果供大家參考一下。

先決條件

1.目標機(能夠安裝win7 embedded系統的裝置),1G記憶體(最好4G),8G硬碟(越大越好),對應的顯示卡等驅動

2.ICE(Image Configuration Editor)部署工具,可以到微軟官網上下載,這裡就不給下載地址了。

首先,介紹一下EWF(Enhance Write Filter)特性

         EWF是一種對物理儲存介質進行防寫的技術,它將寫操作重定向到RAM等介質,從而減少了磁碟的讀寫次數。當用戶需要將資訊寫入磁碟的時候,可以通過相應的API,將資料資訊寫入到磁碟中。

EWF分為3種模式:

   1.RAM mode

   2.RAM-REG mode

   3.Disk mode

EWF兩種mode之間的區別

        不知道什麼原因在win7 embedded中時沒有disk mode的。在msdn中也只提到RAM mode和RAM-REG mode兩種。

        什麼時候需要用到RAM mode或者RAM-REG mode得看自己的需求。它們二者其實區別也不大,只是一個把EWF Volume資訊寫到磁碟上,另外一個將EWF Volume的資訊寫到登錄檔中。看下下面的圖,也許你就會有個大概的瞭解了。

                                                          


                                                       


一般情況下,RAM mode只保護一個分割槽,RAM REG mode則能保護多個分割槽。下面,就來部署擁有EWF功能的系統吧!微笑

部署EWF保護系統

        開啟ICE工具,新建一個Answer file,開啟Packages\FeaturePack,將Boot Environments下的Enhanced Write Filter Environment新增入Answer file,然後將Embedded Enabling Features下的Enhanced Write Filter With HORM新增入Answer file。

        選擇Validate選單項中的Add Required Packages。最後,解決Validation資訊欄中的所有錯誤後,儲存該部署檔案EWF_RAM.xml。

        如上所述,我們沒有對EWF特性進行設定而部署的系統,預設情況下是RAM REG mode。RAM REG mode模式可以通過部署好的系統中,通過修改登錄檔的資訊來配置EWF特性的。這個在後續內容中會做詳細介紹。

RAM mode介紹

         現在,我們先來介紹RAM mode。我們重新開啟剛才儲存的部署檔案EWF_RAM.xml。

         選中Answer file檔案中的Enhanced Write Filter With HORM,在屬性頁中選中Specialize。選擇EWFMode為RAM模式,在ProtectedVolumes右鍵選擇Insert New Volume。輸入一個唯一的key值,填寫需要保護的DiskNumber和PartitionNumber。

                                            

         剩下的工作就是安裝系統了,可以用u盤或是其他介質,在Build Image的過程中,將我們的部署檔案EWF_RAM.xml作為模板安裝使用者定製的win7 Embedded系統。

......

         安裝完成後,在命令提示符下,輸入ewfmgr -all可以檢視所有被ewf保護的磁碟。使用命令ewfmgr c: -enable開啟EWF對C盤的保護,此時,需要重啟才能開啟EWF功能。

         重啟電腦後,在c盤下新建一個檔案,再次重啟電腦,發現該檔案丟失,當確實需要將該檔案儲存在c盤時,可以在命令提示符下輸入ewfmgr c: -commit。注:命令提示符應該是以管理員許可權操作。

         RAM mode在部署階段完成配置,相比RAM REG mode要相對簡單,當然RAM REG mode也可以在部署階段完成相應的配置工作。

RAM REG mode介紹

         下面重點介紹一下RAM REG mode,根據之前我們沒有做過任何配置的部署檔案EWF_RAM.xml。通過它安裝的系統在預設情況下是RAM-REG mode。當然,使用者也可以選擇在部署階段指定保護的系統磁碟。

        RAM REG mode主要是對登錄檔進行相應的操作,其實也就是對應的EWF Volume資訊。

        1.在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}目錄下新增項值“UpperFilters”=“Ewf”

      2.在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf目錄下新增“ErrorControl”=dword:00000001、“Start”=dword:00000000、“Type”=dword:00000001。

      3.在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Ewf\Parameters\Protected\Volume0目錄下新增“Type”=dword:00000001、“Enabled”=dword:00000001、“CompareBeforeAlloc”=dword:00000000、“DiskSignature”=dword:00000000、“PartitionOffset”=hex(b):00,00,00,00,00,00,00,00

      4.如果要保護多個分割槽,則類比3,將Volume0改為Volume1,依次類推。

      在xp Embedded時,配置RAM REG好像用的是ArcName來標識保護的分割槽,但是win7採用的是“DiskSignature”和“PartitionOffset”,那麼這兩個值我們該如何獲取了?

      不用著急,win7 Embedded中有相應的工具能幫我們這個忙,他們分別是DiskPart和DiskPar。DiskPart在我們部署好的系統中時自帶的,DiskPar則需要從網上去下載。都是很好找的工具,這裡也不提供下載地址了。

      在命令列中,輸入diskpart執行diskpart控制檯,然後輸入select disk c:,disk detail;便能看見我們的DiskSignature值(十六進位制)。然後,在命令列輸入diskpar -i c:可以看到PartitionOffset值(十進位制--這裡特別注意!生氣)。最後,在登錄檔中輸入我們查詢到的值後,重啟電腦,再輸入同RAM mode相同的ewf命令就能像RAM mode一樣運行了。

      這裡值得一提的是,如果需要關閉ewf功能,只能輸入-commitanddisable。因為登錄檔內容是在c盤上的,如果直接-disable是不能關閉ewf功能的。同時,-commitanddisable -live只在RAM mode下有效。

HORM介紹

      HORM功能在RAM mode和RAM REG mode是一樣的。所以就一起介紹了。在命令列下輸入ewfmgr c: -activatehorm開啟HORM特性。此時,選擇休眠計算機,再次重啟時,發現windows的提示是“正在恢復windows”,而不是以前的"正在啟動windows"。而且只需要不到10s便能啟動我們的系統了,系統啟動後,上次休眠時未關閉的應用程序也依然在執行。

      這個原因主要是,在c盤下有個hiberfil.sys檔案,當選擇horm特性休眠時,會將該狀態下的記憶體拷貝到該檔案中,下次啟動的時候,就會從該檔案中把資料拷回記憶體中執行,所以會有這麼快的開機體驗。

後續

      迷迷糊糊寫了一大堆,發現把自己給寫暈了。東西確實很雜,歡迎大家來拍磚。如果確實需要文中說到的資源下載檔案,可以給我留言。也歡迎大家來與我溝通交流。

檢視評論
5樓 yuanli2293136 2014-10-31 14:47發表 [回覆]
EWF 這個系統好用嗎 ?
4樓 mysignupbox 2013-09-22 00:04發表 [回覆]
我在部署ewf ram模式的時候也安裝不了。setuperr.log檔案提示could't find info for boot disk [1]。請問博主怎樣解決?
3樓 HELLPROJECTOR 2012-11-22 16:56發表 [回覆]
博主文章不錯,都出於實踐。

有個問題請教樓主, 我使用ewf 通過iso部署很順利,但是使用ghost 全盤 disk模式備份後,再用這個gho還原系統,ewf就失效了。 此問題博主是否遇到?
Re: Joseph-Growth 2012-11-22 19:15發表 [回覆]
回覆HELLPROJECTOR:你說的我不是很清晰,你使用disk模式備份的話,那個disk分割槽是否備份。而且在wes7中是不支援disk模式的。
Re: HELLPROJECTOR 2012-11-24 01:44發表 [回覆]
回覆meiyuli:關鍵是原來ewf好用的系統通過備份,再還原到其他硬碟,就會發現ewf失效了!
Re: HELLPROJECTOR 2012-11-24 01:42發表 [回覆]
回覆meiyuli:我說的disk模式是 ghost軟體的模式,不是ewf的模式,可能是我沒表達清楚。 ewf使用的是ramreg。
Re: Joseph-Growth 2012-11-26 11:22發表 [回覆]
回覆HELLPROJECTOR:我建議你使用imagex工具,最好不要用ghost工具。你說的問題在我之前的文章裡面有表述過,很有可能是你的ewf沒有正常開啟,或者對應的配置資訊(卷資訊)沒有對應,造成的。你可以檢視我之前的文章,會找到答案。
Re: HELLPROJECTOR 2012-11-27 15:23發表 [回覆]
回覆meiyuli:是要做一下sysprep才行。
2樓 Joseph-Growth 2012-06-20 09:03發表 [回覆]
上面的解釋依然需要修正,經過筆者測試,發現部署時配置的EWF RAM模式保護分割槽個數,要與安裝時分配的磁碟個數匹配,否則會出現不能正確安裝的問題。
1樓 Joseph-Growth 2012-06-15 16:15發表 [回覆] [引用] [舉報]
就博文中沒有提到的一些問題,這裡補充說明一下:在部署EWF RAM模式的時候,當磁碟上分割槽數超過3個的時候,部署RAM模式會失敗。並且部署RAM模式時磁碟必須得具有可分割槽功能。這裡是msdn中原文“The media that you deploy to cannot have more than 3 partitions, and must support partitioning.”這裡我沒有注意到,最近部署系統一直失敗,查到最後才發現原來是這個原因導致的。