Linux 内核是最大且发展最快的开源项目之一,由大约 53,600 个文件和近 2000 万行代码组成。全球有超过 15,600 名程序员为该项目做出贡献,Linux 内核遵循维护者模型进行协作。

在本文中,我将提供一个快速检查清单,列出进行你的第一个内核贡献所涉及的步骤,并查看在提交补丁之前你应该知道什么。有关提交你的第一个补丁的更深入的提交过程,请阅读 KernelNewbies 第一个内核补丁教程。
为内核做贡献
步骤 1:准备你的系统。
本文中的步骤假设你的系统上安装了以下工具
步骤 2:下载 Linux 内核代码仓库:
git clone -b staging-testing
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
复制你当前的配置:
cp /boot/config-`uname -r`* .config
步骤 3:构建/安装你的内核。
make -jX
sudo make modules_install install
步骤 4:创建分支并切换到它。
git checkout -b first-patch
步骤 5:更新你的内核以指向最新的代码库。
git fetch origin
git rebase origin/staging-testing
步骤 6:修改代码库。
使用 make
命令重新编译以确保你的更改不会产生错误。
步骤 7:提交你的更改并创建一个补丁。
git add <file>
git commit -s -v
git format-patch -o /tmp/ HEAD^

主题由以冒号分隔的文件名路径组成,后跟补丁以祈使语气所做的操作。在空行之后是补丁的描述和强制性的 Signed-off-by 标签,最后是你的补丁的 diff。
这是另一个简单补丁的例子

接下来,从命令行使用电子邮件发送补丁(在本例中,使用 Mutt):
mutt -H /tmp/0001-<whatever your filename is>
要了解要将补丁发送给哪些维护者的列表,请使用 get_maintainer.pl 脚本。
在提交你的第一个补丁之前需要知道什么
- Greg Kroah-Hartman 的 暂存树 是提交你的 第一个补丁 的好地方,因为他接受来自新贡献者的简单补丁。当您熟悉补丁发送过程后,您可以发送复杂度更高的子系统特定补丁。
- 您也可以从纠正代码中的编码风格问题开始。要了解更多信息,请阅读 Linux 内核编码风格文档。
- 脚本 checkpatch.pl 会检测您的编码风格错误。例如,运行
perl scripts/checkpatch.pl -f drivers/staging/android/* | less
- 您可以完成开发人员留下的未完成的 TODO
find drivers/staging -name TODO
- Coccinelle 是一个用于模式匹配的有用工具。
- 阅读 内核邮件列表存档。
- 浏览 linux.git 日志,查看以前作者的提交以获取灵感。
- 注意:不要顶端回复与您的补丁的审阅者交流!这是一个例子
错误的方式
Chris,
好的,我们明天在二楼安排会议吧。
> 2013 年 4 月 26 日星期五上午 9:25,Chris 写道:
> 嗨 John,我有一些问题
> 1. 你想明天安排会议吗?
> 2. 在办公室的哪一层?
> 3. 什么时间对你合适?(请注意,最后一个问题在回复中被无意中遗漏了。)
正确的方式
Chris,
请看我在下面给出的答案...
> 2013 年 4 月 26 日星期五上午 9:25,Chris 写道:
> 嗨 John,我有一些问题
> 1. 你想明天安排会议吗?
好的,明天可以。
> 2. 在办公室的哪一层?
我们就在二楼吧。
> 3. 什么时间对你合适?
上午 09:00 可以。(所有问题都已回答,这种方式节省了阅读时间。)
- Eudyptula 挑战 是学习内核基础知识的好方法。
要了解更多信息,请阅读 KernelNewbies 第一个内核补丁教程。之后,如果您仍有任何疑问,请在 kernelnewbies 邮件列表 或 #kernelnewbies IRC 频道 中提问。
3 条评论