如何提交Linux内核补丁到Linux内核社区

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何提交Linux内核补丁到Linux内核社区相关的知识,希望对你有一定的参考价值。

    步骤比较复杂,有10多个;下面来学习前2个;

1 获取当前源码树
    首先要有一个当前内核源代码的存储库;使用git获取一个;将要从主线存储库开始;
    可以通过以下方式获取:
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

    你可能不希望直接针对主线树进行开发;大多数子系统维护人员运 行自己的树,并希望看到针对这些树准备的补丁;

2 使用 “diff -up” 或者 “diff -uprN” 来创建补丁
    所有内核的改动,都是以补丁的形式呈现的,补丁由 diff(1) 生成;
    创建补丁的 时候,要确认它是以 “unified diff” 格式创建的,这种格式由 diff(1) 的 ‘-u’ 参数生成;
    而且,请使用 ‘-p’ 参数,那样会显示每个改动所在的C函数,使得 产生的补丁容易读得多;
    补丁应该基于内核源代码树的根目录,而不是里边的任 何子目录;

    为一个单独的文件创建补丁,示例如下;

SRCTREE=linux
MYFILE=drivers/net/mydriver.c

cd $SRCTREE
cp $MYFILE $MYFILE.orig
vi $MYFILE      # make your change
cd ..
diff -up $SRCTREE/$MYFILE.orig, > /tmp/patch

    这应该说的是,你写完了一个内核补丁程序之后;使用linux的diff命令来创建补丁;
    diff(difference)命令常用来比较两个文件中的内容;
    diff 命令是以逐行的方式比较文本文件的异同处;-u,以合并的方式来显示文件内容的不同;-p,若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称;

    前面给出的示例看上去是说;
    先切换到内核源码目录;
    cp是copy的缩写;拷贝你的文件到对应目录;
    用vi编辑器编辑你的更改;
    返回上一级;
    使用diff -up来制作补丁;patch就是补丁的意思;

详细请参阅,
https://www.kernel.org/doc/html/latest/translations/zh_CN/process/submitting-patches.html

以上是关于如何提交Linux内核补丁到Linux内核社区的主要内容,如果未能解决你的问题,请参考以下文章

故意向Linux内核提交漏洞被全线拉黑?华人教授行为引众怒

小米工程师提交优化补丁被批,Linux内核维护者:太疯狂!

Linux 内核源码如何学习?

截至 2021 年 5.4+ 主线 Linux 内核中的 bpfilter 状态

提交内核补丁patch

Linux 5.13 还原并修复了有问题的明尼苏达大学补丁