无忧启动论坛

标题: 请chenall看看,关于0.46a map 问题 [打印本页]

作者: chiannet    时间: 2015-8-2 06:45
标题: 请chenall看看,关于0.46a map 问题
本帖最后由 chiannet 于 2015-8-2 06:47 编辑

native 03PE, 二级内核存放在SKY52PE.ISO内,启动时用下列代码:

......
map /52PE/SKY52PE.ISO (0xfe) || map --mem /52PE/SKY52PE.ISO (0xfe)
map --hook
chainloader /52PE/SETUPLDR.NTV
boot

1、若SKY52PE.ISO连续,则0.45C或0.46a(只试用了20150408及20150716两版)Grldr,都能顺利启动!

2、若SKY52PE.ISO连续(测试时,碎片数目为3个),

     用0.45C grldr会执行红色代码,native 03PE能顺利启动到桌面。

     用0.46a(只试用了20150408及20150716两版)grldr时,会执行蓝色代码,但在native 03PE启动流程到NATIVE.EXE 挂载二级内核(.WIM)时蓝屏死机。






作者: fanggong    时间: 2015-8-2 07:59
虚心学习中。
作者: 不点    时间: 2015-8-2 09:53
根据你描述的情况,那么我很容易猜测到,这应该是由于 FIRADISK 或 WinVblock 不支持非连续的 ISO 文件造成的。

估计需要这两个驱动的开发者来解决才行。

还是老老实实地把碎片整理好吧。




作者: bfgxp    时间: 2015-8-2 11:37
不点 发表于 2015-8-2 09:53
根据你描述的情况,那么我很容易猜测到,这应该是由于 FIRADISK 或 WinVblock 不支持非连续的 ISO 文件造成 ...

不点大大是不是不在状态,这明明说的是G4D 的MAP问题啊。
作者: bfgxp    时间: 2015-8-2 11:43
是我这半罐水理解错了。错怪了不点
好像0.46C的一项改变就是可以MAP不连续的文件,所以楼主的代码在0.46C就执行了第一段。
作者: 不点    时间: 2015-8-2 11:49
bfgxp 发表于 2015-8-2 11:37
不点大大是不是不在状态,这明明说的是G4D 的MAP问题啊。

你是不是没有意识到,这多半是 firadisk 和 winvblock 的问题?

要证明 grub4dos 有问题,简直太容易了——只需证明 map 之后访问虚拟光盘的扇区不等价于原始的 iso 文件中的扇区即可。

假如楼主能证明的话,那就说明 grub4dos 有错。


注意一个要点:grub4dos 只要在实模式下工作正常,那就完全没问题了。grub4dos 的 map 命令,也仅仅在实模式下有效,在 PE 下无效。只能依靠 firadisk 和 winvblock 之类的驱动才行。也因此,这个问题与 firadisk 和 winvblock 有关。想到这一点并不难。另外,有谁证明过,firadisk 和 winvblock 支持不连续的 iso 文件?我好像从来没见到有人证明过。


作者: plutoshen    时间: 2015-8-2 12:07
搭车问个问题:原来版本的grldr菜单写“title maxdos\n”就不会在屏幕最下面显示任何提示了,新版为何无效?
作者: 不点    时间: 2015-8-2 12:11
plutoshen 发表于 2015-8-2 12:07
搭车问个问题:原来版本的grldr菜单写“title maxdos\n”就不会在屏幕最下面显示任何提示了,新版为何无效 ...

是哪个系列的版本?最早从何时开始出问题(版本的日期)?最新版本解决了没有?

如果是 0.4.5 系列,一般是 chenall 负责。如果是 0.4.6 系列,一般是由 yaya 解决。
作者: plutoshen    时间: 2015-8-2 13:02
不点 发表于 2015-8-2 12:11
是哪个系列的版本?最早从何时开始出问题(版本的日期)?最新版本解决了没有?

如果是 0.4.5 系列, ...

版本是最新的grub4dos-0.4.6a-2015-07-24.7z

为了菜单看起来美观,不显示最上和最下的提示,我的menu.lst是这样的:

call Fn.0 0x40000 "!BAT\necho -P:0000 $[0000]\t\t\t\t\t123\t\t\t\t\0" && initscript (md)0x200+1
graphicsmode -1 1024 768
find --set-root   /boot/run
command --set-path=()/boot/
write 0x8274 0x2001
debug off

title SelectBoot.iso \n 123
find --set-root /SelectBoot.iso
map --mem /SelectBoot.iso (0xff)
map --hook
chainloader (0xff)

以下省略

原来一切正常,现在\n后面的123显示在方框下面英文提示的上面
作者: 不点    时间: 2015-8-2 13:52
yaya 可能疏忽了,当有 \n 存在时,不应该显示系统默认的提示信息,而只应该显示 \n 之后的信息。

你可以把问题报告给 yaya。


作者: plutoshen    时间: 2015-8-2 14:14
不点 发表于 2015-8-2 13:52
yaya 可能疏忽了,当有 \n 存在时,不应该显示系统默认的提示信息,而只应该显示 \n 之后的信息。

你可 ...

不知如何联系,烦请老大转达,谢谢!
作者: 2011yaya2007777    时间: 2015-8-2 14:28
搭车问个问题:原来版本的grldr菜单写“title maxdos\n”就不会在屏幕最下面显示任何提示了,新版为何无效?

正在完善中.
作者: 2011yaya2007777    时间: 2015-8-3 09:12
2、若SKY52PE.ISO不连续(测试时,碎片数目为3个),

增加 --mem 参数,创建1个内存盘试一试。
作者: chiannet    时间: 2015-8-4 08:26
2011yaya2007777 发表于 2015-8-3 09:12
增加 --mem 参数,创建1个内存盘试一试。

yaya 大,0.46a 有没有简单、直接判断某文件是否连续存储的命令。
作者: 2011yaya2007777    时间: 2015-8-4 09:59
blocklist FILE
作者: plutoshen    时间: 2015-8-5 17:06
2011yaya2007777 发表于 2015-8-3 09:12
增加 --mem 参数,创建1个内存盘试一试。

请问yaya大,目前所有的G4D版本都不能完全识别一些联想电脑的非连续内存,2G的内存只能认出511M,这个问题有没有可能解决呢?这些电脑都是老旧的联想品牌机,许多单位还没有淘汰。
作者: 2011yaya2007777    时间: 2015-8-5 17:42
你是怎样使用G4D识别内存的?似乎与电脑品牌没有关系吧。
作者: chenall    时间: 2015-8-5 17:57
plutoshen 发表于 2015-8-5 17:06
请问yaya大,目前所有的G4D版本都不能完全识别一些联想电脑的非连续内存,2G的内存只能认出511M,这个问 ...

用displaymem 看看
作者: plutoshen    时间: 2015-8-5 19:51
2011yaya2007777 发表于 2015-8-5 17:42
你是怎样使用G4D识别内存的?似乎与电脑品牌没有关系吧。

可能您没有接触过某些联想的品牌机,我从前也是不知道这个的。
去年我在几台联想机器上发现,明明内存条是2G的,但是map --mem 512M的iso提示内存不足,重新启动查看grub4dos的菜单,显示类似下图


作者: plutoshen    时间: 2015-8-5 19:55
chenall 发表于 2015-8-5 17:57
用displaymem 看看

现在我手里也没有那样的机器了,但是很多小公司里还有,论坛里也有人提过:
http://bbs.wuyou.net/forum.php?m ... &highlight=511M
http://bbs.wuyou.net/forum.php?m ... &highlight=511M
http://bbs.wuyou.net/forum.php?m ... &highlight=511M
作者: 2011yaya2007777    时间: 2015-8-5 20:09
我理解是指连续的最大内存块=511Mb
作者: 不点    时间: 2015-8-6 11:30
grub4dos 屏幕顶行显示的三个内存分别是:

1、用户可用的常规内存大小,以 KB 为单位。它是原始状态下(即未经 map --hook 之类的操作之前)的 BIOS 常规内存的大小。一般来说,它就是通电自检(POST)之后 BIOS 数据区 0x413 处的双字节(Word)值。
2、扩展内存的第一个(用户可用的)连续内存块的大小,以 MB 为单位。扩展内存起始于 1M 处。因此,此处的大小就是从 1M 开始的连续内存块的大小。
3、内存地址在 4G 以上的那部分(用户可用的)内存块的大小,以 MB 为单位。它通常是连续的。如果是不连续的,那么也只显示出第一个连续内存块的大小。

如果仅仅基于屏幕顶行所显示的这三个内存块大小的信息,那么我们无法了解系统中最大的连续内存块有多大,以及最小的连续内存块有多小。要了解这些信息,需要用 grub4dos 内建的 displaymem 命令。

displaymem 命令可以显示出内存块的详细分布情况。无论你是否使用了 map 命令,displaymem 命令都是显示出原始的 BIOS 内存分布情况。就是说,displaymem 命令不受 map 命令的影响。

map 命令能够使用系统中的全部可用内存,而不是局限于屏幕顶行所显示的这三个内存块信息。屏幕顶行所显示的这三个内存块信息是很粗略的,只具有粗略的参考价值,只是给人看的,没有实际用处。


作者: plutoshen    时间: 2015-8-8 10:39
胡子是检验剃须刀的唯一真理,空谈理论不如实际测试。
大于511M的文件map失败,小点的就成功。
作者: chenall    时间: 2015-8-8 11:15
plutoshen 发表于 2015-8-8 10:39
胡子是检验剃须刀的唯一真理,空谈理论不如实际测试。
大于511M的文件map失败,小点的就成功。

你只需要看看displaymem命令显示的内存块,看看最大的那块内存是多大.也就只能map多大的




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