|
在 legacy bios 的情况,grub4dos 里面的许多处理,我是比较了解的。
相关的问题,我觉得,有必要给您解释一下。
iftitle 命令是 chenall 添加的。它比 title 命令更灵活方便。但带来的问题也很棘手。
与 iftitle 相比,原来的 title 命令,我在这里就称之为 “静态 title 命令”。
静态的 title 命令,是直接处理,无需访问磁盘,所以,不会出问题。
而带有 if 的动态 title 命令,它有 “条件” 需要判断,而执行条件判断的时候,就可能是要访问磁盘了。而在访问磁盘时,是有可能死机的。
这里有个误区,就是,“我测试正常啊?怎么会死机呢?”
死机会发生在那一类 “不友好” 的电脑上。并非统统死机。
所以,用户会碰到不正常,然后用户来报告。
开发者不能够以 “自己的测试正常”,然后就认为没问题。
正确的代码,不一定能够正确地运行。这是以前多年来得到的经验教训吧。
其实这绝大多数都是封杀行为,就是,硬件故意设计成让某个软件转不起来。
由于 iftitle 命令有可能导致死机(在执行条件命令的时候因访问磁盘而死机),所以,我在准备处理菜单之前,先打印一条消息(英文的,中文意思是:)“正在处理 某某某 菜单……”
如果此时死机,那么,这条消息就能够被用户拍照,然后,开发者就知道,是处理菜单时死机了。也就是说,configfile 所指定的那个菜单,根本就无法处理。
如果没有死机,上述消息很快就消失了,用户通常也看不见,除非那电脑慢如蜗牛。
并非只有 iftitle 命令会导致死机。在那些有问题的电脑上,任何访问磁盘的命令,都可能导致死机。
iftitle 的特殊性在于,还没显示菜单,就已经死机了。
此时,用户甚至都无法用 pause 命令!因为 pause 命令(以及其他命令)
是在菜单显示之后才可能开始处理的。
所以,请大家尽量不要使用 iftitle 命令。虽然 “恶意攻击” 的电脑数量不太多,但那是存在的。使用 iftitle 命令,就会带来这种风险。任何一种有可能 “丧失启动成功率” 的做法,都是得不偿失的。
我写得长了,阅读起来,可能费劲。请各位在空闲的时候,仔细阅读,慢慢品味。 |
|