linux内核提交系列补丁,如何提交你的第一个Linux内核补丁

3ca8097cd74b6b4f6f8dca656c888edd.png

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

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

56991cc4d53ffc05fb91170635cd9c82.png

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

为内核作贡献

第 1 步:准备你的系统。

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

文本编辑器

Email 客户端

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

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

gitclone-b staging-testing

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

复制你的当前配置:

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

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

make-jX

sudomakemodules_install install

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

gitcheckout-b first-patch

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

gitfetch origin

gitrebase origin/staging-testing

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

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

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

gitadd

gitcommit-s-v

gitformat-patch-o/tmp/HEAD^

82c02683f8f03c9d88412f41795c0361.png

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

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

b6c00c4f1680fdbb8a68d38166f85909.png

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

mutt-H/tmp/0001-

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

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

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

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

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

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

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

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

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

错误的方式:

Chris,

Yeslet’s schedule the meeting tomorrow,on the second floor.

>OnFri,Apr26,2013at9:25AM,Chriswrote:

>HeyJohn,I had some questions:

>1.Doyou want to schedule the meeting tomorrow?

>2.Onwhich floorinthe office?

>3.Whattimeissuitable to you?

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

正确的方式:

Chris,

Seemyanswers below...

>OnFri,Apr26,2013at9:25AM,Chriswrote:

>HeyJohn,I had some questions:

>1.Doyou want to schedule the meeting tomorrow?

Yestomorrowisfine.

>2.Onwhich floorinthe office?

Let's keep it on the second floor.

> 3. What time is suitable to you?

09:00 am would be alright.

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

【编辑推荐】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值