向Linux内核提交第一个patch

向Linux内核提交第一个patch

  • 本文介绍如何下载linux内核工程代码,以及提交patch的步骤。

下载Linux-next工程代码

不同分支

在官网上首页中可以看到Linux有多个分支。mainline,stable,longterm和next分支。patch提交应该在最新版本,也就是next分支。

linux 官网
Linux官网: https://www.kernel.org/

git clone Linux工程

下载源码的方式很多,包括直接在上图官网下载,使用git命令下载,但使用git clone的方式会更方便些。
比如后续的更新(git pull)、获取模块信息(git log)。

如果使用git命令下载,可以到国内镜像网站获取最新代码,如:
请添加图片描述
清华镜像: https://www.csdn.net/

使用命令自动下载linux-next分支的最新版本

git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux-next.git

后续如果要更新源代码,使用git pull拉取最新代码。具体参数根据自己需求更改。

git pull --rebase=merges

完成上述步骤后,就出现了一个linux-next文件夹。

提交patch

在进入linux-next文件夹之前,需要做一些准备。

配置邮箱信息

vim ~/.gitconfig

请添加图片描述
推荐使用gmail,国内常见类型的邮箱不能起效。具体邮箱参数自行搜索。

配置完参数后,cd linux-next 进入linux-next文件夹。

cd linux-next

这里要说明的是,提交patch是一个比较严肃的事情,更多的是对某个bug进行修复。当然对于初学者来说,这太难了,遇见bug并修复是一件可遇不可求的事情。所以我们的第一个patch可以是修复单词拼写错误。

更新本地暂存区

在你对具体的文件修改后,使用git add filename 更新暂存区,如我们对drive/md/md-cluster.c中的两个单词拼写错误进行修改后保存。

git add drivers/md/md-cluster.c

提交本地最新更新

git commit是提交本地更新,运行下列命令后,会进入一个文本编辑窗口。

git commit -s -v

-s 会自动为你在message中添加你的签名,形如 Signed off by: XXX aaa@bbb.com
-v 会显示你的修改。

获取提交信息中的需要的模块名

在这个文本编辑界面,我们需要添加其他信息。第一行是subject,首先添加模块信息,这个信息可以通过git log filename 查看以往其他人的提交得到 模块名。

git log drivers/md/md-cluster.c

请添加图片描述

编辑message信息

可以看到,模块为 md,记住’md: ‘,冒号后有一个空格,对于commit messag格式排版是有要求的。

添加模块名后,在同一行继续添加主要做了什么。

换行后,空一行,解释为什么这么做。
请添加图片描述
Crtl + x 保存后离开。

生成patch

git format-patch HEAD^1
0001-md-Fix-spelling-mistake-in-comments.patch

可以看到生成了0001-md-Fix-spelling-mistake-in-comments.patch文件,可以用 vim 查看。

检查patch格式

./scripts/checkpatch.pl 0001-md-Fix-spelling-mistake-in-comments.patch 
total: 0 errors, 0 warnings, 16 lines checked

0001-md-Fix-spelling-mistake-in-comments.patch has no obvious style problems and is ready for submission.

这里要求0 errors, 0 warnings。

获取邮件maintainer

应该把patch发送给哪些人?

./scripts/get_maintainer.pl 0001-md-Fix-spelling-mistake-in-comments.patch
Song Liu song@kernel.org (supporter:SOFTWARE RAID (Multiple Disks) SUPPORT)
linux-raid@vger.kernel.org (open list:SOFTWARE RAID (Multiple Disks) SUPPORT)
linux-kernel@vger.kernel.org (open list)

这里不太典型,括号中应该要有maintainer:XXX的信息,但对于supporter一样可以发送。

发送patch

建议如果是第一次发送patch,先试着向自己发送来检验下各配置是否正确,确认格式排版无误后,再向维护者发送。
另外,系统可能会提示你没有安装git send-email部件,按照报错信息搜索不同系统的安装 git send-email命令。


git send-email --to song@kernel.org --cc linux-raid@vger.kernel.org --cc linux-kernel@vger.kernel.org 0001-md-Fix-spelling-mistake-in-comments.patch

‘—to’是发送,’—cc’是抄送。确认后,发送邮件。

发送成功后会有Message-Id,这个Id在你后续修改第二版patch时会用到。

git format-patch -v2 …,生成第二版本的patch。
git send-email —in-reply-to=’Id’ --to… ‘v2patch’,回复v2patch。

后续

发送patch,收到回复是不确定的,可能马上就会有回应,也可能一两天,也有可能没有回应。这些都是正常的,请关注邮箱信息。因为内核维护者是人,应该有这个意识。

如果你接受到类似的回复,那么你的patch将会出现在后续的linux版本中,也包括Reviewed-By的回复。
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值