2012wuzhong 发表于 2013-10-18 18:46:46

win7子母vhd分离一法

首先声明:
1、涉及到磁盘操作,请提前做好数据备份!
2、部分驱动包括注册表system文件更改后需要手工进行更新。但对于家庭版、专业版绝对是个福音,只需要修改一次"ProductPolicy"就可以永久启动vhd。

主要原理来源于“基于primo差分vhd-win7-ramos v1.1”,http://user.qzone.qq.com/1543764927/infocenter#!app=2&via=QZ.HashRefresh&pos=1351430770
先作如下假设:
1、vhd虚拟盘盘符为"C"
2、分区1,//盘符为"D"
   └─vhdos        //此目录可随自己喜好取名,可以是实体目录也可以junction到其它分区,包括内存盘。
          └─w7_child.vhd        //真正的子盘,内容会更新,体积会增大
3、分区2,//盘符为"E"
   └─vhdos//此目录必须与上述同名
          ├─w7_mother.vhd       //母盘,动态扩展模式       
          └─w7_child.vhd        //仅用于启动,内容、体积不会变,名字必须与上述同名
主要步骤:
1、创建VHD差分磁盘:
打开"cmd"命令提示符窗口键入"diskpart",再键入:
create vdisk file="E:\vhdos\w7_child.vhd" parent="E:\vhdos\w7_mother.vhd"
将"E:\vhdos\w7_child.vhd"拷入到"D:\vhdos\w7_child.vhd"。
需要特别注意,系统启动以后子vhd是通过创建时键入母盘路径("E:\vhdos\w7_mother.vhd")来寻找母盘的,而创建时分区2如果不为"E",就需要有一个"E"盘来进行中转。

2、使用bootice分区管理功能查看硬盘分区1和2的起始扇区号。将两者相减得到一个值,如"125843697";同时记录分区2的总扇区数,如"251672400";备份硬盘的主引导记录mbr为文件(只需备份1个扇区)。

3、为了能够使分区2模拟分区1,需要在分区2的前几个扇区(=分区1的起始扇区号,如"63")写入硬盘mbr,可以用最新版本的bootice来实现。参见“给分区2添加mbr.jpg”

如果分区1与分区2之间没有足够空隙,可以使用DiskGenius专业版来调整分区1大小,修改终止扇区号(原值-分区1的起始扇区号)。

4、拷贝boot启动目录以及启动文件bootmgr到第2分区,使用bootice处理镜像文件boot目录中的bcd文件,需要有一个基于vhd的启动项,启动磁盘选"BOOT",设备文件项填"\vhdos\w7_child.vhd"。

5、需要使用grub4dos启动,编辑menu.lst文件添加一个启动菜单:
title w7_child.vhd
map --sectors-per-track=63 --heads=255 (hd0)125843697+251672400 (hd0)
map --hook
chainloader (hd0,0)/bootmgr

说明:
1、涉及到驱动安装以及system文件的更改,需要在另一个系统下将"E:\vhdos\w7_child.vhd"中相关内容手工更新到"D:\vhdos\w7_child.vhd",更新目录列表:
└─windows
    └─system32
            ├─drivers //重点关注早于vhdmp.sys加载的驱动
            └─config //只需要更新system,对于家庭版、专业版,需要再次修改"ProductPolicy"
2、通过修改注册表,可以阻止系统启动后vhd文件占用最大体积。
reg add hklm\system\ControlSet001\services\FsDepends\Parameters /v VirtualDiskExpandOnMount /t REG_DWORD /d 4 /f >nul 2>nul

freesoft00 发表于 2013-10-18 19:04:27

看一下方法,谢谢分享
页: [1]
查看完整版本: win7子母vhd分离一法