|
本帖最后由 y7y007 于 2018-9-15 08:22 编辑
最早可追溯到win98,使用磁盘压缩工具Drvspace3创建压缩盘,在压缩盘上安装win98系统。启动时在autoexec.bat中用xmsdsk.exe工具虚拟一个内存盘,然后将压缩卷文件“Drvspace.???”拷贝到内存盘,用Scandisk命令装载内存盘上的压缩卷文件生成压缩盘,最后启动压缩盘上的win98。这个ramos应该算比较另类,几乎是一个首创。
xp系统的ramos就比较多了。最早尝试的是ms自带的ramdisk驱动,然后是firadisk,参照无忧论坛上liulaotou2的"基于wimfltr.sys的RAMOS、新型影子系统制作方法"制作了wim类型的ramos。不过由于限制较多,用起来不方便。后来尝试了native命令环境下使用mounw命令进行WIM镜像可写挂载,这样灵活了很多。在无忧论坛上发表了处 女贴:“无须laotou.sys的WIM RAMOS的尝试”。WIM格式的ramos让我了解xp启动所需要的一些文件可以独立出来。
在学习了junction以后,可以对系统文件进行乾坤大挪移了,不过启动必须的一些文件不能移动,如windows\system32\config目录下的注册表文件。当时内存不是很大,总想把系统启动的一些文件从内存中移走。firadisk可以将同一个镜像文件虚拟成内存盘也可以虚拟成非内存模式的硬盘,这两种模式的虚拟盘系统认为是一样的。对镜像文件复制出一个,将其中一个镜像文件中的启动文件移动到硬盘上,然后用junction进行链接。对这个仅有目录链接的镜像文件虚拟成内存盘,而原先的镜像文件虚拟成非内存模式的硬盘并将其作为系统分区启动,当然不给firadisk传递nStartOptions参数,让系统启动后不识别非内存模式的硬盘,而转而将内存盘作为系统盘,实现了移花接木。这样处理后WIM格式的ramos对内存的榨取做到了极致。
经过使用了多种ramdisk驱动后,发现vsuite功能强大,具有动态内存管理、镜像快速加载功能,另外还能识别32位系统未识别的内存。那时候还没有人想到直接将vsuite拿来做ramos驱动,因此一般都作为第2驱动。第1驱动还是在ms和firadisk之间进行选择。有了“移花接木”的经验后自然就想运用到vsuite上。刚开始用的是免费版而且版本较低没有成功,后来使用了最新版本后一试就成功了。当时用的镜像文件是同一个,g4d虚拟成非内存模式的硬盘用于启动,后续由vsuite驱动再次加载镜像文件生成内存盘。由于g4d对非内存模式的虚拟要求镜像文件必须连续存放,这样比起firadisk显得比较麻烦。firadisk的使用经验让我很容易想到了镜像分离。不过那时候的经验是内容可以不一样,但大小必须一样。经过摸索发现,系统认知硬盘的特征在于分区表信息,通过更改镜像文件的mbr就能实现大小不一样的镜像文件做启动镜像了。仅需拷贝一些启动文件,这样的启动镜像文件可以很小,很容易做到连续存放。
vsuite虚拟内存盘有两种模式,scsi模式和直接io模式。直接io模式可以发挥更好的性能,但是虚拟出来的内存盘在注册表MountedDevices项中没有条目,导致其不能作为系统盘。有了junction的乾坤大挪移就可以进行间接实现了。不过需要一个scsi模式的盘来作宿主。当时的经验会让人不假思索的想到用一个scsi模式的内存盘来作宿主。不过我想到的是能否用硬盘来做,这样就只需有一个内存盘了,好处是内存利用率可以最大化。知道了系统认知硬盘的原理,通过更改镜像文件的mbr就很容易实现将硬盘分区1来作为内存盘的宿主。这种“宿主寄生法”还增大了对ramos驱动的选择余地。笔者曾成功运用该法将ramos驱动改为QSoft RAMDisk。
自从win7支持vhd启动后,vhd启动也引起了我的兴趣。对于配置较差只能使用xp系统的人,vboot绝对是一个好东东。它实现了xp系统的vhd启动,并同样支持差分vhd。另外它还有另外一个优点是非内存模式的虚拟盘不要求其连续存放。利用这个就能很好的规避v-ramos启动镜像要求连续存放的限制了。vboot启动有一个immutable模式,可以实现类似影子系统的功能,它的原理是启动时在硬盘上建一个差分vhd,关机后删除。如果将差分盘直接建在内存盘上,这样就可以减少对硬盘的频繁写操作了。经过长时间的摸索发现除了在启动的时候通过配置菜单来加载vhd还可以在注册表中进行配置加载。这样就很容易实现将差分盘配置在内存盘上了。
primo是vsuite的升级版,它有一个新功能就是在win7系统下可以动态回收内存。可见primo更好地支持了win7系统。这也促使我开始重点关注win7系统。之前v-ramos已经成功运用于win7系统了,在进行primo升级的时候才发现其驱动原理存在很大的不同。单一镜像的ramos不再适用。对于xp系统而言我采用了“宿主寄生法”才得以实现。但对于win7系统,“宿主寄生法”也没有成功。在山穷水尽的时候想到了vhd。采用镜像分离的方法,将vhd文件放置到了内存盘,实现了另类的ramos。
由于win7系统比较大,对于内存只有4G的机子玩起来太吃力了,对此我想到了差分vhd。刚开始采用的是win7原生态的vhd,不过原生态的差分vhd即使使用动态模式,在使用的时候空间还是达到了最大。此时我想到了vboot。使用vboot的好处是:子、母vhd可以位于不同的分区;另外使用动态模式的话,子vhd在使用的时候不会占用最大空间。
参考资料:
磁盘压缩的新用途,http://www.moon-soft.com/doc/851.htm。
Booting Windows From CD-ROM,http://pc.beareyes.com.cn/bbs/5/19.htm
基于wimfltr.sys的RAMOS、新型影子系统制作方法,链接丢失
无须laotou.sys的WIM RAMOS的尝试,链接丢失
使用vsuite ramdisk做ramos驱动,链接丢失
v-ramos启动镜像连续存放另类解决,链接丢失
将ramos放入直接io硬盘,链接丢失
xp-ramos如何使用特殊镜像,链接丢失
基于primo vhd-win7另类ramos,链接丢失
差分vhd-win7 ramos,链接丢失
qq,http://user.qzone.qq.com/1543764927 |
|