如何向 Linux Kernel 提交 Patch

如何向 Linux Kernel 提交 Patch,第1张

1。安装msmtp

msmtp 是一款专门负责邮件发送的客户端软件,基于GPL发布,支持TLS/SSL、DNS模式、IPv6、服务器端认证、多用户等特性。

其主页是 msmtp.sourceforge.net:

直接用sudo apt-get install msmtp安装

安装好后,进行基本配置

$ cat .msmtprc

# Set default values for all following accounts.

defaults

logfile ~/.msmtp.log

# account1

account account1

protocol smtp

host mail.server.com.cn

from yourname@mail.com.cn

user yourname@mail.com.cn

password xxxxxx

port 25

auth ntlm

syslog LOG_MAIL

# Set a default account

account default: account1

password就是你邮箱的密码,直接写上去。

保存后修改访问权限:chmod 0600 .msmtprc

否则会报must have no more than user read/write permissions的问题/

2。安装git-email

git-email是git的可选项,有的git没有安装,因为后面要用,所以先安一下。

sudo apt-get install git-email

3.准备patch

修改你的文件,比如a.c

将修改commit

git add a.c

gitcommit -s -m "i have fix a.c for test"

提交后,对本次提交生成patch

git format-patch -1

生成patch文件0001-i-have-fix-a.c-for-test.patch

如果有多个提交

git format-patch --thread --cover-letter -n

如果被提出修改再提交,增加PATCH v2

git format-patch --thread --cover-letter --subject-prefix="PATCH v2" -4

得到patch后,进行patch检查

使用./scripts/checkpatch.pl 0001-i-have-fix-a.c-for-test.patch

修改其中的error和warning

4。发送patch

首先通过./scripts/get_maintainer.pl 0001-i-have-fix-a.c-for-test.patch获得邮件要发送的人名单

也可以使用./scripts/get_maintainer.pl [options] -f file|directory

最后通过发送:

git send-email --smtp-server /usr/bin/msmtp \

--from yourname@email.com \

--to devel@linuxdriverproject.org \

--to linux-kernel@vger.kernel.org \

--cc gregkh@linuxfoundation.org \

--cc ... \

*.patch

,在发送前,也可以将邮件发送给自己,测试一下,在正常发送。

发送显示log如下:

(mbox) Adding cc: ******** <********_feng@<******_.com.cn>from line 'From: ********_feng <******_feng@<******_.com.cn>'

(body) Adding cc: <******__feng <<******__feng@<******_.com.cn>from line 'Signed-off-by: <******__feng <<******__feng@<******_.com.cn>'

From: <******__feng@<******_.com.cn

To: l<******_s@<******_.org

Cc: linux-kernel@vger.kernel.org,

<******__feng <<******__feng@<******_.com.cn>

<******_<******_<******_<******_

The Cc list above has been expanded by additional

addresses found in the patch commit message. By default

send-email prompts before sending whenever this occurs.

This behavior is controlled by the sendemail.confirm

configuration setting.

For additional information, run 'git send-email --help'.

To retain the current behavior, but squelch this message,

run 'git config --global sendemail.confirm auto'.

Send this email? ([y]es|[n]o|[q]uit|[a]ll): y

OK. Log says:

Sendmail: /usr/bin/msmtp

From: *************

To: l*************

Cc: *************

*************

Subject: [PATCH]*************

Date: Fri, 9 Dec 2016 16:23:34 +0800

Message-Id: <1481271814-31820-1-git-send-email-*************

X-Mailer: git-send-email 1.9.1

Result: OK

好发送成功

假设需要提交hello world这个驱动

首先在driver目录下建立hello文件夹,然后在里面新建Makefile、Kconfig、hello.c文件

Makefile文件写:obj-$(CONFIG_HELLO) += hello.o

Kconfig 文件写config HELLO

tristate "this is just a hello module test"

default m

然后在driver目录下,修改Kconfig,添加 source "/driver/hello/Kconfig"

在driver目录下,修改Makefile,添加obj-$(CONFIG_HELLO) += hello/

hello.c如下:

#include <linux/kernel.h>

#include <linux/module.h>

static int __init join_hello(void)

{

pr_info("Enter hello world\n")

static void __exit hello_exit(void)

{

pr_info("exit hello world\n")

}

module_init(join_hello)

module_exit(hello_exit)

MODULE_AUTHOR("Linux")

MODULE_DESCRIPTION("this is just a hello module test")

MODULE_LICENSE("GPL v2")

编译完成后,生成ko文件,在linux下使用insmod hello.ko就可以加驱动加入内核了,当然你可以将驱动编译成静态加载的方式


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7302785.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存