无忧启动论坛

标题: grub4dos支持vhd格式的map --mem吗? [打印本页]

作者: liuzhaoyzz    时间: 2013-7-24 08:48
标题: grub4dos支持vhd格式的map --mem吗?
本帖最后由 liuzhaoyzz 于 2013-7-24 12:45 编辑

grub4dos支持vhd格式的map --mem吗?
grub4dos用的是最新版的2013.7.15版本,试了0.4.5c和0.4.6a,用diskgenius生成的vhd动态磁盘或者固定磁盘,map --mem到内存失败,提示文件分区表错误或者损坏。看到论坛也有成功的,也有失败的。是不是grub4dos不支持diskgenius生成的vhd?VHD是2G的NTFS格式,放在硬盘第3分区,用winmount挂载后,用diskgenius快速分区格式化重建了MBR,里面安装了firadisk0.0.1.30,菜单如下:
find --set-root /RAMOS/win7.vhd
map --mem /RAMOS/win7.vhd (hd0)
map (hd0) (hd1)
map --hook
chainloader (hd0,0)/bootmgr
成功http://bbs.wuyou.net/forum.php?mod=viewthread&tid=310280
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=163615
失败http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3769175
      http://bbs.wuyou.net/forum.php?mod=viewthread&tid=274289
用BOOTICE查看vhd的CHS值很奇怪H=16,S=63,菜单改成这样也不行:
find --set-root /RAMOS/win7.vhd
map --mem  --heads=16 --sectors-per-track=63 /RAMOS/win7.vhd (hd0)
map (hd0) (hd1)
map --hook
chainloader (hd0,0)/bootmgr
提示自动探测CHS值错误,取给定的CHS值。VHD能够直接从bootmgr引导进入,win7系统正常,进去后用BOOTICE检查C盘CHS值,H=255,S=63和grub4dos探测的一样,奇怪。动态vhd还好grub4dos能够加载到内存,固定vhd根本不能加载,提示Partition table invalid or corrupt.


IMG_20130723_185928.jpg (183.61 KB, 下载次数: 229)

IMG_20130723_185928.jpg

作者: thttht    时间: 2013-7-24 09:45
grub4dos支持vhd格式的map --mem,这是可以确定的!
但diskgenius生成的vhd没有试过!首先vhd得是固定大小的,动态的不行!
作者: 2011mking    时间: 2013-7-24 10:14
绝对支持,请看下面两贴,均是DiskGenius创建。

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D2
作者: liuzhaoyzz    时间: 2013-7-24 11:40
thttht 发表于 2013-7-24 09:45
grub4dos支持vhd格式的map --mem,这是可以确定的!
但diskgenius生成的vhd没有试过!首先vhd得是固定大小 ...

我也是感到很疑惑,网上都说必须是固定大小的才行,可我试了动态的能够加载,然后出现分区表无效或者损坏;固定大小的根本就不能加载,说是磁头数对不住什么的。
Diskgeniu是4.3版本的。

作者: 2011mking    时间: 2013-7-24 11:49
liuzhaoyzz 发表于 2013-7-24 11:40
我也是感到很疑惑,网上都说必须是固定大小的才行,可我试了动态的能够加载,然后出现分区表无效或者损坏 ...

可能你用DiskGen创建固定大小的VHD方法不正确。注意要选择硬盘镜像,这样才会有MBR,用
title Win7 VHD
   find --set-root --ignore-floppies --ignore-cd /boot/bootmgr
   chainloader /boot/bootmgr
   boot
才可以成功 。
http://bbs.wuyou.net/forum.php?m ... page%3D1&page=3
28楼有图,你对比一下。
作者: liuzhaoyzz    时间: 2013-7-24 11:55
2011mking 发表于 2013-7-24 10:14
绝对支持,请看下面两贴,均是DiskGenius创建。

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=20 ...

你的这个帖子之前我也有看过,http://bbs.wuyou.net/forum.php?m ... page%3D1&page=1里面是用grub4dos引导vhd,但是没有加载到内存,没有map --mem,而是直接map。
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D2似乎至用grub4dos加载img到内存,不是vhd?
BTW,我也是用的prosen精简的240Mwin7.658企业版尝试的。
作者: liuzhaoyzz    时间: 2013-7-24 11:58
用DiskGen创建固定大小的VHD方法就只有一个啊,快速分区格式化就有MBR了,也是和你说的28楼的一样,MBR下面有一个主分区。
作者: liuzhaoyzz    时间: 2013-7-24 11:59
主分区也是激活的,NTFS的,2G固定大小,还有10G动态我都试了,不行。

作者: 2011mking    时间: 2013-7-24 12:08
本帖最后由 2011mking 于 2013-7-24 12:10 编辑

Map 加 --mem 需要先装上Firadisk驱动,看贴要仔细,现成的

http://pan.baidu.com/share/link? ... 3&uk=2485377413

下载会解压到DiskGenius创建的VHD中即可。

http://bbs.wuyou.net/forum.php?m ... page%3D1&page=4  32楼看下去,直接成功。
作者: liuzhaoyzz    时间: 2013-7-24 12:48
顶楼我已经说了,vhd里面成功安装了firadisk0.0.1.30了。网速有点慢,下载很耗时。
作者: liuzhaoyzz    时间: 2013-7-24 13:11
本帖最后由 liuzhaoyzz 于 2013-7-24 13:14 编辑

http://pan.baidu.com/share/link? ... 3&uk=2485377413里面包括了boot.ini,bootmgr,win7的boot目录,bootice,slic激活工具,以及一个481MB的win7自解压镜像。我们的启动方式不同。我的C是c:\bootmgr→vhd win7,还有一种是c:\bootmgr→grldr.mbr→ramos vhd win7(map --mem),我的系统已经用WIN7激活CW过了,我只想搞明白为什么map --mem vhd失败。现在vhd里面的win7本来就能正常启动了,写引导,firadisk,都正常。
作者: 2011mking    时间: 2013-7-24 14:18
本帖最后由 2011mking 于 2013-7-24 14:24 编辑

检查创建VHD过程是否一样,注意“立即分配全部硬盘空间”要选上。










作者: liuzhaoyzz    时间: 2013-7-24 14:31
那个勾勾上和不勾上两种我都有,都试了,不行。
分区和格式化我在diskgenius里面F6直接快速分区,分为一个主分区,自动格式化为NTFS。
这些操作应该都不是问题
作者: 2011mking    时间: 2013-7-24 14:37
本帖最后由 2011mking 于 2013-7-24 14:42 编辑
liuzhaoyzz 发表于 2013-7-24 14:31
那个勾勾上和不勾上两种我都有,都试了,不行。
分区和格式化我在diskgenius里面F6直接快速分区,分为一个 ...


尝试过下载我做的Win7vhd解包到新建的VHD中吗?
先用win7的引导进去一下,再尝试Ram启动。
这样可以测试一下是否是F驱动的问题。

或者用Dg 3.5免费版试一下。
作者: liuzhaoyzz    时间: 2013-7-24 14:41
你的压缩包我下载了,和prosen的自解压包类似,我用的他的240M的7.658版本win7企业版,vhd已经能够正常引导,我觉得换另一个win7差别不大。
作者: 2011mking    时间: 2013-7-24 14:49
本帖最后由 2011mking 于 2013-7-24 14:52 编辑
liuzhaoyzz 发表于 2013-7-24 14:41
你的压缩包我下载了,和prosen的自解压包类似,我用的他的240M的7.658版本win7企业版,vhd已经能够正常引导 ...


用Dg3.5新建了一个VHD,你试一下。(我的和prosen的自解压包不一样,是已经装好并激活了的F驱的系统,不是从原始安装开始的)
Win7VHD.rar (1.23 MB, 下载次数: 29)
作者: thttht    时间: 2013-7-24 15:16
你用win7pe里的建立vhd和分区格式化,试试!!这样的很安全,兼容最好!

作者: liuzhaoyzz    时间: 2013-7-24 15:32
那电脑现在不在手边,有时间试试你的vhd。
系统是XP,所以想直接用Diskgenius建立VHD,只是觉得win7里面命令行太麻烦了。有空试下。
作者: fujianabc    时间: 2013-7-24 15:50
本帖最后由 fujianabc 于 2013-7-24 15:54 编辑
2011mking 发表于 2013-7-24 14:18
检查创建VHD过程是否一样,注意“立即分配全部硬盘空间”要选上。


感觉这个可能是diskgenius的问题,建议你还是用win7自带的功能创建,或者用vpc虚拟机来创建vhd

用这个vhdtool创建也可以,微软网站上的东西,创建vhd超快(很大的固定容量vhd也能瞬间完成创建),我也一直在用,比diskpart命令简单,
http://archive.msdn.microsoft.com/vhdtool
比如
vhdtool /create d:\win7.vhd 10000000000
作者: fujianabc    时间: 2013-7-24 16:02
2011mking 发表于 2013-7-24 14:18
检查创建VHD过程是否一样,注意“立即分配全部硬盘空间”要选上。

我也用diskgenius试了一下,diskgenius创建出来的vhd没问题。

但用diskgenius在vhd内创建分区并且格式化后,就有问题了,格出来的vhd分区连win7本身都认不了,挂载后显示是raw,而不是ntfs。

结论是:diskgenius的vhd内创建分区功能有问题,用其它软件在vhd内分区格式化吧
作者: liuzhaoyzz    时间: 2013-7-24 17:07
回头我试试看,奇怪了,diskgenius格式化出来的vhd,bootmgr能够直接从里面启动,而且启动之后C:盘也是NTFS的啊,怎么会win7挂载不了的?
如果说diskgenius创建的vhd有问题,那又有很多人用他创建成功并且map --mem启动了。

作者: 2011mking    时间: 2013-7-24 17:07
fujianabc 发表于 2013-7-24 16:02
我也用diskgenius试了一下,diskgenius创建出来的vhd没问题。

但用diskgenius在vhd内创建分区并且格式 ...


刚才试了,用DiskGenius 3.5 免费版创建的VHD并格式化(见16楼)在win7下可以正确挂载,不是RAW格式。(在VHD win7下挂载正常)

是否各位用的是破解版?
作者: liuzhaoyzz    时间: 2013-7-24 17:24
我用的diskgenius4.3免费版。
作者: liuzhaoyzz    时间: 2013-7-24 20:50
本帖最后由 liuzhaoyzz 于 2013-7-24 21:27 编辑

2011mking,
用你16楼的那个Win7VHD.vhd,一字未动,map --mem vhd都失败,你试过了吗?我手工输入下面的命令都提示错误,也是加载到内存的时候出错的。
find --set-root /RAMOS/Win7VHD.vhd
map --mem /RAMOS/Win7VHD.vhd (hd0)
第二条提示出错,grub4dos提示的意思是从文件分区表推算出来的扇区数比整个镜像的扇区数还要小,错误代码28,不能把镜像装入内存。内存应该够大,4G的。
所以是否用你的win7灌入已经不重要了。

IMG_20130724_205531.jpg (233.14 KB, 下载次数: 132)

IMG_20130724_205531.jpg

作者: liuzhaoyzz    时间: 2013-7-24 20:50
问下你的grub4dos是什么版本的?

作者: 2011mking    时间: 2013-7-24 21:26
本帖最后由 2011mking 于 2013-7-24 21:29 编辑
liuzhaoyzz 发表于 2013-7-24 20:50
2011mking,
用你16楼的那个Win7VHD.vhd,一字未动,map --mem vhd都失败,你试过了吗?我手工输入下面的命 ...



grldr版本不清楚,你下载的压缩包内有。好象是Grldr载入失败,加--top 参数试试。
作者: liuzhaoyzz    时间: 2013-7-24 21:29
刚刚把你那个win7灌入,等我试下,我直接用bootmgr引导就行了。

作者: liuzhaoyzz    时间: 2013-7-24 21:30
本帖最后由 liuzhaoyzz 于 2013-7-24 21:53 编辑

我下载的压缩包里没有grldr,你是不是记错了。
作者: 2011mking    时间: 2013-7-24 21:33
本帖最后由 2011mking 于 2013-7-24 21:40 编辑

传一个Grldr grldr.rar (135.8 KB, 下载次数: 30)

刚才又试了一下,正在Ram方式的win7下,没发现问题
title RAMOS-win7
find --set-root /win7.vhd
map --mem /win7.vhd (hd0)
map (hd0) (hd1)
map --hook
root (hd0,0)
chainloader /bootmgr
boot

下面是我用Diskgenius建的1.5G vhd的分区表文件。
1.5G Vhd 的Mbr.rar (1.46 KB, 下载次数: 11)


作者: liuzhaoyzz    时间: 2013-7-24 21:42
bootmgr引导vhd直接7b蓝屏了。硬盘没开ahci。

IMG_20130724_213803.jpg (257.57 KB, 下载次数: 128)

IMG_20130724_213803.jpg

作者: liuzhaoyzz    时间: 2013-7-24 21:45
把这个grldr配套的grldr.mbr传一个上来。
作者: 2011mking    时间: 2013-7-24 21:45
liuzhaoyzz 发表于 2013-7-24 21:42
bootmgr引导vhd直接7b蓝屏了。硬盘没开ahci。

AMD的CPU?我这个只用了注册表封装,可能不能适应所有的机子。

你用DiskGenius建1.5G的VHD,再导入我上面的分区表,灌你的VHD试试。
作者: liuzhaoyzz    时间: 2013-7-24 21:48
cpu intel core I5的。你上传个你用配套的grldr.mbr上来,我试试。
作者: 2011mking    时间: 2013-7-24 21:52
我找不到了,通常没有使用grldr.mbr的,就只用grldr,不知道是在哪个包里面了,我按字节大小找一下。
作者: liuzhaoyzz    时间: 2013-7-24 22:00
试了下,你的grldr是2012.12.31日的,0.4.6a版本,一样的不能map --mem。
所以fujianabc老大分析的很有道理,看了下vhdtool生成的vhd,winmount挂载不上,提示没有分区,难道要在win7或者pe3下分区格式化吗?
我用lianjiang前辈的windows vhd辅助工具在pe3下试下,他这个是基于diskpart的。

作者: 2011mking    时间: 2013-7-24 22:09
本帖最后由 2011mking 于 2013-7-24 22:20 编辑
liuzhaoyzz 发表于 2013-7-24 22:00
试了下,你的grldr是2012.12.31日的,0.4.6a版本,一样的不能map --mem。
所以fujianabc老大分析的很有道理 ...


可是我确实是成功了的呀。确实只用了Diskgenius建VHD,imdisk挂vhd,释放,可重复成功的呀!

这个是我的RamWin7,内存4G,Grub加载VHD用了1.5G,从图上可以看出来。


下图更清楚一点


刚才又试了几版Grldr都没问题,有点怀疑是Grub在你的机器上存在兼容性问题。
作者: 2011mking    时间: 2013-7-24 22:42
本帖最后由 2011mking 于 2013-7-24 22:44 编辑

还有一种可能,是winmount挂载灌入文件后保存时破坏了原始的MBR,试用Imdisk挂载VHD灌装文件测试一下。
作者: liuzhaoyzz    时间: 2013-7-24 23:03
本帖最后由 liuzhaoyzz 于 2013-7-24 23:07 编辑

你说的这种可能性可以排除了。刚才在PE下,直接右击我的电脑,进入磁盘管理,直接用PE3.0创建固定2g的vhd,初始化磁盘后分区,格式化,激活,直接用PE3.0挂载好,灌入win7,BOOTICE写引导后,bootmgr成功引导vhd里面的win7,再次尝试map --mem vhd,还是失败!菜单如下:

title win7--------ramos
find --set-root /RAMOS/win72g.vhd
map --mem /RAMOS/win72g.vhd (hd0)
map (hd0) (hd1)
map --hook
chainloader (hd0,0)/bootmgr
grub4dos提示的意思是从文件分区表推算出来的扇区数比整个镜像的扇区数还要小,错误代码28,不能把镜像装入内存。内存应该够大,4G的。
24楼的照片类似。http://bbs.wuyou.net/forum.php?m ... &fromuid=298214
PE3.0里面直接磁盘管理右击挂载所有的vhd都正常,没有出现RAM盘的现象。真是奇怪。

作者: 2011mking    时间: 2013-7-24 23:16
本帖最后由 2011mking 于 2013-7-24 23:20 编辑
liuzhaoyzz 发表于 2013-7-24 23:03
你说的这种可能性可以排除了。刚才在PE下,直接右击我的电脑,进入磁盘管理,直接用PE3.0创建固定2g的vhd, ...


所以说与dg没关系.
有一种导致grub计算出错的地方可能与你的硬盘分区有关(有可能Grub按硬盘簇大小来计算文件大小时就有误差了),将vhd放到U盘上试下.

格式化U盘为Ntfs,拷入win7启动文件和VHD,用BootICE修改一下U盘MBR,以Hdd方式启动的U盘来试验是否是硬盘分区的问题.
作者: liuzhaoyzz    时间: 2013-7-24 23:39
我也认为和diskgenius没有多大关系,因为PE3.0直接创建的vhd,grub4dos也不能map --mem。
geometry显示vhd都是以LBA模式读取的,grub4dos显示的H=255,S=63,而bootice则把所有的vhd文件判定为H=16,S=63,但是启动之后的C盘是H=255,S=63,有无矛盾?
手头暂时没有可用的优盘,没法测试。

作者: 2011mking    时间: 2013-7-24 23:52
liuzhaoyzz 发表于 2013-7-24 23:39
我也认为和diskgenius没有多大关系,因为PE3.0直接创建的vhd,grub4dos也不能map --mem。
geometry显示vhd ...

建议贴子改一下名字,请不点大大来分析一下.
作者: 不点    时间: 2013-7-25 08:44
我找不到你的 VHD 文件大小的任何信息。

grub4dos 在 map 时报内存不足,这已经说的很明白了。你没有足够的连续内存块来放置你的 VHD 文件。

虽然你有 4G 内存,但是 BIOS 将其划分成碎块,最大的碎块不足以用来放置你的 VHD 文件。

太普通的错误了,居然没有一个人意识到。

菜单内容也没贴出来,想研究也无法研究。


作者: 2011mking    时间: 2013-7-25 08:52
太幸运了,有不点大大指点肯定能解决你的问题。

不点大大,在16楼有个2G vhd liuzhaoyzz 测试过了,报错信息在24楼。起动菜单是
title win7--------ramos
find --set-root /RAMOS/win72g.vhd
map --mem /RAMOS/win72g.vhd (hd0)
map (hd0) (hd1)
map --hook
chainloader (hd0,0)/bootmgr

应该怎么解决?

作者: 不点    时间: 2013-7-25 10:16
目前的情况无解。

BIOS 把内存碎片化了,最大的连续内存块不足以放置你的 VHD 文件。

解决办法:增加内存(使得总内存达到 8G 即可),这样,4G 以上能够有连续的内存块用来放置 VHD 文件。


作者: 2011mking    时间: 2013-7-25 11:55
这个最大连续内存块不知道有多大?l不加内存条的情况下,只能缩小VHD的大小,测试出一个本机最大的连续内存块值了。
作者: liuzhaoyzz    时间: 2013-7-25 12:40
VHD是2G的,内存4G,"BIOS 把内存碎片化了,最大的连续内存块不足以放置你的 VHD 文件。"
什么都没有启动,bios这样,很无奈!
作者: liuzhaoyzz    时间: 2013-7-25 15:01
不点说的很对,我试了,用diskgenius建立1.85G固定大小vhd,分区格式化,winmount挂载后灌入WIN7,VHD里面的win7正常启动,map --mem vhd也正常启动。
map --mem 能改进在内存不要求连续存储吗?

作者: 不点    时间: 2013-7-25 15:24
本帖最后由 不点 于 2013-7-25 15:36 编辑
liuzhaoyzz 发表于 2013-7-25 15:01
不点说的很对,我试了,用diskgenius建立1.85G固定大小vhd,分区格式化,winmount挂载后灌入WIN7,VHD里面的 ...


这个要求 N 多年前就有人提出了。没人能够实现它,也或许是没人愿意实现它。总之,没有实现它。

从实践来看,众人要求实现它的愿望也并不迫切。大家都能忍受这样一个限制。

我总是把什么东西往哲学上 “套”,这全都是哲学。权衡的结果,没人愿意努力的结果,现有的已经够用的结果。总之,很多原因的综合结果。


既然谈到这里了,那么顺便再说点深刻的。即使 grub4dos 支持了碎片文件的映射,那也没多大用。必须要求 firadisk 以及 winvblock 也支持才行。那数据结构的改动太大,如果不是万不得已,尽量不要去动它。其实最难的是 GRUB4DOS 仿真代码的改动。12K 的仿真代码空间已经几乎用光了,没有足够的内存来支持这个改动。firadisk 的开发者 karyonix 曾经启动了这个工作,但至今没有进一步的消息。我想,可能是太困难了,或者太复杂了,或者后来觉得不值得去做了。
作者: hhuyf    时间: 2014-3-8 16:25
不点 发表于 2013-7-25 15:24
这个要求 N 多年前就有人提出了。没人能够实现它,也或许是没人愿意实现它。总之,没有实现它。

从 ...

请问大师  这就是我遇到的类似问题的原因吗
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

机器主板这么设置了  没法解决了?

作者: hawkerxh    时间: 2014-3-14 16:45
正在学习怎么加载xp的iso




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3