中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 在U盘中使用grub,如何解决这两个问题?
« [1] [2] [3] [4] [5] »
作者:
标题: 在U盘中使用grub,如何解决这两个问题? 上一主题 | 下一主题
neiljoy
初级用户





积分 132
发帖 58
注册 2006-7-23
状态 离线
『楼 主』:  在U盘中使用grub,如何解决这两个问题?

我的U盘为ZIP模式,我是在U盘启动到DOS后,运行
grub --config-file=(fd1)/menu.lst
这时软驱不停地转动,嘎嘎声作响,屏幕显示:
default 0
timeout 1
fallback 1

估计响了足足1分钟,非常令人讨厌,然后才进入到菜单显示。
我的问题是:
1. 怎样才能跳过对软驱(fd0)的访问,以避免这种情况的出现,从而顺利地进入到U盘中的菜单显示?
2. 当我进入到菜单后,我想使用U盘中的镜象文件diskedit.img,用以下命令
map --menu (fd1)/diskedit.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

结果显示为  Error 27:Disk read error      press any key to continue...
我的命令应当如何修改?谢谢!!

2006-7-23 08:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 2 楼』:  

你用的版本太古老了,应该用最新版的,在 http://grub4dos.jot.com/

那个 --menu 是你的笔误吧?应该是 --mem

另外,你能肯定 (fd1) 这个设备是存在的吗?U 盘一般是 (fd0) 而不是 (fd1),除非你的系统比较特别。我想你大概应该用 (fd0) 而不是 (fd1),除非你确实知道有 (fd1) 这个设备。所以我觉得好像应该这样:

grub --config-file=(fd0)/menu.lst
------------------------------------------------------------
map --mem (fd0)/diskedit.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
boot
------------------------------------------------------------

自己多看看资料,再多试试,就可解决问题的。



因为我们亲手创建,这个世界更加美丽。
2006-7-23 09:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
neiljoy
初级用户





积分 132
发帖 58
注册 2006-7-23
状态 离线
『第 3 楼』:  

谢谢不点大师的帮助!
1.menu确实为mem之笔误,是我在发帖时写错了;
2.我先用硬盘上的grub检查过了,FD0是我的软驱,FD1应当是我的U盘。而且我最初用的是fd0,但运行grub后即死机,后来换成fd1可以启动grub,但就是出现上述现象,我想如果拔除软盘的数据线,它就会是fd0了;
3.我是一个星期前从您给出网站上下载的稳定版,应该不算旧吧?

2006-7-23 09:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

估计响了足足1分钟?是不是软驱坏了?
拔除软驱数据线也没多大意义,BOIS还是分配中断给软驱的,最好在BOIS里屏蔽掉软驱。

2006-7-23 11:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
neiljoy
初级用户





积分 132
发帖 58
注册 2006-7-23
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by fastslz at 2006-7-23 11:17:
估计响了足足1分钟?是不是软驱坏了?
拔除软驱数据线也没多大意义,BOIS还是分配中断给软驱的,最好在BOIS里屏蔽掉软驱。

软驱响,并不是它坏了,就是现在我还在用软驱。我估计是因为我没有放软盘,但是grub却硬要搜索软盘中的文件,这样致使它来回动作。
实际上,我是从U盘启动的,不是从软盘启动的。如果从BIOS中屏蔽软驱,只有使用“解除”项,这样岂不是连我的U盘也无法启动了。
而且,我认为,只有拔除数据线,就相当于没有软驱,它就不会作读盘动作了。

2006-7-23 11:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
neiljoy
初级用户





积分 132
发帖 58
注册 2006-7-23
状态 离线
『第 6 楼』:  

可以在BIOS中将软驱设为“无”的,我试一下看。不过,就解决问题而言,即使这样可以使用,但毕竟是一个问题。

2006-7-23 12:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 7 楼』:  

你试试今天上载的最新测试版本。这个测试版应该很稳定了。现在 grub 中的预置菜单应该不会自动搜索软盘了。
------------------
我来分析一下:

grub --config-file=(fd1)/menu.lst

这条命令指定了菜单文件 (fd1)/menu.lst,如果 GRUB 确实能够找到并打开这个文件,就直接把这个文件当作配置文件,并执行其中的命令。否则,当文件不存在或者打开文件失败时,GRUB 就把内置的 preset_menu 作为主控菜单来执行。老的 preset_menu 是要搜索软盘的,所以,就出现了你所看到的情况。最新版 GRUB4DOS 中的 preset_menu 不再搜索软盘,所以应当不再有问题了。

不过,从刚才的分析似乎发现,(fd1)/menu.lst 可能不存在。

另外,U盘启动到DOS以后,应该A:就是U盘了,要么C:是U盘,不应当出现 B:或者 D:是U盘的情况。这是因为 DOS 不能从 A: 和 C: 以外的盘成功启动。

所以,你的 (fd1) 可能是不存在,你自己好像也没证明它是存在的。

如果 (fd0) 是你的真实软驱,它咔嚓作响,那我估计你的 U 盘应该是C:了。你这样试试:

grub

不要加 --config-file, 这样的话,默认寻找 (hd0,0)/menu.lst 作为配置菜单。



因为我们亲手创建,这个世界更加美丽。
2006-7-23 12:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
neiljoy
初级用户





积分 132
发帖 58
注册 2006-7-23
状态 离线
『第 8 楼』:  

不点大师的贴子我才看见,还没有来得及试验。我先说说刚才试验的情况,实在是太奇怪了!
1.我的电脑是华硕845D芯片组的主板,只有USB_ZIP项,没有USB_HDD项;
2.当我在BIOS中将软驱设为“无”时,我从硬盘上启动GRUB(当然,U盘已在),确认只存在三个盘:FD0、HD0、HD1(我有两个硬盘);
3.于是我从U盘启动在DOS下后,运行grub --config-file=(fd0)/menu.lst,照样死机;
4.重新启动电脑,仍将软驱设为无,运行grub --config-file=(fd1)/menu.lst,却可以正常启动GRUB,也不再读软驱了,当然也没有嘎嘎声。
为此,我十分奇怪,于是我进入GRUB命令行,运行:
cat (,     显示(fd0),(hd0),(hd1)
用cat (fd0,   显示它确实为U盘。
用cat (fd1,   显示为:Error23:Selected disk does not exist

2006-7-23 12:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
neiljoy
初级用户





积分 132
发帖 58
注册 2006-7-23
状态 离线
『第 9 楼』:  

按要求使用最新的7.23日版(实际上为7.22),现报告如下:
1.试用情况与原grub for dos V4.1相同,在U盘中必须使用
grub --config-file=(fd1) /menu.lst才能启动,如果在BIOS中未断开软驱,仍有读盘动作,软驱嗄嗄响;如果在BIOS中将软驱设为无,无读盘,不响,也能启动。
2.使用grub --config-file=(fd0) /menu.lst不能启动,在
CD-ROM setup is OK. 后死机。但U盘在死机之前仍有较长时间的读取动作(因为U盘的灯一直在闪烁)
3.我通过硬盘启动GRUB后,确实有以下显示:
possible disk are:fd0 fd1 hd0 hd1 rd
如果使用 cat (fd0,   则无任何显示(上个版本有显示),rd也一样无显示;
使用  cat (fd1,     则有"Plssible partitions are:"等内容的显示。

我已查清,如果我把C盘中的menu.lst删除,则无论使用--config-file=(fd1)或者--config-file=(fd0)均死机,说明U盘运行GRUB时读取的菜单实际上是C盘根目录下的,它无法读取U盘根目录下的菜单(虽然有较长时间的读取动作,但最终还是死机)。
结论:如果C盘下无menu.lst,我无法在U盘的DOS启动环境下运行GRUB,否则死机。
但我无法理解的是:是否死机竟然受C盘有无menu.lst的制约,难道没有办法解决吗?

2006-7-23 14:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 10 楼』:  

那看看BIOS设置里有没有每次开机检测软驱(BOOT UP FLOPPY SEEK)
和、交换软驱盘符(SWAP FLOPPY DRIVE)选项
另外如果menu.lst在根目录,可以直接grub回车调用内置菜单启动呀!

2006-7-23 15:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
neiljoy
初级用户





积分 132
发帖 58
注册 2006-7-23
状态 离线
『第 11 楼』:  

直接运行GRUB,可以不死机,软驱也不响。但却没有菜单(已将C盘根目录下的menu.lst删除,否则可以显示),屏幕的最后显示为GRUB命令行。两个疑问:
1.  这种情况下如何能够显示menu.lst菜单?
2.  看来,就是因为读取U盘的菜单问题才导致死机,如何解决?

2006-7-23 16:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 12 楼』:  

我这个机子不支持USB启动,没办法用你的方法测试。不知道属于个别现象还是GRUB的一个BUG,等不点大师解答吧。哦...同一个包里的grldr在你的U盘上正常吗?

2006-7-23 16:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 13 楼』:  

--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 厂家或者主板生产厂家解决。



因为我们亲手创建,这个世界更加美丽。
2006-7-23 16:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 14 楼』:  

--另外如果menu.lst在根目录,可以直接grub回车调用内置菜单启动呀!

GRUB 默认启动的菜单是 (hd0,0)/menu.lst,输入 grub 回车和输入 grub --config-file=(hd0,0)/menu.lst 是同样的效果。所以,这种办法并不能启动 A: 盘上的 menu.lst。

--哦...同一个包里的grldr在你的U盘上正常吗?

对,你可以尝试把 GRLDR 安装在 U 盘上,直接用 GRLDR 启动,看看 GRLDR 可否成功读取 U 盘根目录里的 menu.lst。不过我估计照样失败,因为 GRLDR 和 GRUB 本质上是一样的,差别只在于启动过程不同。当进入 GRUB 环境之后,就没什么差别了。


一个最无奈的办法是,把菜单整个嵌入到 GRUB 的命令行中,这样就不需要进入 GRUB 之后再从 U 盘装入菜单了。如果菜单很小,可以嵌入 grub.exe 的命令行(DOS提示符下或者AUTOEXEC.BAT中),如果菜单很大,则必须用 config.sys 了。GRUB4DOS 的发布里面就有一个做例子用的 config.sys,你研究一下这个例子就管用了。

不过,你仍然要记住,进入 GRUB 的环境之后,不能有访问 U 盘的动作(菜单命令也不要有访问U盘的动作),否则仍然免不了死机。

[ Last edited by 不点 on 2006-7-23 at 17:22 ]



因为我们亲手创建,这个世界更加美丽。
2006-7-23 17:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
neiljoy
初级用户





积分 132
发帖 58
注册 2006-7-23
状态 离线
『第 15 楼』:  

BF1B065057B9E501F3A4CBBDBE07B104
386E007C09751383C510E2F4CD188BF5
83C610497419382C74F6A0B507B4078B
F0AC3C0074FCBB0700B40ECD10EBF288
4E10E84600732AFE4610807E040B740B
807E040C7405A0B60775D28046020683
46080683560A00E821007305A0B607EB
BC813EFE7D55AA740B807E100074C8A0
B707EBA98BFC1E578BF5CBBF05008A56
00B408CD1372238AC1243F988ADE8AFC
43F7E38BD186D6B106D2EE42F7E23956
0A77237205394608731CEB1A90BB007C
8B4E028B5600CD1373514F744E32E48A
5600CD13EBE48A560060BBAA55B441CD
13723681FB55AA7530F6C101742B6160
6A006A00FF760AFF76086A0068007C6A
016A10B4428BF4CD136161730E4F740B
32E48A5600CD13EBD661F9C3496E7661
6C696420706172746974696F6E207461
626C65004572726F72206C6F6164696E
67206F7065726174696E672073797374
656D004D697373696E67206F70657261
74696E672073797374656D0000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
0000000000000000D80C050000008001
01000EFE3F063F000000C1F301000000
00000000000000000000000000000000
00000000000000000000000000000000
000000000000000000000000000055AA

如果直接运行GRUB,不死机,软驱也不响。可以进入命令行,但回车后仍然是命令行,无菜单显示,可以用quit返回DOS。当然,也可以用type显示U盘根目录下的menu.lst,不过这样没有意义,因无法执行菜单中的命令。
我的想法是,1.启动到DOS下完全正常;2.也可以直接运行GRUB;3.仅仅是读菜单时才导致问题的出现。
因此,把这样的故障完全说是BIOS造成的,我还理解不了。

2006-7-23 17:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] [5] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: