翼度科技»论坛 云主机 LINUX 查看内容

如何为linux kernel贡献代码

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
参考:

Linux内核文档:《如何让你的改动进入内核》 - 广漠飘羽 - 博客园
提交内核补丁到Linux社区的步骤 - 广漠飘羽 - 博客园 
 
建议:

内容具有时效性,需要阅读最新版本的同学,可以点击下面kernel的官方翻译网页:
https://www.kernel.org/doc/html/latest/translations/zh_CN/process/index.html
 
正文:

和一般github项目可以直接提交pr不同,linux kernel项目庞大,管理繁琐,如果我们想要对linux kernel提出改进,并希望最终改进能进入主分支,则需要严格按照提交patch的流程
 获取源码
  1. git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
复制代码
或者对于有些模块,可能有专门的源码树,建议基于那个做。从以下maintainers文件中可以查到对应树和维护者的一些信息。
List of maintainers and how to submit kernel changes — The Linux Kernel documentation
commit&patch
做出修改,提交commit,并从该commit中生成patch。
  1. git format-patch --subject-prefix='PATCH' -i HEAD~
复制代码
然后,手动对patch再进行修改,要满足以下规则:patch官方规则
其中,--subject-prefix字段决定了 ' Subject: [PATCH v2 01/27] x86: fix eflags tracking ’ 加粗部分的内容。
然后,kernel提供了脚本对patch格式进行检查,执行scripts/checkpatch.pl file.patch
挑选收件人
同样方便地,kernel提供了一个脚本可以对某个文件提取出它的维护者,可以几种方法对照使用:
  1.     scripts/get_maintainer.pl  file or dir 
  2.     git blame file(可查到每行代码是谁提交的,查到commit id后再用git show id,就能看到这个人的具体提交信息,里面有邮箱)
复制代码
git log --pretty-format:"格式化字符串" --graph(加一点图形化显示)也很有用,格式化字符串定义可以参照Git - 查看提交历史
除此之外,还要将邮件抄送给linux-kernel@vger.kernel.org、对应子系统@vger.kernel.org(同样在maintainers文件可查)、security@kernel.org(如果安全相关)
发送邮件
官方推荐用git send-email,这个工具使用smtp协议发送,需要进行一些配置。
首先需要去我们想用的邮箱设置里查到smtp的服务器地址、端口号、以及对应密码。然后打开.gitconfig:
  1. [sendemail]
  2.         smtpserver = serverUrl
  3.         smtpserverport = serverPort
  4.         smtpencryption = tls/ssl(注意小写)
  5.         smtpuser = yourEmail@gmail.com
  6.         smtppass = password
复制代码
接下来,就可以用
git send-email --to 直发对象 --to ... --cc 抄送对象 --cc ... file.patch
来发送patch啦
最后,发送patch的记录可以在 All of lore.kernel.org 查到 


 

来源:https://www.cnblogs.com/zjxcyr/p/17109886.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具