与 Inalambrica.net 的 Alfredo Delgado 的对话

作者:Phil Hughes

A Conversation with Alfredo Delgado of Inalambrica.net

Alfredo Delgado

2001 年 10 月,当我在哥斯达黎加时,我与许多 Linux 倡导者进行了会面。其中一些来自公共部门,另一些来自私营企业。Inalambrica.net 是一家将其所有产品都基于 Linux 的私营公司。我采访了他们的首席技术官,为Linux Journal撰写了一篇文章,但也看到他们正在做一些有趣的事情,我认为这些事情对 ELJ 的读者也很有意义。

本文基于我与 Alfredo Delgado (Alf) 的一次对话,他于 2001 年 1 月 1 日加入 Inalambrica,负责他们的系统设计和集成。Inalambrica.net 需要一个嵌入式 Linux 系统来作为其产品的基础,他们提出了我认为是独特的解决方案。

ELJ:请简要描述 Inalambrica 正在生产的产品。

Alf:我们的目标是构建一种廉价且易于使用的网络管理设备(互联网接入和带宽控制),具有多种连接选项,旨在面向 SOHO 和中小型企业及网络。该设备具有一个 Web 界面,用于处理从配置到报告到系统维护(软件包升级、新硬件等)的所有事务。

我们不是一家硬件公司,我们的主要产品是驱动这种设备的软件,而不是设备本身。我们的想法是能够将软件(我们自己的发行版及其模块化 Web 界面)发送给分销商,甚至在不久的将来直接发送给客户。

最终,我们希望只发送一个带有 IDE 接口的 CompactFlash 卡和一个兼容硬件列表,但这需要一段时间才能实现。

ELJ:让我们了解一些背景信息。在您加入 Inalambrica 之前,他们使用什么作为其产品的 Linux 基础?

Alf:使用手工制作的机器,搭载 Debian 或 Slackware。

ELJ:这种基础有哪些缺点?

Alf:缺乏标准化、臃肿、耗时的安装——它们都是很棒的发行版,但它们并没有很好地针对手头的任务进行定制,尤其是在机器数量开始增长时;对基础发行版的自定义堆积如山,不同的连接选项衍生出不同的软件包、配置和界面选项集,总的来说,一切都变得更大、更慢、更复杂。

ELJ:您决定使用真正的(我的意思是通用的基于 SQL 的产品)数据库来管理发行版。在您选择这个之前,您有其他想法吗?

Alf:是的。但我很早就放弃了它们。我们的第一个想法只是砍、凿和塑造 Slackware 以达到我们的目的;因此,我们的第一批测试机器是精简版的 Slackware,带有很多额外的软件包,并且 Web 界面必须为每个安装量身定制。我们获得了一些标准化,消除了一些臃肿,并缩短了安装时间,但我们对结果远不满意。一旦客户开始在几个国家涌现,并且具有非常不同的硬件和连接需求,我们就意识到,如果我们不找到一种更好(更灵活和自动化)的方式来做事,我们将很快面临巨大的支持问题。

ELJ:您选择使用 PostgreSQL 作为数据库。大多数人会认为这相当笨重。为什么选择 PostgreSQL 而不是 MySQL 例如?

Alf:我们的 Web 界面广泛使用 PostgreSQL。拥有两个独立的数据库管理系统 (DBMS) 没有多大意义。而且,我一直都是 PostgreSQL 的拥护者,所以我一开始就站在了正确的一边。我经常使用引用完整性、子查询和其他功能,而我上次检查时,MySQL 并不支持这些功能。

ELJ:请描述您构建的数据库的结构。也就是说,表中有哪些内容?

Alf:每个软件包都有自己的数据库。当然,基本安装程序包含 DBMS 系统,主数据库包含软件包和文件信息(已安装的软件包、版本、依赖项、文件和目录的引用计数、升级历史记录等)。

每个新软件包都会创建一个以软件包名称命名的数据库,用于保存配置选项、界面信息等。每个软件包维护者都负责各自的数据库。

ELJ:您说“每个软件包都有自己的数据库。” 这真的是一个数据库还是只是一个新表?

Alf:以基本网络软件包为例。该软件包名为 network,因此它在 PostgreSQL 中 CREATE DATABASE (network)。此数据库包含几个表:1) device,它保存物理接口信息;2) interface,它保存逻辑接口信息(例如 IP 地址、网络掩码和数据速率);3) host,它保存用于 DNRD 的 DNS 主机条目;以及 4) nservers,名称服务器地址——也用于 DNRD。

还有历史表来跟踪配置更改,尽管我尚未完成对此的回滚和前滚。

ELJ:您是如何构建粘合剂的?也就是说,您使用哪些程序将软件包放入数据库并管理发行版的内容?

Alf:目前,一切都是 Shell 脚本以及关于软件包维护者标准的很多文档。我们的想法是坚持 KISS 原则(保持简单和愚蠢原则),并且由于所有开发人员都在同一栋大楼里,这并不难做到。所有复杂的问题实际上都与界面相关,并且通过一个抽象级别与基本安装程序、配置文件和数据库分离:每个系统软件包中的配置、管理和控制脚本。

ELJ:请描述安装过程。

Alf:过程是启动、分区、格式化、安装基础系统、启动数据库、安装软件包并重启。仅此而已。我们的软件包安装程序负责主数据库,每个软件包处理自己的数据库。

ELJ:需要多少用户交互?

Alf:简短的回答:将磁盘放入,然后静静地躺着直到完成。安装过程完成后,与用户的所有交互都通过 Web 界面进行。

ELJ:需要多长时间?

Alf:这在一定程度上取决于硬件,安装程序已被指示(硬编码)构建多少个分区,其中有多少个将被加密,安装程序上有哪些软件包等等。我的测试安装在配备 128MB RAM 的 750MHz PIII、128MB SanDisk CompactFlash 和 20GB 硬盘上大约需要八分钟,除了 /boot 分区外,所有内容都在 ReiserFS 上。

ELJ:恢复是什么样的?

Alf:编程地狱。目前还不能说太多,因为这就是我现在正在做的事情。

ELJ:您预计何时完成?

Alf:2001 年 11 月末/12 月初。我正在研究回滚(将系统恢复到先前的状态)和前滚(从特定状态重做更改)功能,并遇到硬件故障通知、数据库损坏等等之类的好问题。为每个问题设计解决方案(和界面)是我放慢速度的原因。

ELJ:您打算添加哪些未来的功能?它如何利用数据库?

Alf:我想谈谈计划中的功能而不是未来的功能:安装的回滚和前滚(升级、配置检查点、访问级别)、更多的报告生成器、自动升级。由于软件包系统使用数据库来跟踪事物(一直到“谁在使用这个文件?”的级别),我想可以肯定地说,数据库是实现这些功能的原因。当然,还有其他方法可以实现它们,但数据库非常适合处理信息。

未来我真正想做的是直接从每个软件包中使用数据库,而不是将其作为常规配置文件和日志文件的备份。我设想一个系统,其中用户不在 /etc/passwd 中,而是存储在数据库中,他们的所有文件都是 BLOB。但这是一个长期项目。

ELJ:Inalambrica 的产品本质上是专有的,但基于 GPL 许可的软件。请解释 Inalambrica 与开源社区之间的关系。

Alf:我们使用的大部分软件都是在某种许可下开源的,其中很多是 GPL 许可的。我们的工作主要在于以新的和有趣的方式组合这些部分,当然还有编写界面。

我们与开源社区的关系主要是通过我们当地的 LUG(Linux 用户组),我们中的许多人都是活跃成员。我们与 Inalambrica 的合同规定,我们每位技术人员每天有两小时的时间来从事开源项目。我们主要将其用于以电子邮件支持和我们在 http://www.openprojects.net/ 的 IRC 频道形式回馈我们当地的 Linux 社区。

ELJ:有了“每天两小时回馈社区”,听起来这主要是以支持的形式。是这样吗,还是有其他已经发生或正在发生的软件项目?

Alf:主要是支持和项目协调——像 Conquered 这样的活动,我们在 Compuexpo 的展位。我们的安装节 (InstallFest) 需要花费大量时间来设置,我们的社区时间被大量用于这些目的。

在软件方面,我们正在开发一个气象站监控程序,该程序将以 GPL 许可发布。我还帮助我们的 LUG 网站的非主网站部分进行一些 PHP 和数据库工作。

ELJ:开源?

Alf:我们的界面是专有的,现在我们的发行版也是如此。我们计划在我们更好地立足市场后尽快发布我们发行版的一个版本。与此同时,我们对开源产品所做的任何修改,当然,都将根据许可要求发布回社区。目前,这仅包括一些用于处理加密文件系统的补丁,这些补丁可能会在 2002 年 1 月之前准备就绪(并可供下载)。

ELJ:感谢您抽出时间与我们谈论这个项目。

Phil Hughes 是《嵌入式 Linux 杂志》的出版商。

电子邮件:fyl@monosmedia.com

加载 Disqus 评论