无忧启动论坛

标题: 推荐用 imdisk 处理标准 IMG 镜像——给 03PE 加入 imdisk 和扩大 PE 镜像大小 [打印本页]

作者: 2013_top398    时间: 2014-3-13 22:20
标题: 推荐用 imdisk 处理标准 IMG 镜像——给 03PE 加入 imdisk 和扩大 PE 镜像大小
本帖最后由 2013_top398 于 2014-3-13 22:22 编辑

一、加入 imdisk
1、将 WINPE.IM_ 用 7-zip 或类似工具解开其中的 WINPE.IMG 到 r:(这是我的内存工作和缓存盘)。
2、用 imdisk 挂载 WINPE.IMG 到 z: 盘。
3、从 imdisk 安装文件中提取出 x86 版的 IMDISK.EXE、IMDISK.CPL、IMDISK.SYS、IMDSKSVC.EXE 4个文件,将 IMDISK.SYS 放到 z:\wxpe\system32\drivers 里,其他3个放到 z:\wxpe\system32 里。
4、复制 z:\WXPE\SYSTEM32\SETUPREG.HIV 到 r:\,复制 z:\WXPE\SYSTEM32\CONFIG\SOFTWARE 到 r:\,这是为了避免修改注册表产生一堆垃圾文件。
5、regedit 挂载 setupreg.hiv 为 pe-sys,SOFTWARE 为 pe-soft,导入以下注册表:
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\Enum\Root\LEGACY_IMDISK\0000]
  3. "Service"="ImDisk"
  4. "Legacy"=dword:00000001
  5. "ConfigFlags"=dword:00000000
  6. "Class"="LegacyDriver"
  7. "ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
  8. "DeviceDesc"="ImDisk Virtual Disk Driver"
  9. "Capabilities"=dword:00000000

  10. [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\Enum\Root\LEGACY_IMDISK\0000\Control]
  11. "*NewlyCreated*"=dword:00000000
  12. "ActiveService"="ImDisk"

  13. [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\services\ImDisk]
  14. "Type"=dword:00000001
  15. "Start"=dword:00000003
  16. "ErrorControl"=dword:00000000
  17. "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  18.   52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,6d,00,64,00,69,00,73,00,6b,\
  19.   00,2e,00,73,00,79,00,73,00,00,00
  20. "DisplayName"="ImDisk Virtual Disk Driver"
  21. "Description"="Disk emulation driver"

  22. [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\services\ImDisk\Enum]
  23. "0"="Root\\LEGACY_IMDISK\\0000"
  24. "Count"=dword:00000001
  25. "NextInstance"=dword:00000001

  26. [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\services\ImDskSvc]
  27. "Type"=dword:00000010
  28. "Start"=dword:00000003
  29. "ErrorControl"=dword:00000000
  30. "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  31.   74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,\
  32.   00,6d,00,64,00,73,00,6b,00,73,00,76,00,63,00,2e,00,65,00,78,00,65,00,00,00
  33. "DisplayName"="ImDisk Virtual Disk Driver Helper"
  34. "ObjectName"="LocalSystem"
  35. "Description"="Helper service for ImDisk Virtual Disk Driver."

  36. [HKEY_LOCAL_MACHINE\pe-soft\Classes\*\shell\ImDiskMountFile]
  37. @="加载为 ImDisk 虚拟盘(&M)"
  38. [HKEY_LOCAL_MACHINE\pe-soft\Classes\*\shell\ImDiskMountFile\command]
  39. @="rundll32.exe imdisk.cpl,RunDLL_MountFile %L"

  40. [HKEY_LOCAL_MACHINE\pe-soft\Classes\Drive\shell\ImDiskSaveImage]
  41. @="保存磁盘内容为镜像文件(&S)"
  42. [HKEY_LOCAL_MACHINE\pe-soft\Classes\Drive\shell\ImDiskSaveImage\command]
  43. @="rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %L"

  44. [HKEY_LOCAL_MACHINE\pe-soft\Classes\Drive\shell\ImDiskUnmount]
  45. @="卸载 ImDisk 虚拟盘(&U)"
  46. [HKEY_LOCAL_MACHINE\pe-soft\Classes\Drive\shell\ImDiskUnmount\command]
  47. @="rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %L"
复制代码

6、卸载 pe-sys、pe-soft,将修改后的 SETUPREG.HIV 和 SOFTWARE 复制回原处覆盖原文件。
7、imdisk 卸载 z:,更新 WINPE.IMG。
8、控制台运行:
  1. d:\app\makecab.exe /D compressiontype=lzx /D compressionmemory=21 WINPE.IMG
复制代码

9、将生成的 WINPE.IM_ 拿到虚拟机里测试,启动成功,imdisk 各项功能正常。

二、扩大 WXPE.IMG 可用空间
原 WINPE.IMG 大小为70.7MB,基本上填满了,再加入稍微大些的程序就会空间不够。于是动手给它扩成128MB。
控制台输入:
  1. r:
  2. imdisk -a -m z: -s 128M -p "/fs:fat32 /q /y /v:WXPE" -f r:\abc.img
  3. imdisk -a -m y: -o ro -f r:\WINPE.IMG
  4. xcopy y:\WXPE z:\WXPE /e/i/y
  5. imdisk -d -m z:
  6. imdisk -d -m y:
  7. ren winpe.img winpe.img.old
  8. ren abc.img WINPE.IMG
  9. del WINPE.IM_
  10. d:\app\makecab.exe /D compressiontype=lzx /D compressionmemory=21 WINPE.IMG
复制代码

现在已经得到了一个新的 WINPE.IM_,其内部可用空间有50多M,而且由于未用空间填充为0,压缩后大小和原来的基本一样。进虚拟机测试,启动成功。

虽然说这些东西并不新鲜,自己也是没有弄过,所以操练一下。顺便试验一下 imdisk 对标准 IMG 镜像的支持。感觉 imdisk 挂载处理标准 IMG 是很给力的。借此也给一个新贴的楼主提个醒。
作者: 月光海洋    时间: 2014-3-13 22:41
谢谢楼主分享技术…
作者: 2011npwjm    时间: 2014-3-14 08:33
谢谢楼主的分享
作者: 2013_top398    时间: 2014-3-14 10:59
还要提一下,Imdisk 本身建立的虚拟硬盘,默认是没有MBR的,但是手动保存(即在驱动器上右键保存镜像)时,是可以选择有无MBR的,如果有MBR,镜像前面附加32256字节的信息,也就是512字节*63扇区,传统硬盘一条磁道的容量,0扇区就是 MBR。这使得 imdisk 生成的 IMG 镜像兼容性更好。
作者: 2013_top398    时间: 2014-3-14 11:02
对于这种附加了MBR信息的IMG镜像,GUI方式(文件名上右键挂载)可以自动识别,但命令行必须这样:
  1. imdisk -a -m z: -b 63b -f abc.img
复制代码

-b 63b 指定镜像文件偏移为63个块(1块=512字节)
作者: renchmin    时间: 2014-3-14 15:48
楼主的这个方法还是蛮不错的值得分享啊。
作者: 86024363    时间: 2014-3-16 09:41
绝对是个好工具,谢楼主提醒。
作者: dlwfdlikuan    时间: 2014-3-18 07:35
好方法,值得一试,谢谢
作者: 3ax31a    时间: 2014-3-20 10:02
很好很强大很实用!谢谢楼主…
作者: 皓轩你好    时间: 2014-3-21 11:45
谢谢 分享 ,自己认真学习一下。
作者: 2010cmgb    时间: 2014-3-22 22:31
休息楼主分享,需要仔细学习一下。
作者: 2013_top398    时间: 2014-3-22 22:53
2010cmgb 发表于 2014-3-22 22:31
休息楼主分享,需要仔细学习一下。

谢谢,楼主确实是要“休息”一下了。
作者: 2010cmgb    时间: 2014-3-22 22:59
抱歉打错拉,是谢谢。
作者: xq8751    时间: 2015-10-23 12:22
谢谢楼主分享技术…




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