前言:
研究这个主要目的是,对于内存较小(4G以下)的机子,几乎很难玩win7-ramos。目前普遍采用的是wim类型。对此需要有一定的系统精简技术,而且内存还是非常的吃紧。利用vhd差分技术,仅将差分vhd放入内存中,这样一方面不需要对系统进行太多的精简,另一方面内存的利用将达到最高。
之前已经研究成功了一个基于primo原生态的差分vhd的另类ramos了,不过原生态的差分vhd即使使用动态模式,在使用的时候空间还是达到了最大,另外制作、更新比较复杂。因此想到了vboot。使用vboot的好处是:子、母vhd可以位于不同的分区;另外使用动态模式的话,子vhd在使用的时候不会占用最大空间。
vboot驱动建议选2.0,能够比较好的支持win7。具体下载可到vhd系统区,http://bbs.wuyou.com/viewthread.php?tid=202450,不过已经过期了,使用的时候需要调一下日期。
主要原理:
使用一个启动镜像启动vboot,让vboot先从启动镜像上的子vhd文件中启动,当然母vhd文件通过uuid定位于硬盘上的某个分区。系统启动后primo驱动将加载镜像文件生成内存盘,此时,启动镜像分离,系统将从硬盘分区1继续加载子vhd,由于硬盘分区1相应目录被mklink到了内存盘,这样系统使用的子vhd文件实际上位于内存盘。
具体步骤如下:
1、首先需要一个基于vhd的win7系统,假设vhd文件位于硬盘分区1,具体路径为"g:w7636w7636.vhd"
2、安装vboot驱动,"g:vboottoolsx86vbootctl.exe prepare current"
3、使用BOOTICE修改vhd引导,具体包括主引导记录为:"windows nt 6.x默认引导程序";分区引导记录为"BOOTMGR 引导程序";分区管理处于分区激活状态。
4、vhd根目录下需要有boot启动目录以及启动文件bootmgr,bootmgr文件不能压缩。
5、使用bootice处理boot目录中的bcd文件,需要有一个win7启动项,启动磁盘选"BOOT"
6、安装primo,生成一个直接io模式的内存盘(假设盘符为B),镜像文件可选智能镜像。加载模式先选“加载和保存”。
内存盘上建一个vhd目录,用vboot工具建立差分vhd,"g:vboottoolsx86vbootctl.exe creatediff b:vhdw7636-s1.vhd g:w7636w7636.vhd"
保存内存盘上的内容到镜像文件。
删除内存盘,然后重新加载,加载模式选“仅加载”和“延时加载模式”
-----------------
7、这里需要借助硬盘分区1(假设盘符为G)作中介,使用mklink命令进行链接,(注意盘符B为内存盘)"mklink /j g:vhd b:vhd"
8、使用DiskGenius生成一个硬盘映像img文件(假设文件名为bootv2.img),大小选32M即可。建立ntfs分区并格式化。
用vdm工具加载bootv2.img文件,拷入内存盘B上的vhd目录(包含有w7636-s1.vhd),同时拷入vboot启动目录,以及放入根目录下的vbootldr和vbootldr.mbr两个文件
![无忧启动论坛 差分vhd-win7 ramos win7 ramos 无忧启动](http://img.413yy.cn/images/31101031/31012231t01f13df4c4b6148b80.jpg)
修改vbootgrub目录下的grub.cfg文件
menuentry "w7636 vhd " {
vboot harddisk="(UUID=48900232900226d2)/w7636/w7636.vhd"
snapshotentry "Snapshot 1" {
vbootharddisk="(hd0,1)/vhd/w7636-s1.vhd"
}
}
注意:母盘需要使用硬盘分区1的uuid
9、需要使用grub4dos启动,编辑menu.lst文件如下:
title primo win7 bootv2.img
find --set-root /bootv2.img
map (hd0) (hd1)
map --read-only /bootv2.img (hd0)
map --hook
chainloader (hd0,0)/vbootldr.mbr
10、对于更新,建议vboot启动到母盘进行更新。
[ 本帖最后由 2010wuzhong 于 2012-6-26 06:29 编辑 ] 作者: nk0769 时间: 2012-6-25 00:58
vhd系统比起img系统容易增量备份吗?
vhd速度比起微软,firadisk速度如何? 作者: 2011ilbwn 时间: 2012-6-25 03:23
速度如何?
"用vdm工具加载bootv2.img文件,拷入内存盘B上的vhd目录(包含有w7636-s1.vhd),同时拷入vboot启动目录,以及放入根目录下的vbootldr"
内存盘B上的VHD目录是什么?望指点 作者: jyztl 时间: 2012-6-25 13:26
先学习一下,慢慢搞。 作者: 2010wuzhong 时间: 2012-6-25 18:41 标题: 回复 #2 nk0769 的帖子
增量备份,那正是差分vhd的特性了。不过建议使用多级子vhd,注意不要改动最后1级,因为其牵涉到两个地方:启动镜像和实际镜像,当然这两个镜像可以为同一个,只不过不能用智能镜像了。
关于速度是这样的,由于母盘还是在硬盘上,因此,对于母盘的读取速度可能很慢,子盘在直接io模式的内存盘上,读写速度应该比较快。
vboot2.0的速度没有实测过,感觉还可以。
至于firadisk,单从ramdisk驱动而言,primo应该优于它。当然如果内存大,要追求速度,那就不要搞差分了,直接将母盘放到内存盘上得了。
[ 本帖最后由 2010wuzhong 于 2012-6-26 06:38 编辑 ] 作者: 2010wuzhong 时间: 2012-6-25 18:46 标题: 回复 #3 2011ilbwn 的帖子
关于vhd目录,应该是启动镜像、分区1、内存盘的一个“交接点”,是为了让系统在启动的不同阶段加载不同的子vhd。
启动镜像上建vhd目录,是为了系统在刚启动的时候加载子vhd。
分区1上的vhd目录,是一个链接目录,它被链接到了内存盘。当启动镜像分离后,系统需要从硬盘分区1的vhd目录继续加载和使用子vhd。
在内存盘上建vhd目录,是为了给分区1上的vhd目录提供子vhd文件实体。
[ 本帖最后由 2010wuzhong 于 2012-6-26 06:54 编辑 ] 作者: haokai 时间: 2012-6-28 12:33
大内存用EWF一样效果,WIN7 VHD和差分盘用EWF保护, 作者: 2010wuzhong 时间: 2012-6-28 19:55 标题: 回复 #7 haokai 的帖子
是否存在512M最大内存限制? 作者: haokai 时间: 2012-6-29 09:45
win7 64位,不知道限制是多大?
内存使用到一般左右就会卡死。
图片附件: QQ截图20120629011637.jpg (2012-6-29 09:45, 121.83 KB) / 该附件被下载次数 3
http://bbs.wuyou.com/attachment.php?aid=145774
作者: 2010wuzhong 时间: 2012-6-29 21:32 标题: 回复 #9 haokai 的帖子
用EWF Windows Embedded Standard 2009 的版本,来保护C:盘,你往C:盘写入大约684MB的数据后内存会溢出,系统会崩溃,而使用2011的版本话,大概是1370MB,提高了大约有一倍 作者: 2011dingfei 时间: 2012-6-30 11:54
**,不如直接用ewf来保护系统,效果更好,
同样是:读取在硬盘,修改的文件读写在内存