无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4060|回复: 4
打印 上一主题 下一主题

【讨论】发现差分VHD的一个BUG

[复制链接]
跳转到指定楼层
1#
发表于 2012-11-24 21:43:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道是BUG还是不支持,当差分VHD的父子VHD分别放在不同的硬盘的时候,win7系统BCD设置为从子VHD启动的情况下,bootmgr尽然无法从这个选项启动。估计是父子VHD在不同的盘,bootmgr就找不到父盘在哪里了。这个父子VHD不在同一个盘的情况,进入win7后用diskpart的
attach vdisk命令可以正确加载子VHD,证明进入win7系统可以支持父子VHD不在同一个盘符的情况,不知道为什么启动的时候bootmgr不能识别父子VHD不在同一个盘的情况。
===============================
有没有办法,直接把winload.exe装入内存,让winload.exe去启动父子盘不在同一个分区的VHD?bootmgr不支持,但不代表winload不支持啊,我的想法不知道对不对。如果winload支持,谁又知道具体如何装载winload如何传递winload的相关具体的参数呢?
2#
发表于 2012-11-24 23:21:27 | 只看该作者

回复 #1 2012rospartner 的帖子

确实是这样的,在启动的时候子母必须在同一个盘同一个目录。
只有启动以后子母可以分离。
为了实现差分vhd放入内存盘,我采用的是分区模拟的方法来欺骗系统。具体请访问我的qq空间,http://user.qzone.qq.com/1543764927,基于primo差分vhd-win7-ramos v1.1
回复

使用道具 举报

3#
 楼主| 发表于 2012-11-25 09:29:28 | 只看该作者
不必在同一个目录,父子盘vhd在不同目录也可以启动。问题是,创建的时候,比如父盘在E:\vhd子目录底下,create vdisk file=d:\vh1.vhd parent=e:\vhd\父.vhd,这个是可以创建成功的,而且也可以用attach vdisk命令正确加载,这说明系统已经认为vh1.vhd的父盘在E:\vhd了,但是把d:\vh1.vhd加入BCD以后,bootmgr读取BCD中间的这个项目d:\vh1.vhd认为有错误,不显示这个启动项目,但是怪事来了,如果在d:盘建立一个vhd子目录,并拷贝e:\vhd\父.vhd到d:\vhd\父.vhd,则bootmgr可以从d:\vh1.vhd这个子盘启动,这分明就是bootmgr的一个BUG。而且我认为仅仅是bootmgr检查bcd选项时候的一个BUG,而bootmgr内部的VHD驱动,当然winload的内部驱动,应该都支持父子vhd不在一个盘的情况,所以,要么修改bootmgr绕过检查bcd选项的步骤直接启动,要么直接加载winload.exe ,但是不知道如何具体去做。
回复

使用道具 举报

4#
发表于 2012-11-25 10:32:31 | 只看该作者

回复 #3 2012rospartner 的帖子

那是否可以这么理解,bootmgr只能从启动盘去寻找母vhd。可能受限于实模式启动机制。
回复

使用道具 举报

5#
 楼主| 发表于 2012-11-25 11:20:16 | 只看该作者
不知道是编程时的BUG还是确实在实模式阶段无法找到父盘VHD,其实我认为是编程BUG,不存在找不到父盘VHD的问题,可以用BIOS调用,分析mbr的磁盘签名再分析第几个分区就找到了父盘vhd所在的硬盘分区,在寻找该分区的子目录那是普通的功能了。所以不是实模式不能,而是没有编入这些代码,或者是BUG错误。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-23 11:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表