|
经你指导,采用Firadisk驱动,GRUB引导VHD进内存,已经全部成功了,表示由衷感谢!!
记录下操作,也给自己留个学习笔记~~(个人觉得比较方便的过程)
1、在调试完毕的VHD系统中,通过设备管理器中 “添加过时硬件”方式安装F驱动,并重启系统1次;
2、在PE中挂载这个VHD系统为一个分区(比如S),用Wimboot辅助工具 v2.5 将该分区(勾选仅捕获、LZX 32K压缩)打包成一个WIM包(由于WimBootCompress.ini设置的关系,这个包里是没有BOOTMGR 和 BCD的)
3、这一步有3种做法(3种压缩方式)任选其一,目的都是为了把VHD的体积缩小,便于GRUB快速加载。
3.1 NTFS压缩,磁盘管理新建一个VHD,大小=原VHD内数据×65%+期望剩余空间(200~300M),格式化成NTFS,右键开启NTFS压缩,然后用FASTCOPY直接把原vhd的文件全部复制到新建VHD中即可,完成后把BOOTMGR和BCD的压缩属性取消,分离VHD
3.2 Compact 压缩,磁盘管理新建一个VHD,大小=原VHD内数据×50%+期望剩余空间(200~300M),格式化成NTFS,然后用DISM++或wimlib(比如 wimlib-imagex.exe apply E:\WIN7.wim 1 Z: --compact=lzx)以Compact方式释放WIM包到该分区,最后把原VHD中的BOOTMGR和BCD复制过去,分离VHD
3.3 Wimboot 压缩,磁盘管理新建一个VHD,大小=原VHD内数据×40%+期望剩余空间(200~300M),格式化成NTFS,复制第二步中的WIM包到该VHD分区,打开Wimboot辅助工具 v2.5,系统分区和文件存放区都选这个区,释放指针,最后把原VHD中的BOOTMGR和BCD复制过去,分离VHD
选用Wimboot辅助工具 v2.5的原因是,它在打包时注入wofadk 驱动(复制wofadk.sys、WimBootCompress.ini+写注册表),无须考虑原系统中有没有这个驱动(7658中是没有的)。如果加载VHD时勾选只读,Wimboot辅助工具 v2.5无法打包,就是这个原因。
4、最后就是写入menu.lst
title Prosen Ramos Win7658
find --set-root /win7658e.vhd
map --mem --top /win7658e.vhd (hd0)
map (hd0) (hd1)
map --hook
chainloader (hd0,0)/BOOTMGR
不过好像Firadisk 不能打通高低位内存,我是4G内存,高位应该是500多M吧,VHD是896M,加载时全加载在低位内存上了,不过进系统后,Primo Ramdisk 的内存盘可以利用起这500M高位内存,也算不浪费了。
补充下,下面的注册表是不需要的,如果U盘根目录下menu.lst里的vhd名和注册表里相同,那么该VHD会被加载为C盘,如果不同,那menu.lst里的会被加载成C盘,注册表里的会被加载成D盘(没有实体硬盘的情况下)
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\FiraDisk]
"StartOptions"="disk,vmem=find:\\win7658e.vhd"
另外
用3.2 Compact 压缩制成的VDF放在U盘启动后, 点“安全删除硬件”可以拔出,系统正常运行
用 3.3 Wimboot 压缩制成的VDF放在U盘启动后,点“安全删除硬件”后会显示有文件使用,但U盘上VDF都是可以顺利改名的,拔出后系统可以正常运行
感谢 上帝是笨蛋 的详细指导,接下来准备再研究下类似于PE的U盘启动方式,也就是X盘安装WIN7,然后添加FBWF,RAMDISK驱动,打包成WIM再启动,有问题再请教,多谢~~ |
|