首页 > 系统相关 >如何为linux kernel贡献代码

如何为linux kernel贡献代码

时间:2023-02-10 18:13:57浏览次数:56  
标签:kernel git -- 代码 patch linux org

参考:

Linux内核文档:《如何让你的改动进入内核》 - 广漠飘羽 - 博客园

提交内核补丁到Linux社区的步骤 - 广漠飘羽 - 博客园 

 

建议:

内容具有时效性,需要阅读最新版本的同学,可以点击下面kernel的官方翻译网页:

https://www.kernel.org/doc/html/latest/translations/zh_CN/process/index.html

 

正文:

和一般github项目可以直接提交pr不同,linux kernel项目庞大,管理繁琐,如果我们想要对linux kernel提出改进,并希望最终改进能进入主分支,则需要严格按照提交patch的流程
 获取源码

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。

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提供了一个脚本可以对某个文件提取出它的维护者,可以几种方法对照使用:

    scripts/get_maintainer.pl  file or dir 
    git blame file(可查到每行代码是谁提交的,查到commit id后再用git show id,就能看到这个人的具体提交信息,里面有邮箱)

git log --pretty-format:"格式化字符串" --graph(加一点图形化显示)也很有用,格式化字符串定义可以参照Git - 查看提交历史

除此之外,还要将邮件抄送给[email protected]、对应子系统@vger.kernel.org(同样在maintainers文件可查)、[email protected](如果安全相关)
发送邮件

官方推荐用git send-email,这个工具使用smtp协议发送,需要进行一些配置。

首先需要去我们想用的邮箱设置里查到smtp的服务器地址、端口号、以及对应密码。然后打开.gitconfig:

[sendemail]

        smtpserver = serverUrl

        smtpserverport = serverPort

        smtpencryption = tls/ssl(注意小写)

        smtpuser = [email protected]

        smtppass = password

接下来,就可以用

git send-email --to 直发对象 --to ... --cc 抄送对象 --cc ... file.patch

来发送patch啦

最后,发送patch的记录可以在 All of lore.kernel.org 查到 

 

标签:kernel,git,--,代码,patch,linux,org
From: https://www.cnblogs.com/zjxcyr/p/17109886.html

相关文章

  • Linux下C/C++程序CPU问题分析及优化心得
    一、前言程序的CPU问题是另外一类典型的程序性能问题,很多开发人员都受到过程序CPU占用过高的困扰。本文首先探讨了CPU占用率的排查方法,其次针对一些典型的CPU问题进行分析......
  • 项目终于用上了低代码,才知道为什么真香了!
    合作客户这两天和我唠嗑,表示之前公司老板们天马行空幻想,去提数字化,只听见声响看不见动静,装这个系统用几天用不上就淘汰了。大家不爱学,都扔给IT人员,所以企业内部数据都不互......
  • Python3,我只用一段代码,就写了个词云生成器,YYDS!
    1、引言小鱼:小屌丝,你在干啥呢?小屌丝:鱼哥,你看,我的PPT写的高大尚不。小鱼:这有啥高大尚的啊,小屌丝:你仔细看,往下翻一页小鱼:额。你这那是PPT,就是浴皇大帝、昂科旗等车系......
  • QT代码实现圆形指示灯
    1.思路:标签QLabel改变形状,根据情况显示背景色2.代码实现setLED(QLabel*label,intcolor,intsize){label->setText("");QStringmin_width=QString("min-widt......
  • Linux宝塔面板设置 秒级计划任务
    使用shell脚本实现Linux宝塔面板秒级计划任务#!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHstep=1注意......
  • 记一次在Linux-Ubuntu上的mysql8安装
    踩坑网上的信息干货量太少了,都错的了解到centos系和ubuntu系的Linux还是有较大的区别的,命令都有不同,yum和apt,包管理器都不一样新开的Linux服务器跟裸奔一样,啥啥命令都没......
  • linux之sshpass命令
    将文件连接并传输到远程系统是系统管理员一直在做的事情。SSH是Linux平台上许多系统管理员使用的基本工具。SSH支持两种身份验证形式:1.密码认证2.公钥认证公钥认证......
  • 查看linux系统是Ubuntu还是Centos
    前置小知识:一般来说著名的Linux系统基本上分两大类:RedHat 系列:Redhat、Centos、Fedora等Debian 系列:Debian、Ubuntu等 查看linux是centos还是ubuntu的方法以下......
  • jrtplib linux编译使用
    简介 JRTPLIB是一个用C++编写的面向对象的库,旨在帮助开发人员使用RFC3550中描述的实时传输协议(RTP),该库可以提供接口给开发者实现RTP发送和接收数据,而无需担心SSRC冲突、调......
  • linux篇-centos7.3配置
    Centos7.3防火墙配置1、查看firewall服务状态systemctlstatusfirewalld2、查看firewall的状态firewall-cmd--state3、开启、重启、关闭、firewalld.service服务开启s......