|
本帖最后由 2012wuzhong 于 2013-6-10 13:31 编辑
主要思路:
1、使用g4d模拟一个scsi虚拟内存盘,后续由fira驱动。该虚拟盘用于充当差分vhd的宿主。
2、由于启动的时候子母vhd需要在同一个目录下,因此启动盘必须打上vhd宿主盘的烙印。这里将借用u盘1号扇区,将vhd宿主盘的磁盘签名及分区表信息拷贝到1号扇区,使用g4d从u盘的1号扇区开始虚拟,这种虚拟盘既具有vhd宿主盘的烙印又具有u盘原有的vhd文件。
3、启动以后为了让子vhd文件取之于primo内存盘,需要对vhd宿主盘进行junction操作,将vhd目录链接到primo内存盘。
限制说明:
1、需要使用相关的量产工具将u盘类型改为“本地盘”。
2、primo镜像文件需要放置在本地硬盘上。如果将镜像文件放置到g4d虚拟的内存盘上则出现12f蓝屏。
主要步骤:
1、使用相关的量产工具将u盘类型改为“本地盘”。
2、处理u盘:
//使用bootice处理mbr,安装g4d引导grldr.mbr
//使用bootice编辑1号扇区,按vhd宿主盘的mbr更改磁盘签名和分区表信息,参见图例。
| bootmgr,grldr,menu.lst //拷入启动文件
|--boot //拷入win7启动目录
| bcd //使用bootice处理,需要有一个基于vhd的启动项,启动磁盘选"BOOT",设备文件项填"\vhdos\w7636_child.vhd"
|--vhdos //按自己喜好建一个放置vhd文件的目录
| w7636.vhd,w7636_child.vhd //子母vhd文件,动态模式,按自己喜好取名
| b_link.img //完全镜像,大小9M,g4d模拟fira驱动
3、安装primo内存盘,盘符设为"B",io模式,智能镜像,镜像文件设置在硬盘某个分区
|--temp //系统所有的临时目录,设置环境变量temp到此
|--vhdos //
| w7636_child.vhd //与u盘对应目录中的文件相同
4、fira内存盘,vhd的宿主,镜像文件为u盘/vhdos/b_link.img
|--vhdos //junction目录,链接到"b:\vhdos"
5、menu.list
title fira+primo w7636_vhd_u
map --mem (hd0,0)/vhdos/b_link.img (hd1)
map --hook
dd if=(hd1) of=(hd1) count=1 seek=1
# 设置vhd宿主盘的磁盘签名为940061ce,这里可以根据自己喜好更改,但需要注意必须与u盘1号扇区中的一样,另外与其他盘不能一样
write --offset=952 (hd1) \x94\x00\x61\xce
write --offset=959 (hd1) \x00\x3f
write --offset=966 (hd1) \x3e
map --heads=255 --sectors-per-track=63 (hd1)1+8353737 (hd1)
# 这里8353737代表4G优盘的总扇区,需要相应更改,可使用bootice“分区管理”查看
map (hd0)1+8353737 (hd0)
map --hook
chainloader (hd0,0)/bootmgr
6、注册表操作:
rem 设置u盘启动标志
reg add hklm\system\ControlSet001\Control /v BootDriverFlags /t REG_DWORD /d 4 /f >nul 2>nul
reg add hklm\system\ControlSet001\Control\PnP /v PollBootPartitionTimeout /t REG_DWORD /d 30000 /f >nul 2>nul
rem 去除vhd固定占用最大空间
reg add hklm\system\ControlSet001\services\FsDepends\Parameters /v VirtualDiskExpandOnMount /t REG_DWORD /d 4 /f >nul 2>nul |
|