|
本帖最后由 不点 于 2015-1-17 19:14 编辑
我本来不想公布的,你这么一说,我就不能再藏下去了。
公司有一批 dell 机器,型号都一样。我清楚地知道,这个软件在 dell 机器上可以正常运行。
但忽然有一天,一个同事的机器需要重装,我就拿这个新的多重mbr去启动,结果失败,显示 CEDE,表示读盘失败。
反复启动几次,都死在 CEDE。无奈试试 fbinst,正常进入。
我把 u 盘插到别的品牌电脑上,结果没有遇到失败。我怀疑是不是 u 盘的介质坏掉了,用新买的 u 盘重做一个 。
再试验,发现在那台 dell 机器上依旧死于 CEDE。
进一步试验,同型号的 dell 机器也有不上网的,却完美进入。这证明是上了网的电脑,更新 windows 驱动时,顺便更新了 bios 硬件,封杀了这个软件。
在不上网的几台 dell 电脑上全部成功,只有上网的电脑才会失败。有一台 dell 电脑,虽然它上网,但起初也能启动成功。不过又经过一段时间以后,却变成死于 CEDE 了。这证明是硬件程序被更新造成的。
技术跟踪的结果,发现导致失败的扇区为 grldr 的 第 (1152 - 17 )个扇区。读的内存位置大约在 0x93000 附近(这个位置距离 dell 的 EBDA 还远着呢)。于是,我修改了代码,不去读 1152 那么多的扇区,而只读 1089 个扇区,控制在地址 0x90000 以下,就躲过了此劫。
故障暂时得到了 workaround,但看样子封杀永远也不会停止的。今后我也不会再去研究了,看看情况会发生什么变化。假如遇到类似的问题,看看还有没有人去跟踪找原因,并予以解决。 |
|