无忧启动论坛

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

[原创] ms\fira\vs到任意ramdisk构建ramxp的尝试

[复制链接]
跳转到指定楼层
1#
发表于 2012-11-22 13:20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
虽然ramdisk众多,但直接用于ramos驱动的却很少,主要原因是驱动加载的时间太迟,在内存盘生成之前系统内核因无法设别启动盘而导致启动失败。这个就像sata盘的启动,只有尽早加载sata磁盘驱动(start键值为0)系统内核才能识别启动盘完成启动。这种情况下,内存盘无法与启动盘合二为一,两者是分离和共存的。不过我们可以采用虚拟克隆法,将内存盘的盘符变成系统盘符,系统启动以后将使用内存盘上的系统文件。
我们知道"command"环境下可以使用"subst"命令来实现驱动器盘符的虚拟克隆,但该命令实现不了对已有盘符的虚拟。经过研究发现,通过修改"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices"注册项可以实现,将内存盘的盘符虚拟克隆为已存在的系统盘符。
下面以imdisk驱动为例来说明实现过程。

盘符假设:(默认第1分区为启动盘)
xp系统盘符为"C",内存盘符为"X",最终启动盘显现的盘符为"H"。

关键步骤:
1、安装imdisk驱动,生成内存盘,注意镜像文件放入其它分区,如"D:\imdisk\im1792.img",拷入相应的系统文件(建议使用WindowsCopy.exe,对于注册表SECURITY文件,需要确认其具有读取权限)。
2、导入如下注册表:(注意是当前系统,不是镜像文件)
---------------------------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ImDisk]
"Start"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ImDisk\Parameters]
"DriveLetter0"="X:"
"FileName0"="\\??\\D:\\imdisk\\im1792.img"
"Flags0"=dword:00000200
"LoadDevices"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"H:"="\\Device\\HarddiskVolume1"
"C:"="\\??\\X:"
-------------------------------------------
3、需要将imdisk.sys驱动放置于硬盘的其它分区,如"D:\imdisk\imdisk.sys",修改注册表(注意同样是当前系统)
"HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\ImDisk"项中的"ImagePath"为"\??\D:\imdisk\imdisk.sys"

说明:
1、启动盘最初分配的盘符为"C",当内存盘生成后具有2个盘符:"X"和"C","C"用于覆盖启动盘"C",而启动盘也有两个盘符,其中"H"盘用于显现。
2、内存盘附体启动盘后,大多数的系统文件取自于内存盘,但系统对注册表的读写还在启动盘(即使启动盘被覆盖不可见) ,为了保护启动盘上的注册表文件,建议修改"boot.ini",添加"/minint"参数:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP" /minint /noexecute=optin /fastdetect
3、启动盘上的绝大多数系统文件可以删除,只需要保留少量的启动文件。也可以使用ms、firadisk、vsuite(scsi模式)驱动来构建一个小的启动内存盘,完全脱离硬盘。更多的请访问我的qq空间,http://user.qzone.qq.com/1543764927,参考"非SCSI模式内存盘的ramxp v2"。
2#
发表于 2012-11-24 00:01:33 | 只看该作者
坐沙发看帖,谢谢分享。
回复

使用道具 举报

3#
发表于 2012-11-24 13:57:54 | 只看该作者
看了一遍,没看懂,先试一下,有空再来看看
回复

使用道具 举报

4#
发表于 2012-11-24 14:05:06 | 只看该作者
太麻烦了,还不如直接用WINVBLOCK来得方便,要修改时去掉--MEM参数,平时就是RAMOS了。
回复

使用道具 举报

5#
发表于 2012-11-24 14:19:16 | 只看该作者
ramos大师 支持先mark
回复

使用道具 举报

6#
发表于 2012-11-26 04:28:29 | 只看该作者
经过大师指点,略为理解一些,主要大意应该是说加载两次镜像的意思.就是实际操作感觉还是有点难度.
不过加载的第2次镜像,如果有办法只加载有文件的部分,而且空间可以任意扩展的话就更好了(指相同的系统文件,和相同的镜像大小的情况下).
回复

使用道具 举报

7#
 楼主| 发表于 2012-11-26 16:41:37 | 只看该作者

回复 #6 nk0769 的帖子

vsuite服务器版或primo就能满足你的要求。
快速加载模式:仅加载系统要用的文件到内存,加快了启动并节省了内存。
动态内存管理:按需分配内存,不占用最大内存。
回复

使用道具 举报

8#
发表于 2012-11-26 22:16:23 | 只看该作者

回复 #7 2012wuzhong 的帖子

谢谢,学到很多知识.期待小镜像,大空间的ramos出现.
回复

使用道具 举报

9#
发表于 2012-11-28 14:58:54 | 只看该作者
坐沙发看帖,谢谢分享。
回复

使用道具 举报

10#
发表于 2013-1-21 22:43:05 | 只看该作者
经人推荐看了下,还是不大懂
回复

使用道具 举报

11#
发表于 2013-1-22 00:01:52 | 只看该作者
内容ramos 经典大师!!!!!强烈顶起支持!!!!!!!!!!
只是现在 usbxp(带usboot,这个驱动会自动更改盘符,指定第一个找到的含xp的分区为系统分区) ramos 还没有成功一个。请大师指点啊!!
使用firadisk  winbvlk  均会启动不了,驱动方面相互冲突
vsuite/primo  尚未成功……  大师指点吧……
回复

使用道具 举报

12#
发表于 2013-1-22 00:04:03 | 只看该作者
在网吧用,使用u盘,如果有保存更改功能就更好了
回复

使用道具 举报

13#
发表于 2013-1-22 21:39:41 | 只看该作者
请教2012wuzhong ,是不是这个意思:
硬盘本地系统安装imdisk,导入reg,然后用imdisk虚拟一个内存盘,装入系统文件。
重启以后,本地系统仅仅起到一个启动引导作用,系统主要活动在虚拟内存盘里面?
回复

使用道具 举报

14#
 楼主| 发表于 2013-1-22 21:42:14 | 只看该作者

回复 #13 zhangmi 的帖子

是的,当然也可以用其它ramdisk启动。
回复

使用道具 举报

15#
 楼主| 发表于 2013-1-22 21:45:13 | 只看该作者

回复 #11 2011dingfei 的帖子

如果不需要通用的话,应该很容易将硬盘版转换成usb的。
回复

使用道具 举报

16#
发表于 2013-1-22 22:39:12 | 只看该作者

回复 #15 2012wuzhong 的帖子

怎么弄,什么意思。usboot 这个驱动会导致ramos失败 。 你试过没有
回复

使用道具 举报

17#
发表于 2013-1-23 10:50:22 | 只看该作者
顺便问一下,我用lZ博客上g4d扩容img的方法,把一个640m的mdr放在1200m的img第二扇区,启动时的确按照640m载入。接下来出错,显示no such partition。
我怀疑map --mem 加载img时未完全加载?
回复

使用道具 举报

18#
 楼主| 发表于 2013-1-23 18:58:06 | 只看该作者

回复 #16 2011dingfei 的帖子

我没有用usboot。直接使用BOOTICE.EXE将u盘主引导记录改为“GRUB4DOS 0.4.5C”,然后用g4d来启动。
回复

使用道具 举报

19#
 楼主| 发表于 2013-1-23 19:01:40 | 只看该作者

回复 #17 zhangmi 的帖子

载入以后必须使用dd命令将1200m的mbr进行替换,注意这个mbr起始扇区为1。
g4d扩容有局限性的。img内容不能太多,必须ntfs压缩格式。
你可以先使用winhex按640m对img进行截取另存为一个img,用vdm工具载入,是否能正常显示其中的内容。

[ 本帖最后由 2012wuzhong 于 2013-1-24 08:47 编辑 ]
回复

使用道具 举报

20#
发表于 2013-1-23 20:19:51 | 只看该作者
楼主的克隆附体法实在让人惊叹!!!内存6G,用了XP4G大补丁+USB2003驱动,做了RAMXP,本人用的启动盘是firadisk驱动,做的256M大小,其实只有130多M的内容,内存盘是IO模式的primo驱动,现在逻辑卷显示的是C:X:,独立的primo驱动显示的只是X盘,primo驱动的X盘已成功附体在C盘上,直观感觉到速度比VSuite做的内存系统快。这个方法比VSuite做的最大的优势在于只加载所用的文件大小,并不加载所有的内存文件,比如说本人做的2.5G内存盘,实际大小为973M,开机只加载973M,启动好之后,C盘是2.5G。记得以前有人用VSuite做的是28G的巨型镜像,开机都要12分钟以上,目前的这种做法就算是把内存盘做到28G,实际内容只有973M的话,那么加载的也只是这973M,开机速度快,10几秒钟就进入桌面了。对楼主的开创性想法十分钦佩!!!

另对楼主提个建议:
请举一个实例介绍这种方法,楼主的帖子说得太笼统,不仔细分析一般人看得是一头雾水,这也不利于推广这种方法,就像GRUB4DOS,推广不力,导致许多低级错误出现,不要求个个成为GRUB4DOS高手,只要一些基本的应用能熟练掌握就行,这也有利于推广GRUB4DOS。
毕竟有了成功才有兴趣嘛!老是失败就会失去兴趣!
这种内存系统是本人所做的在同一平台下速度最快的。
回复

使用道具 举报

21#
发表于 2013-1-23 23:37:08 | 只看该作者
原帖由 2012wuzhong 于 2012-11-26 16:41 发表
vsuite服务器版或primo就能满足你的要求。
快速加载模式:仅加载系统要用的文件到内存,加快了启动并节省了内存。
动态内存管理:按需分配内存,不占用最大内存。


我也是这样,挺方便。
回复

使用道具 举报

22#
发表于 2013-1-24 08:49:48 | 只看该作者
事实上,ramxp使用这种这种方式,意义不大吧。
对于win7,才是根本性的改变。强烈支持高手做一个足够小的win7模板
回复

使用道具 举报

23#
发表于 2013-1-24 22:52:26 | 只看该作者
非常期望。做出更具体的说明。让 菜鸟有机会尝试
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-13 05:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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