在
http://grub4dos.jot.com/ 上有最新编译的 GRUB.EXE 文件。这个文件支持在 win98 下运行,原则上讲,也应该能够在 winMe 下运行,但是我这里没有 WinMe 的机器,所以无法测试。在 NT/2K/XP 下肯定不行,不要指望了。
是的,我们确实没必要支持在 WIN98 下运行,因为 WIN98 可以切换到 real mode 的 DOS 来运行 GRUB.EXE。
但是,既然有这种可能性,那为什么不去尝试呢?如果我们能够在 98 下顺利运行,这对于我们进一步理解硬件、掌握深层硬件知识,无疑会有很大的帮助。
目前这个版本,在一台老机器(win98)上测试,非常成功,但是,在其它机器上测试,统统归于失败,启动 GRUB.EXE 的过程会造成死机。注意,你测试的时候也会死机(!!!!),记住保存好你的工作,比如退出你正在编辑的 WORD 文档,然后再测试。
那台成功的机器,主板比较旧,是华硕的 PII 主板。机器中没有网卡,而在 98 下电源管理驱动也没有安装成功(这可能也是运行 GRUB.EXE 成功的一个原因),也没有内置和外置的 MODEM,声卡也没有驱动成功。我怀疑,所有这些不成功的硬件,正是启动 GRUB.EXE 成功的原因。
在其它机器上,网卡、声卡、电源管理都已经正常驱动,所以,用 GRUB.EXE 强行进入实模式之后,这些硬件不断发来的中断信号,导致 GRUB 死机。我已经对 PIC 进行了编程,包括对 PIC 的优先级进行了实模式兼容性调整,将中断号重新设定为实模式的 int08 到 int0F,int70 到 int77,但是我没有屏蔽任何中断,因为资料上说,BIOS 在 POST 之后会开放所有的中断,不会屏蔽任何一个。
需要硬件知识,谁知道的,帮忙吧。目前我猜测是因为那些硬件中断没有合适的实模式驱动程序而产生死机。谁知道怎么初始化那些硬件,让它们与实模式兼容?