|
0.4.6 是直接加载 USB 驱动吗?是在内置菜单之前就加载了 USB 驱动、完全脱离主板 BIOS 了?如果是的,那就不需要打这个补丁。如果不是的,请看下文。
当内置菜单开始执行的一刻,此时还不曾有过 C 语言的读盘动作。此后,如果有读盘动作,比如去查找 menu.lst 文件,(不管找到与否)则会以 127 扇区读的方式去调用汇编语言磁盘读函数。这在 buggy 电脑上会立即引起死机。因此,必须在读盘之前执行 geometry --lba1sector 命令,这条命令会指示汇编语言函数按照单扇区读的方式去完成 127 扇区的读,也就是说,把 127 扇区读(一个读盘动作)转换成 127 个单扇区读。否则,机器死掉了,任何信息也看不到。
内置菜单第一条命令设置为 geometry --lba1sector,即可避免启动时死机。出菜单后,可以在默认菜单项中切换到 geometry --lba127sector 来满足大多数情况下的高速读盘的需要,这正是 multimbr 项目所采取的方法。此时,设置 geometry --lba127sector 当然在 buggy 电脑上会引起死机,不过,最起码用户看到了初始的菜单,我们在初始菜单中给出另外一个菜单项,用户有机会选择这个菜单项,而不再切换到 127 扇区的读,这样,用户就可以继续正常启动了,不会发生失败,只不过启动速度慢罢了。
不知道我说得明白与否。我也不知道 0.4.6 对此情况处理了没有。如果没有处理,那就需要打上补丁。如果处理了,你说说处理的细节,以便我调整 multimbr 项目的菜单结构来适应你的处理方式。
正常的 grub4dos 的发布,内置菜单并未添加 geometry --lba1sector 参数,那是出于兼容性的考虑。但是,不添加这条命令,就不能在那台 buggy 电脑上正常启动,是会死机的。
multimbr 就是为了处理这些极端情况的。0.4.5 中已经打上了 geometry 的补丁,可以用于 multimbr 项目。0.4.6 没有打上补丁,那就无法用到 multimbr 项目上了。
|
|