文/Cloud Kernel SIG
01 背景
龙蜥社区作为一个致力于开源和中立的社区,始终以构建健全的硬件兼容性生态为重要任务。社区目前面临着下游衍生版本及不同业务场景中存在驱动版本不一致而呈现明显碎片化的问题。
为了整合各方力量、形成协同效应,龙蜥社区携手浪潮信息龙蜥联合实验室,建立了针对主流驱动的社区上游基线,并且建立配套的研发体系,预期的收益如下:
1、对于龙蜥社区:统一的驱动版本将极大地简化社区开发人员的问题定位和解决流程,消除因不同版本代码差异引起的困扰,提高研发效率。
2、对于合作伙伴:合作伙伴在测试和使用上将得到统一版本的支持,这有利于驱动的共同开发和问题整合,同时增强业务的稳定性和可靠性。
3、对于第三方驱动厂商:一旦适配了龙蜥社区的基线,就无需为每个下游衍生的操作系统单独进行适配,可以同时服务于所有下游版本,这无疑将提高效率并扩大服务范围。
02 驱动基线
Intree:驱动代码与 linux 内核代码在同一个仓库,随着内核的版本更新发布。
OOT(out-of-tree):驱动代码独立存在,可以脱离内核的发版节奏单独更新发布。
驱动基线列表 V1.0
当前我们收集了阿里云、浪潮信息、中兴通讯、中国移动等的常用驱动形成了基线列表,并且对于部分需要 OOT 的驱动基线了版本,详细的列表请见文末链接。
基线规则
为确保驱动基线的实用性和前瞻性,我们将依据以下规则来挑选适合加入基线的板卡驱动:
1、市场接受度:出货量和装机量是衡量市场占有率的关键指标。对于出货量高、广泛使用的板卡驱动,我们将优先考虑纳入基线。
2、关键应用领域:某些特定型号的板卡虽然整体出货量不大,但在关键领域(如金融和医疗)扮演着不可或缺的角色。即便出货量较少,考虑到其在应用场景中的重要性,这类板卡驱动也将被加入到基线中。
3、未来发展潜力:对于那些当前市场份额较小,但被厂商作为未来发展重点的板卡,我们也会将其驱动考虑纳入基线,以展现对行业发展趋势的支持和响应。
03 OOT 研发体系
为了有效管理和维护上述基线的第三方(Out-of-Tree, OOT)驱动,龙蜥社区已经建立了一套完备的研发体系。该体系涵盖了代码托管、开发流程、版本发布和测试等关键环节,具体内容和相关信息可以参见文档龙蜥社区推出 Out-of-tree(OOT) 研发流程(链接见文末),第三方驱动厂商可以便捷地将驱动代码贡献至龙蜥社区。
此外,为了简化 OOT 版本发布的工作量,龙蜥社区对 OOT 的代码仓库、目录结构以及 spec 文件进行了标准化,以促进 OOT 构建流程的自动化。社区目前维护了一个自动化工具 kmods-build(链接见文末),它支持单独或批量构建 OOT。这一工具可以无缝执行从 release 分支拉取代码,到代码打包,再到修改并适配 spec 文件,最后触发 koji 构建的完整自动化流程。这大大降低了 OOT 构建和发布的工作负担。
目前,社区已经利用该自动化工具成功构建并发布了基于 5.10.134-016 内核版本的 L0 级别驱动 RPM 包。您可以访问龙蜥 yum 源(链接见文末)来下载这些 RPM 包。通过这些努力,龙蜥社区旨在为用户和合作伙伴提供更加高效、便捷的服务体验。
04 欢迎加入龙蜥共建
为了加强和拓展龙蜥社区的驱动生态系统,我们热切期望社区成员和合作伙伴的踊跃参与:
1、我们诚邀各位积极加入到龙蜥社区的驱动生态建设中来。若您有新的驱动需求或希望参与现有驱动的共同开发,请加入"Cloud Kernel SIG 钉钉群( 钉钉 群号:30560020601)"并联系群管理员以作进一步的沟通和协作。
2、我们鼓励并期待各位能积极推动第三方板卡制造商将其驱动代码贡献给龙蜥社区。这不仅能够丰富我们的驱动库,更能使得制造商的产品在更广泛的环境中获得支持和应用。
3、我们期望大家能优先选用龙蜥社区提供的上游驱动版本,统一从龙蜥社区获取所需驱动。通过集中力量,我们可以共同打造一个更加稳定、高效的生态系统,以利于整个社区的持续发展和繁荣。
让我们携手共进,共同促进龙蜥社区成为一个更加协作、创新和活跃的开源平台。
相关链接:
Out-of-tree(OOT) 研发流程:
https://openanolis.cn/sig/Cloud-Kernel/doc/816172822594181870kmods-build:
https://gitee.com/anolis/kmods-build
龙蜥 yum 源下载:https://mirrors.openanolis.cn/anolis/8.8/kernel-5.10/
驱动基线列表 V1.0 列表详情:
https://openanolis.cn/sig/Cloud-Kernel/doc/872780114184946058