构建红帽企业 Linux 4
哇,当您玩得开心时,时间过得真快! 似乎就像昨天我还在坐在这里写“构建红帽企业 Linux v.3”(请参阅在线资源)。 难以置信的是,16 个月竟然如此迅速地飞逝,促成了 2005 年 2 月红帽企业 Linux v.4 的发布。 上一篇关于 v.3 的文章对我们在红帽公司为交付稳健的企业级 Linux 发行版所面临的挑战进行了幕后观察。 虽然在新版本中我们仍然面临许多相同的挑战,但我们的业务开展方式发生了许多变化。 在本文中,我将介绍我们面临的新挑战以及我们如何适应以应对这些挑战。
出于实际需要,我仅涵盖了我们在新的红帽版本中解决的数百个特性和问题中的一小部分。 出于同样的原因,我无法一一列出数百名内部和外部贡献者。 请允许我在此向未被提及的红帽朋友们提前道歉(并不是说你们不够出色)。
计算机行业中最引人注目的趋势确实是 Linux 采用率的急剧上升。 似乎每天都有媒体警报、在线文章、来自当地 Linux 用户组 (LUG) 同行的通知以及销售公告,报告大量新用户社区迁移到红帽企业 Linux。 例如
整个国家政府、政府机构和部门。
公立学校系统,从小学到大学。
大型企业越来越多地将红帽企业 Linux 作为其主要软件开发平台和工程设计工作站。
呼叫中心和桌面。
科学研究,公共和私营。
电信以及在嵌入式设备中日益增长的使用。
让您所做的工作造福于庞大且迅速增长的用户社区,这是一种非常令人欣慰的现象。 红帽企业 Linux 和 Fedora 社区版本的总用户群远远超过一百万用户。 事实上,由于我们软件的普及,不可能得出准确的数字来描述其受欢迎程度。 鉴于这种规模,我们所有的开发人员都强烈地感受到他们的贡献确实具有影响力。 开源软件的传播内在包含着改善人类的层面。
鉴于我们用户群体的巨大多样性,用有限的内部开发人员和测试人员来满足其需求变得越来越具有挑战性。 为了跟上不断增长的用户群体的步伐,我们需要找到一种更好的方法来扩大我们的效率。 为了实现这一目标,我们不得不求助于开源模式,这是红帽理念的核心。 也就是说,让更广泛的参与者社区以包容的“尽早和经常”的方式参与进来。 这就是 Fedora 的起源。
与红帽企业 Linux v.3 相比,Fedora 是红帽企业 Linux v.4 开发中的主要区别之一。 Fedora 项目有几个目标,包括
为感兴趣的贡献者提供可免费下载的 Linux 发行版。 通过聚合各种软件包的最新可用版本,Fedora 是新技术的理想孵化器。
为外部贡献和参与提供论坛。
为可能在即将发布的红帽企业 Linux 版本中出现的新技术形成试验场。
从 Fedora 获得的经验对于红帽企业 Linux 的产品化非常有价值。 Fedora 社区由数万名用户组成。 这个数量大于红帽企业 Linux 的 beta 测试受众。 通过 Fedora 的经验,我们能够扎实地了解哪些软件包修订和新技术足够成熟,可以包含在红帽企业 Linux 中。 Fedora 社区成员积极参与了开发的许多方面。
社区参与 Fedora 开发的一个完美例子是,一位外部贡献者开发了一个出色的 Java 应用程序,该应用程序输出了图表,说明了启动过程中时间花费在哪里。 这突出了启动缓慢的系统服务。 通过此应用程序识别出的一个此类违规服务随后将其启动时间从 20 秒更正为半秒。
Fedora 的某些部分甚至完全在红帽之外开发和维护。 一个关键的例子是 yum 软件包交付和更新技术。 这表明 Fedora 如何能够以多种维度自由发展,不受红帽议程的限制。
对于那些需要最新前沿技术的人来说,Fedora 是一个完美、免费的发行版。 对于那些需要更稳定的受支持产品的人来说,红帽企业 Linux 是正确的选择。 Fedora 项目在新技术曲线上领先于红帽企业 Linux v.4。 通过这种方式,它形成了未来可能在红帽企业 Linux 版本中出现的新功能的展望。
Fedora 项目的成功确实是双赢的。 社区贡献者和用户获得了一个免费的工具来使开源技术成熟。 企业客户在稳定阶段完成后,从功能日益丰富和成熟的产品中受益。
随着用户群体的日益多样化,也随之而来的是大量需求。 示例需求包括错误修复请求、软件功能添加和硬件启用。 到目前为止,我们最大的挑战是努力优先考虑客户的错误和功能请求,以确定能够产生最广泛通用性的集合。
在红帽企业 Linux v.4 的初始计划阶段,我们仔细审查了 500 多个功能请求。 这是通过多次马拉松式的功能审查会议完成的,其中穿插了无数小时的后续范围界定,以确定交付所需的可行性和开发人员时间。 以下是我们试图在红帽企业 Linux v.4 中关注的一些主要主题
安全。
2.6 内核。
存储管理。
易用性,尤其是在桌面方面。
每个主要主题的亮点将在接下来的章节中出现。
除了自红帽企业 Linux v.3 推出以来不断增加的用户群之外,我们还与越来越多的硬件和软件合作伙伴建立了更紧密的合作关系。 我们认识到,操作系统本身只是整体解决方案堆栈中的一层,最终客户需要它才能使 Linux 在解决其计算需求方面切实可行。 因此,我们与合作伙伴密切合作,确定我们的优先事项,协调时间表,并解决对其硬件和软件至关重要的问题。
我们的硬件和软件合作伙伴越来越意识到与红帽密切合作的价值。 从历史上看,我们一直很难满足合作伙伴永不满足且多样化的需求。 尽管我们很想满足所有人,但最终我们确实只有有限的员工和时间框架来完成这项工作。 为了应对这种情况,我们邀请了许多合作伙伴加入红帽内部,与我们的开发人员并肩工作,以扩充我们的员工队伍,实现互惠互利的目标。 例如,我们目前有多名来自 IBM、Intel、SGI、HP、富士通和 NEC 的现场工作人员。 以下是一些好处
增加功能增强和错误修复的交付。
在工程级别上更好的沟通。
更快的周转时间来解决问题。 当涉及到新平台支持所涉及的短时间窗口时,这些效率已经产生了原本会被推迟到下一个更新周期的支持。
合作伙伴可以深入了解开源社区的运作方式以及如何成为有效的社区参与者。
培养来自世界各地的人们的友谊。
现场合作伙伴的贡献使产品集受益,而不仅仅是赞助公司的狭隘利益。 例如,尽管 SGI 团队的主要任务是支持其大型 CPU 计数 Altix 平台,但副作用是通用层中整体可扩展性的提高,这使所有架构受益。 另一个例子是富士通团队通过添加 diskdump 支持所完成的工作。 其他硬件合作伙伴增强了红帽企业 Linux 中的这种支持,从而提高了我们集体支持组织的问题分析能力。
许多现场合作伙伴来自日本。 我们邀请他们加入我们在博尔德 Morty's 室内攀岩馆。 令人惊讶的是,与新结交的朋友一起被绳索悬挂在 40 英尺高的空中,会培养出多少信任感。 考虑到英语不是他们的主要语言,我经常想知道在我们给他们“开始!” 的赞许之前,他们对入门级攀岩指导理解了多少。 图 1 显示了红帽和合作伙伴的工作人员外出参加我们的每周攀岩活动。
红帽企业 Linux v.4 的主要主题之一是安全。 安全考虑贯穿整个发行版。 例如
编译器中增加了对缓冲区溢出、堆栈溢出、边界检查、初始化和正确性检查的增加编译时检查。 我们已将这些检查防御性地纳入到我们的内部构建流程中。 让核心 GCC 编译器开发人员在职能够使他们为防御性编程提供如此建设性的建议。
增加内核和运行时加载器条款,以防止恶意代码的执行并阻止常见的堆栈溢出技术。 这使得红帽企业 Linux v.4 不容易受到大量漏洞利用的影响(请参阅资源)。
参与和监控多个行业联盟,这些联盟的任务是共享安全漏洞利用信息并致力于共同解决方案。
SELinux 指的是安全增强型 Linux。 SELinux 的详细信息已在之前的 Linux Journal 文章中介绍过(请参阅资源)。
SELinux 的核心是一组提供细粒度访问控制的底层原语。 在 SELinux 出现之前,Linux 安全模型一直是一种相当“全有或全无”的方法,因为两种常见情况是一般非特权用户应用程序和特权应用程序。 特权应用程序通常由系统服务组成,例如 bind、Apache、MySQL、Postgres、ntpd、syslogd、snmpd 和 squid。 拥有全能系统服务的历史缺点是,如果它们受到病毒攻击或其他漏洞利用的损害,则整个系统可能会受到损害。
SELinux 提供了一种严格限制用户应用程序和系统服务的功能的方法,使其仅限于严格的“需要知道”授权。 例如,它设置了对 Apache Web 服务器 (httpd) 的访问控制,以限制它可以修改的文件和目录集。 此外,Apache 被严格限制为它可以执行的其他应用程序。 通过这种方式,如果 Apache 受到攻击,则可能发生的损害范围将得到很好的控制。 事实上,SELinux 的控制非常好,以至于红帽的一位开发人员 Russell Coker 设置了一个 Fedora 系统,他在其中提供了 root 密码,并邀请任何人看看他们是否可以对系统造成损害。
关于红帽企业 Linux v.4 的 SELinux 实现最具有里程碑意义的是,它是第一个广泛采用的商业操作系统,在新版本中集成了如此细粒度的安全性。 从历史上看,情况一直是这样,即这种功能齐全的安全操作系统已被降级为主流产品的晦涩分支,这些分支通常落后于各自的新版本一到两年。
SELinux 的实施触及了发行版的几乎所有领域。 这包括
核心系统服务的策略实施。
为我们提供的所有 RPM 软件包提供默认策略。
安装程序和系统管理实用程序,使最终用户能够定义自己的访问域。
内核支持,遍及一系列子系统。
SELinux 的实施面临许多挑战。 在内核方面,核心 SELinux 原语极有可能被 2.6 Linux 内核上游接受。 James Morris 英勇地完成了实施,并获得了所需的上游共识。 在用户级软件包方面,SELinux 的引入需要为每个软件包构建特定的或默认的策略。 当然,当我们整理出哪些文件应该是可写的以及其他细节时,这有时是一个坎坷的过程。
小的实现故障可能会对整个发行版造成严重破坏。 然而,这也导致 SELinux 成为几乎所有问题的最初替罪羊。 Dan Walsh 在处理大量问题方面是一位真正的工作狂。
“上游、上游、上游”——这成为我们在构建红帽企业 Linux v.4 的整个过程中内核团队的口头禅。 原因是红帽内核与上游 Linux 社区 kernel.org 不同的每一项更改都会成为以下方面的负担
同行评审——所有纳入上游的补丁都经过严格的同行评审过程。
测试——来自数百家公司的全球数千名用户经常访问上游内核。
维护负担——我们越接近上游内核,我们就越能有效地将修复程序拉回到维护流中,以便运送产品。
下一个版本——将修复程序和功能纳入上游意味着我们不必在未来的版本中手动重新添加该功能。
这些原则是真正的社区开源开发价值的核心。 作为红帽积极参与上游 Linux 内核社区的证明,在 2.6 开发过程中,红帽内核开发人员接受的补丁比任何其他公司都多。 在过去的一年中,红帽员工的 4,100 多个补丁被集成到上游 2.6 内核中。 相比之下,其他公司吹嘘他们的产品包含社区内核之上的最多补丁。 一个有趣的统计数据是,目前,超过 80% 的内核补丁来自专门受雇从事此类开发的内核开发人员。 内核已主要成为一项专业的雇佣工作,而不是业余爱好项目。
红帽的开发人员非常积极地参与了上游 2.6 开发。 参与的领域包括
文件系统。
虚拟内存 (VM) 管理。
SELinux 和其他安全功能。
网络。
IDE 和 USB。
串行 ATA。
逻辑卷管理器 (LVM)。
图形。
硬件和驱动程序支持。
红帽企业 Linux v.4 内核池维护者 Arjan van de Ven 和 Dave Jones 集成了我们集体内部内核开发团队的内核贡献。
他们经常根据最新的上游内核重新调整我们的树,并集成额外的错误修复、性能调整、硬件平台支持和功能添加。 鉴于我们同时从单个代码库支持七种不同的架构(x86、x86_64—AMD64 和 Intel(r) EM64T、Itanium2、IBM Power(31 位和 64 位)、大型机(31 位和 64 位变体)),这确实是一项巨大的努力。
最初,Arjan 必须敲打每个人的脑袋,以确保所有补丁在上游被接受,然后再将它们纳入我们的池中,这很痛苦。 通过他的警惕,整个团队都习惯了首先在上游工作。 从短期来看,开发人员需要付出更多努力才能在红帽内部和上游工作。 然而,从长远来看,如上所述,好处是相当可观的。
一类新的 Linux 部署包括专有的 UNIX 迁移。 这些用户代表了一批对 Linux 抱有很高期望的企业客户(高度苛刻的委婉说法)。 Linux 中传统的功能差距包括强大的软件卷管理功能。 为了响应这些需求,在红帽企业 Linux v.4 的过程中,红帽在收购 Sistina 时获得了一支强大的以存储为中心的专家团队。 通过这种方式,红帽现在雇用了逻辑卷管理器 (LVM) 技术的主要上游开发人员。
安装程序的整体易用性得到了改进,现在它允许用户创建 LVM 卷。 通过在 Disk Druid 中使用图形界面,LVM 的使用对于最终用户来说更加平易近人。 易用性改进的另一个例子是扩展在线 LVM 卷和 ext3 文件系统的能力。 这无需卸载文件系统、备份、扩展卷、重新格式化文件系统和恢复数据。
我们还希望将开源存储管理提升到一个新的水平,以提供集群文件系统。 行业趋势一直是大型商品计算机组之间的分布式计算。 尽管这节省了硬件成本,但却增加了在分布式服务器池中管理存储和文件系统的成本。 为了满足这种需求,红帽通过分层称为 GFS 的强大集群文件系统,增强了 LVM 层以在集群环境中运行。
为了秉承红帽作为开源参与者的核心价值观,LVM 和 GFS 的完整源代码库现在可以免费提供给广大的 Linux 社区。 持续的开发重新点燃了全行业的贡献。 Cluster Suite 是 GFS 和 LVM 的产品化版本名称,它分层在红帽企业 Linux 之上。
红帽最大的增加投资领域之一是我们所说的桌面空间。 在 Havoc Pennington 的指导下,我们组建了一支庞大而紧密的开发团队。 桌面团队的主要口头禅一直是易用性。 如果您仔细观察 Linux 的新应用,您会发现它在计算机知识较少的场景中的使用呈上升趋势。 示例包括信息亭、呼叫中心、政府机构和小学低年级。
桌面团队与我们的应用程序开发人员合作,确定最有用的应用程序集。 例如,尽管 Sourceforge.net 上有超过 80,000 个项目,但将它们全部包含在我们的发行版中是不切实际的。 作为系统集成商,我们的主要角色之一是选择和组织最有用的应用程序。 在 v.4 中,我们重新组织了应用程序在菜单中的列出方式,以便按功能进行逻辑分组。
在红帽内部,我们将开源模式发挥到极致,任何拥有附近演讲台的人都可以对产品决策进行辩论。 鉴于每个人都是“用户想要什么”和“可用性”含义的自封权威,这为高度情绪化的辩论提供了充足的素材。 所有这一切都在默认浏览器的选择中达到了高潮。 主要竞争者是 Firefox 和 Epiphany。 在线电子邮件辩论仍在继续。 最后,Havoc 将所有感兴趣的各方召集在一起,举行了一次吵闹的电话会议来解决问题。 结果是选择了 Firefox。 鉴于 Firefox 受到的巨大关注,无论是在媒体还是实际部署中,我们认为我们做出了正确的选择。
这些辩论是红帽核心的一部分。 它们变得如此激烈是因为工作人员真诚地关心他们正在做的事情。 这里的大多数人都觉得自己是比一家小公司更大的事物的一部分。 在红帽发现的这种高度的活力、创造力和热情使得担任经理非常具有挑战性。 有时我觉得自己就像一群拳击手的裁判,他们除了互相切磋之外,还经常给我头上来一拳。 也许我应该努力寻找一个更具建设性的例子。 这里真的没有争斗性,只是非常刺激和具有挑战性。 在这个世界生活了 3.5 年之后,我无法想象在一个“只是一份工作”的地方工作会是什么样子。
我们的开发人员(包括 Havoc Pennington 和 John Palmieri)参与的关键可用性技术之一是 D-BUS(请参阅资源)。 D-BUS 是一种通信和事件机制,使一系列桌面应用程序能够以协调的方式相互补充。 例如,插入 CD 会导致启动相应的应用程序,具体取决于媒体格式类型。 同样,D-BUS 也用于 USB 设备热插拔,例如,启动网络服务的配置和启动或从 USB 闪存盘安装文件系统。
通过捆绑第三方专有应用程序的集合,进一步增强了易用性。 这样做是为了最终用户的方便,这样他们就不会为了找到常用应用程序而变成一场寻蛋游戏。 这导致捆绑了 RealPlayer、Helix Player、Adobe Acrobat Reader、Citrix、Macromedia Flash 和 Java 运行时环境 (JRE)。
2004 年 4 月,红帽在北卡罗来纳州罗利市举行了一次全球公司会议。 邀请了整个公司参加。 我从这次会议中获得的最深刻印象之一是红帽的真正全球化。 似乎非美国团队成员与美国成员一样多。 除了美国,开发工作还在澳大利亚、加拿大、德国、捷克共和国、英国、日本、印度和巴西进行。
并非所有开发都在红帽的办公室进行。 通过遍布全球的 Fedora 贡献者,我们邀请更广泛的参与。 我们积极贡献并借鉴各种社区开源项目。 同样,这大大拓宽了参与范围。 在许多方面,这种包容性的流程使红帽感觉像是社区值得信赖的管家,形成了一个代表最佳和最聪明技术的发行版。 我们知道这需要每天不断地争取,因此我们不会将这种特权视为理所当然。 这使得红帽企业 Linux 和 Fedora 真正成为“人民的,为了人民的”发行版。
红帽企业 Linux v.4 支持 15 种不同的语言。 这些翻译都是作为开发周期不可或缺的一部分执行的。 因此,翻译过程不会滞后于发布或在开发树中引入分支。 我们在澳大利亚有一支“翻译精灵”团队,他们神奇地在与总部相反的时区工作。 这实现了近乎实时的翻译,可以跟踪开发变更。 此外,还有许多 Fedora 贡献者积极参与国际化活动。
在红帽企业 Linux v.4 的构建过程中,红帽在改进我们的开发方法方面有几种方法。 有趣的是,这些改进的主要主题一直是坚持核心的、经过验证的 Linux 开源开发实践。 尽管我们之前确实遵循了这些实践,但这次我们更加关注以下几点
上游——以开放的社区方式进行我们所有的开发。 我们不会为了竞争优势而保留我们的技术,只是尽可能晚地将其推向世界。
客户/用户参与——通过 Fedora 和在开发周期中增加“尽早和经常”发布 beta 版本相结合,我们能够获得大量宝贵的反馈(好的和坏的)。
合作伙伴参与——现场合作伙伴开发人员增强了我们解决功能、错误和增量测试的能力。
避免功能蔓延——限制后期突发功能的引入,以便实现稳定。
我们都非常感谢 Donald Fischer 的稳步指导,他作为整体产品经理和发布经理做得非常出色。 他既是一位外交家、创新者、簿记员,又是可靠的人。 向“唐纳德”致敬。
红帽确实是一个永不停歇的地方。 似乎我们刚发布一个版本,就又落后于下一个版本了。 这是因为除了新版本的开发之外,我们还为之前的版本提供七年的支持。 因此,例如,以下是当前正在同时开发的版本列表
Fedora Core 4 (FC4)。
红帽企业 Linux v.2.1 Update 7。
红帽企业 Linux v.3 Update 5。
红帽企业 Linux v.4 Update 1。
红帽企业 Linux v.5。
许多新技术处于预发布阶段,目标是各种上游和内部发布交付工具。
永不沉闷的时刻,我们也绝不希望如此!
本文资源: /article/8204。
Tim Burke 是红帽公司内核开发总监。 该团队负责红帽企业 Linux 和 Fedora 的核心内核部分。 在成为经理之前,Tim 靠开发 Linux 高可用集群解决方案和 UNIX 内核技术谋生。 当不处理错误、功能和时间表时,他喜欢跑步、攀岩、骑自行车和彩弹射击。