☰
向Linux主线社区提交补丁
2026/9/29 21:26:44 网站建设 项目流程

向Linux主线社区提交补丁 | DD'Notes向Linux主线社区提交补丁背景当我们在平时工作或学习中,发现linux内核有需要改进或修复的地方,而恰好在最新的社区主线也没有补丁,可以将补丁提交给社区。 完整补丁开发流程完整补丁开发流程: flowchart TD A[1. RFC阶段] --> B[2. PATCH阶段] B --> C{维护者反馈} C -->|需修改| D[3https://notes.z-dd.online/2026/06/23/%E5%90%91Linux%E4%B8%BB%E7%BA%BF%E7%A4%BE%E5%8C%BA%E6%8F%90%E4%BA%A4%E8%A1%A5%E4%B8%81/

向Linux主线社区提交补丁
背景
当我们在平时工作或学习中,发现linux内核有需要改进或修复的地方,而恰好在最新的社区主线也没有补丁,可以将补丁提交给社区。

完整补丁开发流程
完整补丁开发流程:

MERMAID
flowchart TD
A[1. RFC阶段] --> B[2. PATCH阶段]
B --> C{维护者反馈}
C -->|需修改| D[3. 修订与重发 PATCH v2/v3]
D --> B
C -->|审核通过| E[4. 合入主线]
完整的补丁生命周期如下:

[RFC] 阶段:
提交初步设计思路(非完整代码),征求社区对架构的意见。例如:
[RFC] mm: introduce new memory compression algorithm

[PATCH] 阶段:
根据 RFC 反馈完善代码,提交正式补丁。需包含完整实现、测试报告和 Signed-off-by。

修订与重发(v2/v3…):
接收维护者反馈(如“代码风格问题”“测试用例不足”)后,修改代码并以 [PATCH v2] 重发,需在描述中说明修改点:
Changes in v2: - fix typo in comment (reported by John) - add test case for corner case

合入主线:
维护者审核通过后,将补丁合并至子系统树(如 net-next),最终通过 Linus 的 master 树合入主线内核。

准备补丁
补丁规范
Linux社区的补丁都是以邮件的形式提交和交流讨论,在提交和回复的过程中需要遵守一定的规范要求。不同的子系统可能还有它自己的特定的一些默认的规定。

邮件主题格式
清晰是第一准则! 主题需包含类型标识和核心内容,让接收者快速了解邮件目的。常见标识:

标识 含义 示例主题
[PATCH] 正式提交的补丁(可合入) [PATCH] net: tcp: fix retransmit timeout calculation
[RFC] 请求意见(非正式补丁,讨论设计) [RFC] net: introduce new TCP congestion control algorithm
[v2] 补丁第二版(修改后重发) [PATCH v2] mm: page_alloc: optimize buddy allocator
[RESEND] 重新发送未收到反馈的补丁 [RESEND PATCH] fs: ext4: fix inode leak on error path
[QUESTION] 技术问题咨询 [QUESTION] arm64: how to handle CPU hotplug in KVM?
注意: 标识需放在主题开头,子系统名可省略(通过列表区分),但复杂补丁建议补充,如 [PATCH net-next](提交至网络子系统的下一版本)。

补丁邮件正文
补丁邮件正文需包含补丁描述和补丁内容,格式严格遵循内核要求。

补丁描述(邮件正文开头):

问题背景(为何需要此补丁);
解决方案(做了什么修改);
测试情况(如何验证,测试环境)。
Fixes 标签: 如果是Fix补丁,需要增加 Fixes 标签
Cc 标签: 修复已发布内核中严重错误的补丁应通过如下⾏定向到稳定版维护者,即Cc: stable@vger.kernel.org

Signed-off-by(必须):
补丁需包含 Signed-off-by ,表明提交者同意《开发者证书 of Origin(DCO)》,即:

本人编写代码或有权提交;
代码符合开源协议(GPLv2)。
格式:Signed-off-by: Name <email>(姓名需真实,邮箱需可回复)。

示例:

PATCH
Subject: [PATCH] net: tcp: fix retransmit timeout calculation

When the network is under high latency, the current TCP retransmit
timeout (RTO) calculation may use an outdated RTT sample, leading to
premature retransmissions and performance degradation.

This patch modifies tcp_rto_min() to always use the latest RTT sample
from the socket's rtt_min value.

Tested:
- Passed tcp_probe tests on x86_64 with 5.15.0 kernel.
- No regressions in iperf3 throughput (10Gbps link, RTT=100ms).

Signed-off-by: Your Name <your.email@example.com>
---
net/ipv4/tcp_timer.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
生成补丁
git format-patch 是 Linux 内核开发中生成补丁文件的核心命令,用于将 Git 提交转换为标准 .patch 文件,便于通过邮件发送给维护者审核。
常用命令如下:


作者: Shell
链接: https://notes.z-dd.online/2026/06/23/%E5%90%91Linux%E4%B8%BB%E7%BA%BF%E7%A4%BE%E5%8C%BA%E6%8F%90%E4%BA%A4%E8%A1%A5%E4%B8%81/
来源: DD'Notes
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

。。。 。。。


更多请关注我的博客:https://notes.z-dd.online/

或我的:


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询