本帖最后由 2013_top398 于 2014-3-11 16:29 编辑
2014-3-11 更新辅助工具,经过在老外论坛求助,明白了问题所在,甩掉多余的 bcdedit64.exe。
2014-3-11 后记:
至此,楼主的单镜像Vsuite/Primo-RAMOS试验告一段落,楼主也要休息一下了。
楼主啰里啰嗦写了这么多,也是希望新手能从楼主的试验过程中吸取经验教训,少走弯路,能够举一反三,触类旁通。切忌照猫画虎,只恐画虎不成,反类犬矣。至于同类贴子中某人称“不用再看其他人的贴子了”,应知学海无涯,岂能固步自封?
同时,楼主提供的辅助工具,可以提高制作内存系统的效率。如各位对此工具有好的建议或bug反馈,楼主会视情况再作更新。
最后,感谢各位看官的捧场、推荐、加分,现在回复与否已不重要了。贴子是否值得一看,就留与各位看官评判了。
2014-3-11 更新辅助工具,bug修正。
说明:原代码基于32位系统,在64位下测试死活找不到bcdedit,所以从win7-x64里找了一个bcdedit64.exe到工具目录里,暂时对付着用。
本日对比了基于Primo和Vsuite的Win7-x64系统,过程如下。
1、虚机配置:4核CPU,8G内存,20G硬盘。
2、实机挂载虚机VHD,将第二分区压缩1G出来,建为第三分区,用于存放工具和楼主写的代码。以前因为这些都放在系统分区里,当重装系统时一不注意,新写的代码都没了,只好回头补写。
3、虚机安装Win7 64位系统,安装Primo,从镜像文件rd.img创建内存盘。
4、实机挂载虚机VHD,实机Primo挂载虚机原有3072M rd.img,fc.cmd 复制虚机系统到挂载IMG,出错:2.4G的pagefile.sys被复制到IMG里了,导致空间不足。删除IMG中pagefile.sys,修改 fc.cmd 过滤 pagefile.sys,继续复制。结果是2个文件/目录复制错误:System Volume Information\及里面的一个文件。卸载IMG,卸载VHD。
5、进入母系统取消页面文件,运行辅助工具,备份注册表(因有取消页面文件的动作),处理注册表,修复BCD。
6、建立RAMOS的grldr引导。
7、重启到RAMOS,蓝屏:000000F4,经查是某个关键进程或线程出错,具体哪个不知道,一时无法解决。
8、重启到母系统,删除内存盘,卸载Primo,重启,安装Vsuite,从镜像rd.img建立内存盘。
9、回实机挂载VHD、IMG,复制系统,此时复制量很小,且IMG中多余的文件会被删除。
10、虚机母系统运行辅助工具,处理注册表,修复BCD。
11、重启,成功进入RAMOS。
12、辅助工具设置关机不保存,出错。经试验,需要在Vsuite中重新修改镜像设置,先设置不保存,再设置保存(重新修改前后的注册表差异很大),就可用辅助工具处理了。重启后已是“不保存”状态。
总结:虽然Primo比Vsuite新,而且注册容易,但低层限制较多。应该说Vsuite的兼容性要好于Primo。
================================================================
2014-3-10 更新辅助工具,加入在线设置Primo内存盘关机不保存功能。这样就不至于被这个关机保存选项所困扰了。
注意:在Vsuite/Primo-RAMOS中运行有效。如果是母系统中运行,只能离线更改Vsuite内存盘系统的保存选项。
friend8179 前辈有云:授人以渔,不如授人以鱼。故此这鱼是怎么捉到的,本楼主就不哆嗦了。新鲜的鱼放在老地方,列位看官可自行去取。倘若看官们肯劳动手指,回复一下楼主,想必也是极好的。
2014-3-10 Primo + Win7 32位内存系统试验过程:
1、虚拟机配置:4核CPU,8G内存,20G硬盘。
2、在实机中处理20G VHD。将唯一分区压缩到9GB,剩余空间再建一个分区,两个分区分别用于系统和镜像文件存放。
3、用实机Primo在VHD第二分区上建立3072MB的SCSI镜像rd.img,保存后直接是连续的。
4、进入虚机,将twm000 win7 32位系统安装到C盘。删除页面文件。安装Primo并reg。此时打开Primo显示试用期,重启后显示注册。
5、虚机“利用镜像文件创建内存盘”R:,指定e:\rd.img(d:是光驱),使用未识别内存,加载和保存,快速加载。重启后确认系统中已存在内存盘R:。
6、关闭虚机,实机挂载VHD,Primo挂载VHD第二分区的rd.img,然后 fc.cmd 复制第一分区的系统到挂载内存盘。卸载rd.img,卸载VHD(注意卸载和挂载顺序相反)。
7、虚机中用辅助工具在线处理注册表,修复BCD。
8、建立RAMOS的grldr引导。
9、重启,成功进入RAMOS。
实际操作时,可将“虚机”理解为目标系统,“实机”理解为其他系统或PE。
总结:
1、由于镜像文件不在系统分区,因此除了交换盘符外,不需要处理镜像文件存放位置了。
2、做出来的系统设置为“关机保存镜像”,辅助工具“设置关机不保存”只能处理Vsuite,无法处理Primo,因为Primo暗桩更多。只能手动处理:①在当前“关机保存”情况下,设置内存盘为“关机不保存”;②从注册表中导出 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\SYSTEM\0001\Device Parameters\Repository](一般是这个子键);③重新设置内存盘为“关机保存”;④导入先前的注册表;⑤重启一次后,已经是“关机不保存”了。
3、在用各种方法试验如何设置关机不保存时,多次在修改注册表后,造成RAMOS无法启动。此时回到母系统,用辅助工具“备份注册表”到内存盘,再处理注册表,修复BCD(BCD也被备份了),RAMOS又起死回生。所以“备份注册表”功能还是有用的。
2014-3-10 先上传最新辅助工具。
昨日已成功用 Primo + twm000 Win7 32位系统制作RAMOS成功。稍后再整理。
下步拟改写一个Primo单镜像RAMOS在线/离线自动注册表处理工具,只需指定Primo盘符,就能一键处理。这不仅仅能在母系统中处理,也可将镜像文件迁移到其它分区甚至其它机器(前提是系统纯净,并已适当处理磁盘驱动)。而Vsuite由于注册表中信息不全(可能部分要依靠驱动来提供),没有Primo这么简易,需要用户提供更多信息,以后有时间也会做一个Vsuite版本。
为什么要离线处理?因为复制系统这一步只有在离线进行时才能保证复制完整。因此实在没有必要多此一举再回到母系统处理了。
================================================================
2014-3-9 更新辅助工具,bug修正,加入新功能。
本日测试了Vsuite + Win7 64位内存系统。过程如下:
1、虚拟机配置:双核四线程,8G内存,20G硬盘。
2、以 twm000 精简64位系统为安装源,安装后体积接近5GB。
3、删除页面文件,安装 Vsuite 4.5 Server。
4、建立5120M SCSI内存盘,镜像文件 c:\rd.img,NTFS压缩,保存和加载,快速加载,无视“未识别内存”。
5、重启得到空镜像文件 c:\rd.img(注意,是在系统盘下,我试验的系统都是单硬盘,镜像都在系统盘下,这样是为了验证调整注册表中镜像文件位置的必要性)。
6、用我的辅助工具复制C:到R:,检查有19个文件未复制,再备份注册表,处理内存盘系统注册表。
7、运行FixBCD.cmd(内容见上次Win7 32位试验的批处理)以修复内存盘系统的BCD(此功能已加入辅助工具)。
8、建立grldr引导,menu.lst同样见上次Win7 32位试验的菜单。
9、重启到内存系统,grldr出错,文件不连续。在实机挂载VHD,整理rd.img。再次重启,出错:找不到 Winload.exe。
10、回母系统,检查内存盘 \windows\system32\ 下,确实没有 winload.exe,再列出此目录下的文件,总数2000出头,再看母系统中的目录,有2400多个。经多次 fastcopy、diffsync,无法完全复制系统。不得已,在实机中挂载虚拟机VHD,再用实机Primo挂载VHD中的rd.img,用另一个批处理 fc.cmd 调用 fastcopy 才算真正完成了系统对拷(fc.cmd 已附在辅助工具的 fastcopy 目录下)。
11、虚拟机进入母系统,辅助工具再次处理注册表和修复BCD(因又被母系统覆盖)。
12、重启,成功进入内存系统。
总结:
1、其它步骤都不是什么难题了,关键是系统要复制完全,这次又走了弯路。推荐还是进入其它系统/PE,再完整复制RAMOS系统。因此,辅助工具“复制系统”和“备份注册表”功能只作为备用(XP/03下确实有效)。
2、5G的Win64系统,复制到NTFS压缩的磁盘上,只占用2.6G空间。因此我5G的内存盘是做大了,实际定为3G较合适。
3、bootmgr 之类的文件可以NTFS压缩,包括什么tokens.dat文件、Cache目录也都不用管了。只有grldr等第三方引导程序不能压缩。
目前论坛有些问题,无法更新附件。待正常后再更新。
2014-3-9 更新辅助工具。bug修正,强化对Primo的支持,加入母系统中直接改RAMOS关机不保存选项。磁盘选择列表仅列出Vsuite/Primo内存盘,这样可免干扰,防误操作。当然如系统中没有Vsuite/Primo镜像文件内存盘,将拒绝运行。
================================================================
2014-3-8 注册表中的 Primo 镜像文件信息初步分析:
1、确定 Primo 设备子键:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\SYSTEM\0001]
"Service"="FancyRd"
枚举0000开始的子键,其值 "Service"="FancyRd" 时就是 Primo 设备。
2、确定内存盘的值:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\SYSTEM\0001\Device Parameters\Repository]
"1"=hex:40,00,00,00,12,01,00,00,b2,13,00,00,00,00,00,00,00,00,00,58,00,00,00,\
00,01,80,5a,00,33,d9,3a,cf,00,00,00,00,00,00,00,00,40,00,38,00,80,00,3a,00,\
c0,00,52,00,00,00,00,00,00,00,00,00,00,00,00,00,38,00,00,00,38,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,58,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,2c,00,00,00,3a,00,00,00,02,08,13,00,ec,18,3b,7d,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,10,00,52,00,41,\
00,4d,00,44,00,49,00,53,00,4b,00,00,00,00,00,00,00,00,00,28,00,00,00,52,00,\
00,00,01,00,80,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,2c,00,5c,00,44,00,6f,00,73,00,44,00,65,00,76,00,69,00,63,00,\
65,00,73,00,5c,00,65,00,3a,00,5c,00,72,00,64,00,2e,00,69,00,6d,00,67,00,00,\
00
可能有多个内存盘,枚举从"0"开始的值,偏移1C-1F处为磁盘ID,当等于 HKLM\System\MountedDevices下的相应内存盘符的偏移0-3时,就是此内存盘的具体信息。
此外:
偏移1A处为盘符。
偏移A8处WORD值为卷标的字节长度,AA开始为卷标。
偏移E4处WORD值为镜像文件名的字节长度,E6开始为镜像文件名。
下一步准备测试 Win7 64位,现正在下载一个1.4G的Gho文件,百度云20余KB/s实在太慢,迅雷又下不动,只好慢慢等,先研究一些可能有用的东西。
================================================================
2014-3-7 更新辅助工具,加入 注册表中取消关机保存镜像选项 功能。在当前关机保存打勾的情况下,执行后只重启一次即实现以后关机不保存的目的。
说明:
1、目前只针对 Vsuite,后续测试 Primo 可用时再加入对 Primo 的同等支持。
2、只更改当前系统的注册表,如要改 RAMOS 中的注册表,请在 RAMOS 中使用此功能。
2014-3-7 应 wanghh 要求,上传 241M 03EE +20130903补丁精简安装版。百度云下载:
http://pan.baidu.com/s/1qWO2T44
2014-3-7 更新:辅助处理工具命名为“Vsuite/Primo-RAMOS在线辅助工具”,小bug修正,加入 在线复制系统 功能(外调 FastCopy 实现,可重建硬连接),与 备份注册表、处理RAMOS注册表 功能配合,直接在线转换硬盘系统为内存盘系统。当然复制系统也可用 DiffSync+备份注册表 或 其他系统/PE下复制、DiskGen克隆 等方法。
提醒:辅助工具必须在RAMOS的母系统中运行,方能正确在线处理RAMOS注册表。
本日(3-6全天)测试 Vsuite/Primo Ramdisk + Win7 32位内存系统,虚拟机环境为双核4线程,6G内存,IDE硬盘,内存盘使用未识别内存,大小1280MB。用 prosen 的 240M 精简 Win7 来安装,安装后体积1100MB。测试多个Vsuite/Primo版本及不同PJ方法,均以 7B 蓝屏告终,重启不下数十次(感悟:为何老外的同类网站叫做 reboot.pro)。最终还是用我上传附件中的Vsuite 4.5+PJ制作成功。
Vsuite+Win7 32位内存系统的制作过程,大体同原来 XP/03 的制作过程。只是有几点不同:
1、复制系统文件不像XP/03容易,DiffSync 同步后,有500多个文件/目录不能复制,好在 FastCopy 功能要强大一些,复制到99%以后出错,查看log,只有17个文件未复制,基本是注册表文件和几个临时文件。再辅以注册表备份功能实现了系统复制。
2、BCD 文件也不能复制,要通过注册表导出或 bcdedit /export 来复制。
3、内存盘中的 BCD 必须修改。我临时写了一个批处理如下:
- @echo off
- pushd r:\boot
- bcdedit /store bcd /set {bootmgr} device boot
- bcdedit /store bcd /set {default} device boot
- bcdedit /store bcd /set {default} osdevice boot
- popd
复制代码
如果不修改或修改错误,启动 RAMOS 将出现 C000000E 错误。
相应的,grldr 启动菜单为:
- title Vsuite-RAMOS-W7
- find --set-root /rd.img
- map --read-only /rd.img (hd0)
- map --hook
- chainloader (hd0,0)/bootmgr
复制代码
之所以没有 map (hd0) (hd1) 这一行,是因为并无实际作用(进入Windows后原硬盘就会被识别),反而可能让人以为原硬盘对RAMOS产生了干扰。
大体就是这些。时间太晚,容后再整理完善。
================================================================
2014-3-6 小改辅助处理工具,按论坛制作 Primo Ramdisk Win7-x86 内存系统的方法,加入注册表中超时项目处理,这样就可用于 XP/03/Win7和Vsuite/Primo Ramdisk的各种组合。
注意:
1、XP/03注册表中无超时项目,此项出错正常。
2、Primo Ramdisk 的镜像文件路径在注册表中的位置和Vsuite不同,也是按论坛中的制作方法,不需处理这一项目,因此Primo调整镜像文件存储盘符出错也是正常(我还未开始测试 Win7 x86)。
2014-3-5 晚,初步完善辅助处理工具,在附件中提供。
1、可导出当前系统全部注册表到其他盘(即我的制作步骤中第4步)。配合 DiffSync 实现在线系统直接对拷(或曰热备份)。
2、可自动处理Vsuite Ramdisk 内存系统需要修改的注册表(即我的制作步骤中第5步)。
================================================================
经过几天试验觉得 Vsuite Ramdisk 内存系统不错,尤其配合 03 直接支持大内存。
我的制作步骤:
1、安装03EE系统到 C:,并适当优化调整。
2、安装 Vsuite Ramdisk,创建一个768M的 SCSI 固定大小内存盘,盘符为 R:,NTFS压缩,关机保存,快速加载,指定镜像文件 c:\rd.img(扩展名是无所谓的,文件位置一定是在 C: 上,另外,无视什么未识别内存)。然后重启以得到镜像文件 c:\rd.img。
3、DiffSync 设置过滤掉一些不必要的文件,同步 C: -> R:,反复同步几次,最后还剩 11 个文件不能同步,都是注册表文件。
4、备份出全部11个注册表到 R: 相应文件。
(如果3、4步操作没把握,可切换到别的系统或PE,Imdisk挂载 rd.img ,然后 DiffSync C: -> rd.img挂载盘)
5、处理 R: 里的 System 注册表, MountedDevices 交换盘符 C: <-> R:, Services\rxvstor\Devices\Device 0的键 0 改 BINARY 值结尾,对照 ASCII 码显示,改 \DosDevices\c:\rd.img 中间的 c: 为 r:(或R:)。
6、C: 上建立内存系统引导,如果用 grldr 引导, menu.lst 加入:
- title Vsuite-RAMOS
- find --set-root /rd.img
- map (hd0) (hd1)
- map --read-only /rd.img (hd0)
- map --hook
- chainloader (hd0,0)/ntldr
复制代码
如果用 ntldr 引导, boot.ini 加入一行:
c:\grldr="VSuite-RAMOS"
然后还是需要 grldr 及 加入上述菜单的 menu.lst。
7、切换到另一个系统或PE, 整理 c:\rd.img 的碎片。
8、现在可以试试引导到 Vsuite Ramdisk RAMOS了。
9、制作出来是保留了“关机保存”的选项,如果不想再保存镜像,修改内存盘选项去掉“关机保存”,再导出 HKLM\System\CurrentControlSet\Services\rxvstor\Devices\Device 0 为 不保存.reg。重启后(似也可以再选“关机保存”,就不用重启)导入此.reg,再重启即不再保存了。
待续……
================================================================
vprtool-20140311162545.rar
(712.06 KB, 下载次数: 364)
辅助处理工具。多数情况在母系统、少数情况在RAMOS中运行,在其它系统/PE下请慎用。
DiffSync.rar
(279.16 KB, 下载次数: 190)
差分同步工具,已建立默认 C: -> R: 同步,可点“配置”修改。
VSuite.Ramdisk.Srv.Setup.With.Patch.4.5.7219.1638.rar
(1.47 MB, 下载次数: 282)
安装 Vsuite 后,将 Patch 复制到安装目录下运行。
Primo_Ramdisk_Server_Edition_5.6.0_with_reg.part1.rar
(1.46 MB, 下载次数: 153)
Primo_Ramdisk_Server_Edition_5.6.0_with_reg.part2.rar
(863.65 KB, 下载次数: 147)
安装后导入注册表。 |