Linux: 向内核提交补丁

news2024/11/15 8:41:52

文章目录

  • 1. 前言
  • 2. 提交内核补丁的步骤
    • 2.1 从代码仓库下载内核源码
    • 2.2 建立本地分支 linux-next_master
    • 2.3 制作一个补丁
    • 2.4 提交补丁
      • 2.4.1 配置发送邮箱
      • 2.4.2 配置 git send-email
      • 2.4.3 发送补丁

1. 前言

限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。

2. 提交内核补丁的步骤

后续操作基于 GIT 工具完成,作者假定读者已经安装并配置好了 GIT 。如果没有,可以自行搜索相关资料安装 GIT

2.1 从代码仓库下载内核源码

首先,从Linux内核代码仓库下载主分支代码到本地:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

主分支代码是相对稳定的代码,一般不够新,本文选择最新尚在开发中的 linux-next 分支来演示内核补丁的提交,所以还要更新代码到最新分支:

git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

这些仓库的地址可以从 https://git.kernel.org/ 查找。接下来将 linux-next 的代码下载到本地:

git fetch --tags linux-next

2.2 建立本地分支 linux-next_master

注意,此时我们只是将 linux-next 分支的代码同步到了本地,但是本地还没有对应的可操作分支,为此,我们还要建立一个本地分支。先看一下当前分支情况:

$ git branch -a
* master
  remotes/linux-next/akpm
  remotes/linux-next/akpm-base
  remotes/linux-next/master
  remotes/linux-next/pending-fixes
  remotes/linux-next/stable
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

所有名字前面有 remotes 是都是远程分支引用,我们看到已经有一个 master 本地分支,这是在 git clone 时自动创建的。但这个本地分支不是我们要的,我们要建立一个关联到 linux-next 的本地分支:

$ git checkout -b linux-next_master # 建立新的本地分支 linux-next_master
$ git branch -u linux-next/master # 关联 本地分支 linux-next_master 到远程分支 linux-next/master

$ git branch -vv
* linux-next_master 709c6adf19dc [linux-next/master] Add linux-next specific files for 20230307
  master            413c1061e467 [origin/master: ahead 2, behind 125519] Merge remote-tracking branch 'origin/master'

$ git branch -a
* linux-next_master
  master
  remotes/linux-next/akpm
  remotes/linux-next/akpm-base
  remotes/linux-next/master
  remotes/linux-next/pending-fixes
  remotes/linux-next/stable
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

好,新的本地分支 linux-next_master 已经建立好了。

2.3 制作一个补丁

修改代码,然后运行系列指令:

git add /path/to/file
git commit -s -m 'message for patch.'

提交修改到本地分支 linux-next_master ,然后用工具制作可提交的补丁:

git format-patch -s -1 # 将自动按最近一次提交生成一个补丁文件 xxx.patch
./scripts/checkpatch.pl xxx.patch # 检查补丁的格式是否合法
./scripts/get_maintainer.pl xxx.patch # 补丁是以邮件形式发送,这里是找出要发送的邮箱

2.4 提交补丁

2.4.1 配置发送邮箱

提交补丁就是将前面制作的 xxx.patch 发送到 get_maintainer.pl 提取的邮箱列表中。既然是发送邮件,那首先得准备一个邮箱,这里就有很多选择了,譬如 gmail ,但国内的用起来很麻烦,这里以 126 邮箱举例。首先配置下126邮箱:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4.2 配置 git send-email

GIT 默认不带 send-email ,运行下面的命令安装它:

 sudo apt-get install git-email

编辑 ~/.gitconfig 进行邮件配置:

[user]
	name = Your name
	email = 你的126邮箱地址

[sendemail]
	smtpserver = smtp.126.com
	smtpuser = 你的126邮箱地址
	smtpserverport = 465
	smtpencryption = ssl
	smtppass = 2.4.1章节得到的授权码

2.4.3 发送补丁

运行下面的命令发送章节 2.3 制作的补丁 xxx.patch

git send-email --smtp-debug \
    --to=david@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
	xxx.patch

命令中的邮件列表根据 get_maintainer.pl 脚本得到的列表进行调整。可以先给自己发送,测试一下。我在实际过程中经常遇到下面的错误提示:

DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object

但不影响邮件发送到社区,如果有哪位读者知道原因,请告知,不胜感激!邮件有没有发送到社区,可以到 https://lore.kernel.org/ 查询。在查询框输入自己在 .gitconfig 中配置的 nameemail,如果你的邮件发送成功,就可以找到自己发送的邮件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/400607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汽车制造商与IT公司之间的技术合作案例

如果您对最新汽车技术感兴趣的话,您可能经常听到汽车制造商和IT公司正在合作开发技术的消息。汽车生产商为何自身不进行技术开发,而是与IT企业合作呢?因为最近随着以IT技术为基础的电动汽车等环保汽车或无人驾驶汽车等的登场和发展,汽车制造商单独进行技术开发需要花费很多时间…

零死角玩转stm32初级篇6-中断

本篇博文目录:一.中断相关概念知识1.STM32 的中断和异常2.NVIC 中断控制器3.NVIC 结构体成员4.抢占优先级和响应优先级5.NVIC 的优先级组6.EXTI 外部中断7.中断服务函数二.按键点灯的二种实现方式1.按键和LED的原理图以及各种输入模式(浮空输入,上拉输入,下拉输入和模拟输入)2.…

到墨西哥的液体货物国际快递怎么邮寄

到墨西哥的液体货物国际快递怎么邮寄?有些时候邮递到墨西哥的物品,采用国际快递是一种很好的国际货物运输方式,但如果货品是液体的话,相对而言便会复杂一些。以下是方联货运物流分享的一些对于如何邮递液体货物国际快递的意见及注意事项&…

认识进程 -了解进程调度

前言 本篇通过介绍操作系统OS的重要功能,了解并发并行, 了解操作系统的一项重要功能 “进程管理” , 通过了解进程管理认识进程是操作系统资源分配的基本单位 ,如有错误,请在评论区指正,让我们一起交流,共同进步! 文章…

< Linux > 多线程(线程概念 + 线程控制)

目录 1、Linux线程概念 什么是线程 简单使用线程 二级页表 线程的优点 线程的缺点 线程异常 线程用途 2、Linux进程 VS 线程 进程和线程 进程的多个线程共享 进程和线程的关系 3、Linux线程控制 POSIX线程库 线程创建pthread_create 获取线程ID pthread_self 线程等待pthrea…

31-java对象内存图

java对象内存图1.java内存分配介绍2.一个对象的内存图3.两个对象的内存图4. 两个引用指向同一个对象5. 基本数据类型和引用数据类型6. this关键字内存图6.1 就近原则的本质6.2 set/get赋值的本质6.3 小结1.java内存分配介绍 2.一个对象的内存图 3.两个对象的内存图 再创建第二个…

hive中时间函数 YYYY和yyyy,MM和mm,HH和hh 区别

yyyy-MM-dd HH:mm:ss 年-月-日 时:分:秒 YYYY 和 yyyy 区别 y/YMeaning解释yyear-of-era元年,我们平时理解的年;20221231认为是2022年Yweek-based-year基于周的年,只要日期那周跨年,都算下一年;2020-12-27周日&#x…

Canvas

canvas介绍 什么是 Canvas?Canvas 是为了解决 Web 页面中只能显示静态图片这个问题而提出的,一个可以使用 JavaScript 等脚本语言向其中绘制图像的 HTML 标签。 Canvas 解决了什么问题 我在 MSDN(《Microsoft Developer Network》是微软一…

金三银四面试热潮将至,靠这一份软件测试面经,offer拿到手软

不知不觉又到了新一年的金三银四, 去年的疫情紧张,造成的一系列影响我相信大家都还历历在目,尤其是工作这块更是如此,找工作的紧迫度,导致很大部分人群在工作发展可能并没有想象中的那样迅速。 作为一名在职的测试人员…

BI数据可视化分析|套用方案,第一时间摸清家底

奥威BI软件的通用标准方案是一套从17年经验中针对性整理而来的一套标准化的数据分析解决方案,无缝对接金蝶、用友全版本ERP,覆盖财务、库存、采购、销售多个主题,提供多个实用型数据分析模型和BI数据可视化报表,套用即生效&#x…

如何解决执行webgoat-2023.4遇到的错误java.lang.UnsupportedClassVersionError

问题执行java -jar webgoat-2023.4.jar报如下错误,Exception in thread “main“ java.lang.UnsupportedClassVersionError,报错截图:2. 原因jvm(java命令)和jdk(javac命令)版本不一致。如果是w…

前沿气候预测方法(精选)

气候预测方法ClimaxGraphcastCLCRNEarthformerPangu另一些值得关注的方法物理约束相关模型模式误差订正模型时空预测模型其他总结Climax 基于vit的backbone 不同尺度的lead time 输入的每个时间片都像往常一样经过变量标记化、变量聚合和注意层,输出形状为T ℎ …

CAN总线协议

阅读指引:术语过多,故各术语在第一次出现时解释,跳读时遇到不明的词可向上搜索看看;信息量过大,很多细节没有展开,正文只写多数人可以了解的基础知识,请按需点击文中链接阅读更多详情。1 综述CA…

9 自编码器(Auto encoder)及python实现

1 数据集介绍 1.1 Mnist 手写数字数据库 (LeCun 在1998年创造) (1)手写数字 0-9共10类 (2)训练样本60000个,测试样本10000个。 (3)图像大小 28*28 二值图像。 &#xf…

[深入理解SSD系列 闪存实战2.1.5] NAND FLASH基本读操作及原理_NAND FLASH Read Operation源码实现

前言 上面是我使用的NAND FLASH的硬件原理图,面对这些引脚,很难明白他们是什么含义, 下面先来个热身: 问1. 原理图上NAND FLASH只有数据线,怎么传输地址? 答1.在DATA0~DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址, 问2. 从NAND FLASH芯片手册可知,要…

TryHackMe-Lockdown(boot2root)

Lockdown 停留在 127.0.0.1。穿255.255.255.0。 端口扫描 循例 nmap Web枚举 进入80 发现跳转到了contacttracer.thm,将其添加进/etc/hosts 这里试了一下注入 结果这就进去了 在后台逛了一圈,最后还是把目光放在了图片上传点 试了一会,貌似…

SVN 版本控制软件

SVN 版本控制软件 属于C/S结构软件(客户端与服务端) 服务端软件:VisualSVN 网址:Downloads | VisualSVN 下载好:VisualSVN-Server-5.1.3-x64.msi 客户端软件:TortoiseSVN 网址:http://tor…

AI技术的应用场景和要注意的问题

AI技术可以应用到许多不同的业务场景中,以下这些仅仅是AI技术的一些应用场景,实际上,AI技术可以应用于任何需要处理大量数据、自动化决策和复杂问题的领域。今天和大家分享一下AI技术的应用场景和要注意的问题,希望对大家有所帮助…

借助采购管理数字化解决方案 帮助企业解决传统采购痛点

当今各行业热烈竞争中,企业最终服务交付的效率和质量是这个时代最重要的要素。传统的采购流程工作涉及大量的文书工作,且耗时长,往往容易出现操作出错,造成企业在成本上的大量损失。 作为管理者,企业采购决定你的业务…

2018年MathorCup数学建模B题品牌手机目标用户的精准营销解题全过程文档及程序

2018年第八届MathorCup高校数学建模挑战赛 A题 品牌手机目标用户的精准营销 原题再现: 随着我国电子商务和移动支付的快速发展,手机已经成为人们必不可少的工具。除了常规的通讯功能外, 手机还可以进行购物、支付、娱乐、学习和交流等。因此, 选择一个什么样的手机…