无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 16341|回复: 43

[求助] grldr内置菜单的疑问

[复制链接]
发表于 2014-6-10 11:02:42 | 显示全部楼层
一楼的图片显示,机器是从 CD-ROM 启动,CD-ROM 里面的 GRLDR 可能是含有内置菜单的,屏幕显示内置菜单首先获得控制,然后内置菜单又调用外置菜单,于是外置的菜单又获得控制。

这个图片已经很清楚了,你的内置菜单首先获得控制,内置菜单里面的 configfile 命令又将控制传递给 /menu.lst 这个外置菜单。

另外,你应该用新版测试,你所用的 2013 年的版本,有点旧。最好用新版试试。

点评

用最新版依然是这样,有点不合理,我说说两点问题 1.加载grldr内置菜单之前不应该尝去加载menu.lst 2.grldr内置菜单没有configfile /menu.lst 即不会加载当前根目录的menu.lst  详情 回复 发表于 2014-6-10 11:15
回复

使用道具 举报

发表于 2014-6-10 11:26:29 | 显示全部楼层
本帖最后由 不点 于 2014-6-10 11:43 编辑

内置菜单中有一条不带参数的 configfile 命令,它就可以把控制传递给 /menu.lst 文件。

你可以去掉这条不带参数的 configfile 命令,这样就不会执行外置菜单了。


菜单初始化命令集里面的不带参数的 configfile 命令,其作用是把控制转移到 “默认” 的外置菜单文件。

grldr 启动后,就有一个默认的位置(即当前工作目录)。它通常是 grldr 所在设备的根目录。

这个默认位置上的 menu.lst 文件,就是默认的外置菜单文件。


点评

看到了 确实有不带参数的configfile命令 但是为什么第一次启动的时候 这条命令可以生效 加载/menu.lst 之后如果重新加载内置菜单的话这条命令就不会生效 不会加载/menu.lst 类似#1和#12的这种结构的iso  详情 回复 发表于 2014-6-10 11:51
回复

使用道具 举报

发表于 2014-6-10 11:59:29 | 显示全部楼层
那是智能判断的结果。为了防止无限多次执行 /menu.lst 导致循环死机,程序对此作了处理,只有第一次执行不带参数的 configfile 命令时才会执行默认的外置菜单,以后如果再次执行这条不带参数的 configfile 命令,那就失效了,当成空操作,什么也不做,直接执行 configfile 之后的命令。这是防止反复执行这条无参数的 configfile 命令导致无限循环死机的发生。

点评

好吧 如果能加个提示就好了 要不然有的用户会把第二次无法加载当成问题看待。。。  详情 回复 发表于 2014-6-10 12:37
回复

使用道具 举报

发表于 2014-6-10 15:29:09 | 显示全部楼层
本帖最后由 不点 于 2014-6-10 15:37 编辑

默认的外置菜单,不一定是 /menu.lst,因为用户可以修改它的位置以及文件名。它位于 grldr 的第二扇区。也就是说,/menu.lst 不等价于默认的外置菜单。

另外,即使像楼上 fukystone 所说的那样,写成 configfile /menu.lst,这对于用户的错误使用所导致的无限循环死机,也是无能为力,情况完全一样,丝毫没有改观。即:用户在外置菜单中执行内置菜单,而内置菜单又立即要执行外置菜单,这样必然是无限循环。

权衡一下,能够容错,防止用户产生死机,应该是更贴心的。因为这是能够做到的,我们就可以去做;如果我们做不到,那就到处广告,提醒用户不要犯某某错误,正如我们到处广告,不要错误地执行 find --set-root 那样。多费劲啊。

其实,世上没有完美的东西,鱼与熊掌不可兼得。任何一个做法,都有其优缺点。权衡的时候,只能采取其一,而不能兼顾所有的情况。


grub4dos 里面,没用的东西有很多,如果要精简的话,还轮不到考虑清理掉 configfile 这点逻辑设计。另外,已经实现的功能,不是说想去掉就去掉了,随随便便。你不需要的东西,别人可能在用。去掉了某个东西,可能会给别人带来麻烦。你觉得某个东西不好,你可以不用它,甚至你可以编译自己的版本,彻底去掉它;这是可以的。但是,如果要影响到别人的使用、影响到兼容性,那就是一个慎重的话题了。

回复

使用道具 举报

发表于 2014-6-10 15:44:28 | 显示全部楼层
sratlf 发表于 2014-6-10 12:37
好吧  如果能加个提示就好了  要不然有的用户会把第二次无法加载当成问题看待。。。

具体怎么加提示信息,你可以给个方案。我一点都不反对加提示信息,但我知道,我们的用户以及第三方开发者、发行者、以及最终使用者当中,有很多人反对增加提示信息。

如果你是指写到文档里面,那就不是 chenall 等开发维护者的责任了,因为那是你的责任,大家都在依靠你写的文档材料。当然,这些文档,广义来看,也属于开发的一部分。

点评

如果在后面一句提示 仅执行一次 怎么样 processing menu file /menu.lst, can only be executed once.  详情 回复 发表于 2014-6-11 09:34
回复

使用道具 举报

发表于 2014-6-11 09:57:19 | 显示全部楼层
不准确。执行一次的不是 /menu.lst,而是 不带参数的 configfile 命令。

执行任何一个 menu.lst 文件之前(不管它位于何处,也不管它叫什么名字),都会显示 Processing menu file ..... 的信息,而且它并不被限定只执行一次,而是可以执行任意多次,只要你用 configfile /menu.lst 就总是可以执行。

回复

使用道具 举报

发表于 2014-6-11 10:30:24 | 显示全部楼层
本帖最后由 不点 于 2014-6-11 11:06 编辑

长没关系,电脑打印的速度还是很快的。

问题是,这对用户不一定有多少帮助。用户通常不会留意这条信息,而且中文用户更不容易留意这条信息。

一闪而过的信息,即使你想看,都来不及。如果故意暂停几秒,拖延机器启动速度,不划算,我估计有人要抱怨了。

有鉴于只有高级用户(有一定的开发能力的用户)才关心这些东西,因此我觉得,只要在文档中加以公布,就可以了。高级用户通常都会仔细研读文档的。


另外,我认为,内置菜单中的无参数 configfile 命令,第一次把控制权交给外部的默认菜单以后,本来就不应该有第二次了。这是因为,当用户执行内置菜单的时候,用户希望内置菜单真正开始执行,而不是自动又一次地跳到外置的菜单里面,形成死循环。这个设计本来就没有毛病。因此,在文档中加以公布,是很自然的,很容易得到大家的理解。

如果某些应用场景需要多次执行 configfile,那么,菜单的设计者可以把内置菜单中的这条不带参数的 configfile 命令改成带参数的 configfile /menu.lst 命令,这就会反复执行了(当然也可能会造成无限循环死机)。注意,这条 configfile /menu.lst 命令之后的那些命令,都没有机会能够获得执行。configfile /menu.lst 就相当于无条件 goto 到 /menu.lst 里面去了,而且不能返回到内置菜单中,即,不能继续执行内置菜单里面其余的命令了。

当硬盘某个隐蔽的分区的根目录下存在某个 menu.lst 文件,并且这个文件的开头有一条语句是执行内置菜单的时候,那就很容易造成无限循环死机,而且这种死机是难以排查的。不明真相的用户可能会认为是 grub4dos 的 bug 造成的,甚至认为 grub4dos 的开发者是垃圾,从而抛弃 grub4dos。

具体应该怎么做,那就看各位开发者、应用者自己的决定了。没有两全其美的方案,只有折中的方案。

点评

还是感觉应该加个提示 要不然总会有用户无意间用到了这个功能 再想使用却失效了 依然认为存在bug 还有不点大能不能再写点内置菜单相关的内容 比如 0x307ff8 值为1时不带参数的configfile会重新加载内置菜单  详情 回复 发表于 2014-6-11 12:02
回复

使用道具 举报

发表于 2014-6-11 18:03:31 | 显示全部楼层
用户用到某个功能,就应该查文档,查用法说明。任何命令,都应该有说明。没有说明的命令,那就没法用。关键是应该完善说明书。

前面已经说了,如果 configfile 命令总是无条件转向 /menu.lst,那么后续的命令全都没有机会得到执行。这显然是不合乎逻辑的。因此,限制 configfile 命令只能执行一次,是很自然的,稍动脑筋就会理解的。

点评

1、以前也有请教过不点,知道configfile不带参数就是默认执行外置菜单,但似乎没有特别说明只能执行一次。 2、这个设计不错,就不要加什么提示了,本来是帮助文档来解决的事,加到默认菜单里不好,即使加了也会有很  详情 回复 发表于 2014-6-13 05:14
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-28 14:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表