如何提交你的第一个 Linux 内核补丁 | Linux 中国学习如何做出你的首个 Linux 内核贡献,以及在开始之前你应该知道什么。-- Sayli Karnik

有用的原文链接请访问文末的“原文链接”获得可点击的文内链接、全尺寸原图和相关文章。

致谢编译自 | 
https://opensource.com/article/18/8/first-linux-kernel-patch
 
 作者 | Sayli Karnik
 译者 | qhwdw ?共计翻译:151.5 篇 贡献时间:345 天

学习如何做出你的首个 Linux 内核贡献,以及在开始之前你应该知道什么。

Linux 内核是最大且变动最快的开源项目之一,它由大约 53,600 个文件和近 2,000 万行代码组成。在全世界范围内超过 15,600 位程序员为它贡献代码,Linux 内核项目的维护者使用了如下的协作模型。

如何提交你的第一个 Linux 内核补丁 | Linux 中国

本文中,为了便于在 Linux 内核中提交你的第一个贡献,我将为你提供一个必需的快速检查列表,以告诉你在提交补丁时,应该去查看和了解的内容。对于你贡献的第一个补丁的提交流程方面的更多内容,请阅读 KernelNewbies 的第一个内核补丁教程[1]

为内核作贡献

第 1 步:准备你的系统。

本文开始之前,假设你的系统已经具备了如下的工具:

◈ 文本编辑器◈ Email 客户端◈ 版本控制系统(例如:git)

第 2 步:下载 Linux 内核代码仓库。


  1. git clone -b staging-testing

  2. git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

复制你的当前配置:


  1. cp /boot/config-`uname -r`* .config

第 3 步:构建/安装你的内核。


  1. make -jX

  2. sudo make modules_install install

第 4 步:创建一个分支并切换到该分支。


  1. git checkout -b first-patch

第 5 步:更新你的内核并指向到最新的代码。


  1. git fetch origin

  2. git rebase origin/staging-testing

第 6 步:在最新的代码库上产生一个变更。

使用 make 命令重新编译,确保你的变更没有错误。

第 7 步:提交你的变更并创建一个补丁。


  1. git add <file>

  2. git commit -s -v

  3. git format-patch -o /tmp/ HEAD^

如何提交你的第一个 Linux 内核补丁 | Linux 中国

主题是由冒号分隔的文件名组成,跟着是使用祈使语态来描述补丁做了什么。空行之后是强制的 signed off 标记,最后是你的补丁的 diff 信息。

下面是另外一个简单补丁的示例:

如何提交你的第一个 Linux 内核补丁 | Linux 中国

接下来,从命令行使用邮件[2](在本例子中使用的是 Mutt)发送这个补丁:


  1. mutt -H /tmp/0001-<whatever your filename is>

使用 get_maintainer.pl 脚本[3],去了解你的补丁应该发送给哪位维护者的列表。

提交你的第一个补丁之前,你应该知道的事情

◈ Greg Kroah-Hartman[4] 的 staging tree[5] 是提交你的 第一个补丁[1] 的最好的地方,因为他更容易接受新贡献者的补丁。在你熟悉了补丁发送流程以后,你就可以去发送复杂度更高的子系统专用的补丁。◈ 你也可以从纠正代码中的编码风格开始。想学习更多关于这方面的内容,请阅读 Linux 内核编码风格文档[6]。◈ checkpatch.pl[7] 脚本可以帮你检测编码风格方面的错误。例如,运行如下的命令:perl scripts/checkpatch.pl -f drivers/staging/android/* | less◈ 你可以去补全开发者留下的 TODO 注释中未完成的内容:find drivers/staging -name TODO◈ Coccinelle[8] 是一个模式匹配的有用工具。◈ 阅读 归档的内核邮件[9]。◈ 为找到灵感,你可以去遍历 linux.git 日志[10]去查看以前的作者的提交内容。◈ 注意:不要与你的补丁的审核者在邮件顶部交流!下面就是一个这样的例子:

错误的方式:


  1. Chris,

  2. Yes lets schedule the meeting tomorrow, on the second floor.

  3. > On Fri, Apr 26, 2013 at 9:25 AM, Chris wrote:

  4. > Hey John, I had some questions:

  5. > 1. Do you want to schedule the meeting tomorrow?

  6. > 2. On which floor in the office?

  7. > 3. What time is suitable to you?

(注意那最后一个问题,在回复中无意中落下了。)

正确的方式:


  1. Chris,

  2. See my answers below...

  3. > On Fri, Apr 26, 2013 at 9:25 AM, Chris wrote:

  4. > Hey John, I had some questions:

  5. > 1. Do you want to schedule the meeting tomorrow?

  6. Yes tomorrow is fine.

  7. > 2. On which floor in the office?

  8. Let's keep it on the second floor.

  9. > 3. What time is suitable to you?

  10. 09:00 am would be alright.

(所有问题全部回复,并且这种方式还保存了阅读的时间。)

◈ Eudyptula challenge[11] 是学习内核基础知识的非常好的方式。

想学习更多内容,阅读 KernelNewbies 的第一个内核补丁教程[1]。之后如果你还有任何问题,可以在 kernelnewbies 邮件列表[12] 或者 #kernelnewbies IRC channel[13] 中提问。


via: https://opensource.com/article/18/8/first-linux-kernel-patch

作者:Sayli Karnik[15] 选题:lujun9972 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


相关文章: