中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] ... [19] »
作者:
标题: GRUB 伤脑筋的问题, 大家会诊一下 上一主题 | 下一主题
不点
银牌会员

不甘寂寞的人


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

【1 月 20 日更新】 Wengier 报告 BUG:当 DOS 汉字系统存在时,显示实际上处于图形模式。这时 grub 的输出在屏幕上看不见。问题已经解决了。解决的办法:增加两条指令恢复文本显示模式。其它没有改动。

  顺便有一个发现【好像比较令人吃惊】:用 Wengier 的“超级通用 MS-DOS 7.10 启动盘”启动 DOS 之后,由于在这个 DOS 下加载了鼠标驱动程序,所以,在 grub.exe 运行之后的 grub 环境中能够使用鼠标了。我在别的情况下运行 grub.exe 后,不能使用鼠标。看来“超级通用 MS-DOS 7.10 启动盘”中的那个鼠标驱动程序是够厉害的。

  正式版的推出日期基本上完全取决于英文文档的完成日期,希望有人能够帮助【可以参照本文结尾的中文文档,从而贡献一篇英文的说明文档】。我写作英文比较吃力,所以,如果由我来写 0.2.0 的英文说明,可能就太过于简化了。

  仍然可以在 Wengier 的 新 DOS 论坛 之“启动盘室”报告 BUG。


  下载第五个(也许是最后一个)公开测试版本,在这里:

ftp://ftp.cosoft.org.cn/incoming/grub_t15.exe

==========

批处理的问题不想解决了,因为那是另外编程,有可能和 GNU 未来的设想发生冲突,或者导致重复开发。

NTLDR 所引起的问题,也不一定能够解决。我们对 DOS 的支持是重点,NTLDR 不属于 DOS,就要放在以后再去解决了。


中文说明文档暂时放在以下网页的结尾处:
http://www.linuxeden.com/edu/doctext.php?docid=3006



因为我们亲手创建,这个世界更加美丽。
2004-1-20 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 92 楼』:  

我用GRUB for DOS在这台电脑上试图用map命令虚拟软盘,比如说:

map (hd0,1)/grub/dos.img (fd0)

路径本身应该是正确的,但GRUB总提示以下错误信息:

Cannot mount selected partition.

不知何故?




Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-1-21 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


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

或许这个路径是错误的。

(hd0,0) 一般是主分区,(hd0,1) 一般是 DOS 的扩展分区“容器”,它不是一个分区。只有 (hd0,4) 才是一个逻辑分区。所以,一般不存在一个叫做 (hd0,1)/.../... 的路径。

Cannot mount selected partition.

这个错误信息说明了 (hd0,1) 不能被 mount,因为它不是逻辑分区,没有【grub 所认识的】文件系统在里面。

-------------------

看来 grub for dos 已经很稳定了,很难再碰到什么 BUG 了。

最近准备做一个 grub for NTLDR 的东东,使得在 NTLDR 的 boot.ini 中可以启动 grub。





因为我们亲手创建,这个世界更加美丽。
2004-1-22 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 94 楼』:  

不点:我发现在纯DOS下加载了USB驱动程序(USBASPI.SYS+DI1000DD.SYS)成功在DOS下驱动U盘后,然后用GRUB命令来启动GRUB for DOS时,系统通常会死机(是真正的死机,而不是屏幕显示不出来)或自动重启。是不是GRUB for DOS与这些USB驱动程序不兼容?



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-1-22 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


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

严格来说,GRUB for DOS 是不能使用鼠标以及任何其它 DOS 下的驱动程序的。GRUB 将所有重要的 BIOS 中断向量都加以恢复。如果鼠标以及 USB 等所使用的中断没有被恢复到 BIOS 的初始值,则一般会导致死机。

GRUB 本来是直接接管启动任务的,它在操作系统之前就开始接管。GRUB 假定没有操作系统在它之前运行。GRUB FOR DOS 力求恢复所有重要的 BIOS 中断向量,以便让 GRUB 觉得舒服。但是也有大量漏网的 BIOS 向量没有恢复。这种情况下,如果漏网的中断还在活动,就会导致死机。

要解决这类问题, 需要知道设备驱动程序或者 TSR 究竟修改和使用了哪些中断,以便将该中断屏蔽掉。

但是,如果要在 GRUB 下使用 USB 盘,那一般是不行的。GRUB 的环境应当是干净的 BIOS 环境,如果 BIOS 不支持 USB 盘,那么 GRUB 就不能访问 USB 盘【目前是如此】。





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

不甘寂寞的人


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

grub for ntldr 初始版本发布了。

软件简介:从 Windows 2000 的 NTLDR 引导菜单中可以直接启动 GRUB。下载地址:

ftp://ftp.cosoft.org.cn/incoming/grub_for_ntldr-test001.tar.gz

用法:解压后将 bootgrub 和 grldr 两个文件拷贝到 C: 盘根目录,修改 Boot.ini 文件即可。一般是在 Boot.ini 文件末尾增加如下一行:

C:\bootgrub="boot grub"

bootgrub 是一个引导扇区,它要引导 grldr 文件。GRUB 的程序代码是在 grldr 文件中。

中文信息网页暂时还在这里:
http://www.linuxeden.com/edu/doctext.php?docid=3006





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





积分 2202
发帖 499
注册 2003-6-12
状态 离线
『第 97 楼』:  

这应该是没有Menu.lst的纯Grub吧?



一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— !
2004-1-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


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

支持 menu.lst 的功能,是在 GNU GRUB 中实现的,因此,GRUB for DOS 以及 GRUB for NTLDR 都可以用 menu.lst 文件。

for NTLDR 的版本所不同的,是在 BOOT.INI 中无法写命令行参数,所以,只能使用默认的 (hd0,0)/boot/grub/menu.lst 文件。

如果没有这个菜单文件,那么还可以在命令行中使用

configfile (hd0,7)/boot/grub/menu.lst

之类的命令来启动菜单。

当然了,如果 (hd0,0) 是 NTFS 分区,那么菜单是无法起作用的,因为 GNU GRUB 还没有支持 NTFS。

------------

另外,虽然 GNU GRUB 不支持 NTFS,但是,GRUB for NTLDR 仍然可以在 NTFS 系统的 NTLDR 菜单下引导成功。

这是两个概念:引导 GRUB 的系统可以处于 NTFS 之下,当然 GRUB 获得引导之后,在 GRUB 中仍然无法读取 NTFS 分区里面的文件。

也就是说,BOOTGRUB 和 GRLDR 两个文件可以处于 NTFS 文件系统中,它们能够完成引导 GRUB 的任务。





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





积分 2202
发帖 499
注册 2003-6-12
状态 离线
『第 99 楼』:  

不点大哥,我放Grub在MBR的,lst文件在boot\grub里,从Boot.ini启动后的菜单功能都正常,其中1项是Map了1个dos的img,便是启动到纯dos,而我要回到Grub的命令行,又得键:Grub;在lst文件该如何定义1项启动Grub纯命令行的呢?还有,有时进了命令行又忘了想Map那个IMG名了,看半天找不到列目录的命令,只好重chainloader到boot.ini返回dos,看清img名又进Grub,有列目录的命令吗?       谢谢...




一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— !
2004-1-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


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

GNU GRUB 原始的功能,有些做得不很方便,例如,就没有一个菜单命令直接退回到命令行。我不想为 GNU GRUB 增加这样的命令,一个原因是没有时间,第二个原因是恐怕别人也做这个,重复劳动浪费精力;第三个原因,觉得这个问题不很紧迫,也没有太大的兴趣。

--------

另外我感觉 xiaojun 兄似乎对 GNU GRUB 不很熟悉,应当 google 网络找找资料看看了。

1。从菜单进入命令行的方法:直接敲键盘左上角的 ESC 键即可。【从 GRUB 命令行返回到 GRUB 菜单,似乎也是用 ESC 键。】

2。虽然 GRUB 没有一个 DIR 命令,但是可以用命令行自动补齐功能来察看文件等信息。举例:

敲入

root (

在左括号敲入后,按一下键盘上的 Tab 制表键,就可以列出 fd0, hd0, hd1 等硬盘了,

root (hd0

再按 Tab 键,可能出来一些分区信息:

root (hd0,0)

这时候,敲入一个 “/” 路径分隔符:

root (hd0,0)/

再次按下 Tab 键,则列出 (hd0,0) 根目录下的内容。当你看到根目录中有一个 boot 的时候,你敲入:

root (hd0,0)/boot/

这时再次按下 Tab 键,则列出 boot 目录下的内容。当你看到 boot 目录中有一个 grub 的时候,你敲入:

root (hd0,0)/boot/grub/

这时再次按下 Tab 键,就看到 GRUB 目录中全部文件的列表了。

---------------

Tab 键很方便,例如你敲入

ch

然后按一下 Tab 键,则自动把命令补齐,变成

chainloader





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





积分 2202
发帖 499
注册 2003-6-12
状态 离线
『第 101 楼』:  

以前用过自动补齐,当我敲root (h 后Grub补出的是分区信息,原以为它只补分区,惭愧惭愧,感谢不点大哥,又教兄弟1招,多谢了... !          :)



一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— !
2004-1-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 102 楼』:  

不点:

我现在这个系统中有两个硬盘,但每次只能从其中的一个硬盘启动。我想通过GRUB for DOS用以下命令来实现从另一个硬盘启动:

root (hd1)
chainloader (hd1)+1
boot

但是,我发现此命令执行后仍然是从第一个硬盘启动,而不是从第二个硬盘启动。交换硬盘后也一样。路径本身应该没错,从tab键的显示就可以看出来。不知是什么原因呢?

不过您的GRUB for DOS及GRUB for NTLDR做得都非常好,我们大家都非常感谢!我想问一下,您做的许多关于GRUB的新增的很有用的功能以及bugfixes,那些GNU GRUB的作者会将它们加入到新版本的GNU GRUB中吗?我希望如此,毕竟这些功能和bugfixes都是非常有意义的,而且还可以避免重复开发。您说对吗?

[此贴子已经被作者于2004-1-26 6:10:00编辑过]






Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-1-26 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


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

应当用以下的命令集来达到您的目的:

map (hd1) (hd0)
map (hd0) (hd1)
chainloader (hd1)+1 或者 chainloader (hd1,0)+1
rootnoverify (hd0)
boot

在您的命令集当中,root (hd1) 是错误的。这条命令告诉 BOOTLOADER 程序谁是引导盘。PC 机 BIOS 标准规定只有 A:盘和 C:盘才能成为引导盘,也就是 0x00 和 0x80 才可以引导,其它 BIOS 磁盘不能引导。由微软生产的 MBR 以及 DOS 引导代码都假定引导机器的硬盘盘号是 0x80, 也即 (hd0) 而不是 (hd1) 等等,所以,当我们用 (hd1) 来引导机器的时候,总是失败的。

既然必须从 (hd0) 来引导机器,因此我们只好用两条 map 命令来交换磁盘号码了。其实如果我们不仅引导 DOS,还想引导 windows 的话,还得使用 GRUB 的 hide 命令隐藏 NTFS 分区,否则 win98 启动时会一直查找 NTFS 分区从而导致死锁。

rootnoverify (hd0) 命令是需要的,因为 chainloader (hd1)+1 命令将引导盘的盘号变成了 0x81, 所以需要用 rootnoverify (hd0) 命令来加以纠正。chainloader (hd1)+1 命令的主要作用仅仅是把引导扇区放在 0000:7c00 的位置,等待 boot 命令将控制转移到这里。boot 命令在转移控制之前,先把 CPU 的 DL 寄存器设置成  rootnoverify (hd0) 命令所指定的值,也就是 0x80。

DL 寄存器携带着启动盘的号码,这一点必须保证,否则,引导过程就可能失败。

另外,Windows 和 DOS 有很多 BUG,我们基本上无能为力。能躲过去,则躲;躲不过去,则只有认命了。如果 FreeDOS 有什么 BUG,我们还可以向开发者报告 BUG,或者我们自己也可以试图消除它。

=================

您提到的第二个问题,是我从一开始就要面对的问题。当时我也不想另外立一个项目,自己维护。因为这样很复杂,而交给 GNU GRUB 去维护,则省去了我的不少麻烦。但是左思右想,还是觉得自己维护比较可行。原因有以下这些:

1。我不能肯定 GNU GRUB 的开发者是否会接受我的 PATCH。虽然我并未向 GNU GRUB 提交 PATCH,但我曾经向别的项目提交过补丁,项目维护者甚至连一封回信都没有,就石沉大海了【当然只有一次没有采纳,其它的PATCH还是采纳了】。

2。GRUB for DOS 不是一个小补丁,而是一个大大的补丁,处于开发之中,经常变动。在这种情况下,不适合提交补丁。只有等不再继续开发之后再提交才合适。

3。提交补丁是一个琐碎的事情,比较麻烦。我喜欢编程,不喜欢写文档,也不喜欢提交补丁。

4。我对 GNU GRUB 开发组的工作效率表示极大的疑问。他们居然有好几个月都不对 GRUB 进行升级,仍然是 0.93 的版本。这个效率是不能令人满意的。我可是个急性子,不想被他们这样拖住。

大致基于以上这些原因,我决定由自己来维护一个新项目。现在看来,这确实是一个比较明智的决定了。因为直到现在,GNU GRUB 的版本还是 0.93,这简直太慢了,受不了。

当然了,在 GRUB for DOS 0.2.0 推出之后,我也要考虑提交给 GNU GRUB 的问题了。但是,他们未必会采用,因为英文的文档我写不好。没有好的英文文档,他们是不会轻易采纳的。我所以很希望有人能够帮忙啊。

顺便说,GRUB for DOS 0.2.0 将把 GRUB for NTLDR 包括在内了。





因为我们亲手创建,这个世界更加美丽。
2004-1-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 104 楼』:  

不点:谢谢以上信息!

刚才我对GRUB for NTLDR做了进一步的测试,发现它在我的大硬盘(C盘是2048MB的FAT16)上运行基本正常;但在我的小硬盘(C盘是500MB的FAT16)上则无法正常运行,现象是在NTLDR菜单上选择此项后自动返回NTLDR菜单,而无法进入GRUB。两个硬盘中所用的MENU.LST文件是相同的(MENU.LST修改过也无效,看来不是MENU.LST的原因),而且GRUB for DOS则没有此问题。不知何故?

另外,我发现BOOTGRUB.INI中有以下信息:

Error: NTLDR not found. Press Ctrl+Alt+Del to restart.

其中的“NTLDR”应为“GRLDR”吧。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-1-26 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


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

试试 test002 怎么样?

ftp://ftp.cosoft.org.cn/incoming/grub_for_ntldr-test002.tar.gz
ftp://211.100.7.71/incoming/grub_for_ntldr-test002.tar.gz





因为我们亲手创建,这个世界更加美丽。
2004-1-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] ... [19] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: