本帖最后由 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,导入以下注册表:
- Windows Registry Editor Version 5.00
- [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\Enum\Root\LEGACY_IMDISK\0000]
- "Service"="ImDisk"
- "Legacy"=dword:00000001
- "ConfigFlags"=dword:00000000
- "Class"="LegacyDriver"
- "ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
- "DeviceDesc"="ImDisk Virtual Disk Driver"
- "Capabilities"=dword:00000000
- [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\Enum\Root\LEGACY_IMDISK\0000\Control]
- "*NewlyCreated*"=dword:00000000
- "ActiveService"="ImDisk"
- [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\services\ImDisk]
- "Type"=dword:00000001
- "Start"=dword:00000003
- "ErrorControl"=dword:00000000
- "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,69,00,6d,00,64,00,69,00,73,00,6b,\
- 00,2e,00,73,00,79,00,73,00,00,00
- "DisplayName"="ImDisk Virtual Disk Driver"
- "Description"="Disk emulation driver"
- [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\services\ImDisk\Enum]
- "0"="Root\\LEGACY_IMDISK\\0000"
- "Count"=dword:00000001
- "NextInstance"=dword:00000001
- [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\services\ImDskSvc]
- "Type"=dword:00000010
- "Start"=dword:00000003
- "ErrorControl"=dword:00000000
- "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
- 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,\
- 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
- "DisplayName"="ImDisk Virtual Disk Driver Helper"
- "ObjectName"="LocalSystem"
- "Description"="Helper service for ImDisk Virtual Disk Driver."
- [HKEY_LOCAL_MACHINE\pe-soft\Classes\*\shell\ImDiskMountFile]
- @="加载为 ImDisk 虚拟盘(&M)"
- [HKEY_LOCAL_MACHINE\pe-soft\Classes\*\shell\ImDiskMountFile\command]
- @="rundll32.exe imdisk.cpl,RunDLL_MountFile %L"
- [HKEY_LOCAL_MACHINE\pe-soft\Classes\Drive\shell\ImDiskSaveImage]
- @="保存磁盘内容为镜像文件(&S)"
- [HKEY_LOCAL_MACHINE\pe-soft\Classes\Drive\shell\ImDiskSaveImage\command]
- @="rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %L"
- [HKEY_LOCAL_MACHINE\pe-soft\Classes\Drive\shell\ImDiskUnmount]
- @="卸载 ImDisk 虚拟盘(&U)"
- [HKEY_LOCAL_MACHINE\pe-soft\Classes\Drive\shell\ImDiskUnmount\command]
- @="rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %L"
复制代码
6、卸载 pe-sys、pe-soft,将修改后的 SETUPREG.HIV 和 SOFTWARE 复制回原处覆盖原文件。
7、imdisk 卸载 z:,更新 WINPE.IMG。
8、控制台运行:
- d:\app\makecab.exe /D compressiontype=lzx /D compressionmemory=21 WINPE.IMG
复制代码
9、将生成的 WINPE.IM_ 拿到虚拟机里测试,启动成功,imdisk 各项功能正常。
二、扩大 WXPE.IMG 可用空间
原 WINPE.IMG 大小为70.7MB,基本上填满了,再加入稍微大些的程序就会空间不够。于是动手给它扩成128MB。
控制台输入:
- r:
- imdisk -a -m z: -s 128M -p "/fs:fat32 /q /y /v:WXPE" -f r:\abc.img
- imdisk -a -m y: -o ro -f r:\WINPE.IMG
- xcopy y:\WXPE z:\WXPE /e/i/y
- imdisk -d -m z:
- imdisk -d -m y:
- ren winpe.img winpe.img.old
- ren abc.img WINPE.IMG
- del WINPE.IM_
- d:\app\makecab.exe /D compressiontype=lzx /D compressionmemory=21 WINPE.IMG
复制代码
现在已经得到了一个新的 WINPE.IM_,其内部可用空间有50多M,而且由于未用空间填充为0,压缩后大小和原来的基本一样。进虚拟机测试,启动成功。
虽然说这些东西并不新鲜,自己也是没有弄过,所以操练一下。顺便试验一下 imdisk 对标准 IMG 镜像的支持。感觉 imdisk 挂载处理标准 IMG 是很给力的。借此也给一个新贴的楼主提个醒。 |