教你如何向Linux内核社区提交patch

最近在研究Linux内核random这一块的代码,在阅读源码的过程中,偶然发现代码中有个地方写的不规范,于是就踏上了向Linux社区提交patch的路。

使用centos 6.5系统。整个过程建议使用梯子,不然卡的要死,gmail总数抽风发不出去邮件,断断续续搞了好几天

1、装git和git send-email

yum install git
yum install gti-email

2、配置git和smtp

git config --global user.name "nameVal"
git config --global user.email "eamil@qq.com"

配置smtp

vi ~/.gitconfig
// 在文件末尾添加
[sendemail]
        smtpencryption=tls
        smtpserver=smtp.gmail.com
        smtpuser=lxpcodetiger@gmail.com
        smtpserverport=587

3、下载修改Linux kernel源码

通过git clone下载太慢(我的龟速),直接下载压缩包后解压吧。

进入http://github.com/torvalds/li…下载最新版本。

下载后选择一个目录解压

cd  /usr/src
tar -zxvf linux-5.4-rc2

进入,执行

git init
// commit后才能创建新分支
git status
git add .
git commit -m ""
// 创建新分支
git branch develop
git checkout develop

修改代码后,执行下面的命令

git status
git add .
git commit -s -v

注意 git commit 命令会自动打开编辑器让你编辑 Commit 信息,-s 参数可以自动在你的 Commit 信息下加上一行Signed-off-by: My Name <my_email@gmail.com> ,-v 参数会在你的 Commit 信息下方显示出你做的修改,确保你能再三检查自己的改动,这一个参数不是必须的,但是推荐这么做。

注意,Commit 信息的格式有严格限制,我就不废话了,直接上模板。

drivers: fix some error

Why I do these changes and how I do it.

Signed-off-by: My Name <my_email@gmail.com>
  • 第一部分是 short description,以子系统名打头,比如 mm,注意分号后面加个空格,不知道子系统名的可以看看你修改的这个文件的修改历史,看看之前的开发者是怎么写的。这一部分需要使用一句简短的话描述你所做的修改,要让维护者一眼就看出这个 Patch 大概干了什么事。
  • 第二部分是 the body of your patch,这一部分要详细的解释你为何要做这个修改,以及怎么做的,注意时态用现在时,语态用主动形式。
  • 第三部分是之前的 -s 参数自动加上的,不用管。
  • 必须要注意的是,这三部分之间都要有一个空行隔开。

如果 commit 之后还想修改 Commit 信息的话需要使用命令 git commit --amend -v

4、生成patch

使用下面的命令生成patch

git format-patch master

这条命令是以 master 分支为基准,检测你在当前 develop 分支所做的修改并生成 Patch 文件。

命令完成后,你就可以看到你的 Patch 文件了。

ls *.patch
0001-drivers-format-the-code.patch

5、检查patch的格式

运行以下命令检查你的 Patch 格式有没有问题,要做到 0 errors, 0 warnings

./scripts/checkpatch.pl 0001-drivers-format-the-code.patch

6、发送patch

既然 Patch 已经生成完毕,那么是时候发送给上游维护者了。

运行以下命令找出你应该把 Patch 发给谁。

./scripts/get_maintainer.pl -f drivers/char/random.c

其中drivers/char/random.c换成你自己修改的文件。

该命令输出如下

"Theodore Ts'o" <tytso@mit.edu> (maintainer:RANDOM NUMBER DRIVER)
Arnd Bergmann <arnd@arndb.de> (supporter:CHAR and MISC DRIVERS)
Greg Kroah-Hartman <gregkh@linuxfoundation.org> (supporter:CHAR and MISC DRIVERS)
linux-kernel@vger.kernel.org (open list)

测试发送

在正式发送之前,最后先测试一下

一切正常的话,你应该可以收到邮件了,检查下格式什么的是否和你预想的一样。

正式发送

git send-email --to tytso@mit.edu \
--cc arnd@arndb.de \
--cc gregkh@linuxfoundation.org \
--cc linux-kernel@vger.kernel.org \
0001-drivers-format-the-code.patch

之后你的 Patch 就发送给上游维护者并抄送到对应的邮件列表了。

后续

静静的等待维护者的邮件通知吧,如果 Patch 并入上游分支的话会给你发邮件通知的,如果被打回的话也会告诉你哪里错了。

- 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛

原文地址:教你如何向Linux内核社区提交patch - 操作系统 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛(版权归原作者所有,如有侵权,留言联系删除)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值