|
Wengier
系统支持
             “新DOS时代”站长
积分 27736
发帖 10521
注册 2002-10-9
状态 离线
|
『第 31 楼』:
使用 LLM 解释/回答一下
Originally posted by 不点 at 2006-6-14 08:05 AM:
wengier: 显示了你说的信息之后,还应当显示以下两条信息中的一个:
Gate A20 is turned on successfully.
或者
Failed to turn on Gate A20!!
你是说,从显示这条信息就开始变慢了?那么应该是 A20 的控制,影响了虚拟机的行为。应该属于虚拟机的 BUG。因为我们的 A20 控制,并未触及系统时钟。我这里的 qemu 出现另外一个 BUG,就是方向键(也就是箭头键)都失去作用了。刚刚在 http://grub4dos.jot.com/ 发布的二进制程序解决了 qemu 的问题,不知是否也解决了 vmware 的问题。请报告。
嗯,又试了一下最新版本,发现VMWare中的此问题也已解决,可见就是这个BUG引起的。不过仍然发现有一个问题(在VPC中也有出现),那就是找不到/menu.lst(MENU.LST文件位于在C:\下),但(hd0,0)/menu.lst则可以。比如说启动GRUB.EXE时不指定任何命令行参数或在命令行下指定--config-file=/menu.lst的话会失败(随后将自动转入GRUB命令行),而在命令行下指定--config-file=(hd0,0)/menu.lst则可以正常显示menu.lst中的菜单。
Originally posted by Budian at 2006-6-14 08:05 AM:
wengier: After displaying the information you mentioned, the following one of two messages should be displayed:
Gate A20 is turned on successfully.
Or
Failed to turn on Gate A20!!
Do you mean that it starts to slow down from displaying this message? Then it should be the control of A20 that affects the behavior of the virtual machine. It should belong to a BUG of the virtual machine. Because our control of A20 has not touched the system clock. I have another BUG in qemu, that is, the arrow keys (that is, the direction keys) have lost their function. The binary program just released at http://grub4dos.jot.com/ solves the problem in qemu. I don't know if it also solves the problem in vmware. Please report.
Hmm, I tried the latest version again and found that this problem in VMWare has also been solved, which shows that it is caused by this BUG. However, I still found a problem (also occurs in VPC), that is, /menu.lst cannot be found (the MENU.LST file is located in C:\), but (hd0,0)/menu.lst can. For example, when starting GRUB.EXE without specifying any command-line parameters or specifying --config-file=/menu.lst at the command line, it will fail (and then automatically enter the GRUB command line), while specifying --config-file=(hd0,0)/menu.lst at the command line can display the menu in menu.lst normally.
|

Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
 |
|
2006-6-14 12:41 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-14 13:22 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-14 13:28 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-14 13:34 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 35 楼』:
使用 LLM 解释/回答一下
wengier: 你说到的问题,我会再看看的。
qwe1234567:不要等中文版,估计很快会发布 pre6 的。
本来就是这样设计的,当 menu.lst 和 GRLDR 在同一分区、同一根目录时,优先执行它;也就是说,它在 preset_menu 之前就要检查执行了。
---------
这还没完,还得麻烦你们继续测试,更改之后我会来这里通报的。你们刚刚下载到的,是一个最保守的版本,把 A20 控制中有关重启键盘的指令全都去除了。你们的机器是正常了,但 USB 键盘的机器可能就遭殃了。所以,还得再打开某些设置,看看怎么样可以照顾更多的机器。这恐怕要反复多次。
wengier: The issues you mentioned, I will take another look.
qwe1234567:Don't wait for the Chinese version. It is estimated that pre6 will be released soon.
It is designed like this. When menu.lst and GRLDR are in the same partition and the same root directory, it will be executed preferentially; that is, it needs to be checked and executed before preset_menu.
---------
This is not over yet. You still need to continue testing. I will come here to report after making changes. The one you just downloaded is a most conservative version, with all the instructions related to restarting the keyboard in the A20 control removed. Your machine is normal, but the machine with a USB keyboard may be in trouble. So, some settings need to be turned on again to see how to take care of more machines. This may have to be repeated many times.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2006-6-14 15:52 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-14 16:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 37 楼』:
使用 LLM 解释/回答一下
刚刚上载了一个中文版的,你可以暂时用用。
我在等待 DVHZ 的测试情况。根据他的测试,再做相应调整。
Just uploaded a Chinese version just now, you can use it for now. I'm waiting for the test situation of DVHZ. I'll make corresponding adjustments according to his test.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2006-6-14 17:16 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 38 楼』:
使用 LLM 解释/回答一下
好了,DVHZ 和 qwe1234567 的问题都已经彻底解决了,感谢您们两位不辞辛劳大力协助!现在还有 wengier 的问题没能解决。这个问题仍然很顽固,比 qwe1234567 所说的问题还要顽固。同样,如果该问题发生在我的机器上,我比较有把握的说,能够解决它。但是,发生在别人的机器上,我就缺少调试的手段了。
该问题产生的原因,应该是 GNU GRUB 设计上的一个缺陷造成的。GNU GRUB 在读取磁盘扇区之后,要对所读取的磁道进行缓冲,也就是说,保留一份放在内存中,以便下次读取同一磁盘空间的时候,能够避免访问磁盘。
可是这个机制带来的 BUG 非常多,而且这样的 BUG 都非常隐蔽。GNU GRUB 之所以败在 LILO 手下,有三大根本原因(我的观点):一个是 A20 门控问题,一个是引导路线曲折蜿蜒(BUG隐蔽而且多多)所带来的各种不良后果,再一个就是糟糕的磁盘缓冲设计。到目前为止,前两个问题都在 GRUB4DOS 中得到了比较好的解决。如果我们能够拔掉这最后一个钉子,那么就为 GRUB4DOS 的普及扫清障碍了。
实际上,GRUB 中连续访问同一个磁盘文件的现象并不多见,所以,磁盘缓冲其实是多此一举,没什么必要性,也因此它并不能给磁盘访问带来足够的好处,反而是个累赘,因为多了一道手续,既要为缓冲区保留可贵的内存,又要复制磁盘扇区到缓冲区,实际上反而是减缓了磁盘访问的效率。
可见,如果把磁盘缓冲这块赘肉割去,那么 GRUB 的代码结构和内存占用就能够更加精简、更加合理以及更加有效率。不过这是我们未来可以考虑的问题,现在顾不上这些了。
----------
wengier 如果能制作一个磁盘映像来反复再现该问题,那就比较容易解决了,因为我可以亲自去调试。或者,wengier 如果能有时间的话,也可以自己调试。调试从 stage2.c 入手,其中有下面的代码:
/* Try config_file */
if (*config_file)
is_opened = grub_open (config_file);
首先应该在这后面添加一条打印语句,看看 grub_open 的操作是成功了还是失败了(应该是失败了,否则不会有问题;但还是要打印出来确认一下)。
既然是失败了,那我们就要跟踪到 grub_open 的函数体内部,在里面添加其它打印命令,看看究竟是什么语句导致 grub_open 返回代表失败的 0 值的。如果还要调用其它函数,那就继续跟踪进去,这样一步一步,反复试验,顺藤摸瓜,总可以把那个 BUG 揪出来的。
Okay, the issues with DVHZ and qwe1234567 have been completely resolved. Thanks to both of you for your hard work and great assistance! Now the issue with wengier is still not resolved. This problem is still very stubborn, more stubborn than the one qwe1234567 mentioned. Similarly, if this problem occurs on my machine, I'm fairly confident I can solve it. But when it occurs on someone else's machine, I lack the means to debug.
The cause of this problem should be a defect in the design of GNU GRUB. After GNU GRUB reads the disk sectors, it buffers the read tracks, that is, keeps a copy in memory so that when reading the same disk space next time, access to the disk can be avoided.
However, this mechanism causes very many bugs, and such bugs are very hidden. The reason GNU GRUB lost to LILO has three fundamental causes (in my view): one is the A20 gate control problem, one is the various adverse consequences brought about by the tortuous boot route (hidden bugs and many of them), and the other is the poor disk buffer design. So far, the first two problems have been relatively well solved in GRUB4DOS. If we can remove this last obstacle, then it will clear the way for the popularization of GRUB4DOS.
In fact, the phenomenon of continuous access to the same disk file in GRUB is not common, so disk buffering is actually unnecessary, and it doesn't bring enough benefits to disk access. Instead, it's a burden because there's an extra step: not only does it need to reserve precious memory for the buffer, but also copy the disk sectors to the buffer, which actually slows down disk access efficiency.
It can be seen that if the赘肉 of disk buffering is cut off, then the code structure and memory usage of GRUB can be more streamlined, more reasonable, and more efficient. But this is a problem we can consider in the future, and we can't focus on this now.
----------
If wengier can create a disk image to repeatedly reproduce this problem, it will be easier to solve, because I can debug it in person. Or, if wengier has time, he can also debug it himself. The debugging starts from stage2.c, where there is the following code:
/* Try config_file */
if (*config_file)
is_opened = grub_open (config_file);
First, we should add a print statement after this to see whether the operation of grub_open is successful or failed (it should have failed, otherwise there wouldn't be a problem; but we still need to print it to confirm).
Since it has failed, we need to trace into the function body of grub_open, add other print commands inside, and see which statement causes grub_open to return the 0 value representing failure. If other functions are called, we continue to trace in, and in this way, step by step, repeatedly test, and follow the thread, we can always find out that bug.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2006-6-15 11:24 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
『第 39 楼』:
使用 LLM 解释/回答一下
中文版已经收到。
现在我还有个问题,就是如果从可可启动光盘启动硬盘后,如果不按方向键让内植菜单停下来手工选择正确的寻找路径的话,GRUB就会进入GRUB命令提示符出现:
find --set-root /menu.lst
Error 17: File not found
Booting 'find /boot/grub/menu.lst'
fallback 2
find --set-root /boot/grub/menu.lst
Error 17: File not found
Booting 'find /grub/menu.lst'
fallback 3
find --set-root /grub/menu.lst
(hd0,4)
Filesystem type is fat, partition type 0xb
configfile /grub/menu.lst
About to reset the boot drive. Report bug if the machine hangs here.
GNU GRUB version 0.97 (639K lower / 130048K upper memory)
grub>
这个问题可以解决吗?
Last edited by qwe1234567 on 2006-6-15 at 15:14 ]
The Chinese version has been received.
Now I have another question. That is, if you boot the hard drive from the Coco boot CD, and if you don't press the direction keys to make the built-in menu stop and manually select the correct search path, GRUB will enter the GRUB command prompt and display:
find --set-root /menu.lst
Error 17: File not found
Booting 'find /boot/grub/menu.lst'
fallback 2
find --set-root /boot/grub/menu.lst
Error 17: File not found
Booting 'find /grub/menu.lst'
fallback 3
find --set-root /grub/menu.lst
(hd0,4)
Filesystem type is fat, partition type 0xb
configfile /grub/menu.lst
About to reset the boot drive. Report bug if the machine hangs here.
GNU GRUB version 0.97 (639K lower / 130048K upper memory)
grub>
Can this problem be solved?
Last edited by qwe1234567 on 2006-6-15 at 15:14 ]
|

我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件 |
|
2006-6-15 14:59 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 40 楼』:
使用 LLM 解释/回答一下
我来分析一下。在硬盘中找 /menu.lst 和 /boot/menu.lst 都失败了,它们应该是不存在。
/grub/menu.lst 找到了,它在 (hd0,4) 分区,也就是第一个逻辑分区。
当执行 configfile /grub/menu.lst 时,出现了未知错误,导致打开该文件失败。
因此我感觉这个 BUG 和 wengier 说的是一样的。你们能否制作一个硬盘和光盘映像,让我也可以再现这一情况呢?
制作映像之后,要先在你们自己的虚拟机下运行,确信能够再现这一错误情况,然后才可以传给我。
通过你们的描述,我越发觉得应该将 GRUB 的磁盘缓冲摘除掉了!它所带来的坏处,简直没完没了、无穷无尽了。
Let me analyze. I failed to find /menu.lst and /boot/menu.lst in the hard disk, so they should not exist.
/grub/menu.lst was found, and it is in the (hd0,4) partition, which is the first logical partition.
When executing configfile /grub/menu.lst, an unknown error occurred, resulting in the failure to open this file.
Therefore, I feel that this BUG is the same as what wengier said. Can you make a hard disk and CD image so that I can also reproduce this situation?
After making the image, it should be run in your own virtual machine first to be sure that this error can be reproduced, and then it can be sent to me.
From your description, I am more and more convinced that the disk buffer of GRUB should be removed! The drawbacks it brings are simply endless and endless.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2006-6-15 15:52 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-15 17:13 |
|
|
Wengier
系统支持
             “新DOS时代”站长
积分 27736
发帖 10521
注册 2002-10-9
状态 离线
|
『第 42 楼』:
使用 LLM 解释/回答一下
Originally posted by 不点 at 2006-6-15 03:52 PM:
我来分析一下。在硬盘中找 /menu.lst 和 /boot/menu.lst 都失败了,它们应该是不存在。
/grub/menu.lst 找到了,它在 (hd0,4) 分区,也就是第一个逻辑分区。
当执行 configfile /grub/menu.lst 时,出现了未知错误,导致打开该文件失败。
因此我感觉这个 BUG 和 wengier 说的是一样的。你们能否制作一个硬盘和光盘映像,让我也可以再现这一情况呢?
制作映像之后,要先在你们自己的虚拟机下运行,确信能够再现这一错误情况,然后才可以传给我。
通过你们的描述,我越发觉得应该将 GRUB 的磁盘缓冲摘除掉了!它所带来的坏处,简直没完没了、无穷无尽了。
呵,基本上就是这种情况。经一些测试和研究后本准备现在上来说说具体情况的,没想到让qwe1234567先说了(主要是这几天太忙,刚才才有点时间继续测试)。。menu.lst是在C:\上,也就是(hd0,0)/上。实现方法很简单,比如说用MS-DOS 7.10完整安装版的光盘版启动,出现启动菜单后选3从硬盘启动,启动后再运行GRUB的话就会出现这种结果,而且一定会出现。
Originally posted by Buddha doesn't light at 2006-6-15 03:52 PM:
Let me analyze. It failed to find /menu.lst and /boot/menu.lst in the hard disk, so they should not exist.
/grub/menu.lst was found, and it is in the (hd0,4) partition, which is the first logical partition.
When executing configfile /grub/menu.lst, an unknown error occurred, resulting in the failure to open the file.
Therefore, I feel that this BUG is the same as what wengier said. Can you make a hard disk and CD image so that I can also reproduce this situation?
After making the image, you should first run it in your own virtual machine to be sure that this error can be reproduced, and then you can send it to me.
From your description, I am more and more convinced that the disk buffer of GRUB should be removed! The disadvantages it brings are endless, without end.
Hehe, basically this is the case. After some tests and research, I was going to come and talk about the specific situation now, but I didn't expect qwe1234567 to say it first (mainly because I was too busy these days, and I just had a little time to continue testing). The menu.lst is on C:\, that is, on (hd0,0)/. The implementation method is very simple. For example, use the CD version of the MS-DOS 7.10 full installation version to boot, select 3 to boot from the hard disk after the boot menu appears, and then run GRUB after booting, and this result will appear, and it will definitely appear.
|

Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
 |
|
2006-6-15 23:56 |
|
|
不得不爱
超级版主
         我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
『第 43 楼』:
使用 LLM 解释/回答一下
Originally posted by Wengier
嗯,又试了一下最新版本,发现VMWare中的此问题也已解决,可见就是这个BUG引起的。不过仍然发现有一个问题(在VPC中也有出现),那就是找不到/menu.lst(MENU.LST文件位于在C:\下),但(hd0,0)/menu.lst则可以。比如说启动GRUB.EXE时不指定任何命令行参数或在命令行下指定--config-file=/menu.lst的话会失败(随后将自动转入GRUB命令行),而在命令行下指定--config-file=(hd0,0)/menu.lst则可以正常显示menu.lst中的菜单。
你这说的问题不会和我说的一样吧?
Originally posted by Wengier
Well, I tried the latest version again and found that this problem in VMWare has also been resolved, which shows that this bug is the cause. However, I still found a problem (also occurs in VPC), that is, /menu.lst cannot be found (the MENU.LST file is located in C:\), but (hd0,0)/menu.lst can. For example, when starting GRUB.EXE without specifying any command-line parameters or specifying --config-file=/menu.lst at the command line, it will fail (and then automatically enter the GRUB command line), while specifying --config-file=(hd0,0)/menu.lst at the command line can display the menu in menu.lst normally.
What you said, is the problem the same as what I said?
|

我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件 |
|
2006-6-16 20:19 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第 44 楼』:
使用 LLM 解释/回答一下
Originally posted by qwe1234567 at 2006-6-15 14:59:
就是如果从可可启动光盘启动硬盘后
find --set-root /menu.lst
Error 17: File not found
Booting 'find /boot/grub/menu.lst'
fallback 2
find --set-root /boot/grub/menu.lst
Error 17: File not found
Booting 'find /grub/menu.lst'
fallback 3
find --set-root /grub/menu.lst
(hd0,4)
Filesystem type is fat, partition type 0xb
configfile /grub/menu.lst
About to reset the boot drive. Report bug if the machine hangs here.
这个现象我也经常出现,还有装有grub的IMG文件在光盘上也无法启动,好象有EasyBoot就被排斥了。用0.95的stage1 stage2做成EasyBoot可引导IMG是行的,可能是我比较菜看了好多此类贴子也试了好几种办法,0.97还是没办法运行在光盘上。
这几天装了个虚拟机感觉批处理或某个程序还要照顾能否在虚拟机运行还是不习惯,相比之下不点大师伟大的多!
Originally posted by qwe1234567 at 2006-6-15 14:59:
It is just that if you boot the hard drive from the Coco boot CD
find --set-root /menu.lst
Error 17: File not found
Booting 'find /boot/grub/menu.lst'
fallback 2
find --set-root /boot/grub/menu.lst
Error 17: File not found
Booting 'find /grub/menu.lst'
fallback 3
find --set-root /grub/menu.lst
(hd0,4)
Filesystem type is fat, partition type 0xb
configfile /grub/menu.lst
About to reset the boot drive. Report bug if the machine hangs here.
I often encounter this phenomenon. Also, IMG files with grub installed cannot be booted from the CD. It seems that EasyBoot is excluded. Using stage1 and stage2 of 0.95 to make an EasyBoot bootable IMG works. Maybe I'm just inexperienced. I've read many such posts and tried several methods, but 0.97 still can't run on the CD.
In the past few days, I installed a virtual machine and felt that batch processing or a certain program still needs to consider whether it can run in the virtual machine, which I'm not used to. Compared with that, BuDian DaShi is much more great!
|
|
2006-6-16 21:21 |
|
|
Wengier
系统支持
             “新DOS时代”站长
积分 27736
发帖 10521
注册 2002-10-9
状态 离线
|
『第 45 楼』:
使用 LLM 解释/回答一下
Originally posted by qwe1234567 at 2006-6-16 08:19 PM:
你这说的问题不会和我说的一样吧?
看起来是一样的吧,只不过是我先说的。等我准备来详细报告情况时,你又说了。
Originally posted by qwe1234567 at 2006-6-16 08:19 PM:
The problem you mentioned doesn't seem to be the same as what I said, right?
It seems to be the same. It's just that I said it first. When I was about to report the situation in detail, you spoke again.
|

Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
 |
|
2006-6-16 23:18 |
|
|