无忧启动论坛

标题: 关于win7pe的wim自动挂载运行问题 [打印本页]

作者: hotdll    时间: 2012-5-26 11:46
标题: 关于win7pe的wim自动挂载运行问题
不得已的解决办法:
用g4d map --mem 一个打包成gz的1.44M IMG空镜像。压缩后体积3K。
  1. map --mem /mount.gz (hd)
  2. map --hook
复制代码
进win7pe的时候
利用pecmd整理盘符的时候,查找g4d仿真的磁盘。然后将磁盘的盘符映射为Z盘。
为什么不用B盘。win7磁盘管理器不识别G4D仿真的B盘,如果在win7下将g4d的仿真盘映射为B盘,则会有显示两个盘符。最后决定映射为Z盘
代码如下:
盘符整理代码:
  1. _SUB FREEUSB
  2. FORM &T=%D%
  3. //TEAM FORM &T,&B=%D%| MESS T=[%T%] B=[%B%]
  4. FIND %D%:\>0,!! FIND %D%:\<2,!! EXEC %WinDir%\System32\mount.cmd
  5. FIND $%&T%=DRIVE_FIXED,!! FIND $%&RP%=NA,! SUBJ *%&D% //U盘后的固定磁盘
  6. FIND $DRIVE_USBFLASH = %&T%, ENVI &T=DRIVE_USBDISK //USB软盘(DRIVE_USBFLASH) ,当作 USB硬盘(DRIVE_USBDISK)
  7. FIND $%&T%=DRIVE_USBDISK,!! SUBJ *%&D% //U盘
  8. FIND $%&T%=DRIVE_USBDISK,!! FIND $%&RP%=NA, ENVI &RP=%&D% //RP:第一个U盘
  9. MSTR &D=%&I%,1,%&DRVS%
  10. CALC &I=%&I% + 1
  11. _END
  12. _SUB ORDER_DRIVE
  13. TEAM ENVI &&DRVS=CDEFGHIJKLMNOPRSTUV****| ENVI &&I=2| ENVI &&D=C| ENVI &&RP=NA| ENVI &&T=| ENVI &&B= //初始化
  14. LOOP $%&D%=*,! CALL FREEUSB
  15. //重新加载HD,USB
  16. SHOW *F:0
  17. SHOW *U:-1,,,O
  18. //登录后,重新加载USB
  19. //RUNS PECMD.EXE EXEC PECMD.EXE TEAM WAIT 1000|SHOW U:0,U_DISK
  20. _END
复制代码
mount.cmd代码:
  1. @echo off
  2. mountvol %1 /L > %temp%\vol.log
  3. set /p volname=< %temp%\vol.log
  4. mountvol %1 /D
  5. mountvol Z:%volname%
复制代码
---------------------------------------------------------------------------------------------------------------------------------------------
1、在win7 sp1 x68 环境下测试:
使用imdisk 虚拟的硬盘,使用wimfltr.sys驱动。无论虚拟盘是什么格式,wimtool 均无法挂载wim到虚拟盘。
补充:如果自动挂载目录设置为虚拟磁盘根目录,则只能挂载一次,但是不能卸载。
如果自动挂载目录设置为子目录,则挂载目录下没有任何文件。
使用imdisk 虚拟的硬盘,使用wimmount.sys驱动。虚拟盘是NTFS格式,WIMTOOL 可以成功挂载wim到虚拟盘。
使用本地硬盘,无论使用wimfltr.sys驱动还是wimmount驱动,均能成功的挂载wim。

2、在win7pe环境下测试。
使用imdisk 虚拟的硬盘,无论使用wimfltr.sys 驱动还是wimmount驱动。无论imdisk虚拟的磁盘是ntfs还是fat,均无法成功挂载。
故障提示:挂载失败,目标下可能存在文件或者没有权限。。。。实际上使用的是最高权限system,目标下确实没有文件。

使用本地硬盘,无论使用wimfltr.sys还是使用wimmount.sys驱动,均能成功挂载wim....

问:
有谁知道是怎么回事?为什么挂载到硬盘正常?挂载到虚拟磁盘就不正常?

[ 本帖最后由 hotdll 于 2012-5-27 21:28 编辑 ]
作者: chiannet    时间: 2012-5-26 13:07
FORX B:\AXPE\*.WIM,P,0,Call B



_SUB B
        Name k=%p%
        path y:\%k%\%k%
        exec =!imagex.exe /mount "%p%" 1 "y:\%k%\%k%"
        ifex Y:\%k%\main.ini,LOAD Y:\%k%\main.INI!LOAD Y:\%k%\%k%.INI
        envi p=
_END
作者: chiannet    时间: 2012-5-26 13:08
其中Y:是imdsik虚拟盘
作者: hotdll    时间: 2012-5-26 13:10
标题: 回复 #2 chiannet 的帖子
您可能没明白我的意思。。。
现在是挂载不上。。。。手动都挂不上。。。。。
作者: chiannet    时间: 2012-5-26 13:12
path y:\%k%\%k%
若想用imagex.exe /mount 挂载aaa.WIM到y:\aaa,需要建立y:\aaa\aaa\两级目录,就是吃掉一级目录的问题
作者: zhs509    时间: 2012-5-26 13:19
标题: 回复 #5 chiannet 的帖子
不清楚网虫2008的PE是如何做到挂载WIM的。。。

我的理解:楼主希望的是直接双击挂载单个的wim到内存盘
作者: chiannet    时间: 2012-5-26 13:22
标题: 回复 #6 zhs509 的帖子
7pe下,我都是2楼的代码用imagex.exe 挂载。
作者: zhs509    时间: 2012-5-26 13:40
标题: 回复 #7 chiannet 的帖子
可以解决双击自动挂载wim的问题吗?
作者: zds1210    时间: 2012-5-26 13:45
我也发现了这个问题。难,本论坛的win7pe基本都没有解决。
作者: zhuyoucheng    时间: 2012-5-26 15:26
如果想双击自动挂载,必须建立一个VHD格式的虚拟盘,论坛不是解决了这个问题了吗?
作者: zhs509    时间: 2012-5-26 15:28
标题: 回复 #10 zhuyoucheng 的帖子
创建VHD的可以解决,但是速度很慢——主要是连接到磁盘管理占用太多时间了

楼主的PE可能精简的内容比较多导致无法创建VHD

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=206755&page=23#pid2413869
作者: fujianabc    时间: 2012-5-26 16:10
原帖由 zhs509 于 2012-5-26 15:28 发表
创建VHD的可以解决,但是速度很慢——主要是连接到磁盘管理占用太多时间了

楼主的PE可能精简的内容比较多导致无法创建VHD

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=206755&page=23#pid2413869

微软一个60多KB的命令行程序vhdtool.exe就能创建vhd文件
作者: zhs509    时间: 2012-5-26 16:12
标题: 回复 #12 fujianabc 的帖子
麻烦老大将工具和脚本代码一并发下,谢谢了
作者: hotdll    时间: 2012-5-26 16:26
标题: 回复 #10 zhuyoucheng 的帖子
用vhd格式的,,,,要等待近40秒。。。。
作者: hotdll    时间: 2012-5-26 16:27
标题: 回复 #12 fujianabc 的帖子
挂载很费时间的。。。。。。。。。。。。何况不知道为什么native 7pe 挂载不上。。

算了。我打算抛弃wim。没看到wim单文件自动运行的好处。好似整体打包成wim吧
作者: zds1210    时间: 2012-5-26 16:33
原帖由 hotdll 于 2012-5-26 11:46 发表
1、在win7 sp1 x68 环境下测试:
    使用imdisk 虚拟的硬盘,使用wimfltr.sys驱动。无论虚拟盘是什么格式,wimtool 均无法挂载wim到虚拟盘。
    补充:如果自动挂载目录设置为虚拟磁盘根目录,则只能挂载一 ...

饭大,本人有一个设想,不知道对不?就是我们把exe程序外置弄成wim自运行格式,就是为了防止在不干净的电脑中导入导出时外置感染病毒。现在要解决你提的问题有一点的难度。我们可以采用变通的方法,就是
PE外置EXE扩展名全部人工改名为另一个如zds,然后在PECMD语句中,注册ZDS关联为程序文件。不能不能达到上面的目的?我测试一下方案是可行的就是不知道能不能防病毒。
pecdm exe=!cmd asso.zds =exefile。 语句可能要修正一下。
晚上专门开帖子研究一下。

[ 本帖最后由 zds1210 于 2012-5-26 16:35 编辑 ]
作者: zds1210    时间: 2012-5-26 16:42
原帖由 hotdll 于 2012-5-26 16:27 发表
挂载很费时间的。。。。。。。。。。。。何况不知道为什么native 7pe 挂载不上。。

算了。我打算抛弃wim。没看到wim单文件自动运行的好处。好似整体打包成wim吧

整体打包也是一种好方法,但可能会影响启动速度和内存。
单个程序打包成wim自运行,除了病毒外,好像也没有什么好处,体积会大些,7Z和winrar打包,个头都比它小。
我建议你,程序不用整体打包,而还是外置于UD区,按需调用,否则不太适用于老电脑。我测试了这种外置方式,02年的老电脑也能极速启动,256M内存,基本维护根本没有问题。我猜如果整体打包,老电脑的启动速度和内存占用就不知了,就失去了nativpe的优势。但统一版,还是打包为好,比较容易实现统一。
单个程序改一下扩展名,然后PE下注册程序关联,也是好方法。
在你的win 7下手工输入脚本,成功实现了扩展名的转变。

[ 本帖最后由 zds1210 于 2012-5-26 17:05 编辑 ]
作者: kcyou    时间: 2012-5-26 18:16
标题: 回复 #17 zds1210 的帖子
干脆搞成EXE格式,临时文件夹可随时设置到别处,运行一个程序后及时清理,少量的主要工具可以内置到二级内核(不用7Z压缩,而是散开放),其他程序根据需要放到可显分区,按需选择。防毒问题暂不考虑。


好像有人成功在WIN7PE中和XPPE一样创建Ramdriv虚拟盘成功了的,忘了不知是谁的7PE.

[ 本帖最后由 2011kcyou 于 2012-5-26 18:22 编辑 ]
作者: mfkwgij    时间: 2012-5-26 18:17
我也想知道哦 支持了!~
作者: fujianabc    时间: 2012-5-26 18:46
原帖由 zhs509 于 2012-5-26 16:12 发表
麻烦老大将工具和脚本代码一并发下,谢谢了

就这个东西,可以命令行创建vhd文件
http://archive.msdn.microsoft.com/vhdtool
作者: xhwfq    时间: 2012-5-26 19:25
原帖由 hotdll 于 2012-5-26 11:46 发表
1、在win7 sp1 x68 环境下测试:
    使用imdisk 虚拟的硬盘,使用wimfltr.sys驱动。无论虚拟盘是什么格式,wimtool 均无法挂载wim到虚拟盘。
    补充:如果自动挂载目录设置为虚拟磁盘根目录,则只能挂载一 ...

我做pe1.x时,是用map --mem ... (fd1)弄个B盘,由firadisk在pe中识别出来,再供wim挂载使用,不知能不能适用于7pe.
作者: hotdll    时间: 2012-5-26 19:56
标题: 回复 #21 xhwfq 的帖子
我知道这个方法。但是这个方法太麻烦了。。。。。
并且多了一个img
作者: xhwfq    时间: 2012-5-26 20:47
多一个空img,但不用再集成imdisk了,当然这些都是次要的,关键是能不能解决wim挂载问题.

[ 本帖最后由 xhwfq 于 2012-5-26 20:48 编辑 ]
作者: hotdll    时间: 2012-5-26 20:48
标题: 回复 #23 xhwfq 的帖子
呵呵。先谢谢你。
您说的有道理。。。。
我先考虑考虑。呵呵。
作者: zhs509    时间: 2012-5-26 20:51
标题: 回复 #23 xhwfq 的帖子
好像有点道理。。。

在img里面弄个文件标记一下更适合。。。

等待hotdll的新成果
作者: hotdll    时间: 2012-5-26 21:16
原帖由 xhwfq 于 2012-5-26 20:47 发表
多一个空img,但不用再集成imdisk了,当然这些都是次要的,关键是能不能解决wim挂载问题.

我晕死了。。
我仿真了fd1,但是WIN7PE不现实B盘。。。我晕死
作者: zhs509    时间: 2012-5-26 21:19
标题: 回复 #26 hotdll 的帖子
看来只有等虫大出手才能比较完美解决了

你可以研究下网虫2008的PE看看
作者: xhwfq    时间: 2012-5-26 21:23
pe1.x要加载firadisk驱动才能实现B盘,不知在win7pe中行不行.
作者: hotdll    时间: 2012-5-26 22:16
标题: 回复 #28 xhwfq 的帖子
论坛没见有win7pe成功集成firadisk的。何况firadisk貌似不支持ud
作者: nu852    时间: 2012-5-27 02:28
之前在另一主题, 与楼主谈及 xpe 及 7pe, 可创建 x: 最大容量的问题,
我说错了, 更正一下.

相关原因相信是 fbwf.sys 的版本不同有关,
而楼主顶楼遇到的情况, 估计也是与 fbwf.sys 的版本有关.

xpe 一般使用的 fbwf.sys, 与官方 M$ PE3 所使用的 fbwf.sys 版本(v6.1.7600.16385) 是不同的.
xpe 一般使用的 wimfltr.sys, 而官方 M$ PE3 使用 Wimmount.sys.
尚有 wimgapi.dll 的版本不同, 也可能参与了众多问题之中.

我个人是用 make_pe3 (http://reboot.pro/11852/page__hl__makepe3) 来做 7pe (繁体) 的.
make_pe3 所做出来的 7pe, 是使用 fbwf.sys v6.1.7600.16385 及 Wimmount.sys v6.1.7600.16385 的.
挂载软体 wim 至 imdisk 所创建的 b: 上, 是成功的, 也可以卸载那软体 wim, 而且可释放相关记忆体.

xpe 可用 firadisk 或 winvblock 等, 在进入桌面后, 仍可看到在 grub4dos 所挂载起的 (Oxff)
但 7pe 是不能的.

楼主在顶楼遇到的问题, 而及 firadisk 的问题,
在 win7 刚出的时候, 无忧上很多网友已提出过,
但好像没有解决办法, 所以没有网友再跟进了.

[ 本帖最后由 nu852 于 2012-5-27 02:45 编辑 ]
作者: hotdll    时间: 2012-5-27 09:41
标题: 回复 #30 nu852 的帖子
问题不同
我尝试过不同版本的fbwf.sys
1、我开头说过,我在win7pe使用的是wimfltr.sys,对应的wimgapi.dll也是相对应的版本。

2、使用wimmount.sys驱动在我win7下成功,在win7pe下不成功。不过我不想使用wimmount.sys驱动。理由很简单,太占内存。

3、win7pe可以使用winvblock加载g4d创建的虚拟磁盘。
作者: hotdll    时间: 2012-5-27 09:42
标题: 回复 #21 xhwfq 的帖子
晕。。。
我仿真为A和B盘不行,仿真为硬盘就行。。。晕死了。
作者: zhs509    时间: 2012-5-27 10:10
标题: 回复 #32 hotdll 的帖子
看来是好消息啊。。。
作者: xhwfq    时间: 2012-5-27 10:14
原帖由 hotdll 于 2012-5-27 09:42 发表
晕。。。
我仿真为A和B盘不行,仿真为硬盘就行。。。晕死了。

看样子要有新的成品出来了,提前庆贺一下.
作者: hotdll    时间: 2012-5-27 13:49
呵呵。仿真HD,然后进7PE后利用盘符整理,捎带把G4D仿真的硬盘挂到B盘上去。
作者: zhs1997    时间: 2012-5-27 13:51
标题: 回复 #35 hotdll 的帖子
哈哈 下次我也可以这样搞了。。。

直接是map --mem为HD,然后启动win7pe吗?

[ 本帖最后由 zhs1997 于 2012-5-27 13:53 编辑 ]
作者: 527104427    时间: 2012-5-27 13:56
又有新成果,可喜可贺啊
作者: hotdll    时间: 2012-5-27 21:16
标题: 回复 #34 xhwfq 的帖子
不得已的解决办法:

用g4d map --mem 一个打包成gz的1.44M IMG空镜像。压缩后体积3K。



  1. map --mem /mount.gz (hd)

  2. map --hook

复制代码




进win7pe的时候

利用pecmd整理盘符的时候,查找g4d仿真的磁盘。然后将磁盘的盘符映射为Z盘。

为什么不用B盘。win7磁盘管理器不识别G4D仿真的B盘,如果在win7下将g4d的仿真盘映射为B盘,则会有显示两个盘符。最后决定映射为Z盘

代码如下:

盘符整理代码:



  1. _SUB  FREEUSB
  2. FORM &T=%D%
  3. //TEAM FORM  &T,&B=%D%| MESS  T=[%T%] B=[%B%]
  4. FIND $%&T%=DRIVE_FIXED,!! FIND $%&RP%=NA,! SUBJ *%&D%  //U盘后的固定磁盘
  5. FIND $DRIVE_USBFLASH = %&T%, ENVI  &T=DRIVE_USBDISK    //USB软盘(DRIVE_USBFLASH) ,当作 USB硬盘(DRIVE_USBDISK)
  6. FIND $%&T%=DRIVE_USBDISK,!! SUBJ *%&D%  //U盘
  7. FIND $%&T%=DRIVE_USBDISK,!! FIND $%&RP%=NA, ENVI &RP=%&D%  //RP:第一个U盘
  8. MSTR &D=%&I%,1,%&DRVS%
  9. CALC &I=%&I% + 1
  10. _END

  11. _SUB ORDER_DRIVE  
  12.   TEAM ENVI &&DRVS=CDEFGHIJKLMNOPRSTUV****| ENVI  &&I=2| ENVI  &&D=C| ENVI &&RP=NA| ENVI &&T=| ENVI &&B=   //初始化
  13.   LOOP $%&D%=*,! CALL FREEUSB
  14.   //重新加载HD,USB
  15.   SHOW *F:0
  16.   SHOW *U:-1,,,O
  17.   //登录后,重新加载USB
  18.   //RUNS PECMD.EXE EXEC PECMD.EXE TEAM WAIT 1000|SHOW U:0,U_DISK
  19. _END  


复制代码




mount.cmd代码:



  1. @echo off
  2. mountvol %1 /L > %temp%\vol.log
  3. set /p volname=< %temp%\vol.log
  4. mountvol %1 /D
  5. mountvol Z:%volname%


复制代码


---------------------------------------------------------------------------------------------------------------------------------------------
作者: kcyou    时间: 2012-5-28 09:31
辛苦了!支持。
作者: canmao    时间: 2012-5-28 11:39
将 sfloppy.sys 加入一级内核能够认到 G4D map的 fd 。
用自己 Y 的Navite 7Pe 测试了三台实机 都没问题。并都成功加载了网卡(fbwf.sys 68k,ndis在一级加载,否则加载网络组件时蓝屏)
100k的 fbwf.sys 不行,加载网卡驱动时重启。

设备管理器蓝屏依旧。

[ 本帖最后由 canmao 于 2012-5-28 11:41 编辑 ]
作者: hotdll    时间: 2012-5-28 11:54
标题: 回复 #40 canmao 的帖子
1、 sfloppy.sys 加入一级内核能够认到 G4D map的 fd 。
这个不是问题,问题是wim挂载不到fd上。

2、并都成功加载了网卡(fbwf.sys 68k,ndis在一级加载,否则加载网络组件时蓝屏)
NDIS可以在二级加载,用pecmd开启该服务即可。

3、我想请教下#40 canmao大大。
    您加载驱动的时候,没有说网卡配置不正确的?
作者: canmao    时间: 2012-5-28 12:22
标题: 回复 #41 hotdll 的帖子
没有任何提示。我的网络组件是内置在二级,网卡驱动是G4D 下用chkpci 检查,然后将驱动拷贝到 map 的 fd 中传入win7pe。在pecmd.ini 中:
//SERV FBWF
FIND MEM<384,FBWF P40 L96 H192!FBWF P50 L160 H512

//开启一级内核中手动执行的服务
TEAM SERV Mup|SERV TCPIP
TEAM SERV SACDRV|SERV storflt|SERV VDRVROOT
TEAM SERV AWEAlloc|SERV ImDisk

FIND MEM<256,DISP W800 H600 B32!DISP W1024 H768 B32
FIND MEM<384,Call IFSetPageFile

INIT IU
TEXT 初始化网络...
EXEC !=%SystemRoot%\System32\winpeshl.exe

TEXT 安装网卡...
DEVI $A:\*.CAB,,%TEMP%
FILE %TEMP%\*.*
...


pecmd.exe  --> 4.0 2011 0501
作者: hotdll    时间: 2012-5-28 15:57
标题: 回复 #42 canmao 的帖子
您用的是哪个版本的一级内核?
我整了太多的一级内核了。。自己都绕晕了。
作者: canmao    时间: 2012-5-28 16:25
标题: 回复 #43 hotdll 的帖子
按你的路子,从自用的7PE中自己y的。主要是因为:
我的7PE中 \Windows\System32\DriverStore\FileRepository 中的驱动是从 SP1 中扒拉出来的,很多xxxx.inf_x86_neutral_xxxxxxxxxxx 和你提供的注册表服务项下 DriverPackageId 键值不同。

刚传了一个 fba 到 zhaohj 提供的 FTP 上:/canmao/7PE/,供你参考。

网络驱动是一年前的了。
另外进PE后,要运行一次桌面上的“PE网络设置”,网络才能正常!

[ 本帖最后由 canmao 于 2012-5-28 17:10 编辑 ]
作者: hotdll    时间: 2012-5-28 17:47
标题: 回复 #44 canmao 的帖子
晕。大侠,这样是没法参考的。
不过还是先谢谢你。。。
先把他搞成为维护用的PE再说网络的事情。
作者: zhaohj    时间: 2012-7-4 15:41
我也很奇怪,网虫、66369的7PE,都能自动挂载WIM。
而且改成104KB的fbwf.sys及fbwf.cfg都正常。
查看了一下内核,wimfltr是6.0.6001.18000,而且wimmount.sys也在,真搞不懂。
打开wimtools用到的驱动是wimmount的。




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