第一次尝试向Linux Kernel提交Patch
第一次提交内核patch尝试
虽然很早就对linux kernel的开发流程比较熟悉了,但是一直没有尝试过向内核社区贡献 patch , 最近看到一个内核开发者写的A Kernel Developer`s Notes专栏文章,介绍了自己对内核理解、跟踪学习内核 patch 流程,以及复现内核 bug 、提交 patch 的流程等等,写的很好,很有可操作性。因此也想跟着学习一番。
本文是阅读以下文章后的尝试:
https://www.linkedin.com/pulse/fixing-one-line-learning-whole-process-moon-hee-lee-uu0cc/?trackingId=wxTo5KYjT5KhL8zO9ZXqIw%3D%3D
准备内核
准备patch
|
|
生成gmail的应用专用密码
Google账号→ 安全性 → 您的账号登录选项 → 两部验证 → 应用专用密码 → 输入应用名字后点创建 → 保存好密码后点完成
设置git-email的smtp服务
端口号在https://support.google.com/mail/answer/7104828?hl=zh-Hans&sjid=11981818515342586304-NC
发送patch
这么多收件人,哪些应该是 --to
哪些应该是 --cc
? 看看 ChatGPT
怎么说:
记得
--cc=xxxx@gmail.com
抄送自己的邮箱
Kernel Mail List : https://lore.kernel.org/all/20250618225546.104949-1-yuanye.ma20@gmail.com/T/#t
patch被接受
过了两天,收到了 patch
被接受的邮件:
https://lore.kernel.org/all/877c14dfa5.fsf@trenco.lwn.net/
patch 被合入上游仓库
patch先被合入了next tree
: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=0242b8b0cc89599b3e4162add672179ce2dd4131
还需要等待patch进入上游仓库。
总结
整个过程并不复杂,重要的是要去做,只有做了才知道哪里理解的不到位,才能进一步去改进。
此外,patch 的 commitmsg 很重要,patch 并不只是提交代码,更重要的是和社区的其他开发者们交流/协作,因此要认真对待,不仅要写清楚“改了什么”,更要说明“为什么改”,以及“怎么发现的”。
补丁不仅仅是一个改动,它是一份贡献 —— 而它必须是自洽、独立成立的。这也包括说明问题是如何被发现的,以及为什么这个修复是合理的。尤其是对于新贡献者来说,这比 diff 的大小更重要。这不仅仅是“提交补丁”,更是在帮助他人理解这个改动为什么正确。
一个合格的 commit message 不只是描述“改了什么”,更要说明“为什么改”,以及“怎么发现的”。