无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 2871|回复: 37
打印 上一主题 下一主题

[教程] 集成ImDisk到PE系统

    [复制链接]
跳转到指定楼层
1#
发表于 2023-9-12 10:55:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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




2#
发表于 2023-9-12 13:02:42 | 只看该作者
本帖最后由 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, 下载次数: 125)

点评

创建imdisk虚拟磁盘后,如何让imdisk虚拟磁盘与ISO文件关联? 比如,双击ISO文件,直接装载到imdisk虚拟磁盘, 或者,右键ISO文件,菜单装载,直接装载到imdisk虚拟磁盘?  详情 回复 发表于 2023-12-14 19:10
已测试,果然厉害,如果提前将所需文件复制进去,比如封包到PE核心,其脚本只用两行,imdsksvc.exe相关的语句无用,也可以删除,更加简洁,感谢指点  详情 回复 发表于 2023-9-13 10:02
我是外行,这是很多次实验得出来的,感谢你的分享,后面试试  详情 回复 发表于 2023-9-12 19:50
回复

使用道具 举报

3#
发表于 2023-9-12 14:32:22 来自手机 | 只看该作者
你这个只是在PE下创建了imdisk虚拟磁盘,却没有说如何将外置工具加载到虚拟磁盘?

点评

有,仔细看内容,在pecmd.ini加载的内容部分  详情 回复 发表于 2023-9-12 19:51
回复

使用道具 举报

4#
 楼主| 发表于 2023-9-12 19:50:29 来自手机 | 只看该作者
Bluebells 发表于 2023-9-12 13:02
不用这么复杂, 将相关文件放在一个文件夹, 再写个脚本文件, 让 PECMD 加载就可以

文件列表:

我是外行,这是很多次实验得出来的,感谢你的分享,后面试试
回复

使用道具 举报

5#
 楼主| 发表于 2023-9-12 19:51:20 来自手机 | 只看该作者
狼人72105 发表于 2023-9-12 14:32
你这个只是在PE下创建了imdisk虚拟磁盘,却没有说如何将外置工具加载到虚拟磁盘?

有,仔细看内容,在pecmd.ini加载的内容部分
回复

使用道具 举报

6#
发表于 2023-9-12 20:25:01 | 只看该作者
感谢分享!
回复

使用道具 举报

7#
发表于 2023-9-12 20:28:22 | 只看该作者

感谢分享!
回复

使用道具 举报

8#
发表于 2023-9-12 20:28:39 | 只看该作者
感谢分享!
回复

使用道具 举报

9#
 楼主| 发表于 2023-9-13 10:02:09 | 只看该作者
Bluebells 发表于 2023-9-12 13:02
不用这么复杂, 将相关文件放在一个文件夹, 再写个脚本文件, 让 PECMD 加载就可以

文件列表:

已测试,果然厉害,如果提前将所需文件复制进去,比如封包到PE核心,其脚本只用两行,imdsksvc.exe相关的语句无用,也可以删除,更加简洁,感谢指点
回复

使用道具 举报

10#
发表于 2023-9-14 12:42:53 来自手机 | 只看该作者
感谢lz分享~
回复

使用道具 举报

11#
发表于 2023-9-14 14:02:05 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
发表于 2023-9-14 15:48:03 | 只看该作者
路过。学习了
回复

使用道具 举报

13#
发表于 2023-9-14 16:06:33 | 只看该作者
谢谢分享
回复

使用道具 举报

14#
发表于 2023-10-27 13:21:03 | 只看该作者
谢谢分享
回复

使用道具 举报

15#
发表于 2023-10-27 13:43:08 来自手机 | 只看该作者
问题是没必要把工具文件夹打包啊。直接放目录,然后用启动器进行分类。
回复

使用道具 举报

16#
发表于 2023-12-14 19:10:19 | 只看该作者
Bluebells 发表于 2023-9-12 13:02
不用这么复杂, 将相关文件放在一个文件夹, 再写个脚本文件, 让 PECMD 加载就可以

文件列表:

创建imdisk虚拟磁盘后,如何让imdisk虚拟磁盘与ISO文件关联?
比如,双击ISO文件,直接装载到imdisk虚拟磁盘,
或者,右键ISO文件,菜单装载,直接装载到imdisk虚拟磁盘?

点评

自己按需添加吧  详情 回复 发表于 2023-12-14 19:24
回复

使用道具 举报

17#
发表于 2023-12-14 19:24:23 | 只看该作者
青青草 发表于 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
复制代码




点评

再请教下: //创建使用物理内存的 RAMDisk 磁盘, 其卷标为 ImDisk, 容量为 4096M, 文件系统为 NTFS WAIT 1000 RAMD ImDisk,L4096,NTFS,%&RAMDrv%,ImDisk,,1 //将 RAMDisk 的驱动器号设置为系统环境变量 E  详情 回复 发表于 2024-1-3 17:06
谢谢!  详情 回复 发表于 2023-12-15 07:35
回复

使用道具 举报

18#
发表于 2023-12-15 07:35:30 | 只看该作者

谢谢!
回复

使用道具 举报

19#
发表于 2023-12-16 19:03:54 | 只看该作者
本帖最后由 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

回复

使用道具 举报

20#
发表于 2024-1-3 17:06:47 | 只看该作者
本帖最后由 青青草 于 2024-1-3 17:16 编辑

再请教下:
      //创建使用物理内存的 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%\"  
似乎不起作用。
应如何书写?
谢谢!

点评

变量用错了,用 %CurRamDisk%  详情 回复 发表于 2024-1-3 18:28
回复

使用道具 举报

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

变量用错了,用 %CurRamDisk%

点评

试过了,不行。唉  详情 回复 发表于 2024-1-3 19:10
回复

使用道具 举报

22#
发表于 2024-1-3 19:10:54 | 只看该作者
Bluebells 发表于 2024-1-3 18:28
变量用错了,用 %CurRamDisk%

试过了,不行。唉

点评

之前的设置环境变量语句有误, 更改为以下 ENVI $#CurRamDisk=%&RAMDrv% //或使用 ENVI #$CurRamDisk=%CurRamDisk%  详情 回复 发表于 2024-1-3 20:28
回复

使用道具 举报

23#
发表于 2024-1-3 20:28:58 | 只看该作者
青青草 发表于 2024-1-3 19:10
试过了,不行。唉

之前的设置环境变量语句有误, 更改为以下
ENVI $#CurRamDisk=%&RAMDrv% //或使用 ENVI #$CurRamDisk=%CurRamDisk%

点评

//创建使用物理内存的 RAMDisk 磁盘, 其卷标为 ImDisk, 容量为 4096M, 文件系统为 NTFS WAIT 1000 RAMD ImDisk,L4096,NTFS,%&RAMDrv%,ImDisk,,1 //将 RAMDisk 的驱动器号设置为系统环境变量 ENVI * CurRamDisk  详情 回复 发表于 2024-1-3 21:10
回复

使用道具 举报

24#
发表于 2024-1-3 21:10:39 | 只看该作者
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%\"  
则不行。
新写法,两种都不行。

点评

在 ENVI $#CurRamDisk=%&RAMDrv% 语句的下一行添加以下语句: ENVI^ LoadEnvi  详情 回复 发表于 2024-1-3 22:00
回复

使用道具 举报

25#
发表于 2024-1-3 21:29:18 | 只看该作者
感谢分享
回复

使用道具 举报

26#
发表于 2024-1-3 21:44:01 | 只看该作者
给力给力
回复

使用道具 举报

27#
发表于 2024-1-3 22:00:42 | 只看该作者
本帖最后由 Bluebells 于 2024-1-3 22:09 编辑
青青草 发表于 2024-1-3 21:10
//创建使用物理内存的 RAMDisk 磁盘, 其卷标为 ImDisk, 容量为 4096M, 文件系统为 NTFS
WAIT 1000
RA ...

在新脚本文件(如你的 1.wcs)中, 使用 %CurRamDisk% 变量语句的上一行添加以下语句(或将下面的语句添加在首行):
ENVI^ LoadEnvi

点评

用ENVI #$CurRamDisk=%CurRamDisk%都可以了! 谢谢!  详情 回复 发表于 2024-1-3 22:14
回复

使用道具 举报

28#
发表于 2024-1-3 22:03:24 | 只看该作者
谢谢分享,学习
回复

使用道具 举报

29#
发表于 2024-1-3 22:14:49 | 只看该作者
Bluebells 发表于 2024-1-3 22:00
在新脚本文件(如你的 1.wcs)中, 使用 %CurRamDisk% 变量语句的上一行添加以下语句(或将下面的语句添加在 ...

ENVI #$CurRamDisk=%CurRamDisk%都可以了!
谢谢!
回复

使用道具 举报

30#
发表于 2024-1-3 22:29:25 | 只看该作者
感谢分享和制作!跟学中、进步中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-2 17:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表