如何提交你的第一个 Linux 内核补丁
创始人
2024-03-02 00:33:52
0

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

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

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

为内核作贡献

第 1 步:准备你的系统。

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

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

第 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

第 https://archive.linux.cn/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 
git commit -s -v
git format-patch -o /tmp/ HEAD^

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

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

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

mutt -H /tmp/0001-

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

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

错误的方式:

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

> On Fri, Apr 26, 201https://archive.linux.cn/3 at 9: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?
> https://archive.linux.cn/3. What time is suitable to you?

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

正确的方式:

Chris,
See my answers below...

> On Fri, Apr 26, 201https://archive.linux.cn/3 at 9: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&#https://archive.linux.cn/39;s keep it on the second floor.
> https://archive.linux.cn/3. What time is suitable to you?
09:00 am would be alright.

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

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


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

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

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

相关内容

麒麟软件申请基于阈值复检的...
国家知识产权局信息显示,麒麟软件有限公司申请一项名为“一种基于阈值...
2026-07-16 22:31:41
研究人员揭露Linux K...
IT之家 7 月 7 日消息,研究人员 Hyunwoo Kim 发...
2026-07-14 13:35:28
Linux新内核能玩啥手柄...
IT之家 5 月 31 日消息,据科技媒体 Phoronix 今天...
2026-07-05 13:02:05
济南能源:铸强AI自主内核...
当前,数字中国建设向纵深推进,人工智能、数字孪生、一体化算力调度等...
2026-07-05 08:29:52
《中国开源发展深度报告(2...
IT之家 6 月 29 日消息,6 月 26 日,开放原子开源基金...
2026-06-29 16:22:34
IBM、Red Hat 与...
此次合作将综合运用 Palo Alto 的网络级虚拟补丁技术(集成...
2026-06-28 21:05:53

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...