星期二, 7月 25, 2006

EWF : Enhance Write Filter - what XPE differ from XP

Enhance Write Filter (EWF) 是XP Embedded獨有的機制(和XP相比)。
他的功能是在所有的file io (類似Linux的VFS)中,加上一個Filter,分離read, write的動作。
並且可以控制這個read write動作。

例如 : 控制所有write到hd的動作到ram 中,這樣HD的內容就永遠不會被改變。
同時,在作read時,要將RAM一併考慮,將HD + RAM = final 的動作做出來。

這樣就可以做到 : 將所有執行時期的hd 更動,都留存在ram中。而讓其上的application沒有感覺。
當system reboot後,所有RAM的資料都會消失,所以系統還是維持在hd最初的install狀態。
這個在Linux上,可能用cramfs,解開到RAM。或是區分出需要保護和不需要保護的folder,安排到hd或ramfs中。可以作更細的調整。
當然,也可以做到像EWF一樣,完全保護的功能:一些LiveCD就是這樣。
EWF除了保護hd,將所有modification排除。還可以暫時將這個功能關閉,將RAM sync到HD(MS叫commit)。

要使用EWF,要將"Enhance Write Filter"加入target中。
要管理EWF,要將"EWF Manager Console application"加入target中。
要使用有利用到EWF的application,要把"Enhance Write Filter API"加到target中。

Enhance Write Filter有幾個參數要設定,和你要使用的EWF 模式有關。

最基本的就是設成RAM Overlay。

Overlay Type : RAM

就是像上面提到的一樣,將 modification 存到RAM中,不要對HD作修改。
其他可以設定 Overlay Type : DISK,是另外create一個partition,將修改存到disk中。

EWF Partition Size in KByte 就是在將Overlay Type設定為DISK,要使用多大的partition來存放修改的部份。
所以OverlayType:RAM時,這一項就可以設成0。

Start EWF Enabled : 第一次啟動就要將EWF啟動起來?

啟動後,可以用ewfmngr來控制/檢查ewf。
ewfmngr.exe在 c:\windows\system32
ewfmngr  partition  -command

partition - 就是ewf保護的partition,例如C:, D:
command - 就是要對partition的動作,如disable, enable, commit,

啟動後,開啟CMD,到c:\windows\system32..
ewfmngr c:
會顯示出目前C:上ewf的狀態,ENABLE或是DISABLE,
還有Boot Cmd ,代表下次開機時,給ewf的comand。
ewfmngr  c:  -enable
可以將Boot Cmd設定為ENABLE。這樣下次開機時,EWF就會開啟。
同理,用 "-disable"的話,下次開機ewf就會關閉。

ewf的開/關只有在開機時能夠設定。系統運行中 無法改變。下完command後要reboot才會生效。

所以來看看 -commit 命令..

commit命令有點類似 sync,就是將RAM的部份synch到hd中。
假設系統ewf是enable...
1.modify 1
2.-commit
3.modify 2
然後reboot, modify 1 和 2 都會sync回hd。跟你下commit的時間無關(因為commit只能在boot時動作)。

更詳細一點說明,commit動作會在poweroff時將ram sync回hd。
也就是說,commit後,把電源拔掉(不循正常關機步驟),所有modify也不會sync回hd。

還有.. -nocmd ,是將ewf的boot command清除,所以不管commit前後有多少modification,下了 - nocmd後,因為boot command是 No Cmd,所以所有資料在reboot後也不會sync回hd。

.... 上面這一點是很迷惑的地方.


還有,即使使用RAM overlay,照理overlay 不會使用到HD。但是ewf還是會需一塊約32k的partition (Neil甚至說最好保留2M),據TS說明,這是一些RAM Block的pointer 的set。指向那些RAM overlay。

所以在create partition時,要預留一些unpartitioned space讓ewf使用。
同時因為一個HD有4個primary partition的限制,所以也不能把partition都create光。要留一個給ewf用。

查ewf會在protect的partition後面create一個system id 45的小partition。

所以XPe boot後的HD,用XP disk manager看會看不到system id 45那一個partition,導致刪除不掉,用partition Magic和Norton disk partitioner也一樣。

------ spfdisk 可以看到。

沒有留言:

網誌存檔