KVM虚拟化技术实战与原理解析-9-参与KVM开源社区

KVM虚拟化技术实战与原理解析-9-参与KVM开源社区

13分钟 ·
播放数0
·
评论数0

这篇文章是《第9章 参与KVM开源社区》的完整内容,旨在介绍KVM相关的开源社区、代码结构,并指导读者如何参与到社区中贡献代码或提交问题。

核心内容总结如下:

1. 开源社区介绍

  • Linux内核社区:KVM作为Linux内核的一个模块,其开发流程遵循内核社区模式。代码通过维护者层级审核,最终由Linus Torvalds合并到主干。
  • KVM社区:专注于内核中的KVM模块。代码维护主要由Red Hat的Gleb Natapov和Paolo Bonzini负责,并通过年度KVM Forum会议进行交流。
  • QEMU社区:提供设备模拟,是KVM最常用的用户态工具。自QEMU 1.3.0起,所有KVM相关代码已合并到QEMU主干,无需使用专门的qemu-kvm。
  • 其他社区:简要列举了Libvirt、OpenStack、Xen、Ubuntu等与虚拟化或开源系统相关的知名社区。

2. 代码结构简介

  • KVM代码:位于Linux内核中,分为三部分:架构无关的核心代码(virt/kvm/)。
    架构相关代码(如arch/x86/kvm/)。
    相关头文件。
  • QEMU代码:配合KVM使用时,通过/dev/kvm设备调用KVM内核模块的API(如创建虚拟机、vCPU等)来协同工作。
  • 测试代码:介绍了用于底层特性测试的KVM单元测试和功能更强大的KVM Autotest集成测试框架。

3. 向开源社区贡献代码

  • 交流方式:核心是通过邮件列表(KVM: kvm@vger.kernel.org;QEMU: qemu-devel@nongnu.org)进行讨论。
  • 代码风格:必须严格遵守。KVM内核代码遵循Linux内核代码规范;QEMU代码有其独立的规范(如4空格缩进)。两者在括号使用、命名约定等方面有差异。
  • 生成与检查Patch:使用diffgit format-patch命令生成补丁。
    提交前必须用项目自带的检查脚本(如checkpatch.pl)检查代码风格,确保无错误。
  • 提交Patch:通过邮件列表发送,邮件需使用纯文本格式英文书写
    补丁内容应直接贴在邮件正文,并包含清晰的描述和Signed-off-by签名。
    主题应注明[PATCH],若为系列补丁需标明序号。

4. 提交KVM相关的Bug

  • 通过邮件列表:描述Bug时需提供详细的测试环境现象日志可重现的步骤,以便他人快速定位问题。
  • 使用Bug跟踪系统:KVM使用Bugzilla (bugzilla.kernel.org),QEMU使用Launchpad (bugs.launchpad.net/qemu)。
  • 定位Bug:介绍了使用Git的git bisect命令,通过二分法快速定位引入Bug的具体代码提交。

5. 本章小结
本章系统介绍了KVM开源社区生态,旨在引导和鼓励读者参与社区,无论是贡献代码、提交问题还是学习交流,都能从中受益并对开源软件发展产生积极影响。

请注意:文章内容基于2013年的语境,部分信息(如软件版本、维护者名单、网址等)可能已发生变化。