无忧启动论坛

标题: 集成ImDisk到PE系统 [打印本页]

作者: mwfjicon    时间: 2023-9-12 10:55
标题: 集成ImDisk到PE系统
本帖最后由 mwfjicon 于 2023-9-27 20:08 编辑

首先感谢freesoft00,感谢wych12提供的ImDisk Virtual Disk Driver v2.1.1汉化版
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=427692
感谢Bluebells的指导,大师的写法更加简洁,就把我做的安装法inf内容再次精简下

坛子里很多PE都是内置工具包,很多人无法自己更新工具包,本人喜欢PE核心系统独立(毕竟基本不用更新),集成使用ImDisk或者Ramdisk,产生虚拟盘,工具包另外独立,系统加载工具包到虚拟盘,工具包更新不用动PE核心系统
现在使用inf安装法,在Win11 x64位 PE 系统成功使用ImDisk产生虚拟盘

方法如下:
1、在PE系统上安装ImDisk Virtual Disk Driver v2.1.1汉化版(目的是安装会自动选择对应系统的驱动);
2、在PE系统路径X:\Windows\System32\下提取“imdisk.cpl 和 imdisk.exe”,在路径X:\Windows\System32\drivers\下提取“awealloc.sys 和 imdisk.sys”
3、在安装包里提取“imdisk.inf”,保留以下内容:
------------------------------------------------------------------------------------------------------------------
[Version]
signature = "$Windows NT$"
Provider = "LTR Data"

[DefaultInstall.ntamd64]
AddReg =

[DefaultInstall.ntamd64.Services]
AddService = AWEAlloc, , AWEAllocDrv
AddService = ImDisk, , ImDskDrv

[ImDskDrv]
DisplayName = "ImDisk Virtual Disk Driver"
Description = "Disk emulation driver"
ServiceType = 1
StartType = 2
ErrorControl = 0
ServiceBinary = %12%\imdisk.sys

[AWEAllocDrv]
DisplayName = "AWE Memory Allocation Driver"
Description = "Driver for physical memory allocation through AWE"
ServiceType = 1
StartType = 2
ErrorControl = 0
ServiceBinary = %12%\awealloc.sys
------------------------------------------------------------------------------------------------------------------


以上所需文件准备完成,然后使用WimKitx解开PE系统核心包boot.wim

1、复制准备好的“imdisk.cpl 和 imdisk.exe”和修改好的“imdisk.inf”,粘贴到boot\Windows\System32\下,
     复制准备好的“awealloc.sys  和 imdisk.sys”,粘贴到boot\Windows\System32\drivers\下
2、方案1:在“pemd.ini”里添加
------------------------------------------------------------------------------------------------------------------
;PE系统启动加载安装ImDisk
"%SystemRoot%\system32\rundll32.exe" setupapi.dll,InstallHinfSection DefaultInstall 132 .\imdisk.inf”

WAIT 1000
;创建Y盘,盘名称为ImDisk,容量为1024兆,磁盘格式为NTFS的虚拟盘
RAMD ImDisk,L1024,NTFS,Y:,ImDisk
------------------------------------------------------------------------------------------------------------------
2、方案2(不需要imdisk.inf,其它4个文件需要):在“pemd.ini”里添加
------------------------------------------------------------------------------------------------------------------
//创建并启动ImDisk服务项
SERV-Create ImDisk,System32\drivers\imdisk.sys,1,2,0,,,,ImDisk Virtual Disk Driver
SERV ImDisk
IFEX %SystemRoot%\System32\drivers\awealloc.sys,{
    SERV-Create AWEAlloc,System32\drivers\awealloc.sys,1,2,0,,,,AWE Memory Allocation Driver
    SERV AWEAlloc
}

WAIT 1000
//创建RAMDisk虚拟盘, 盘符为Y, 卷标为ImDisk, 容量为1024M, 格式为NTFS
RAMD ImDisk,L1024,NTFS,Y:,ImDisk

------------------------------------------------------------------------------------------------------------------

3、使用WimKitx重新打包boot文件夹所有文件为boot.wim,注意,一定要勾选集成系统启动标记


不懂提取操作的,我已打包好所有文件
注意:(1)这只是Windows PE系统文件和驱动,其它系统按以上方法提取
          (2)Win10及以下PE系统在可在“pemd.ini”用以语句下安装ImDisk虚拟磁盘
                   DEVI $%SystemRoot%\system32\ImDisk.inf
          但Win11x64PE系统却不行,只能用以下语句才能成功
                 "%SystemRoot%\system32\rundll32.exe" setupapi.dll,InstallHinfSection DefaultInstall 132 .\imdisk.inf”


下载地址:https://www.123pan.com/s/5beA-VysKA.html
提取码:pdAd





作者: Bluebells    时间: 2023-9-12 13:02
本帖最后由 Bluebells 于 2024-1-3 20:27 编辑

不用这么复杂, 将相关文件放在一个文件夹, 再写个脚本文件, 让 PECMD 加载就可以

文件列表:
awealloc.sys
imdisk.cpl
imdisk.exe
imdisk.sys

脚本文件内容:
  1. ENVI &WS=%SystemRoot%\System32
  2. SERV-delete AWEAlloc
  3. SERV-delete ImDisk
  4. FILE %&CurDir%\imdisk.cpl=>%&WS%\
  5. FILE %&CurDir%\imdisk.exe=>%&WS%\
  6. FILE %&CurDir%\awealloc.sys=>%&WS%\drivers\
  7. FILE %&CurDir%\imdisk.sys=>%&WS%\drivers\
  8. SERV-Create ImDisk,System32\drivers\imdisk.sys,1,2,0,,,,ImDisk Virtual Disk Driver
  9. SERV-Create AWEAlloc,System32\drivers\awealloc.sys,1,2,0,,,,AWE Memory Allocation Driver
  10. SERV ImDisk
  11. SERV AWEAlloc
复制代码
我再上传一个打包好的 imdisk, 使用方法参考 Readme.txt 文件
ImDisk.7z (163.63 KB, 下载次数: 156)


作者: 狼人72105    时间: 2023-9-12 14:32
你这个只是在PE下创建了imdisk虚拟磁盘,却没有说如何将外置工具加载到虚拟磁盘?
作者: mwfjicon    时间: 2023-9-12 19:50
Bluebells 发表于 2023-9-12 13:02
不用这么复杂, 将相关文件放在一个文件夹, 再写个脚本文件, 让 PECMD 加载就可以

文件列表:

我是外行,这是很多次实验得出来的,感谢你的分享,后面试试
作者: mwfjicon    时间: 2023-9-12 19:51
狼人72105 发表于 2023-9-12 14:32
你这个只是在PE下创建了imdisk虚拟磁盘,却没有说如何将外置工具加载到虚拟磁盘?

有,仔细看内容,在pecmd.ini加载的内容部分
作者: onlychinese    时间: 2023-9-12 20:25
感谢分享!
作者: yc2428    时间: 2023-9-12 20:28

感谢分享!
作者: onlychinese    时间: 2023-9-12 20:28
感谢分享!
作者: mwfjicon    时间: 2023-9-13 10:02
Bluebells 发表于 2023-9-12 13:02
不用这么复杂, 将相关文件放在一个文件夹, 再写个脚本文件, 让 PECMD 加载就可以

文件列表:

已测试,果然厉害,如果提前将所需文件复制进去,比如封包到PE核心,其脚本只用两行,imdsksvc.exe相关的语句无用,也可以删除,更加简洁,感谢指点
作者: skywalkerl    时间: 2023-9-14 12:42
感谢lz分享~
作者: huang1987    时间: 2023-9-14 14:02
谢谢分享
作者: dayeye    时间: 2023-9-14 15:48
路过。学习了
作者: nathan6498    时间: 2023-9-14 16:06
谢谢分享
作者: 无犹启动    时间: 2023-10-27 13:21
谢谢分享
作者: qjldw    时间: 2023-10-27 13:43
问题是没必要把工具文件夹打包啊。直接放目录,然后用启动器进行分类。
作者: 青青草    时间: 2023-12-14 19:10
Bluebells 发表于 2023-9-12 13:02
不用这么复杂, 将相关文件放在一个文件夹, 再写个脚本文件, 让 PECMD 加载就可以

文件列表:

创建imdisk虚拟磁盘后,如何让imdisk虚拟磁盘与ISO文件关联?
比如,双击ISO文件,直接装载到imdisk虚拟磁盘,
或者,右键ISO文件,菜单装载,直接装载到imdisk虚拟磁盘?
作者: Bluebells    时间: 2023-12-14 19:24
青青草 发表于 2023-12-14 19:10
创建imdisk虚拟磁盘后,如何让imdisk虚拟磁盘与ISO文件关联?
比如,双击ISO文件,直接装载到imdisk虚拟 ...

自己按需添加吧
  1. //添加"挂载为 ImDisk 虚拟磁盘"右键上下文菜单
  2. REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\ImDiskMountFile\\=挂载为 ImDisk 虚拟磁盘
  3. REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\ImDiskMountFile\command\\=rundll32.exe imdisk.cpl,RunDLL_MountFile %%L
  4. //添加"卸载 ImDisk 虚拟磁盘"右键上下文菜单
  5. REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\ImDiskUnmount\\=卸载 ImDisk 虚拟磁盘
  6. REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\ImDiskUnmount\command\\=rundll32.exe imdisk.cpl,RunDLL_RemoveDevice %%L
  7. //添加"保存磁盘内容为映像文件"右键上下文菜单
  8. REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\ImDiskSaveImage\\=保存磁盘内容为映像文件
  9. REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\ImDiskSaveImage\command\\=rundll32.exe imdisk.cpl,RunDLL_SaveImageFile %%L
复制代码





作者: 青青草    时间: 2023-12-15 07:35
Bluebells 发表于 2023-12-14 19:24
自己按需添加吧

谢谢!
作者: luochcd    时间: 2023-12-16 19:03
本帖最后由 luochcd 于 2023-12-17 15:47 编辑

直接集成到 *.wim 中:
1、将 awealloc.sys、imdisk.sys 放到 Windows\System32\drivers 中;
2、将 imdisk.cpl、imdisk.exe、imdsksvc.exe 放到 Windows\System32 中;
3、将以下文本生成一个注册表文件,并离线导入到 SOFTWARE 和 SYSTEM 注册表配置单元中;
4、重新打包可。

附:文本
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\_SYSTEM\ControlSet001\Services\ImDisk]
"Type"=dword:00000001
"Start"=dword:00000002
"ErrorControl"=dword:00000000
"ImagePath"=hex(2):5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  74,00,5c,00,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\_SYSTEM\ControlSet001\Services\ImDskSvc]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000000
"ImagePath"=hex(2):58,00,3a,00,5c,00,77,00,69,00,6e,00,64,00,6f,00,77,00,73,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\_SYSTEM\ControlSet001\Services\AWEAlloc]
"Type"=dword:00000001
"Start"=dword:00000002
"ErrorControl"=dword:00000000
"ImagePath"=hex(2):5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  74,00,5c,00,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,61,00,77,00,65,00,61,00,6c,00,6c,00,\
  6f,00,63,00,2e,00,73,00,79,00,73,00,00,00
"DisplayName"="AWE Memory Allocation Driver"
"Description"="Driver for physical memory allocation through AWE"

[HKEY_LOCAL_MACHINE\_SOFTWARE\Classes\*\shell\ImDiskMountFile]
@="装载到 ImDisk 虚拟磁盘"
"Icon"="ImDisk.cpl,0"

[HKEY_LOCAL_MACHINE\_SOFTWARE\Classes\*\shell\ImDiskMountFile\command]
@="rundll32.exe imdisk.cpl,RunDLL_MountFile %L"

[HKEY_LOCAL_MACHINE\_SOFTWARE\Classes\AppID\{5364ED0E-493F-4B16-9DBF-AE486CF22660}]
@="Virtual Disk Service Loader"

[HKEY_LOCAL_MACHINE\_SOFTWARE\Classes\CLSID\{9C38ED61-D565-4728-AEEE-C80952F0ECDE}]
@="Virtual Disk Service Loader"
"AppID"="{5364ED0E-493F-4B16-9DBF-AE486CF22660}"

[HKEY_LOCAL_MACHINE\_SOFTWARE\Classes\CLSID\{9C38ED61-D565-4728-AEEE-C80952F0ECDE}\LocalServer32]
@=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,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,76,00,64,00,\
  73,00,6c,00,64,00,72,00,2e,00,65,00,78,00,65,00,00,00


作者: 青青草    时间: 2024-1-3 17:06
本帖最后由 青青草 于 2024-1-3 17:16 编辑
Bluebells 发表于 2023-12-14 19:24
自己按需添加吧

再请教下:
      //创建使用物理内存的 RAMDisk 磁盘, 其卷标为 ImDisk, 容量为 4096M, 文件系统为 NTFS
WAIT 1000
RAMD ImDisk,L4096,NTFS,%&RAMDrv%,ImDisk,,1
//将 RAMDisk 的驱动器号设置为系统环境变量
ENVI * CurRamDisk=%&RAMDrv% //或使用 ENVI * CurRamDisk=%CurRamDisk%
在1.wcs中调用
"\petools\X64\7-Zip\7z.exe" x "\petools\X64\Chrome.7z" -y -aos -o"%ProgramFiles%\"   
这样可以。
"\petools\X64\7-Zip\7z.exe" x "\petools\X64\Chrome.7z" -y -aos -o"%&RAMDrv%\"  
似乎不起作用。
应如何书写?
谢谢!


作者: Bluebells    时间: 2024-1-3 18:28
青青草 发表于 2024-1-3 17:06
再请教下:
      //创建使用物理内存的 RAMDisk 磁盘, 其卷标为 ImDisk, 容量为 4096M, 文件系统为 NTF ...

变量用错了,用 %CurRamDisk%
作者: 青青草    时间: 2024-1-3 19:10
Bluebells 发表于 2024-1-3 18:28
变量用错了,用 %CurRamDisk%

试过了,不行。唉
作者: Bluebells    时间: 2024-1-3 20:28
青青草 发表于 2024-1-3 19:10
试过了,不行。唉

之前的设置环境变量语句有误, 更改为以下
ENVI $#CurRamDisk=%&RAMDrv% //或使用 ENVI #$CurRamDisk=%CurRamDisk%
作者: 青青草    时间: 2024-1-3 21:10
Bluebells 发表于 2024-1-3 20:28
之前的设置环境变量语句有误, 更改为以下
ENVI $#CurRamDisk=%&RAMDrv% //或使用 ENVI #$CurRamDisk=%Cu ...

  //创建使用物理内存的 RAMDisk 磁盘, 其卷标为 ImDisk, 容量为 4096M, 文件系统为 NTFS
WAIT 1000
RAMD ImDisk,L4096,NTFS,%&RAMDrv%,ImDisk,,1
//将 RAMDisk 的驱动器号设置为系统环境变量
ENVI * CurRamDisk=%&RAMDrv% //或使用 ENVI * CurRamDisk=%CurRamDisk%
"\petools\X64\7-Zip\7z.exe" x "\petools\X64\Chrome.7z" -y -aos -o"%CurRamDisk%\"  
以上可行。
在1.wcs中调用
"\petools\X64\7-Zip\7z.exe" x "\petools\X64\Chrome.7z" -y -aos -o"%CurRamDisk%\"  
则不行。
新写法,两种都不行。

作者: lotus136    时间: 2024-1-3 21:29
感谢分享
作者: 香国妙手    时间: 2024-1-3 21:44
给力给力
作者: Bluebells    时间: 2024-1-3 22:00
本帖最后由 Bluebells 于 2024-1-3 22:09 编辑
青青草 发表于 2024-1-3 21:10
//创建使用物理内存的 RAMDisk 磁盘, 其卷标为 ImDisk, 容量为 4096M, 文件系统为 NTFS
WAIT 1000
RA ...

在新脚本文件(如你的 1.wcs)中, 使用 %CurRamDisk% 变量语句的上一行添加以下语句(或将下面的语句添加在首行):
ENVI^ LoadEnvi
作者: zyy    时间: 2024-1-3 22:03
谢谢分享,学习
作者: 青青草    时间: 2024-1-3 22:14
Bluebells 发表于 2024-1-3 22:00
在新脚本文件(如你的 1.wcs)中, 使用 %CurRamDisk% 变量语句的上一行添加以下语句(或将下面的语句添加在 ...

ENVI #$CurRamDisk=%CurRamDisk%都可以了!
谢谢!
作者: Lexos    时间: 2024-1-3 22:29
感谢分享和制作!跟学中、进步中。
作者: windylzs    时间: 2024-2-23 23:54
Bluebells 发表于 2023-12-14 19:24
自己按需添加吧

大佬,怎么添加右键上下文菜单图标啊?
作者: crt1024x768    时间: 2024-3-10 04:37
学习一下应该会有用到的时候
作者: hehuiying    时间: 2024-3-16 04:25
谢谢分享
作者: crt1024x768    时间: 2024-3-16 16:41
感谢分享了 看看
作者: hehuiying    时间: 2024-3-31 23:40
谢谢分享
作者: NYG    时间: 2024-8-7 10:44
mwfjicon 发表于 2023-9-12 19:51
有,仔细看内容,在pecmd.ini加载的内容部分

感谢分享




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