无忧启动论坛

标题: 再发一贴!关于微软Ramdisk的正确用法! [打印本页]

作者: hzican    时间: 2016-3-24 00:17
标题: 再发一贴!关于微软Ramdisk的正确用法!
所有的帖子都是没有理解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

作者: yang77    时间: 2016-3-24 00:54
前排支持,感谢分享
作者: 20090101    时间: 2016-3-24 10:23
回头我也试试你的方法哈。
作者: 20090101    时间: 2016-3-24 10:49
能在详细一点就好了,我看得不是很明了。
作者: movie001    时间: 2016-3-24 10:55
20090101 发表于 2016-3-24 10:49
能在详细一点就好了,我看得不是很明了。

他说的是不用手工安装旧设备RAMDISK,而用直接复制RAMDISK和修改注册表的方式将RMADISK弄进系统,减少蓝屏的几率
作者: liumailong    时间: 2016-3-24 10:57
对微软的Ramdisk不了解。
请问能做内存盘吗?
作者: shunshun    时间: 2016-3-24 11:14
受教了
作者: hzican    时间: 2016-3-24 14:14
32位ramdisk.sys 能做最大988m的img文件,64位没有试过
作者: hzican    时间: 2016-3-24 15:29
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 (44.62 KB, 下载次数: 124)

img-options-nombr.png

img-options-63mbr.png (38.12 KB, 下载次数: 98)

img-options-63mbr.png

vhd-options.png (44.6 KB, 下载次数: 105)

vhd-options.png

boot-img.png (75.17 KB, 下载次数: 81)

boot-img.png

boot-vhd.png (74.72 KB, 下载次数: 91)

boot-vhd.png

作者: hzican    时间: 2016-3-24 15:32
liumailong 发表于 2016-3-24 10:57
对微软的Ramdisk不了解。
请问能做内存盘吗?

这个就是做RamOS启动的
作者: 2011xiongdeyuan    时间: 2016-3-24 18:41
不错,支持下
作者: 2012shm    时间: 2016-3-25 07:46
受益匪浅,可以试试,回头请教
作者: 2012shm    时间: 2016-4-3 09:23
是否win7的ramdisk.sys,x86、x64通用?还有楼主的方法7、8、10、xp、2008通用?
作者: hzican    时间: 2016-4-3 22:09
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的智能镜像文件包里面,最后结果是两个内存盘!

作者: 2012shm    时间: 2016-4-4 19:56
hzican 发表于 2016-4-3 22:09
32位和64位的驱动是肯定不能通用的,2k/XP/03/Vista/Win7/8/10的方法都是一样的!
不过因为Win8/10没有合 ...

懂了,谢谢啊
作者: linhu6682    时间: 2017-7-7 09:54
感谢分享
作者: tt8023yy    时间: 2017-7-8 09:27
大哥 能做个批处理给我们直接用吗
作者: wondaol    时间: 2017-7-18 13:58
我的Ramdisk 只是用来放浏览器的缓存
作者: xmzhqw    时间: 2017-7-24 21:54
谢谢分享!看来这是在PE上用的。
作者: y7y007    时间: 2018-1-16 19:14
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


复制代码


作者: 2010sya    时间: 2018-1-16 20:19
不错,支持下
作者: erin    时间: 2018-1-20 07:10
暂一个
作者: wangziqiang    时间: 2018-9-10 16:37
来迟了 辛苦了  谢谢啊
作者: 2010qaqz111    时间: 2019-5-30 12:25
这种加载ramdisk的方式最早是在进入桌面前就生效了的吧,不知道能不能作为普通的ramdisk应用,而不是必须作为RamOS启动盘?




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