无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2011yaya2007777
打印 上一主题 下一主题

支持含有碎片的文件仿真

    [复制链接]
61#
发表于 2014-11-1 16:09:49 | 显示全部楼层
不点 发表于 2014-11-1 15:59
0.4.5 本来就有 --in-situ 支持。如果没有,如果它的含义不明确,你凭什么让 yaya 加上?

》》0.4.5 本来就有 --in-situ 支持。如果没有,如果它的含义不明确,你凭什么让 yaya 加上?
原来的 --in-situ  只有标准功能。 将一个分区模拟成一个硬盘。也就是说本来就是一个分区(主分区或逻辑分区),也要有分区表。
标准分区是没问题的。
现在要的是 硬盘随机存放的是一个IMG, 其前面没有对应的分区表。
本楼有相关的帖子。

0.45c还是失败:
回复

使用道具 举报

62#
发表于 2014-11-1 16:46:49 | 显示全部楼层
不点 发表于 2014-11-1 16:20
其一,既然0.4.5没有这功能,你又是怎么完成上面测试的?

其二,两者的出错信息不同。0.4.5是未能识别 ...


>>其一,既然0.4.5没有这功能,
0.45c 也在同步更新, 助手2014-10-29的版本。
我以为0.45c “定”型了。

》》假如你换个普通的 iso 文件,0.4.5 就不会报错了。你不妨用个普通的 iso 文件试试。
这就是 普通ISO。ezboot直接生成的,没有任何修改。
显示的不同, 问题可能是同一问题。只是程序流程不同。 问题最先“蔓延”的“检测”点不同,因而提示不同。
因该还是 读磁盘问题。
Data err 是基本服务。  “cannot mount” 是高层服务。 可能仅次而已。
用---mem就没问题。
可能还是分区表 模拟问题。


回复

使用道具 举报

63#
发表于 2014-11-1 17:49:54 | 显示全部楼层
不点 发表于 2014-11-1 16:54
据我所知,0.4.5的仿真功能没改动过。一直是支持仿真扇区序列的。

0.4.5的报错,含义是未识别出文件系 ...

mkisofs 弄了个小的grub.iso grub.ISO.7z (139.05 KB, 下载次数: 1)



还是不行的。




-------------对比----------
我在IMG前面加上一个分区表,就没问题(45c,46):

点评

首先需要确认执行map命令时的文件是否和你存的文件一致 使用cat --hex命令可以看到文件内容。 使用qemu测试的话,有时候会有一个延迟,即刚在windows下写入的文件,并不能立即使用。  详情 回复 发表于 2014-11-1 18:08
回复

使用道具 举报

64#
发表于 2014-11-1 18:34:54 | 显示全部楼层
本帖最后由 mdyblog 于 2014-11-1 18:41 编辑
chenall 发表于 2014-11-1 18:08
首先需要确认执行map命令时的文件是否和你存的文件一致

使用cat --hex命令可以看到文件内容。


文件没问题的。
因为如果有问题, --mem模式也会有问题的, 分析对吗?
下面是对比图:

点评

我用qemu测试了下,没有发现问题。 也许是和文件系统有关系? 不能mount你可以用类似如下命令看一下内容是否有问题。 cat --hex (hd32)+10  详情 回复 发表于 2014-11-1 19:06
回复

使用道具 举报

65#
发表于 2014-11-1 19:59:00 | 显示全部楼层
本帖最后由 mdyblog 于 2014-11-1 20:04 编辑
chenall 发表于 2014-11-1 19:06
我用qemu测试了下,没有发现问题。

也许是和文件系统有关系?


我把测试的IMG给你,你按下面的图试试(保证IMG连续存放)。 测试-IMG.7z (141.45 KB, 下载次数: 1)
P.IMG 是分区IMG,没有分区表。---失败




HD.IMG是磁盘IMG,有分区表。--OK




-----
如果 我给你的P.IMG的确失败。
你可以将里面的grub.iso换成你的ISO再试试(IMG容量只有4.9M,所以得小的ISO)
回复

使用道具 举报

66#
发表于 2014-11-2 07:33:29 | 显示全部楼层
本帖最后由 mdyblog 于 2014-11-2 07:44 编辑
不点 发表于 2014-11-1 22:47
我估计确实是个 bug,为了程序的完美,应该解决。

另一方面,mdyblog 可以绕过这个 bug,即,不使用 --i ...

谢谢!

我用的--in-situ 的目的, 为了避免兼容问题。
MS的系统,磁盘启动就 (hd0,x)  (fd0)     【(fd1)理论上可用,实际很多程序里面没有考虑B:】
有些辅助启动的grub4dos小程序,将(fd0) 占用,小程序返回时,原来的(fd0)搞没了。
所以后来默认用(hd0,0), 没有哪个小程序会将(hd0,0) 搞没的。

还有,有些程序,还是需要硬盘。

先将就着吧。等新版grub吧.


============
》》--in-situ 设计的目的,不是像你这样的使用,它主要是为了应付 Win98 才设计出来的。通常是用不上的。你把它作为一个中间过渡虚拟盘来用,其本身就不是常规用法。--in-situ 的盘作为中间过渡盘来用,
----
现在基本上是搭积木。
一个程序加载一个环境。
另一个人,在这个环境上,又来虚拟一个存储设备。
问题就是这么出来的。
还有,有些程序,还是需要硬盘。

---
正如楼上C大所说, 无分区表扇区序列(IMG)直接 --in-situ 仿真硬盘,还是很有用的。
设计者和使用者看问题不同。
东西一旦设计出来, 使用者就是新的设计者,会设计出新的使用,而这可能是原来的设计者没有现象到的或没有重视的。

点评

正如前面提到的,大多数情况下可以使用 partnew 来 “实做”,取代 --in-situ 的 “弄虚作假”。如果你非要使用 --in-situ,那就等着修复 bug。  详情 回复 发表于 2014-11-2 10:25
回复

使用道具 举报

67#
发表于 2014-11-2 09:15:42 | 显示全部楼层
麻烦再问个问题: 什么命令可打开 grub4bdos的多扇区读(写)加速功能?

点评

geometry --lba127sector 后面可以跟着一个盘号,比如 (hd0) 或 (fd0) 之类的。如果不跟参数,那就对当前盘(即,当前 root 设备所在的磁盘)进行操作。 默认时已经是 geometry --lba127sector 的了,所以,你无  详情 回复 发表于 2014-11-2 10:38
回复

使用道具 举报

68#
发表于 2014-11-2 10:19:20 | 显示全部楼层
chenall 发表于 2014-11-2 09:29
谢谢,这样子就比较清楚了..

另外能不能麻烦再解释一下另一个 --in-place的用途,和--in-situ的区别

对呀!
map  --in-place  ...  是何方神圣?什么时候加的。
grub4dos 随时跟进的说明书在哪儿啊? 我一直用2008的说明书,最近才用上2014-8月的。
为什么 不随发行包一起发行?

点评

是未公开的,不想让普通人使用的参数。一开始就支持这个参数。在能够使用 --in-situ 的情况下,尽量不要使用 --in-place。  详情 回复 发表于 2014-11-2 10:49
回复

使用道具 举报

69#
发表于 2014-11-2 13:19:38 | 显示全部楼层
不点 发表于 2014-11-2 12:49
不用任何提示。就像 C 键与 Insert 键一样,都没有提示。如果你想给 S 键一个提示,也是可以的。比如, ...

请问 Insert 键 按下有什么功能/效果?

点评

调试启动失败的时候,使用 Insert 可以在启动时,单步跟踪关键步骤的执行,每一步执行完成,会暂停,显示调试信息,并等待按键进入下一步的跟踪。  详情 回复 发表于 2014-11-2 13:44
回复

使用道具 举报

70#
发表于 2014-11-2 14:51:02 | 显示全部楼层
不点 发表于 2014-11-2 12:41
请 mdyblog 试试这个版本,估计问题应该解决了。如果解决,就可以提交。

更新:刚刚改正了错误,请下载 ...

grub4dos-0.4.5c-2014-11-02.7z (下载这个,如果没问题,就可以提交。)

--------------------
这个成功了。
如图:



有没有 0.46版的啊?

点评

马上就会有。chenall 提交以后,会自动为 0.4.6 打上补丁。  详情 回复 发表于 2014-11-2 14:57
回复

使用道具 举报

71#
发表于 2014-11-2 17:00:45 | 显示全部楼层
麻烦再请教2个问题:
1。怎么修改grldr/grub.exe的长度?在内置菜单前面加一些数据,
(1) 内置菜单编辑软件不回把它当作内置菜单的一部分。
(2) grub启动后,作为.TEXT(或.DATA)加载到内存,且位置能计算出来,怎么计算?


2. 哪块内存, 启动新的grldr/grub.exe 后不会被破坏?
想传递点数据。(启动过程不受我控制)
回复

使用道具 举报

72#
发表于 2014-11-3 09:52:56 | 显示全部楼层
不点 发表于 2014-11-2 17:53
我想不到有什么办法。

大概只能把自己的数据放在内置菜单尾部,自己想办法处理。内置菜单在内存中的位置 ...

再在请教:
哪块内存, 启动新的grldr/grub.exe 后不会被破坏?
想传递点数据。(启动过程不受我控制)
回复

使用道具 举报

73#
发表于 2014-11-3 10:32:09 | 显示全部楼层
本帖最后由 mdyblog 于 2014-11-3 10:37 编辑
不点 发表于 2014-11-2 14:57
马上就会有。chenall 提交以后,会自动为 0.4.6 打上补丁。


0.46a更新了, 成功了。
回复

使用道具 举报

74#
发表于 2014-11-3 14:48:53 | 显示全部楼层
不点 发表于 2014-11-3 10:39
1。映射的虚拟内存盘,是 BIOS 级的,其作用范围是所有的操作系统,就是说,所有的操作系统都不会破坏虚拟 ...

>>常规内存顶部的一些空间,grub4dos 的内核不用,
谢谢。
能给出准确的地址(md)XX+YY码?

还有个图,debug时偶然出来的,请问怎么回事?

途中红色部分 “S1[”  和“

点评

这是DEBUG调试信息,主要是调试批处理脚本使用的. 显示的是要执行的命令行. 用debug 3时才会出现.  详情 回复 发表于 2014-11-3 16:04
回复

使用道具 举报

75#
发表于 2014-11-3 16:23:01 | 显示全部楼层
chenall 发表于 2014-11-3 16:04
这是DEBUG调试信息,主要是调试批处理脚本使用的.
显示的是要执行的命令行.

谢谢。
我用 debug 3
大部分情况现不出这个。
只是偶尔,不知道怎么按出来的。
觉得挺好(能显示结尾的空格)。所以问问怎么确定弄出来。
回复

使用道具 举报

76#
发表于 2014-11-3 16:30:32 | 显示全部楼层
不点 发表于 2014-11-3 16:21
debug 显示的信息,一般用于排错,定位 bug。看不懂没关系(你图片中的这些内容,我也不太了解),只要平时 ...

谢谢!
那还是试试这个:“1。映射的虚拟内存盘,是 BIOS 级的”
怎快速 用(fd20)锁定一段4K内存(被fd20占用), 并能得到其地址。
我可以用来作为数据区。
下面是示意命令:
map  --mem --top len=0x2000   (fd20)
..getaddr (fd2) to buf_var

点评

还真有这个功能,很早就实现了的..^_^,不过好像没有公开, 只是我自己有在用. map --mem (md)+8 (20) map --hook map --status=20 set buf_var=%?%  详情 回复 发表于 2014-11-3 17:13
回复

使用道具 举报

77#
发表于 2014-11-3 17:50:08 | 显示全部楼层
chenall 发表于 2014-11-3 17:13
还真有这个功能,很早就实现了的..^_^,不过好像没有公开, 只是我自己有在用.

map --mem (md)+8 (20)
...

太好了!
热泪盈眶啊!!!!!
谢谢!
回复

使用道具 举报

78#
发表于 2014-11-3 18:15:49 | 显示全部楼层
反映一个碰到现象,不知道是否是BUG。
(hd0,2)上的一个连续的HD.IMG还是上次的HD.IMG),有分区表,用扇区序列map是有问题。IMG直接map没问题。
对比见图。

HD.IMG.7z

140.65 KB, 下载次数: 2

点评

你能否说说 0.4.5 和 0.4.6 哪个有问题?或者是都有问题?  详情 回复 发表于 2014-11-3 19:42
回复

使用道具 举报

79#
发表于 2014-11-3 20:51:59 | 显示全部楼层
不点 发表于 2014-11-3 19:42
你能否说说 0.4.5 和 0.4.6 哪个有问题?或者是都有问题?


图片上 标题有(0.46a-2014-1102)
回复

使用道具 举报

80#
发表于 2014-11-4 15:02:07 | 显示全部楼层
chenall 发表于 2014-11-3 20:00
我测试了一下,是0.4.6a的问题..

0.4.6a的blocklist命令显示的数据不对,请yaya有空看一下,没空的话我明天 ...


今天下载了0.46 2014-1103, 这个更新了这个问题吗?
测试还没有啊。
回复

使用道具 举报

81#
发表于 2014-11-4 16:42:25 | 显示全部楼层
2011yaya2007777 发表于 2014-11-4 15:06
已经修正,并且上传。

这个版本好了。
回复

使用道具 举报

82#
发表于 2014-11-4 16:49:16 | 显示全部楼层
2011yaya2007777 发表于 2014-11-4 15:06
已经修正,并且上传。

无分区表P.IMG测试也正常:
回复

使用道具 举报

83#
发表于 2014-11-14 18:02:01 | 显示全部楼层
本帖最后由 mdyblog 于 2014-11-15 08:48 编辑

反映一个问题, 不知道 是 G4D的问题 , 还是 PE启动器的问题, 还是 使用不当(超范围使用)



=================
1:

图1:


图2:





=================
2:过程如下:
说明: 只有一个硬盘,没有CDROM、软盘)
1) 启动后 map  硬盘上的一段扇区序列 为 (hd0)
map   (hd0)0x1000+0x2000  (hd0)
map   (hd0)  (hd1)
map  --rehook
root  (hd0,1)

2) 然后 一程序 又加载 (hd1) 一段扇区序列 为 (hd0)
map   (hd1)0x4000+0xC8000000  (hd0)
map   (hd0)  (hd2)
map  --rehook
root  (hd0,0)
map --status
就是图1

//下面启动 2003PE
chainloadr  /ntldr
boot

出现上面的 图2的错误.

-------------------
X1)如果没有1)步,直接2)步,启动没问题的。
map   (hd0)0x4000+0xC8000000  (hd0)
map   (hd0)  (hd1)
map  --rehook
root  (hd0,0)
chainloadr  /ntldr
boot
成功


=================
3: 请教:
图1那个 map --status 怎么判读啊?
就是2次map 出问题了.
这是什么问题?

回复

使用道具 举报

84#
发表于 2014-11-15 09:11:40 | 显示全部楼层
不点 发表于 2014-11-14 23:26
你的步骤标号有点乱,有两个第三步。根据自己的理解,给以答复。

先翻译一下 windows 出错信息,如下:
...

楼上帖子,重新整理了,麻烦再看看。

》》你创建的 hd1 和 hd2 都是克隆本地硬盘 hd0。
hd1 和 hd2 , 只是  克隆本地硬盘 hd0 的 一部分而已,应该是 不同的磁盘。怎么会出问题?

如果说 只要是克隆本地硬盘, 原来的 克隆本地硬盘 也不删掉,  就非法, 那么后面一步映射法时,为什么不出问题?
此时 hd1 只是  克隆本地硬盘“R-hd0” 。hd1 就是 R-hd0.
对比
分片模拟盘   本地硬盘(R-hd0)
2步法: hd0=R-hd0-片1        hd1=1R-hd0-片2 hd2=R-hd0
1步法: hd0=R-hd0-片2 hd1=R-hd0


》》hd2 是多余的,
如果这样,“一步法” 中  hd1 也是“多余的”?
关键是 这个hd2还不能删除。
hd2 保存是原始的磁盘,完全的信息。丢了, 后面就麻烦了。
启动PE时也不一定可以删除hd2,有的PE,还是要从原始的磁盘 加载文件。
因为  2步法 中的加载, 就是 1步法 执行2次 而已。

如果程序删掉(hd2),那么在第一轮中,同样代码会删除 hd1。  这样 丢失了 原始的磁盘, 第二轮 找不到 分片源, 而无法进行。

----用grub4dos 做2次开发, 和直接用不同, 很多东西不能控制。
不知道我分析的对不对?
回复

使用道具 举报

85#
发表于 2014-11-15 10:37:10 | 显示全部楼层
本帖最后由 mdyblog 于 2014-11-15 10:41 编辑
不点 发表于 2014-11-14 23:26
你的步骤标号有点乱,有两个第三步。根据自己的理解,给以答复。

先翻译一下 windows 出错信息,如下:
...


直接 做个Mini测试包(19M) 给你们测试吧, 比码字强多了。
链接: http://pan.baidu.com/s/1bnjdvaR 密码: 8ysa
测试方法(嗯图片,测试工具,IMG, 包内具有):


菜单说明:
1)下面是1步法, 能启动
  1. title OneStep
  2.         map --in-situ (hd0,0)/PE.IMG  (hd0)
  3.         map (hd0)  (hd1)
  4.         map --rehook
  5.         root (hd0,0)
  6.         chainloader /ntldr
  7.         boot
复制代码

下面是2步法,PE不能启动:
  1. title TwoStep
  2.         map (hd0,0)/HD.IMG  (hd0)
  3.         map (hd0)  (hd1)
  4.         map --rehook
  5.         root (hd0,1)
  6.         map --in-situ (hd1,0)/PE.IMG  (hd0)
  7.         map (hd1)  (hd2)
  8.         map --rehook
  9.         root (hd0,0)
  10.         chainloader /ntldr
  11.         boot
复制代码

点评

这个后面的map (hd1) (hd2)是多余的. 你这些命令执行之后第一条命令map (hd0,0)/HD.IMG (hd0)是没有作用的. 被 map --in-situ (hd1,0)/PE.IMG (hd0)覆盖了. 另外你这些命令执行最后的结果就是hd0和hd1,hd2  详情 回复 发表于 2014-11-15 11:12
请等待我给菜单加说明。  详情 回复 发表于 2014-11-15 11:07
回复

使用道具 举报

86#
发表于 2014-11-15 11:16:56 | 显示全部楼层
不点 发表于 2014-11-15 11:07
请等待我给菜单加说明。

菜单我明白, 就是我写的。
1) 就是 map -status 输出的那几行映射表, 看不明白。

2) 为是  TWOStep 不能启动。
   都是 “正常”的用法。

点评

map --status 显示信息里面,关键的几个指标是 Fr ------- 表示创建的虚拟盘的盘号。 To ------ 表示究竟是在哪个真实盘上创建这个虚拟盘的。 start sector ------ 表示用于创建虚拟盘的起始扇区号,这是  详情 回复 发表于 2014-11-15 11:55
回复

使用道具 举报

87#
发表于 2014-11-15 11:19:39 | 显示全部楼层
本帖最后由 mdyblog 于 2014-11-15 11:45 编辑
chenall 发表于 2014-11-15 11:12
这个后面的map (hd1) (hd2)是多余的.

你这些命令执行之后第一条命令map (hd0,0)/HD.IMG  (hd0)是没有 ...


>>这个后面的map (hd1) (hd2)是多余的.

哦, 写错了个数字,应该是:
  1. map (hd0) (hd2)
复制代码

我在测试下.

menu.7z

290 Bytes, 下载次数: 0

回复

使用道具 举报

88#
发表于 2014-11-15 11:21:57 | 显示全部楼层
chenall 发表于 2014-11-15 11:12
这个后面的map (hd1) (hd2)是多余的.

你这些命令执行之后第一条命令map (hd0,0)/HD.IMG  (hd0)是没有 ...


title TwoStepNew:FAIL
        map (hd0,0)/HD.IMG  (hd0)
        map (hd0)  (hd1)
        map --rehook
        root (hd0,1)
        map --in-situ (hd1,0)/PE.IMG  (hd0)
        map (hd0)  (hd2)
        map --rehook
        root (hd0,0)
        chainloader /ntldr
        boot
还是 失败:

点评

简化一下就不会有问题了. map (hd0,0)/HD.IMG (hd2) map --in-situ (hd0,0)/PE.IMG (hd0) map (hd0) (hd1) map --rehook chainloader (hd0,0)/ntldr boot  详情 回复 发表于 2014-11-15 11:46
你这个 hd2 又变成hd.img的虚拟克隆盘了。你贴出 map --status,应该与上次不同。 如果相同,那就是 bug 了。试试 0.4.5 和 0.4.6 是否一样?  详情 回复 发表于 2014-11-15 11:40
回复

使用道具 举报

89#
发表于 2014-11-15 11:43:22 | 显示全部楼层
chenall 发表于 2014-11-15 11:12
这个后面的map (hd1) (hd2)是多余的.

你这些命令执行之后第一条命令map (hd0,0)/HD.IMG  (hd0)是没有 ...

>>你这些命令执行之后第一条命令map (hd0,0)/HD.IMG  (hd0)是没有作用的.
>>被  map --in-situ (hd1,0)/PE.IMG  (hd0)覆盖了.

对下面修改的菜单, 还能这么说吗?
title TwoStepNew:FAIL
        map (hd0,0)/HD.IMG  (hd0)
        map (hd0)  (hd1)
        map --rehook
        root (hd0,1)
        map --in-situ (hd1,0)/PE.IMG  (hd0)
        map (hd0)  (hd2)
        map --rehook
        root (hd0,0)
        chainloader /ntldr
        boot

我的本意是;
    前面 某人 HD.IMG  =》(hd0)  , (hd0) =>(hd1) 了。
    现在转到我的程序,
我想 PE.IMG  =》(hd0),  (hd0) 还要保留
(hd0) 为什么要保留, 一般来说, (hd0) 是原始磁盘,不能丢,后来还需要原始磁盘的信息。

》》另外你这些命令执行最后的结果就是hd0和hd1都是一模一样的,除了hd0的MBR不一样,其它的都是一样的.
我也发现这个奇怪的问题?
发现 (hd0) (hd1) (hd2) 一样。 为什么这么怪?





-------------------------
下面的菜单可以启动,也是两步。
title TwoStepX:OK
        map (hd0,0)/HD.IMG  (hd1)
        map --rehook
        map --in-situ (hd0,0)/PE.IMG  (hd0)
        map (hd0)  (hd2)
        map --rehook
        root (hd0,0)
        chainloader /ntldr
        boot
看来, 可以map 多个, 即使一样也可以启动。
这个只是对比。
不同的是中间过程,2个分片虚拟盘都是 直接 从原始磁盘上映射。
2步法X: (hd0):p1  --> (hd1)
                (hd0):p2  -->  (hd0)
                     (hd0)-->(hd2)

2步法: (hd0):p1  --> 中间(hd0)
                     (hd0)-->New(hd1)
                                                         New (hd1):p2  -->  (hd0)
                                                          中间(hd0)-->(hd2)

2步法 就是 中间转了个圈, 结果转糊涂了。


分片模拟盘  本地硬盘(R-hd0)
2步法X:hd0=R-hd0-片1        hd1=1R-hd0-片2hd2=R-hd0
2步法:hd0=R-hd0-片1        hd1=1R-hd0-片2hd2=R-hd0
1步法:hd0=R-hd0-片2hd1=R-hd0




回复

使用道具 举报

90#
发表于 2014-11-15 11:46:37 | 显示全部楼层
chenall 发表于 2014-11-15 11:40
map 命令有bug,

map --in-situ (hd1,0)/PE.IMG  (hd0)

》》
map 命令有bug,

map --in-situ (hd1,0)/PE.IMG  (hd0)
map (hd0)  (hd2)

两条命令换一下位置就行了.
map (hd0)  (hd2)
map --in-situ (hd1,0)/PE.IMG  (hd0)

估计是MAP命令里面有逻辑错误.
----
我试试。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-9 10:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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