云网牛站
所在位置:首页 > Linux编程 > 提交Linux内核补丁的正确步骤及注意事项

提交Linux内核补丁的正确步骤及注意事项

2018-10-13 16:07:59作者:qhwdw稿源:linux中国 LCTT

下面教你提交 Linux 内核补丁的正确步骤及注意事项,第一次提交 Linux 内核不知道该如何操作,如何对 Linux 内核做些贡献,本文给你正确答案。

 

背景

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

提交Linux内核补丁的正确步骤及注意事项

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

 

提交 Linux 内核补丁的正确步骤

第一步、准备你的系统

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

1.文本编辑器

2.Email 客户端

3.版本控制系统(例如:git)

第二步、下载 Linux 内核代码仓库

git clone -b staging-testing

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

复制你的当前配置:

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

第三步、构建/安装你的内核

make -jX

sudo make modules_install install

第四步、创建一个分支并切换到该分支

git checkout -b first-patch

第五步、更新你的内核并指向到最新的代码

git fetch origin

git rebase origin/staging-testing

第六步、在最新的代码库上产生一个变更

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

第七步、提交你的变更并创建一个补丁

git add <file>

git commit -s -v

git format-patch -o /tmp/ HEAD^

提交Linux内核补丁的正确步骤及注意事项

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

 

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

提交Linux内核补丁的正确步骤及注意事项

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

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

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

 

提交 Linux 第一个补丁前,应该注意及知道的事项

1.Greg Kroah-Hartmanstaging tree 是提交你的第一个补丁的最好的地方,因为他更容易接受新贡献者的补丁。在你熟悉了补丁发送流程以后,你就可以去发送复杂度更高的子系统专用的补丁。

2.你也可以从纠正代码中的编码风格开始。想学习更多关于这方面的内容,请阅读 Linux 内核编码风格文档

3.checkpatch.pl 脚本可以帮你检测编码风格方面的错误。例如,运行如下的命令:perl scripts/checkpatch.pl -f drivers/staging/android/* | less

4.你可以去补全开发者留下的 TODO 注释中未完成的内容:find drivers/staging -name TODO

5.Coccinelle 是一个模式匹配的有用工具。

6.阅读归档的内核邮件

7.为找到灵感,你可以去遍历 linux.git 日志去查看以前的作者的提交内容。

8.注意不要和你的补丁的审核者在邮件顶部交流,下面就是一个这样的例子:

1].错误的方式:

Chris,

Yes let’s schedule the meeting tomorrow, on the second floor.

> On Fri, Oct 13, 2018 at 13:25 AM, Chris wrote:

> Hey John, I had some questions:

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

> 2. On which floor in the office?

> 3. What time is suitable to you?

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

2].正确的方式:

Chris,

See my answers below...

> On Fri, Oct 13, 2018 at 13:25 AM, Chris wrote:

> Hey John, I had some questions:

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

Yes tomorrow is fine.

> 2. On which floor in the office?

Let's keep it on the second floor.

> 3. What time is suitable to you?

13:00 am would be alright.

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

9.Eudyptula challenge 是学习 Linux 内核基础知识的非常好的方式。

 

结语

以上内容教你正确提交 Linux 内核补丁及注意事项,掌握了以下方法后你就尽情为 Linux 内核贡献代码吧,当然,要有一定的质量,否则也不会被采纳,如果提交的补丁代码质量过低也会影响 Linux 内核维护人员对你的印象。

 

相关主题

Linux内核补丁提交初体验

精选文章
热门文章