无忧启动论坛

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

[讨论] 非--mem形式 map iso镜像后读取文件失败的问题

[复制链接]
1#
发表于 2012-2-21 10:03:53 | 显示全部楼层
“在3台电脑上不能map而只能map --mem”,想问一下,你的菜单是怎么写的?
在保证ISO文件连续存放的前提下,那就是菜单的写法有问题了。
回复

使用道具 举报

2#
发表于 2012-2-21 10:52:48 | 显示全部楼层
我测试了一下很正常,你的问题属于对firadisk驱动不真正了解所致。
不多讲了,写出菜单:
title  Boot MYPE.ISO With map (no mem)
map --mem /boot/FIRADISK.IMG  (fd1)
map --mem (md)0x200+800 (fd0)
map --hook
dd if=(fd1) of=(fd0) count=1
set iso=/MYPE.ISO
find --set-root %iso%
map %iso% (0xff)
map --mem (md)0x200+4 (99)
map --hook
echo [FiraDisk] > (99)+1
echo StartOptions=cdrom,vmem=find:%iso%; >> (99)+1
chainloader (0xff)

Snap1.jpg (52.68 KB, 下载次数: 109)

Snap1.jpg
回复

使用道具 举报

3#
发表于 2012-2-21 12:50:47 | 显示全部楼层
测试了一下,确实有点奇怪,往MYPE.ISO中复制一些文件后,加载了外挂。
回复

使用道具 举报

4#
发表于 2012-2-21 13:11:40 | 显示全部楼层
下面是5#的mype.iso两种方式加载的情况,不点大与C大看一下,这个ISO已连续存放,为何总扇区数不一样?
(0xff)是map方式的,(hd32)是map --mem加载的。
map --mem按照8的倍数,很正常!
map不是8的倍数,难道问题在这里?

[ 本帖最后由 zhaohj 于 2012-2-21 13:17 编辑 ]

Snap1.jpg (65.1 KB, 下载次数: 91)

Snap1.jpg
回复

使用道具 举报

5#
发表于 2012-2-21 14:40:23 | 显示全部楼层
文件大小=0x3706800,按每扇区512字节计算=0x1b834扇区数;按每扇区2048字节=0x6e0d扇区数
cat --hex (0xff)0x6e0c+1
显示结果正常。
回复

使用道具 举报

6#
发表于 2012-2-21 15:43:55 | 显示全部楼层
加了--mem的,cat最后一个扇区应该是cat --hex (0xff)0x6e0d+1,我这里正常!
回复

使用道具 举报

7#
发表于 2012-2-22 09:11:27 | 显示全部楼层
我们不要忘这一点:map --mem 这个ISO文件是正常的。
这就排除了ISO文件有bug的情况。也验证了firadisk或winvblk在map --mem情况下是正常的。

现在范围缩小了,map非mem下firadisk或winvblk有bug
回复

使用道具 举报

8#
发表于 2012-2-22 12:37:35 | 显示全部楼层
通过多次测试,发现这样一个规律(map非mem):
1:当文件大小是4k的整数倍时,肯定成功;
2:当文件大小不是4k的整数倍时,往ISO中加入大于等于4KB的一个文件,肯定成功。
回复

使用道具 举报

9#
发表于 2012-2-22 14:39:55 | 显示全部楼层
是这样的,ULTRAISO修改过的最后放进去的文件,map后都会被windows api 丢弃。
可以这样做试验:在mype.iso中先导出minipe\winpe.ini,导出后删除minipe\winpe.ini,保存ISO;再把winpe.ini拖进原位置,保存ISO。
你会发现出现蓝屏。
这个试验证明lba最大的文件,无法被windows api 识别。
而grub4dos实模式下我查看是正常的。下面的图是按上面方法修改的最后导进去的bliss.jpg文件,LBA最大。

Snap1.jpg (102.6 KB, 下载次数: 96)

Snap1.jpg
回复

使用道具 举报

10#
发表于 2012-2-22 14:56:45 | 显示全部楼层
原帖由 Plantsoot 于 2012-2-22 14:45 发表
为什么人为在文件尾部增加4k的空间后,又不抛弃了?


感觉是windows api丢弃了4k余数部分,人为在ISO文件尾部增加4k后,所有的文件都不在这4k中,即所有文件完整的。
map --mem为何成功,因为map --mem是4k的整数倍。
回复

使用道具 举报

11#
发表于 2012-2-22 15:11:20 | 显示全部楼层
奇怪,上面的正好是4k的整数倍,难道map --mem后丢弃了4k?
能否测试一下加个4k的文件后,map --mem能否成功?
回复

使用道具 举报

12#
发表于 2012-2-24 10:04:43 | 显示全部楼层
哇,竟然破坏了2KB,直接给出证据:
偏移0x3706000~0x37067ff的最后2kb数据破坏

[ 本帖最后由 zhaohj 于 2012-2-24 10:09 编辑 ]

Snap1.jpg (333.02 KB, 下载次数: 110)

Snap1.jpg
回复

使用道具 举报

13#
发表于 2012-2-24 10:33:44 | 显示全部楼层
分析一下:这个iso占用0x3706800个字节,共56346kb,除4后余2,正好2KB被破坏。
4k对齐我理解适合map --mem方式,而不适合map非mem方式。

[ 本帖最后由 zhaohj 于 2012-2-24 11:27 编辑 ]
回复

使用道具 举报

14#
发表于 2012-2-24 14:46:24 | 显示全部楼层
再补充两幅图(map非mem方式):

[ 本帖最后由 zhaohj 于 2012-2-24 14:56 编辑 ]

Snap1.jpg (160.38 KB, 下载次数: 87)

Snap1.jpg

Snap2.jpg (210.7 KB, 下载次数: 81)

Snap2.jpg

Snap3.jpg (203.99 KB, 下载次数: 108)

Snap3.jpg

Snap4.jpg (63.58 KB, 下载次数: 118)

Snap4.jpg
回复

使用道具 举报

15#
发表于 2012-2-24 15:57:39 | 显示全部楼层
我上面所有贴出的是不带 --mem 的情况。
---------------------
现在基本可以确定,驱动程序不支持“ 非4K 对齐 ”的扇区,并且驱动程序把 4K 的余数部分,用unreadablesector这种方式把4K 的余数部分填充了
刚又做了个试验,把ISO文件处理成4K 对齐,而且把wim文件的LBA搞成最大(导出导入就可),完美实现虚拟光盘中所有扇区数据正常。
回复

使用道具 举报

16#
发表于 2012-2-24 16:36:47 | 显示全部楼层
这样做了个试验:
!BAT
/srsf6/srsf6n fira
map --mem (hd0,4)/mype.iso (0xff)
map --hook
map --mem (md)0x200+4 (99)
map --hook
echo [FiraDisk] > (99)+1
echo StartOptions=cdrom,vmem=find:/mype.iso; >> (99)+1
chainloader (0xff)
boot

下面的F盘是map --mem虚拟的,G盘相当于map虚拟的
F盘内容正确,G盘有问题,破坏正好的0x800=2kb,即4kb的余数部分。

[ 本帖最后由 zhaohj 于 2012-2-24 16:41 编辑 ]

Snap1.jpg (27.64 KB, 下载次数: 86)

Snap1.jpg

Snap2.jpg (131.1 KB, 下载次数: 89)

Snap2.jpg

Snap3.jpg (127.43 KB, 下载次数: 85)

Snap3.jpg
回复

使用道具 举报

17#
发表于 2012-2-24 17:23:40 | 显示全部楼层
有一点我不明白,map --mem会自动4K对齐,如下面的扇区总数是0x1b838=0x3707000字节,那为何在windows下查看虚拟光驱的总字节数是0x3706800?
少了0x800字节,即2KB.

Snap1.jpg (52.42 KB, 下载次数: 95)

Snap1.jpg

Snap2.jpg (81.71 KB, 下载次数: 96)

Snap2.jpg
回复

使用道具 举报

18#
发表于 2012-2-29 11:40:50 | 显示全部楼层
目前的讨论结果已经很明朗了:
map --mem会自动4K对齐;
map非mem一个连续存放在本地的镜像,因为制作时如果不是4K对齐,FIRADISK或winvblk驱动会自动丢弃4K模的余部,驱动程序用固定的一组字符串填充它。这样造成包含在余部的文件无法读取。
------------------
解决办法:
1:镜像制作成4K对齐;
2:镜像用ultraiso等工具最后另加入一个大于等于4k的任意文件。

这是驱动程序的限制,目前无解。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-22 03:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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