无忧启动论坛

标题: 【报告】Grub4DOS_0.4.5B_2010.06.07 问题 [打印本页]

作者: 0cat0    时间: 2010-6-8 08:45
标题: 【报告】Grub4DOS_0.4.5B_2010.06.07 问题
用老的0PE试了一下,启动后老0PE有个整理程序,过了那个整理程序后就 黑屏死机 了,应该是在DOS调用了GRUB.EXE,不知道会不会是GRUB.EXE有问题,下面是截图:


作者: 0cat0    时间: 2010-6-8 08:56
对了,忘记说了,Grub4DOS_0.4.5B_2010.06.03 版正常。。。。。。。
作者: zxw    时间: 2010-6-8 09:34
用0PE实机测试了一下,证实上述情况属实。

虚拟机中纯DOS下,运行grub能进入grub命令行。

[ 本帖最后由 zxw 于 2010-6-8 10:05 编辑 ]
作者: thttht    时间: 2010-6-8 12:01
你更新0pe里的GRUB.EXE文件了吗?应该一起更新在试试!!
作者: 0cat0    时间: 2010-6-8 12:07
标题: 回复 #4 thttht 的帖子
这点还是知道的。。。。。。。。。

每次自己更新都会全部一起更新的。。。。。。。
作者: 不点    时间: 2010-6-8 12:40
期待从其他角度报告更详细的情况。这次更新应该仅仅影响 grub.exe,应该是没有问题的。

出现问题的情况,会不会与菜单有关?有时候,菜单看起来没问题,但实际上潜藏着未发现的问题。

所以,需要更多的报告才行。
作者: 0cat0    时间: 2010-6-8 12:55
因为0PE是P大的,我找不到菜单在哪,要P大来看看了。。。。。
作者: 不点    时间: 2010-6-8 13:36
新版本由于要处理 HP 的问题,所以,grub.exe 的文件变大了。主要是,头部变大了。

grub.exe = 头部 + pre_stage2

pre_stage2 = 主程序。

头部 = 前期准备阶段。

由于前期准备阶段要处理很多事情,包括 bug 的排解,有些主板的 workaround 等等,所以,头部的长度是会变化的。

多年以来,头部的长度一直没什么变化。但本次变化较大。

0pe 是 grub4dos 的主要使用者。0pe 对于 grub4dos 的使用,到了非常充分的程度,我都很难看懂 0pe 的一些菜单程序。所以,0pe 有可能假定 grub.exe 的头部是某个固定长度的,而对 grub.exe 进行动态改造。我猜测这可能就是问题的原因了。

究竟是什么情况,还需要进一步确认。
作者: zxw    时间: 2010-6-8 13:40
@echo off
c:
cd \
if not exist 0pemenu.lst goto quit
del io.sys
del autoexe1.bat
del auto_exe.bat
del command.com
>nul copy /y grub.exe a:\grub.exe
if not exist a:\grub.exe goto L1
del grub.exe
a:\grub --config-file=c:\0pemenu.lst

:L1
if exist b:\_SRS.ZIP del b:\_SRS.ZIP
if exist b:\SRS.ZIP del b:\SRS.ZIP
>nul copy /y grub.exe b:\grub.exe
del grub.exe
b:\grub --config-file=c:\0pemenu.lst

:quit
echo.
echo Sorry, PE not ready to start.

菜单应该是这个,\KERNEL\startPE.bat.

0pemenu.lst 是由auto_exe.bat生成的。

[ 本帖最后由 zxw 于 2010-6-8 13:52 编辑 ]
作者: xianglang    时间: 2010-6-8 13:51
0PE的特有现象。如果要用0PE的话,还是使用0PE所用版本的G4D比较好,反正我试过N人版本的0PE与G4D组合,一般用比0PE中的G4D要旧或版的G4D未必能启动0PE。
作者: zxw    时间: 2010-6-8 13:57
  1. >>if "%OEMF6%"=="TRUE" IF not "%config%"=="N_SCSI" goto KEEPFD0
  2. rem 2009.11.4 根据karyonix的“Don't unmap 0x81.”提示,将map --unmap=0,1,2,0x81:0xfe全部改为map --unmap=0,1,2,0x84:0xfe
  3. rem 2009.11.10 为了支持更多磁盘,进一步将map --unmap=0,1,2,0x84:0xfe全部改为map --unmap=0,1,2,0x87:0xfe
  4. rem 2009.11.16 为了支持更多磁盘,进一步将map --unmap=0,1,2,0x87:0xfe全部改为map --unmap=0,1,2,0xA0:0xfe
  5. 0pemenu.lst echo map --unmap=0,1,2,0xA0:0xfe
  6. goto REHOOK
  7. :KEEPFD0
  8. >>0pemenu.lst echo map --unmap=1,2,0xA0:0xfe
  9. :REHOOK
  10. >>0pemenu.lst echo map --rehook
  11. >>0pemenu.lst echo map --hook=0x80
  12. >>0pemenu.lst echo chainloader (hd0,0)/setupldr.bin

  13. >>0pemenu.lst echo makeactive (hd0,1)
复制代码
auto_exe.bat生成0pemenu.lst的这一段,看来也没有问题。

[ 本帖最后由 zxw 于 2010-6-8 15:12 编辑 ]
作者: 0cat0    时间: 2010-6-8 14:00
标题: 回复 #9 zxw 的帖子
原来菜单在这里,好象没什么问题呀,下面是直接COPY出来的:




if "%OEMF6%"=="TRUE" IF not "%config%"=="N_SCSI" goto KEEPFD0
rem 2009.11.4 根据karyonix的“Don't unmap 0x81.”提示,将map --unmap=0,1,2,0x81:0xfe全部改为map --unmap=0,1,2,0x84:0xfe
rem 2009.11.10 为了支持更多磁盘,进一步将map --unmap=0,1,2,0x84:0xfe全部改为map --unmap=0,1,2,0x87:0xfe
rem 2009.11.16 为了支持更多磁盘,进一步将map --unmap=0,1,2,0x87:0xfe全部改为map --unmap=0,1,2,0xA0:0xfe
>>0pemenu.lst echo map --unmap=0,1,2,0xA0:0xfe
goto REHOOK
:KEEPFD0
>>0pemenu.lst echo map --unmap=1,2,0xA0:0xfe
:REHOOK
>>0pemenu.lst echo map --rehook
>>0pemenu.lst echo map --hook=0x80
>>0pemenu.lst echo chainloader (hd0,0)/setupldr.bin

>>0pemenu.lst echo makeactive (hd0,1)
作者: renchmin    时间: 2010-6-8 15:29
期待更稳定的版本,我现在还是用的06.03版的。
作者: zhaohj    时间: 2010-6-8 17:01
grub.exe = 头部 + pre_stage2
pre_stage2 = 主程序。

由grldr启动-dos-grub.exe,这里的grub.exe如果能象个引导器一样精简一下,可能更加健康。我们这里使用到主程序很少的功能,如:chainloader、configfile、pxe等,最终返回到grldr环境。目前PXE环境返回grldr即chainloader /grldr基本死机,这个是难点。如果撇开基本用不到的功能从而可能的话强化PXE功能,实际应用价值会更好。现在真正从DOS启动grub.exe应用相对较少。

请不点大批评指教!
作者: pseudo    时间: 2010-6-8 22:23
原帖由 不点 于 2010-6-8 13:36 发表
... 0pe 有可能假定 grub.exe 的头部是某个固定长度的,而对 grub.exe 进行动态改造。我猜测这可能就是问题的原因了。
究竟是什么情况,还需要进一步确认。

呵呵,没有改动grldr和grub.exe。久不编程,连环境都搭不起来了。

刚才在VMware中试了,还真有问题。

附件可以重现。以0PE.ISO作为虚拟机光盘启动(开始的grldr是用6.7的),一路回车最后进入DOS提示符。然后
运行startpe.bat启动6.3的grub.exe,开始正常(后面报错进不了pe是因为我精简掉pe文件了)。
如果运行startpe7.bat启动6.7的grub7.exe(grub.exe改名),当场黑掉。

0PE.part1.rar

292.97 KB, 下载次数: 37, 下载积分: 无忧币 -2

0PE.part2.rar

292.97 KB, 下载次数: 29, 下载积分: 无忧币 -2

0PE.part3.rar

220.92 KB, 下载次数: 20, 下载积分: 无忧币 -2


作者: 不点    时间: 2010-6-8 23:53
标题: 回复 #14 zhaohj 的帖子
你进入了一个误区:功能多,导致兼容性差。

事实上,兼容性主要是制造商故意形成的。有些东西,表面上功能多,其实,用到的底层函数并不多。这些功能,只不过是增加了一些使用方便的代码而已。这些代码本身不会涉及到新的底层函数的调用,仍然用的是已有的底层函数。我们这里说的底层函数,就是 BIOS。因此,功能多不一定导致兼容性差。反之,一样的道理,功能少,也有可能导致兼容性差。因为虽然功能少,但这些功能却有可能调用许许多多的底层函数,那么,恶意的 BIOS 制造商就可以在很多地方设下羁绊,让软件半死不活。

你的误区之二:使用很少的几个命令,如 chainloader 等,就可以把 grub 的体积减少。你忽略了,chainloader 需要用到文件系统处理代码,如 FAT,NTFS,EXT2 等等的支持。那些看不见的东西,比能看见的,要多得多。这些文件系统的支持模块,以及其他相关的东西,要占用很大的空间。

你还有一个美好的愿望:以 PXE 为中心,发展周边其他相关的软件环境。这不太可能。PXE 比之传统 BIOS 的其他领域,要年轻得多。它并不成熟。它很混乱。PXE 能够成功启动一个环境,不管是 grldr 也好,SYSLINUX 也好,DOS 也好,能进来,就不错了。再有更高的要求,比如说让它进入这个、退出那个,随便进出,那就有点奢求的味道了。技术本身没有发展到那样的成熟度,同时,恶意的 BIOS 制造商还有可能故意制造障碍。在电脑领域,理论固然不可缺少,但实践的环节尤其重要。有些东西,理论上可行,但实践上通不过,或者暂时达不到。

=======

不瞒你说,今天我又通过实践,领会到了一个新的知识。我给一台机器安装系统,其遭遇,也是第一次,很糟糕。

这台机器启动 grldr 没问题。它不支持 U 盘启动,所以,只好从硬盘启动 grldr。

然而,用 GRLDR 启动手头上的任何一个 PE,都失败了。用光盘也尝试启动 PE 或者安装 Windows,都失败。

最后启动 DOS,所有的 DOS 都不能进入 GHOST,进去之后,死了,键盘无响应,鼠标也不起作用。

不要说 ghost 的版本。8.x和 11.x 的都不行。

grub 和 DOS 的字符界面,都不至于死机。然而到了 ghost 和 PE 的图形界面,全都死掉。

这个制造商真TM的垃圾。请恕我不透露制造商的信息。

所以,请珍惜能够进入一个系统的每一次机会。不要随便离开那个系统而转换到别的系统下。

比如说,你有 DOS,请设法在 DOS 下完成 ghost 的工作,不要借助于图形界面的 ghost。

再比如,你有 grldr,请设法在 grldr 下完成(与 ghost 等价的)工作,不要进入 DOS 和别的系统。

如此,才可以把故障率降到最低。
作者: 不点    时间: 2010-6-9 07:11
标题: 回复 #15 pseudo 的帖子
能不能把问题进一步孤立出来?究竟 grub.exe 执行之前,曾经运行过什么程序,它影响了 grub.exe 的启动?

另外,可以在 DOS 下增加一个 debugger 方便在 DOS 下进行调试。例如 http://nufans.net/grub4dos/debuggers/grdbdl96.zip 就很好。
作者: zhaohj    时间: 2010-6-9 08:59
0PE也是grldr->dos->grub.exe,DOS下处理磁盘仿真。6.7新版我还没应用,我虚拟机测试一下看看。

我虚拟机测试,pxe启动grldr--纯dos--Grub.exe正常。

上传一下grldr及grub.exe下的内存,不知是否有用。

另外我虚拟机VM7测试了SRS_F6返回模块,也能正常返回。

[ 本帖最后由 zhaohj 于 2010-6-9 10:15 编辑 ]

Snap1.jpg (72.97 KB, 下载次数: 54)

Snap1.jpg

Snap2.jpg (190.05 KB, 下载次数: 61)

srs_f6返回后状态

srs_f6返回后状态

1.rar

185.58 KB, 下载次数: 31, 下载积分: 无忧币 -2

grldr下640k内存

2.rar

223.7 KB, 下载次数: 30, 下载积分: 无忧币 -2

grub下640k内存


作者: 不点    时间: 2010-6-9 15:01
对不起,犯了一个错误。请再试试新版。
作者: 0cat0    时间: 2010-6-9 15:38
标题: 回复 #19 不点 的帖子
马上试了一下9号的版本,0PE正常进入了,没有问题,网启也没问题了,多谢不点大人更新。。。。。。。。。。。。。。。。。。
作者: pseudo    时间: 2010-6-9 18:31
标题: 回复 #17 不点 的帖子
用6.9新版正常了。




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