无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8252|回复: 22
打印 上一主题 下一主题

[求助] MAP MEM VHD报错

[复制链接]
跳转到指定楼层
1#
发表于 2013-1-13 23:17:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
情况如下:
闪迪CZ80 32G U盘
上面放了个12G的VHD

若把U盘格式化为NTFS,且U盘内只有这个VHD文件,可以成功map mem进入ramos win7

若把U盘格式化为EXFAT,且U盘内只有这个VHD文件,则报错,error 13 :Invalid or unsupported executable ........
报错后进入命令行用uuid查看,可以看到VHDmap出的hd0,用ls命令可以列出hd0中的目录

试过g4d版本0.4.6a  2012.12.31
0.4.5c  2012.12.05
结果是一样的

title Full RamOS (Windows 7) USB
find --set-root /Ramos7/win7u.vhd
map --mem --top /Ramos7/win7u.vhd (hd0)
map (hd0) (hd2)
map --hook
chainloader (hd0,0)/bootmgr
2#
发表于 2013-1-14 09:07:18 | 只看该作者
感到比较蹊跷。

初步怀疑,exFAT 的驱动程序有 bug。

既然都是映射到内存,那么,差别应该不大才对。

而在 exFAT 的情况下,chainloader (hd0,0)/bootmgr 导致 Error 13 失败信息,说明 bootmgr 已经被破坏。这间接说明了,从 exFAT 读 VHD 文件的扇区数据的时候,读错了位置。因此怀疑是 exFAT 驱动程序的问题。

也有另外一种可能,那就是,当格式化为 NTFS 时,BIOS 能够以 LBA 模式访问 U 盘,因而没有出现问题。而当格式化为 exFAT 时,BIOS 对于这个 exFAT 感到陌生,不认识这个 exFAT,因此,BIOS 可能不采用 LBA,而只采用 CHS 模式,当然要出问题了。因为 CHS 模式最大只能访问 U盘上 8G 的内容。

你可以在那条 find 命令之后立即用 geometry () 命令,查看 VHD 所在盘是否支持 LBA。
回复

使用道具 举报

3#
 楼主| 发表于 2013-1-14 17:52:29 | 只看该作者
收到,今晚试试 geometry
回复

使用道具 举报

4#
 楼主| 发表于 2013-1-14 18:56:50 | 只看该作者
find --set-root /Ramos7/win7u.vhd
geometry ()

得到结果
drive 0x81(LBA): C/H/S = 3893/255/63, Sector Count  / Size = 62541045/512
Partition num:0, Filesystem type is fat, partition type 0x07
回复

使用道具 举报

5#
发表于 2013-1-14 19:07:51 | 只看该作者
结果表明,支持 LBA。

那么就怀疑是 exFAT 驱动程序的 bug 了。等待 yaya,看看他有没有什么看法。
回复

使用道具 举报

6#
发表于 2013-1-15 11:04:08 | 只看该作者
测试环境:
朗科 N100  250M u盘,exfat 分区
搭载 100M ntfs 分区的 vhd

菜单:
title bcd USB
find --set-root /Ramos7/bcd.vhd
map --mem --top /Ramos7/bcd.vhd (hd0)
map (hd0) (hd2)
map --hook
chainloader (hd0,0)/bootmgr

从u盘启动,一切OK!
回复

使用道具 举报

7#
 楼主| 发表于 2013-1-15 11:56:51 | 只看该作者
100M的 VHD
我也是正常的
12G的就error13了

我再换一个U盘试试,看看是不是CZ80特例,一会来反馈
不过是usb2.0的,拷12G进去好累

[ 本帖最后由 2011star21cn 于 2013-1-15 12:01 编辑 ]
回复

使用道具 举报

8#
 楼主| 发表于 2013-1-15 12:44:20 | 只看该作者
换了一个USB2.0的16G u盘
exfat依然是error13
回复

使用道具 举报

9#
发表于 2013-1-15 13:39:09 | 只看该作者
请把 exfat 分区参数贴上来。(启动分区1扇区数)
回复

使用道具 举报

10#
 楼主| 发表于 2013-1-15 15:09:34 | 只看该作者

回复 #9 2011yaya2007777 的帖子

我是小菜鸟
请问如何得到这个参数?
用什么命令?
回复

使用道具 举报

11#
发表于 2013-1-15 16:03:56 | 只看该作者
使用 BOOTICE (在综合区顶部):
1. 在“物理磁盘处理”选项卡,从“目标磁盘”选择你的磁盘,点“扇区编辑”
2. 观察 0x01c6 的值(是 16 进制,比如 20 即 32, 3f 即 63 )
3. 点顶部输入框(现在应当是 0),输入上述对应的十进值(如32,63),点“确定”
4. 点顶部“备份扇区到文件”,在“选择备份文件”输入框写入文件名,如“aaa”,点“备份”
回复

使用道具 举报

12#
 楼主| 发表于 2013-1-15 16:38:58 | 只看该作者
不知道做的对不对
我看到偏移1C6处是80,于是换成10进制128,输入进去查看是一个全0的图
我这个U盘不是启动盘,只是把vhd文件放在了U盘

01.PNG (57.21 KB, 下载次数: 101)

01.PNG

02.PNG (53.36 KB, 下载次数: 86)

02.PNG
回复

使用道具 举报

13#
发表于 2013-1-15 16:46:15 | 只看该作者
是0x1f80,对应的是8064,把8064扇区贴上来
回复

使用道具 举报

14#
 楼主| 发表于 2013-1-15 17:02:23 | 只看该作者
8064的图和bin备份

03.PNG (53.96 KB, 下载次数: 97)

03.PNG

8064.zip

350 Bytes, 下载次数: 3, 下载积分: 无忧币 -2

回复

使用道具 举报

15#
发表于 2013-1-15 17:29:39 | 只看该作者
看来每簇扇区数=32k,也不大。得研究一下内核。
回复

使用道具 举报

16#
发表于 2013-1-15 21:48:02 | 只看该作者
上面放了个 12G 的 VHD,而且还 --mem ,那内存有越多大?
回复

使用道具 举报

17#
 楼主| 发表于 2013-1-15 23:31:00 | 只看该作者
16G内存,也不算大啊,现在内存便宜了
回复

使用道具 举报

18#
发表于 2013-1-20 15:57:33 | 只看该作者
看来一下 fsys_fat.c ,2个因素。
1. g4d 内核是 32 位的,缓存指针是 32 位,意味着内存不能超过 4G。
2. 虽然 exfat 文件名字节长度使用 8 字节,但内核只读取了低 4 字节,也就是把 12G 的零头装进了内存。
回复

使用道具 举报

19#
发表于 2013-1-20 20:31:44 | 只看该作者
但 NTFS 分区是可以超过 4G 的。

你想想,一定能够解决。

map --mem 会把很大的文件装到 4G 以上的空间。

虽然 grub4dos 本身的代码运行于 32 位保护模式,但是,内存处理部分已经完全支持 64 位了。

有两套函数都在使用,一套是 4G 以内的(32位),一套是 64 位的。

你再仔细看看吧。
回复

使用道具 举报

20#
发表于 2013-1-30 13:34:55 | 只看该作者
Re 2011star21cn:
请测试。

请有条件的网友测试:在exfat分区放置1个大于4Gb的硬盘映像文件,然后使用grldr加载。

[ 本帖最后由 2011yaya2007777 于 2013-1-30 13:38 编辑 ]

grldr.7z

132.01 KB, 下载次数: 17, 下载积分: 无忧币 -2

回复

使用道具 举报

21#
 楼主| 发表于 2013-1-31 11:19:31 | 只看该作者
看到了,这就试一下,谢谢yaya
回复

使用道具 举报

22#
 楼主| 发表于 2013-1-31 20:59:06 | 只看该作者
问题解决了,顺利进去ramos
回复

使用道具 举报

23#
发表于 2013-2-1 08:34:50 | 只看该作者
谢谢2011star21cn认真反馈bug,耐心测试!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-22 22:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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