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

使用centos6.5系统。整个过程建议使用梯子,不然卡的要死,gmail总量抽风发不出去电邮,断断续续搞了好几天。

1、装git和gitsend-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、下载更改Linuxkernel源码

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

步入下载最新版本。

下载后选择一个目录解压

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

更改代码后,执行下边的命令

linux内核社区_好的linux社区_红旗linux技术社区

git status
git add .
git commit -s -v

注意gitcommit命令会手动打开编辑器让你编辑Commit信息,-s参数可以手动在你的Commit信息下加上一行Signed-off-by:MyName红旗linux桌面版,-v参数会在你的Commit信息下方显示出你做的更改,确保你能再三检测自己的改动好的linux社区,这一个参数不是必须的好的linux社区arm linux,并且推荐如此做。

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

drivers: fix some error
Why I do these changes and how I do it.
Signed-off-by: My Name 

假如commit以后还想更改Commit信息的话须要使用命令gitcommit--amend-v。

4、生成patch

使用下边的命令生成patch

红旗linux技术社区_linux内核社区_好的linux社区

git format-patch master

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

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

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

5、检查patch的格式

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

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

红旗linux技术社区_linux内核社区_好的linux社区

6、发送patch

既然Patch早已生成完毕,这么是时侯发送给上游维护者了。

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

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

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

该命令输出如下

"Theodore Ts'o"  (maintainer:RANDOM NUMBER DRIVER)
Arnd Bergmann  (supporter:CHAR and MISC DRIVERS)
Greg Kroah-Hartman  (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划归上游分支的话会给你发电邮通知的,假如被打回的话也会告诉你那里错了。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复