|
经过长时间的研究,终于找到了解决win7PE或者NATIVE WIN7PE不识别GRUB直接MAP的ISO的问题的方法!
首先感谢hotdll 在http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210458 帖子上的研究,我也是从这个帖子受到启发,结合以前将xp安装到U盘上的经历,才找到完美解决办法。
原理:
系统默认的驱动加载顺序是 磁盘控制器驱动--WinVBlock 驱动--cdrom.sys--usb--ramdisk.sys--disk.sys,所以
当grub map --mem 时,系统加载WinVBlock 驱动后WinVBlock 驱动模拟出cdrom后会在内存中查找grub仿真盘,由于仿真盘时全部加载到内存的,所以可以找到,就成功了;
而当grub map 不带 --mem参数时,系统时把ISO镜像链接到内存的,即内存中只保存iso镜像的地址,不保存内容,而此时disk.sys,ntfs.sys等驱动还没有加载,所以就找不到ISO了。
所以要调整系统默认的驱动加载顺序,使其为磁盘控制器驱动--usb--WinVBlock 驱动--ramdisk.sys--disk.sys--cdrom.sys
解决方法:
1。调整disk的加载顺序
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Disk\Group=Primary Disk
2。调整USB的加载顺序
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\usbehci\Group=System Reserved
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\usbehci\Start=0
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\usbhub\Group=System Reserved
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\usbhub\Start=0
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\usbohci\Group=System Reserved
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\usbohci\Start=0
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\USBSTOR\Group=System Reserved
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\USBSTOR\Start=0
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\usbuhci\Group=System Reserved
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\usbuhci\Start=0
3。调整cdrom的加载顺序
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\cdrom\Group=Base
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\cdrom\Start=0
4。集成WinVBlock 驱动
WinVBlock.rar
(20.27 KB, 下载次数: 306)
至此,修改完成!
经测试,在普通WIN7pe和NATIVE WIN7PE上都有效,NATIVE WIN7PE在NATIVE shell 阶段就能读出GRUB直接MAP的iso的内容!
具体效果可以参见NATIVE版WIN7PE AERO 完整版(一级内核30M 20120627更新)[400M]
完整的注册表及文件(包括注册表修改和WinVBlock 驱动集成):
Map.zip
(80.29 KB, 下载次数: 316)
[ 本帖最后由 smine 于 2012-6-28 15:47 编辑 ] |
|