本文档翻译自linux-kdevops/kdevops 的 README 文件,翻译时文件的最新提交是47f2275ba4da2795d460d8aee5def08702bb3838 linux: generate refs automatically
,大部分借助于ChatGPT。仅作为我个人的参考,如果你想查阅,建议看英文文档,因为我不确定我记录的中文翻译是否完整和正确。
kdevops 的主 git 仓库是:
kdevops 提供了一个用于优化 Linux 内核开发和测试的自动化框架。它旨在帮助你快速适应任何复杂的 Linux 内核开发环境,并能够迅速为复杂的子系统设置一个完整的测试实验室。
它利用本地 ansible 角色,并可选地让你使用 libguestfs 与 libvirt 或 terraform 来支持云提供商。kdevops 对 vagrant 的支持已被弃用,建议使用 libguestfs,因为 vagrant 缺乏维护,新的开发应该使用并关注 libguestfs。
kdevops 通过与 Linux 内核中使用的相同变体语言 kconfig 提供变体。它由 Linux 内核开发人员为 Linux 内核开发人员编写。该项目旨在支持所有 Linux 发行版。
kdevops 支持 PCIe 直通 当使用虚拟化时,允许你选择将哪个 PCIe 设备传递到哪个客户机。你可以选择将所有设备传递给一个客户机,或者选择将某个设备传递给特定客户机。例如,你甚至可以得到多个客户机,每个客户机都有一个 PCIe 直通设备分配,这一切都通过 kconfig 完成。
kdevops PCIe 直通 支持使用 kdevops 动态 kconfig,提供了一个新目标 ‘make dynconfig’,它让 kdevops 根据你的系统环境动态生成 Kconfig 文件。这一机制将来会扩展,以使 kdevops 更加动态,以支持更多的功能。
为了让你了解 kdevops 的强大功能和目标,我们提供了一些快速演示来展示你可以做什么。随着时间的推移,将添加更多的工作流。详细的文档说明了如何入门以及如何添加新的工作流。
配置 kdevops 使用裸金属、云或本地 vm 解决方案,选择你喜欢的发行版,启用 Linux 内核工作流,选择目标 git 树,并在仅 4 条命令中运行新编译的 Linux git 树:
make menuconfig
make
make bringup
make linux
make linux HOSTS="kdevops-xfs-crc kdevops-xfs-reflink"
例如,如果你只想将上面的命令限制为列出的两个主机要卸载所有节点上的 “6.6.0-rc2” 内核:
make linux-uninstall KVER="6.6.0-rc2"
要测试内核与 fstests,例如,如果你启用了 fstests 工作流,你可以只运行:
make fstests
make fstests-baseline
make fstests-results
更多细节请参见 kdevops fstests 文档
要测试内核与 blktests,例如,如果你启用了 blktests 工作流,你可以只运行:
make blktests
make blktests-baseline
make blktests-results
更多细节请参见 kdevops blktests 文档
要测试内核的 nfs 服务器与 pynfs 测试套件,启用 pynfs 工作流,然后运行:
make pynfs
make pynfs-baseline
更多细节请参见 kdevops nfs 文档
要使用 git 回归套件测试内核,启用 gitr 工作流,然后运行:
make gitr
make gitr-baseline
更多细节请参见 kdevops gitr 文档
要使用 ltp 套件测试内核,启用 ltp 工作流,然后运行:
make ltp
make ltp-baseline
更多细节请参见 kdevops ltp 文档
要使用 nfstest 套件测试内核,启用 nfstest 工作流,然后运行:
make nfstest
make nfstest-baseline
更多细节请参见 kdevops nfstest 文档
kdevops 支持以并行方式运行 Linux 内核自测,这非常简单:
make selftests
make selftests-baseline
你也可以运行特定测试:
make selftests-firmware
make selftests-kmod
make selftests-sysctl
更多细节请参见 kdevops selftests 文档
有 CXL 支持。你可以使用虚拟化 CXL 设备,也可以使用 PCIe 直通 将设备分配给客户机并创建自定义拓扑。kdevops 还可以为你构建和安装最新的 CXL 启用的 qemu 版本。更多细节请参见 kdevops cxl 文档
我们使用 discord 和 IRC。目前我们在 discord 上的用户比在 IRC 上的多。
我们有一个公共聊天服务器,目前我们使用 discord:
我们也在 irc.oftc.net 上的 #kdevops
最好将 kdevops 视为你的目标工作流的阶段。首先你需要启动系统。你可以使用裸金属主机、云解决方案或生成本地虚拟化客户机。
kdevops 的使用阶段可以分为:
kdevops 工作流是一种目标工作环境,你可以在其中运行不同的工作流。这些工作流对内核、云或 qemu 可能有不同的要求,还可能启用新的 make 目标以构建或测试目标。一些工作流是通用的,可能会被共享,例如用于配置和构建 Linux 的工作流。然而,如果你只想使用 Linux 发行版自带的内核,则构建和安装 Linux 是可选的。
以下是 kdevops 推荐的阅读文档。
kdevops 支持其自己的内核持续集成支持,以便让 Linux 开发人员和 Linux 发行版能够跟踪任何支持的 kdevops 工作流中的问题,并能够在检测到新回归时进行识别。但需要注意的是,kdevops 的 kernel-ci 仅在少数工作流中实现,例如 fstests 和 blktests。为了支持 kernel-ci,困难的一部分是确定基线是什么,并且能够以 kdevops 风格轻松地执行 git diff
并以每个回归一行的方式读取回归。这需要一些时间和工作。因此,其他一些工作流还不支持 kernel-ci。
相关文档如下:
kdevops 被放置在 linux-kdevops 组织下,以便其他开发人员能够无瓶颈地提交/推送更新。
kdevops 已开始让用户/开发人员推送测试结果。这不仅仅是收集已知失败的基线结果,还旨在内部收集每个失败测试的所有 dmesg/坏日志文件。
提供了一个任意的命名空间,以便 linux-kdevops 组织的开发人员可以贡献发现。
请参阅 查看 kdevops 存档结果 以查看更多有关如何查看结果的详细信息。我们将来应该为此添加简单的包装器。
localversion.*
文件帮助识别 Grub 提示符上的内核名称make modules_install install -j100
以下部分深入探讨了 kdevops 的技术细节。
此作品依据 copyleft-next-0.3.1 许可证授权,详情请参阅 LICENSE 文件。 请坚持在文件中使用 SPDX 注释进行许可证标注。 如果文件中没有 SPDX 注释,则默认使用 copyleft-next-0.3.1 许可证。我们保留带有宽松许可证的 SPDX 注释,以确保我们在宽松许可证下采用的上游项目可以从我们对其相应文件的更改中受益。 同样,GPLv2 文件也是允许的,因为 copyleft-next-0.3.1 与 GPLv2 兼容。