无忧启动论坛

标题: 连夜赶制支持新版WimMount(版本号6.1.7048.0)的PE [打印本页]

作者: hhh333    时间: 2009-3-12 06:07
标题: 连夜赶制支持新版WimMount(版本号6.1.7048.0)的PE
听说新的wim驱动可以实现只读介质上的wim文件可写挂载,连夜赶制,成功实现了,但并不是想像的那么好,还要做工作。
一 实现方法
按老九的想法、chenall解决了核心的bartpe -wg workgroup语句,实现起来不复杂。
1、先用IMDISK做出Y盘并格式成NTFS(我设成了64M,起码也要256M以上内存才能测试)
2、改造setupreg.hiv和PECMD.ini,让其支持新版的WIM。
3、测试:不管WIM文件在不在可写媒体,均可以实现可写挂载。

添加的注册表如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\PE\ControlSet001\Services\WimMount]
"Type"=dword:00000002
"Start"=dword:00000002           ----------代表自动
"ErrorControl"=dword:00000001
"Tag"=dword:00000001
"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  52,00,49,00,56,00,45,00,52,00,53,00,5c,00,77,00,69,00,6d,00,6d,00,6f,00,75,\
  00,6e,00,74,00,2e,00,73,00,79,00,73,00,00,00
"DisplayName"="WimMount"
"Group"="FSFilter Activity Monitor"
"DependOnService"=hex(7):46,00,6c,00,74,00,4d,00,67,00,72,00,00,00,00,00
"DependOnGroup"=hex(7):00,00
"Description"="Wim Mounting Driver"
"DebugFlags"=dword:00000000
[HKEY_LOCAL_MACHINE\PE\ControlSet001\Services\WimMount\Instances]
"DefaultInstance"="Wimmount Instance"
[HKEY_LOCAL_MACHINE\PE\ControlSet001\Services\WimMount\Instances\Wimmount Instance]
"Altitude"="180700"
"Flags"=dword:00000000
[HKEY_LOCAL_MACHINE\PE\ControlSet001\Services\WimMount\Security]
"Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
  00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
  00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
  05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
  20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
  00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
  00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
[HKEY_LOCAL_MACHINE\PE\ControlSet001\Services\WimMount\Enum]
"0"="Root\\LEGACY_WIMMOUNT\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
;==========================
[HKEY_LOCAL_MACHINE\PE\ControlSet001\Enum\Root\LEGACY_WIMMOUNT]
"NextInstance"=dword:00000001
[HKEY_LOCAL_MACHINE\PE\ControlSet001\Enum\Root\LEGACY_WIMMOUNT\0000]
"Service"="WimMount"
"Legacy"=dword:00000001
"ConfigFlags"=dword:00000000
"Class"="LegacyDriver"
"ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
"DeviceDesc"="WimMount"
[HKEY_LOCAL_MACHINE\PE\ControlSet001\Enum\Root\LEGACY_WIMMOUNT\0000\Control]
"ActiveService"="WimMount"

将原先老的一些驱动注册要删除了。

二 但有些问题可能要老九解决:
1、用PECMD的MOUNT命令,IMDISK做出的Y盘64M,挂一个WIM包到Y盘的一个目录后,Y盘可用空间急剧下降,几乎不能再挂其他镜像,但用外面放置的wimnt或wimtool将镜像挂到Y盘则空间只是小许减少,不知何故。将wimtool放到内核中,启动时挂载镜像好象跟PECMD一样的。
2、卸载似乎不干净,特别是注册了镜像上的文件时。卸载后重新挂,只要原先没卸干净的就挂不起。
3、装卸速度似乎比老版本要慢。



内核winpe.is_纳米下载:http://www.namipan.com/d/WinPE.I ... 4fa674f0697985ebd01

[ 本帖最后由 hhh333 于 2009-3-13 21:11 编辑 ]
作者: aaa2k    时间: 2009-3-12 07:30
继续关注,有新东西了
作者: sjstg    时间: 2009-3-12 07:57
真是勤奋至极啊!!!!!!
作者: 66369    时间: 2009-3-12 08:10
勤奋....我该学习............
作者: dutt    时间: 2009-3-12 08:52
等有时间,再DIY一下,wimtool在核心和在外面,是不是机制不一样?
作者: lyra    时间: 2009-3-12 08:59
如果不能实现平滑过渡,暂时还是不要采用的好。
作者: weijing557    时间: 2009-3-12 09:00
楼主精神可嘉啊~
支持一下!
作者: nn2nn    时间: 2009-3-12 09:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: yqi99    时间: 2009-3-12 10:10
感觉新版本的wimmount不怎么好用.挂载要占用空间,连卸载了也占用空间.
而且你虚拟出的磁盘空间如果比你实际wim挂载后占用空间要大,那会挂载失败....
又一定要是ntfs
这些缺点不能容忍哦,好像唯一就是可读挂载的优势
作者: lyra    时间: 2009-3-12 10:26
目前WIMMOUNT还是WIN7测试版的,估计正式版出来之后会好些。
作者: hnxwjh    时间: 2009-3-12 10:46
学习..........
作者: lyra    时间: 2009-3-12 10:53
我个人感觉,应该不要急着上WIMMOUNT,最好是在原有WIM驱动的基础上,让IMDISK稳定的取代了RAMDRIV之后,等WIMMOUNT跟随WIN7正式版出来了,才考虑让WIMMOUNT驱动旧的WIM驱动。
作者: 66369    时间: 2009-3-12 11:00
原帖由 lyra 于 2009-3-12 10:53 发表
我个人感觉,应该不要急着上WIMMOUNT,最好是在原有WIM驱动的基础上,让IMDISK稳定的取代了RAMDRIV之后,等WIMMOUNT跟随WIN7正式版出来了,才考虑让WIMMOUNT驱动旧的WIM驱动。



折腾一翻.与你有同感.
作者: hhh333    时间: 2009-3-12 11:45
原帖由 lyra 于 2009-3-12 10:53 发表
我个人感觉,应该不要急着上WIMMOUNT,最好是在原有WIM驱动的基础上,让IMDISK稳定的取代了RAMDRIV之后,等WIMMOUNT跟随WIN7正式版出来了,才考虑让WIMMOUNT驱动旧的WIM驱动。


用老的WIM有必要用IMDISK来代RAMDRIV吗?IMDISK比RAMDEIV稳定吗?
我觉得IMDISK主要是用来配合WIM搞可写挂载的,没有这个就只剩下一个可以用命令方式设置和动态改变容量的作用,PE中需要改变容量的情况确实不多,老的WIM挂到RAM盘也几乎不点空间。

而可写挂载具有革命性的意义:
1、QQ、迅雷等许多需要写本身目录的软件均可以不解压到可写盘去运行,所有文件均可以以不压缩形式存在,我最反对运行时解压到别的地方的软件,还包括什么单文件版的软件,MS搞WIM格式的文件就是希望在保证一定压缩率的情况下非解压运行,否则有个RAR或7z就够了。
2、存在于只读媒体的WIM文件能比较轻松地可写挂载,将是光盘等的福音。

在此希望各位大侠拿出吃螃蟹的勇气!也希望老九这些做基础工作的同志能者多劳,进一步完善PECMD工具。
  
作者: lxl1638    时间: 2009-3-12 11:51
用 wimmount 肯定要多些内存,本人在论坛中多次强调:
WIM文件"用完就卸","卸完就删",确保 RamDisk 有足够的空间挂别的 WIM 映像,也可确保不用建立太大的 RamDisk,确保系统有足够的内存。

要用 WimMount 实现"用完就卸","卸完就删",建议用 WimTool.EXE + WimShExt.DLL 管理WIM映像,目前只有 WimShExt.DLL 可以实现,且是无进程打开WIM内的文件。

另,由于使用 WimMount ,所有WIM的挂载目录都是可写的,所以挂加载时只需"只读挂载"即可,无需"可写挂载",这样可以节省些内存。

使用 ImDisk 用于挂载 WIM 的 RamDisk 空间是难以确定的,这是本人要用 ImDisk 代替 RamDriv 的原因( ImDisk 可以扩容)

[ 本帖最后由 lxl1638 于 2009-3-12 11:55 编辑 ]
作者: hhh333    时间: 2009-3-12 12:35
原帖由 lxl1638 于 2009-3-12 11:51 发表
用 wimmount 肯定要多些内存,本人在论坛中多次强调:
WIM文件"用完就卸","卸完就删",确保 RamDisk 有足够的空间挂别的 WIM 映像,也可确保不用建立太大的 RamDisk,确保系统有足够的内存。

要用 WimMoun ...


我想问的是:

1、PECMD的MOUNT功能与wimtool有多大的区别?
2、为什么将wintool放在内核中与放在外面往IMDISK中挂同样的文件占用IMDISK的空间有较大的区别。
3、这种占用空间的变化有不有规律可循?
4、好象注册了WIM镜像中的文件就不能完全卸载,重新挂也上不去,怎么处理?

希望:
PE中一般启动阶段的挂载还是不麻烦wimtool,否则wimtool又要内置,PE内核可是寸土寸金,何况PECMD也有挂载功能,我们希望有一个超级强大精捍的PECMD!

[ 本帖最后由 hhh333 于 2009-3-12 12:39 编辑 ]
作者: lxl1638    时间: 2009-3-12 12:43
原帖由 hhh333 于 2009-3-12 12:35 发表


我想问的是:

1、PECMD的MOUNT功能与wimtool有多大的区别?
2、为什么将wintool放在内核中与放在外面往IMDISK中挂同样的文件占用IMDISK的空间有较大的区别。
3、这种占用空间的变化有不有规律可循?
...


WimTool、WIMNT没有必要放手内核,本人演示的PE也没有将它放入内核。
PECMD的MOUNT与WimTool、WIMNT的MOUNT功能是一样的。

另外,本人没有下载你这个PE来分析(要到周未才有空、有机长时间用),不知你这个PE中WIM文件是通过WIMNT.EXE还是通过WimShext.DLL打开的?本人那个演示PE已给出了示范,大多数WIM打开用完后你无法从 RamDisk 中发现它的挂载目录,因为"用完就卸","卸完就删",这样才可以保证小体积的 RamDisk 能有足够的空间。
作者: microdiamond    时间: 2009-3-12 13:52
还是测试后再向我们秀吧。
期待中。。。。。。
作者: lyra    时间: 2009-3-12 14:35
原帖由 hhh333 于 2009-3-12 11:45 发表


用老的WIM有必要用IMDISK来代RAMDRIV吗?IMDISK比RAMDEIV稳定吗?
我觉得IMDISK主要是用来配合WIM搞可写挂载的,没有这个就只剩下一个可以用命令方式设置和动态改变容量的作用,PE中需要改变容量的情况确实 ...


为什么没有必要呢?

如果用WIMFLTR.SYS就能与IMDISK一起实现你以上所说的功能,并且足够的快速稳定。那我为什么还要用尚未成熟的WIMMOUNT呢?
作者: lyra    时间: 2009-3-12 15:48
Windows 7 Build 7048刚刚现身没几天,网上又出现了Windows 7 Build 7057 x86版本的身影,其完整版本号为7057.0.x86fre.winmain.090305-2000,完成于3月5日。

相应的WIMMOUNT要不要再更新?呵呵,听说,7068也已经有人见过了。真的有了,要不要继续更新?
作者: hhh333    时间: 2009-3-12 16:10
原帖由 lyra 于 2009-3-12 14:35 发表


为什么没有必要呢?

如果用WIMFLTR.SYS就能与IMDISK一起实现你以上所说的功能,并且足够的快速稳定。那我为什么还要用尚未成熟的WIMMOUNT呢?



有这样的WIMFLTR.SYS吗?如果有可能就是wimmount.sys改名的吧。
作者: hhh333    时间: 2009-3-12 16:22
原帖由 lyra 于 2009-3-12 15:48 发表
Windows 7 Build 7048刚刚现身没几天,网上又出现了Windows 7 Build 7057 x86版本的身影,其完整版本号为7057.0.x86fre.winmain.090305-2000,完成于3月5日。

相应的WIMMOUNT要不要再更新?呵呵,听说,7068 ...


更新的脚步不会停的,这些公司不整些新卖点,怎么发家致富?

如果什么格式都可可写挂载且不占挂载点的空间当然不得不更新了。您估计这会可能吗?SYS类型的东西,一步到位了就断了财路了,没办法,现在是西文文明领导东方文明的时代,我们只有跟着人家了。

wimmount不管介质如何均能可写挂载,应该是一个大进步。(说不定以前推出WIM格式时,可写挂载就弄好了,只是MS要慢慢放出来而已。我们有时候给人家弄某件事,你弄得越快,人家给钱就越不爽快)
作者: lyra    时间: 2009-3-12 16:29
原帖由 hhh333 于 2009-3-12 16:10 发表

有这样的WIMFLTR.SYS吗?如果有可能就是wimmount.sys改名的吧。


6.0.6001.18000的版本啊!怎么没有,我是说如果这个版本的WIMFLTR.SYS能与IMDISK配合用得好,就没有必要用WIMMOUNT.SYS了。
作者: lyra    时间: 2009-3-12 16:33
原帖由 hhh333 于 2009-3-12 16:22 发表


更新的脚步不会停的,这些公司不整些新卖点,怎么发家致富?

如果什么格式都可可写挂载且不占挂载点的空间当然不得不更新了。您估计这会可能吗?SYS类型的东西,一步到位了就断了财路了,没办法,现在是 ...


目前的PE大多使用WIMFLTR.SYS+RAMDRIV的组合。

我的意思是如果WIMFLTR.SYS+IMDISK的组合能实现wimmount.sys+IMDISK的组合的所有功能,就可以先不要使用WIMMOUNT.SYS。如果不行,还是只能用WIMMOUNT.SYS+IMDISK,但我希望能解决这样升级后的一切问题。并不是否定WIMMOUNT.SYS+IMDISK。
作者: woaiyongbt    时间: 2009-3-12 16:35
虽然我是菜鸟来捧场!!!
作者: hhh333    时间: 2009-3-12 16:35
原帖由 lxl1638 于 2009-3-12 12:43 发表


WimTool、WIMNT没有必要放手内核,本人演示的PE也没有将它放入内核。
PECMD的MOUNT与WimTool、WIMNT的MOUNT功能是一样的。

另外,本人没有下载你这个PE来分析(要到周未才有空、有机长时间用),不知你这 ...


看了你的演示版,你就那么放心将他们放在外面,不怕病毒找上门?

我还是主张外置的所有可执行程序均放到wim中保护起来的。
作者: hhh333    时间: 2009-3-12 16:38
原帖由 lyra 于 2009-3-12 16:29 发表


6.0.6001.18000的版本啊!怎么没有,我是说如果这个版本的WIMFLTR.SYS能与IMDISK配合用得好,就没有必要用WIMMOUNT.SYS了。


这个版本行不行?行的话当然好!有人做过吗?兄弟何不测试一下,成功了我们又继续跟你走。

[ 本帖最后由 hhh333 于 2009-3-12 16:40 编辑 ]
作者: lyra    时间: 2009-3-12 16:41
原帖由 hhh333 于 2009-3-12 16:38 发表

这个版本行不行?行的话当然好!有人做过吗?兄弟何不测试一下,成功了我们又继续跟你走。


呵呵,我还没成功。实在不行的话,我也只能放弃。
作者: 66369    时间: 2009-3-12 17:02
原帖由 lyra 于 2009-3-12 16:41 发表


呵呵,我还没成功。实在不行的话,我也只能放弃。



期待你了.........
作者: nn2nn    时间: 2009-3-12 18:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: hhh333    时间: 2009-3-12 19:36
又作了一些测试:
1、关于从外面调用与启动时从内部调用空间占用的差异原因已经找到。实际上这两者并无差异,只是启动时调用,使用了上面的一些文件,如注册等,而进入系统后直接用wimtool或wimnt等挂载只是建立挂载关系,消耗少量空间,这个时候可以到Y盘找到挂载起来的目录,击右键选属性,让其扫描一次文件,空间马上就告急了。似乎是wim压缩前有多少空间就要在Y盘占多少空间。如果是这样的话,还有何意义呢?

如Y盘起始64M,启动时挂了一个MMC包(39M)有剩余空间20M


再用wimtool挂一个DRV包剩下16M


到Y盘去看一下某个挂载目录的属性,剩余空间立即接近0,机器开始变得很卡。


2、卸载
MMC包启动时注册了一些DLL,则这些软件不能完全卸载,MMC包也不能再挂了。


结论:这个东西目前还不是一个成熟的产品。或者是我们的做法不对?
作者: nn2nn    时间: 2009-3-12 19:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: 北斗    时间: 2009-3-13 09:52
楼主的diy精神实在值得学习啊,期待更好的版本,呵呵。
作者: zjloo    时间: 2009-3-13 11:45
楼主继续加油,等待你的佳作
作者: secowu    时间: 2009-3-13 13:54
是不是毛桃的内核?
顺便加入W7的安装支持吧
作者: secowu    时间: 2009-3-13 13:55
原帖由 nn2nn 于 2009-3-12 19:57 发表
7048驱动的特性还没有人测试,
如果你测试的结果正确:似乎是wim压缩前有多少空间就要在Y盘占多少空间,那就是7048的一个新特性.

正在下载7057,需要哪些文件,看看新版本有没有变化
作者: lxl1638    时间: 2009-3-13 17:20
原帖由 hhh333 于 2009-3-12 19:36 发表
又作了一些测试:
1、关于从外面调用与启动时从内部调用空间占用的差异原因已经找到。实际上这两者并无差异,只是启动时调用,使用了上面的一些文件,如注册等,而进入系统后直接用wimtool或wimnt等挂载只是建 ...


本人也得到类似的结论,但与你的有所不同,结论是:
WIM挂载后占的空间=WIM未解开的体积

图一.PNG (40.32 KB, 下载次数: 71)

图一.PNG

图二.PNG (24.02 KB, 下载次数: 73)

图二.PNG

图三.PNG (31.17 KB, 下载次数: 68)

图三.PNG

作者: hhh333    时间: 2009-3-13 17:39
原帖由 lxl1638 于 2009-3-13 17:20 发表


本人也得到类似的结论,但与你的有所不同,结论是:
WIM挂载后占的空间=WIM未解开的体积


老九,你可能还有一个事情没有做,挂载后请点一下挂载目录的属性,让机器扫描一下整个目录,则IMDISK的空间会急剧下降。
如我的64M的IMDISK挂一个39M的WIM剩余20M,但列一下属性以后只剩下4.5M,空间占用59M,而未压缩前是55M,结论应该是比压缩前还要多占4~5M。
作者: lxl1638    时间: 2009-3-13 17:57
图一的左边就是点属性的,图二的左右两图都是点属性的,图三的右边也是。你那个少4~5M可能是其它目录占用的,如用户文件夹。

[ 本帖最后由 lxl1638 于 2009-3-13 18:05 编辑 ]
作者: hhh333    时间: 2009-3-13 21:03
原帖由 lxl1638 于 2009-3-13 17:57 发表
图一的左边就是点属性的,图二的左右两图都是点属性的,图三的右边也是。你那个少4~5M可能是其它目录占用的,如用户文件夹。


看看我重新测试的结果
Y盘初始创建为128M的NTFS
1、空盘不挂载(占用空间2.46M)

2、挂39M的MMC.WIM后(占用空间43.6M)

3、看MMC的属性

4、再看Y盘的大小
为了对照,将看属性前的列于右边
5、用wimtool再挂一个19M的UOP.WIM(占用空间几乎无变化,增加0.4M)

6、再看UOP的属性

7、再看Y的属性
为了对照,将看属性前的列于右边

分析:
    挂MMC需要除压缩前的空间额外占用的空间数:看属性后占用的空间59.5-MMC未压缩前的大小55.3-空盘占用2.46=1.6
    挂UOP需要除压缩前的空间额外占用的空间数:看属性后占用的空间89.8-UOP未压缩前的大小28.7-原挂MMC包看属性后的大小59.5=1.6

结论:
    1、挂载一个镜像并扫描(即使用)每一个文件,占用的空间数=压缩前空间数(即实际未压缩大小)+1.6M
    2、如果只挂载镜像而不使用仅需要0.4M
    3、NTFS类型的IMDSK空盘额外要开销2.46M

[ 本帖最后由 hhh333 于 2009-3-13 21:41 编辑 ]
作者: 66369    时间: 2009-3-13 23:37
标题: 回复 #40 hhh333 的帖子
NTFS下.每操作一次.

System Volume Information文件夹的大小.会变化.是不是?
作者: tt911    时间: 2009-3-14 01:03
标题: 做为DIY玩家的一句话:
就是:支持新品种才能有新的理念和尝试新东西才能进步 和发展!!!!要多法并用才能更多的激活大脑发挥潜能!!!!

支持楼主!!楼主是好样的!!!


[ 本帖最后由 tt911 于 2009-3-14 01:05 编辑 ]
作者: HB天意    时间: 2009-3-14 12:33




我也发两个图。
作者: hhh333    时间: 2009-3-14 15:46
原帖由 yidawpf 于 2009-3-14 12:33 发表
56372

56373

我也发两个图。


兄弟要表达什么???
作者: 66369    时间: 2009-3-14 16:14
看来LZ在IMDISK上.取得了重大的成果.希望更新你的pe.期待.................
作者: hhh333    时间: 2009-3-14 16:35
原帖由 66369 于 2009-3-14 16:14 发表
看来LZ在IMDISK上.取得了重大的成果.希望更新你的pe.期待.................


新版的wimmount还有许多问题,刚才测试了,最新的7057驱动与7048驱动没什么两样,不能使用新版的wimmount只使用IMDISK价值不大。

上面已经说了,有两个致使问题:
1、空间占用问题
2、不能完全卸载问题。只要注册了挂载目录上的DLL则注册的DLL不能完全卸载,而且更致命的是这个镜像再也不能装载了,即使装到别的目录也不行。
作者: 66369    时间: 2009-3-14 16:58
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=106186

以上仅供参考.

能否用CMD卸载?
作者: hhh333    时间: 2009-3-14 18:21
原帖由 66369 于 2009-3-14 16:58 发表
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=106186

以上仅供参考.

能否用CMD卸载?


不是IMDISK的问题
是新版wimmount的问题。或者说是它的新特点吧!
作者: lisong    时间: 2009-3-14 22:03
新东东新测试!!!!!!!!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3