无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 19015|回复: 23

[原创] 再发一贴!关于微软Ramdisk的正确用法!

    [复制链接]
发表于 2016-3-24 00:17:58 | 显示全部楼层 |阅读模式
所有的帖子都是没有理解Ramdisk的原理:
首先,要ntldr或者bootmgr把文件加载到内存,Ramdisk.sys才会起作用,
它会自动安装”Windows RAM 磁盘控制器“和”Windows RAM 磁盘设备(卷)“,
所以大家都误解了ramdisk.sys,不用手工安装。否则,只会出现重复的设备,运气好能进入看见**警告的冲突设备,严重的造成冲突蓝屏dump!

正确的做法:
1. 做img文件,或者其他vhd,wim格式文件,只要你复制ramdisk.sys到\windows\system32\drivers目录,然后加载\windows\sysem32\config\system到hklm\0,
把[HKEY_LOCAL_MACHINE\0\MountedDevices]下"\\DosDevices\\C:",修改成其他盘符,如U:盘,接着合并ramdisk.reg文件,注册服务即可,ramdisk.reg文件内容贴在最后。

2. 配置boot.ini或者bcd文件,启动img文件,windows系统自动发现两个新硬件,安装好,告诉你重启。
这个时候,你用的是内存,重启新设备配置的内容就没有了,所以要保存新状态,保存之前要修改system,因为ramdisk.inf会把新设备设置成手工启动。
合并ramdisk_autostart.reg文件到注册表,cmd命令:reg save HKLM\SYSTEM u:\system,导出新的system,

3.新的system文件覆盖老的img/vhd文件里面的system,制作结束!

;;;;;;;;;;;;;;;;;;;;
;;ramdisk.reg 内容
;;;;;;;;;;;;;;;;;;;;
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\0\MountedDevices]
"\\DosDevices\\C:"=hex:fc,57,b2,d9,4e,68,cb,4d,ab,79,03,cf,a2,f6,b7,50

[HKEY_LOCAL_MACHINE\0\ControlSet001\Control\Class\{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}]
"Class"="Ramdisk"
"ClassDesc"="@ramdisk.inf,%ClassName%;Ramdisk"
@="Ramdisk"
"IconPath"=hex(7):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,73,\
  00,65,00,74,00,75,00,70,00,61,00,70,00,69,00,2e,00,64,00,6c,00,6c,00,2c,00,\
  2d,00,33,00,32,00,00,00,00,00

[HKEY_LOCAL_MACHINE\0\ControlSet001\services\Ramdisk]
"DisplayName"="Windows RAM Disk Driver"
"ErrorControl"=dword:00000001
"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,72,00,61,00,6d,00,64,00,69,00,73,\
  00,6b,00,2e,00,73,00,79,00,73,00,00,00
"Start"=dword:00000000
"Type"=dword:00000001

[HKEY_LOCAL_MACHINE\0\ControlSet001\services\Ramdisk\Debug]
"DebugLevel"=dword:00000005
"DebugComponents"=dword:7fffffff

;;;;;;;;;;;;;;;;;;;;
;;ramdisk_autostart.reg 内容
;;;;;;;;;;;;;;;;;;;;
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Ramdisk]
"Start"=dword:00000000

评分

参与人数 7无忧币 +31 收起 理由
蓝星明月 + 5 赞一个!
maomihuacha + 1
2010hook + 5
anarki2001 + 5 很给力!
ldz123ldz + 5 赞一个!
freesoft00 + 5
20090101 + 5 赞一个!

查看全部评分

 楼主| 发表于 2016-4-3 22:09:08 | 显示全部楼层
2012shm 发表于 2016-4-3 09:23
是否win7的ramdisk.sys,x86、x64通用?还有楼主的方法7、8、10、xp、2008通用?

32位和64位的驱动是肯定不能通用的,2k/XP/03/Vista/Win7/8/10的方法都是一样的!
不过因为Win8/10没有合适的32位精简版,所以没有试验过.

没有合适的精简版,可以提供一个做RamOS的思路:
做成WimBoot架构,引导文件放在img/vhd文件包里面,用Bootmgr加载到内存,WimBoot文件放在Primo的智能镜像文件包里面,最后结果是两个内存盘!

点评

懂了,谢谢啊  详情 回复 发表于 2016-4-4 19:56
回复

使用道具 举报

发表于 2016-3-24 00:54:30 | 显示全部楼层
前排支持,感谢分享
回复

使用道具 举报

发表于 2016-3-24 10:23:45 | 显示全部楼层
回头我也试试你的方法哈。
回复

使用道具 举报

发表于 2016-3-24 10:49:18 | 显示全部楼层
能在详细一点就好了,我看得不是很明了。

点评

他说的是不用手工安装旧设备RAMDISK,而用直接复制RAMDISK和修改注册表的方式将RMADISK弄进系统,减少蓝屏的几率  详情 回复 发表于 2016-3-24 10:55
回复

使用道具 举报

发表于 2016-3-24 10:55:16 | 显示全部楼层
20090101 发表于 2016-3-24 10:49
能在详细一点就好了,我看得不是很明了。

他说的是不用手工安装旧设备RAMDISK,而用直接复制RAMDISK和修改注册表的方式将RMADISK弄进系统,减少蓝屏的几率
回复

使用道具 举报

发表于 2016-3-24 10:57:00 | 显示全部楼层
对微软的Ramdisk不了解。
请问能做内存盘吗?

点评

这个就是做RamOS启动的  详情 回复 发表于 2016-3-24 15:32
回复

使用道具 举报

发表于 2016-3-24 11:14:50 | 显示全部楼层
受教了
回复

使用道具 举报

 楼主| 发表于 2016-3-24 14:14:05 | 显示全部楼层
32位ramdisk.sys 能做最大988m的img文件,64位没有试过
回复

使用道具 举报

 楼主| 发表于 2016-3-24 15:29:10 | 显示全部楼层
img文件有两种格式,一种没有MBR(分区镜像),一种带MBR的(一般是63个扇区),vhd有mbr(一般是128个扇区)所以Win7调用方法:
1.新建ramdiskoption,不要用系统默认的,删除SdiDevice,SdiPath;
2.新建参数RamdiskImageOffset,这个数字表示硬盘镜像文件有效数据从哪里开始读取;
   img文件没有mbr: 0*512=0 , img文件有mbr: 63*512=32256, vhd文件有mbr: 128*512=65536
3.新建wim启动项,设置ApplicationDevice和OSDevice参数里面的Ramdisk参数对应你新建的ramdiskoption项目guid
下面贴图,给不会设置的人参考:
img-options-nombr.png
img-options-63mbr.png
vhd-options.png
boot-img.png
boot-vhd.png
回复

使用道具 举报

 楼主| 发表于 2016-3-24 15:32:41 | 显示全部楼层
liumailong 发表于 2016-3-24 10:57
对微软的Ramdisk不了解。
请问能做内存盘吗?

这个就是做RamOS启动的
回复

使用道具 举报

发表于 2016-3-24 18:41:18 来自手机 | 显示全部楼层
不错,支持下
回复

使用道具 举报

发表于 2016-3-25 07:46:45 | 显示全部楼层
受益匪浅,可以试试,回头请教
回复

使用道具 举报

发表于 2016-4-3 09:23:55 | 显示全部楼层
是否win7的ramdisk.sys,x86、x64通用?还有楼主的方法7、8、10、xp、2008通用?

点评

32位和64位的驱动是肯定不能通用的,2k/XP/03/Vista/Win7/8/10的方法都是一样的! 不过因为Win8/10没有合适的32位精简版,所以没有试验过. 没有合适的精简版,可以提供一个做RamOS的思路: 做成WimBoot架构,引导文件  详情 回复 发表于 2016-4-3 22:09
回复

使用道具 举报

发表于 2016-4-4 19:56:03 | 显示全部楼层
hzican 发表于 2016-4-3 22:09
32位和64位的驱动是肯定不能通用的,2k/XP/03/Vista/Win7/8/10的方法都是一样的!
不过因为Win8/10没有合 ...

懂了,谢谢啊
回复

使用道具 举报

发表于 2017-7-7 09:54:38 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2017-7-8 09:27:28 来自手机 | 显示全部楼层
大哥 能做个批处理给我们直接用吗
回复

使用道具 举报

发表于 2017-7-18 13:58:41 | 显示全部楼层
我的Ramdisk 只是用来放浏览器的缓存
回复

使用道具 举报

发表于 2017-7-24 21:54:19 | 显示全部楼层
谢谢分享!看来这是在PE上用的。
回复

使用道具 举报

发表于 2018-1-16 19:14:11 | 显示全部楼层
win10 16299后 没了INF,只能用注册表方式安装Ramdisk,可离线导入
——出处坏坏小生

帖子改一下就可以了


  1. ;;;;;;;;;;;;;;;;;;;;
  2. ;;ramdisk.reg 内容
  3. ;;;;;;;;;;;;;;;;;;;;
  4. Windows Registry Editor Version 5.00

  5. [HKEY_LOCAL_MACHINE\sys\MountedDevices]
  6. "\\DosDevices\\C:"=hex:fc,57,b2,d9,4e,68,cb,4d,ab,79,03,cf,a2,f6,b7,50

  7. [HKEY_LOCAL_MACHINE\sys\ControlSet001\Control\Class\{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}]
  8. "Class"="Ramdisk"
  9. "ClassDesc"="@ramdisk.inf,%ClassName%;Ramdisk"
  10. @="Ramdisk"
  11. "IconPath"=hex(7):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  12. 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
  13. 00,65,00,74,00,75,00,70,00,61,00,70,00,69,00,2e,00,64,00,6c,00,6c,00,2c,00,\
  14. 2d,00,33,00,32,00,00,00,00,00

  15. [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\Ramdisk]
  16. "DisplayName"="Windows RAM Disk Driver"
  17. "ErrorControl"=dword:00000001
  18. "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  19. 52,00,49,00,56,00,45,00,52,00,53,00,5c,00,72,00,61,00,6d,00,64,00,69,00,73,\
  20. 00,6b,00,2e,00,73,00,79,00,73,00,00,00
  21. "Start"=dword:00000000
  22. "Type"=dword:00000001

  23. [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\Ramdisk\Debug]
  24. "DebugLevel"=dword:00000005
  25. "DebugComponents"=dword:7fffffff

  26. [HKEY_LOCAL_MACHINE\sys\ControlSet001\Services\Ramdisk\StartOverride]
  27. "0"=dword:00000000

  28. [HKEY_LOCAL_MACHINE\sys\ControlSet001\Services\Ramdisk\Enum]
  29. "Count"=dword:00000001
  30. "NextInstance"=dword:00000001
  31. "0"="ROOT\\RAMDISK\\0000"

  32. [HKEY_LOCAL_MACHINE\sys\ControlSet001\Enum\ROOT\RAMDISK\0000]
  33. "ClassGUID"="{9d6d66a6-0b0c-4563-9077-a0e9a7955ae4}"
  34. "Capabilities"=dword:00000000
  35. "Driver"="{9d6d66a6-0b0c-4563-9077-a0e9a7955ae4}\\0000"
  36. "Mfg"="Microsoft"
  37. "Service"="Ramdisk"
  38. "DeviceDesc"="Windows RAM 磁盘控制器"
  39. "ConfigFlags"=dword:00000000
  40. "ContainerID"="{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"

  41. [HKEY_LOCAL_MACHINE\sys\ControlSet001\Control\Class\{9d6d66a6-0b0c-4563-9077-a0e9a7955ae4}\0000]
  42. "InfSection"="BusInstall"
  43. "InfSectionExt"=".NT"
  44. "ProviderName"="Microsoft"
  45. "MatchingDeviceId"="ramdisk"
  46. "DriverDesc"="Windows RAM 磁盘控制器""

  47. [HKEY_LOCAL_MACHINE\sys\ControlSet001\Control\Class\{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}\Properties]

  48. ;;;;;;;;;;;;;;;;;;;;
  49. ;;ramdisk_autostart.reg 内容
  50. ;;;;;;;;;;;;;;;;;;;;
  51. Windows Registry Editor Version 5.00

  52. [HKEY_LOCAL_MACHINE\system\ControlSet001\services\Ramdisk]
  53. "Start"=dword:00000000


复制代码

回复

使用道具 举报

发表于 2018-1-16 20:19:44 | 显示全部楼层
不错,支持下
回复

使用道具 举报

发表于 2018-1-20 07:10:21 | 显示全部楼层
暂一个
回复

使用道具 举报

发表于 2018-9-10 16:37:21 | 显示全部楼层
来迟了 辛苦了  谢谢啊
回复

使用道具 举报

发表于 2019-5-30 12:25:30 | 显示全部楼层
这种加载ramdisk的方式最早是在进入桌面前就生效了的吧,不知道能不能作为普通的ramdisk应用,而不是必须作为RamOS启动盘?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 02:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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