中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] »
作者:
标题: WinGrub的问题 上一主题 | 下一主题
waffle
中级用户




积分 230
发帖 37
注册 2003-5-24
状态 离线
『楼 主』:  WinGrub的问题

我把Grub装在了u盘的启动扇区上,grldr放u盘根上,menu.lst放u盘/grub目录下。但是启动的时候老说找不到menu.lst,进grub控制台,root一看u盘被当成了fd0,照理说应该找得到menu.lst。从控制台能进其他系统。后来在(hd0,0)上放了个menu.lst马上找到了。请问是什么原因?

2005-1-9 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zdq789
初级用户




积分 182
发帖 10
注册 2004-12-28
状态 离线
『第 2 楼』:  

       我也有同样的问题,我是把u盘格式化为zip模式,用它启动电脑,在dos下运行grub,可以读出硬盘的menu文件,却读不出u盘上的menu!       而且我还无法把grub装入u盘的mbr,grub能够root出fd(0),但读不出u盘里的stage文件!       但我觉得,你既然能把归入把写入u盘,那grub应该可以读出u盘里的stage,也应该可以读出menu啊!       我是这样做的,root (fd0)                               setup (fd0)然后提示找不到stage文件,但文件确实存在!你是怎样把grub写入u盘的呢?请教?

2005-1-9 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
waffle
中级用户




积分 230
发帖 37
注册 2003-5-24
状态 离线
『第 3 楼』:  

我的u盘好像只能USB-ZIP启动,FAT16格式,我发现用这种方式启动的时候主板不会理会u盘的扇区0(MBR),而是直接读引导扇区(扇区32),和软盘启动类似。我没有直接在物理机器上装wingrub,而是在虚拟机上的win98装了wingrub,然后把grub装在一个软盘上(实际用的是物理机上的一个软盘镜像),并且把虚拟机里硬盘上的menu.lst删除了,在虚拟机里用软盘启动能从软盘读到menu.lst,一切正常。再把这个软盘的启动扇区(也就是物理机上软盘镜像的第一个扇区)写到u盘的启动扇区(但要保留原本u盘启动扇区的BPB)。

2005-1-10 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
waffle
中级用户




积分 230
发帖 37
注册 2003-5-24
状态 离线
『第 4 楼』:  

又发现个问题,如果用别的格式化工具格式化u盘,GRLDR非但不能找到menu.lst,连cat (fd0)/+TAB都会说没有找到文件。如果用win98的format,也不能找到menu.lst,但是cat (fd0)/+TAB会出来乱码,u盘上找不到文件可能和格式化工具有密切关系。出现乱码表示什么,目录被破坏还是怎么了,在windows系统里可是能正常看到文件的。

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

不甘寂寞的人


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

可惜我的机器太旧,不支持 USB 启动。猜想原因应该在 BIOS 上。




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




积分 230
发帖 37
注册 2003-5-24
状态 离线
『第 6 楼』:  

感觉好像不是BIOS的问题,因为同样的机器和u盘,做成USB-ZIP启动方式的Dos启动盘就一切正常,就跟真的软驱一样,也是用盘符A:。

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

不甘寂寞的人


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

似乎与 GRUB4DOS 无关。

那么,问题可能是 GNU GRUB 的软盘处理部分有 BUG 了。我们大家都可以研究一下 GNU GRUB 的源代码,尤其是 asm.S 中有关软盘的处理。

另外,将 USB 仿真为硬盘(USB-HDD)时,出现不出现问题呢?问题都搜集起来,或许能提示我们 BUG 在哪。






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

不甘寂寞的人


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

请研究这条消息,看是否有用:
http://lists.gnu.org/archive/html/bug-grub/2004-11/msg00035.html




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

不甘寂寞的人


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

在上述 http://lists.gnu.org/archive/html/bug-grub/2004-11/msg00035.html 的情况下,用

map (fd1) (hd?)

应当就可以了。也就是,把 (fd1) 当作硬盘 (hd?),其中 ? 是一个你认为空闲的硬盘号码,比如用 0 就行。






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

不甘寂寞的人


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

补充:

需要再用一条

map --hook

以便你在 grub 下使用硬盘 (hd?) 中的分区和文件。

该“硬盘” 上的文件应当是类似如下的表示法:

(hd?,0) ------------- 第一主分区
(hd?,1) ------------- 第二主分区
(hd?,2) ------------- 第三主分区
(hd?,3) ------------- 第四主分区
(hd?,5) ------------- 第一扩展分区
......................................







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

不甘寂寞的人


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

另外一点提示,或许有用:

如果你能获得 GRUB> 的提示符,在提示符下敲入

root (

也就是 root,一个空格,一个左括号,然后按键盘上的 TAB 制表键,那么,GRUB 将列出 GRUB 所识别到的系统中全部磁盘的号码。

你看看有没有多余的,如果有的话,那么那个多余的磁盘号码,可能就是你的 USB 盘了。如此,你就可以找到 USB 盘上的所有文件了。








因为我们亲手创建,这个世界更加美丽。
2005-1-13 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
waffle
中级用户




积分 230
发帖 37
注册 2003-5-24
状态 离线
『第 12 楼』:  

USB-HDD方式没法启动,据说一般的u盘是可以在USB-ZIP和USB-HDD两种方式之间切换的,但这种切换只有用厂商发布的专用软件才能完成,遗憾的是我这个u盘没有厂家的专用软件。我的u盘128M,全部容量只分了个主分区,FAT16格式。现在是以USB-ZIP方式启动的,grldr是能加载的,但是它不认u盘上的其他文件。root (+TAB的结果是Grub列出了fd0,hd0,hd1,这符合情况,我机器上是有2块硬盘和1个u盘,u盘被认做了fd0。关于map命令,我总觉得用fd0去map个硬盘似乎不妥当,因为既然系统把u盘认成了fd0,那么就会按照软盘的规范来操作了,而软盘是没有分区的概念的,硬盘又是有分区概念的。然后我map (fd0) (fd2)map --hook然后root (+TAB看到fd0,hd0,hd1,hd2root (hd2,0)结果报错error 19:selected cylinder exceeds maximum supported by BIOS

2005-1-13 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


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

为什么不这样呢:

map (fd0) (hd2)
map --hook

然后root (+TAB看到fd0,hd0,hd1,hd2然后root (hd2,+TAB
(此处显示hd2中的全部分区信息)





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

不甘寂寞的人


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

不过你贴出的错误信息很能说明问题。基本可以断定,错误仍然属于 BIOS 的。

情况可能是这样的:BIOS 虽然实现了 USB 的扇区读写(int13/ah=02和03),但还有某些功能没有实现,比如 int13/ah=08h,或者 int13/ah=15h,或者这些功能实现得不正确,有错误。这些将直接导致 GRUB 不能承认该实现。

但是,缺少这些实现,又可以使得 DOS 能够正常启动,这就给人一个假象,使得我们误认为 GRUB 有 BUG。

那些写这段 BIOS 程序的人,他们只测试 DOS 能够启动就完事了,其实这里面潜藏着问题的。GRUB 不能正常识别它,这就是一个表现。如果你足够多地测试其它 DOS 软件,你还会发现还有别的程序无法运行,或者得到莫名其妙的结果。








因为我们亲手创建,这个世界更加美丽。
2005-1-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
waffle
中级用户




积分 230
发帖 37
注册 2003-5-24
状态 离线
『第 15 楼』:  

map (fd0) (hd2)
map --hook
root (hd2,+TAB然后出来3个错,分区0,error 19:selected cylinder exceeds maximum supported by BIOS;分区1,error 19:selected cylinder exceeds maximum supported by BIOS分区3,error 19:selected cylinder exceeds maximum supported by BIOS不知道为什么没有分区2。grub把软盘map成硬盘的根据是什么,软盘没有分区这个概念,grub从哪里搞个分区表出来呢?有什么dos软件可以用到你说的那些bios功能?

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


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



论坛跳转: