CML2:一种新型、更简单的内核配置系统

作者:Eric S. Raymond

一种新的 Linux 内核配置方法目前正在进行 beta 测试。我编写了一个名为 CML2 的替代配置系统,它比现有的工具更小、更简单、更强大。人们已经开始将现有工具称为 CML1。CML2 可以使用关于特征之间关系的逻辑规则,通过仅显示用户实际需要回答的问题,来简化用户的配置任务。

与现有的 CML1 系统一样,CML2 所知的规则和提出的问题没有硬编码到配置器本身中,而是分离到用一种人类可以阅读和编辑的专用语言编写的声明文件中。但是,CML1 的语言随着时间的推移而发展,已经变得丑陋而笨重,甚至连它的维护者都不喜欢,而 CML2 则是全新设计的,吸取了 CML1 的所有历史教训。

有时,一个特性需要另一个特性;例如,并行打印机支持需要并行端口支持。在 CML1 中,这意味着第二个(祖先)特性的问题必须出现在第一个(依赖)特性之前。但是在 CML2 中,可以按任意顺序选择特性;CML2 使用其依赖关系规则来自动推断何时应该设置祖先特性。

事实上,CML2 是围绕一种约束语言构建的,并且内置了一个定理证明器;它类似于一种被称为“专家系统”的人工智能程序,并且可以进行多种推导,从而简化配置任务。最终,我的目标是使内核配置规则库足够丰富,以便即使是 Linux 新手也能轻松构建内核。

值得注意的是,所有这些功能都包含在不到 6,000 行的代码中。CML2 没有使用 CML1 笨拙的 C、shell、Tcl/Tk 和 Perl 混合编写,而是完全用 Python 编写的。我将此选择归功于能够在短短四个月的兼职工作中,从概念到开发出可以用于生产的系统,其中大部分时间是在飞机上和酒店房间里完成的,因为我经常出差传播开源理念。

CML2 项目得到了 CML1 维护者的祝福,他们早就意识到旧项目已经过时。它尚未被接受到 Linux 内核树中,但许多内核开发人员正在帮助进行 beta 测试,并且在 2.5.x 系列中被采用的可能性看起来不错。

最终,我希望将 CML2 应用于其他问题,例如硬件配置,或 Linux 发行版的智能构建。您可以在项目页面上找到有关 CML2 的更多信息:http://www.catb.org/~esr/kbuild/

© . All rights reserved.