--1.我的电脑是华硕845D芯片组的主板,只有USB_ZIP项,没有USB_HDD项;
--2.当我在BIOS中将软驱设为“无”时,我从硬盘上启动GRUB(当然,U盘已在),确认只存在三个盘:----FD0、HD0、HD1(我有两个硬盘);
说明从硬盘启动时,BIOS把U盘识别为A:。所以,你的U盘总是被识别为A:,不管是从硬盘启动,还是从U盘启动都是这样的。
--3.于是我从U盘启动在DOS下后,运行grub --config-file=(fd0)/menu.lst,照样死机;
访问U盘就死机?这应该是那个古老的U盘BIOS的BUG吧。很久以前就有人这么报告了。结合你前面的报告,这个BUG总会出现,不管BIOS中是否禁止软盘。
--4.重新启动电脑,仍将软驱设为无,运行grub --config-file=(fd1)/menu.lst,却可以正常启动GRUB,
--也不再读软驱了,当然也没有嘎嘎声。
你用一个不存在的文件做菜单,当然 GRUB 找不到这个菜单了。于是 GRUB 调用内置的菜单。内置的菜单首先搜索到硬盘上的 menu.lst ,就把控制权交给硬盘上的这个菜单了。
--为此,我十分奇怪,于是我进入GRUB命令行,运行:
--cat (, 显示(fd0),(hd0),(hd1)
--用cat (fd0, 显示它确实为U盘。
--用cat (fd1, 显示为:Error23:Selected disk does not exist
证实了 (fd1) 不存在。
--按要求使用最新的7.23日版(实际上为7.22),现报告如下:
--1.试用情况与原grub for dos V4.1相同,在U盘中必须使用grub --config-file=(fd1) /menu.lst
--才能启动,如果在BIOS中未断开软驱,仍有读盘动作,软驱嗄嗄响;如果在BIOS中将软驱设为无,
--无读盘,不响,也能启动。
和上面的分析一样。补充一点,如果 BIOS 设置中有软驱,那么导致读取软驱的可能是(fd1)/menu.lst。某些 BIOS 会在你试图访问 (fd1) 时,实际访问的是 (fd0)。
--2.使用grub --config-file=(fd0)/menu.lst不能启动,在CD-ROM setup is OK. 后死机。
--但U盘在死机之前仍有较长时间的读取动作(因为U盘的灯一直在闪烁)。
访问U盘就死机?这应该是那个古老的U盘BIOS的BUG吧。很久以前就有人这么报告了。结合你前面的报告,这个BUG总会出现,不管BIOS中是否禁止软盘。从出错信息已经到达 CD-ROM setup is OK 可见,A20 已经成功打开,所以排除 A20 的控制导致死机的可能。应该是在读取U盘上的菜单文件时死机了。你设法进入 GRUB,然后用 geometry (fd0) 命令,看看这条命令能否成功执行。如果成功,贴出它的输出结果。更进一步,你还可以用 cat --hex (fd0)+1 来显示 U 盘的第一扇区,看看它是否正常。
--3.我通过硬盘启动GRUB后,确实有以下显示:
--possible disk are:fd0 fd1 hd0 hd1 rd
--如果使用 cat (fd0, 则无任何显示(上个版本有显示),rd也一样无显示;
--使用 cat (fd1, 则有"Plssible partitions are:"等内容的显示。
显示的两个软盘,(fd0)可能是你的真实软驱,所以它没有内容显示。而(fd1)可能是U盘,所以有内容显示。但是你没把内容显示完,所以,你最好用 cat --hex (fd1)+1 把 U 盘的第一扇区显示出来,看看它究竟是含有分区表的 MBR 呢,还是通常的 DOS 引导扇区?
--我已查清,如果我把C盘中的menu.lst删除,则无论使用--config-file=(fd1)或者--config-file=(fd0)
--均死机,说明U盘运行GRUB时读取的菜单实际上是C盘根目录下的,它无法读取U盘根目录下的菜单
--(虽然有较长时间的读取动作,但最终还是死机)。
--结论:如果C盘下无menu.lst,我无法在U盘的DOS启动环境下运行GRUB,否则死机。
所以,我觉得应该查明 U 盘的结构,就像上面说的那样。同时也再次显现,这是 BIOS 读取过程导致的死机,本质上是 BIOS 的错。
--但我无法理解的是:是否死机竟然受C盘有无menu.lst的制约,
当 C 盘有 menu.lst 时,GRUB 不找 U 盘,所以就不会死机。这是很容易理解的。一旦要从 U 盘读取文件,这时就可能导致死机。当 C 盘没有 menu.lst 时,老版本的 GRUB 会查找软盘(也就是U盘),这样就有可能死机。新版本不应该查找软盘,因此应该不会死机了,你再确认一下。
--难道没有办法解决吗?
试试这样如何?grub --config-file="commandline" 这条命令不使用别的菜单,而直接使用命令行指定的GRUB命令(此处是commandline命令),这样,启动 GRUB 后将直接进入命令行,不再找菜单了。
=========
总的看来,导致这一现象,有两种可能的原因。一个是 BIOS 的 BUG,另一个就是 U 盘格式化的方式错误所导致的。不过根本的原因,应该还是第一个,即 BIOS 的 BUG 导致的。找 BIOS 厂家或者主板生产厂家解决。
因为我们亲手创建,这个世界更加美丽。