标题: 0.4.3正式版引入了bug,影响ext2分区grldr的查找。
[打印本页]
作者: 不点
时间: 2007-10-25 09:23
标题: 0.4.3正式版引入了bug,影响ext2分区grldr的查找。
0.4.3的grldr引导代码,在保护 int13 的寄存器时,把 int13/ah=8 的 dx 也保护了,结果,正确的 dh 不能返回。这将导致 grldr 引导代码在查找 ext2 分区的 grldr 时产生失败。
刚刚发现这一错误,10 月 25 日 已经更正了。
看来我们还得尽快发布一个正式版本。
作者: fastslz
时间: 2007-10-25 09:59
谢谢~
因为你和bean的敬业精神才有更完善更强大的grldr
作者: bean
时间: 2007-10-25 12:02
不过现在发布0.4.4好像早了点,要不叫为0.4.3 Final,把10-15的那个取代掉。
作者: 不点
时间: 2007-10-25 15:05
已经发布了的,是没有后悔药的。
如果叫 0.4.4 不太合适,可以叫做 0.4.3.1,这样也能够让人明白 0.4.3 是不行的。
(对了,和朋友们说一声对不起,是我的失误。)
当然不一定非得在这一两天内发布。但是也得尽快发布。现在我们得为新版本发布做准备了。
------------
我已经修改了 grldrstart.S,让它在装入引导扇区之前,先修改 BPB 中的 H 和 S,这样应该说就比较满意了。
我把 NTFS 引导扇区开头对 DS 和 ES 的初始化进行了调整,让这个初始化在 int13/ah=41h 之后进行,目的是确保初始化的结果不会让 int13/ah=41h 再破坏掉。
你再检查一下,看看有没有必要把你的改动也加进去。
不过,我提醒你一点,加入 int13/ah=8 是危险的,因为这同样会引入 bug。
Ralf brown 的中断列表中说 int13/ah=8 会破坏很多寄存器,甚至段寄存器。由于 大量 buggy 主板的存在,所以,执行任何一个 int 调用都是一件不可靠的事情。
因此,我还是觉得,ntfs 的扇区内部,就不用再调用 int13/ah=8 了。如果确实有空间的话,你可以调用。不过要注意保护 DS, ES 和你要用到的其它寄存器。
其实我想解决 pt 报告的那个 USB 移动硬盘的 bug,但是,他的报告非常奇怪,不像是 CHS 的错误导致的。