一、进入内核,修改内核代码
cd kernel/linux/linux-5.10
vim drivers/Kconfig
# 在倒数第二行加入:source "drivers/tracepoint/Kconfig"
source "drivers/most/Kconfig"
source "drivers/accesstokenid/Kconfig"
source "drivers/tracepoint/Kconfig"
endmenu
二、打 patch
patch -p1 < ../patches/linux-5.10/rk3568_patch/kernel.patch
如果想撤回 patch 方法
patch -Rp1 < ../patches/linux-5.10/rk3568_patch/kernel.patch
三、解决冲突(如果存在)
$ git status | grep rej
Refresh index: 100% (70816/70816), done.
drivers/Kconfig.rej
上面表示 drivers/Kconfig 文件的打 patch 时候有冲突被拒绝了,需要手动进行修改
-
打开 drivers/Kconfig.rej 文件
--- drivers/Kconfig +++ drivers/Kconfig @@ -239,4 +239,8 @@ source "drivers/counter/Kconfig" source "drivers/most/Kconfig" source "drivers/accesstokenid/Kconfig" + +source "drivers/rkflash/Kconfig" + +source "drivers/rk_nand/Kconfig" endmenu
这个文件的意思是需要在 source "drivers/accesstokenid/Kconfig"的下面添加四行内容
-
打开 drivers/Kconfig 文件,手动解决 patch 添加
# 修改前 source "drivers/most/Kconfig" source "drivers/accesstokenid/Kconfig" source "drivers/tracepoint/Kconfig" endmenu # 修改后 source "drivers/most/Kconfig" source "drivers/accesstokenid/Kconfig" source "drivers/tracepoint/Kconfig" source "drivers/rkflash/Kconfig" source "drivers/rk_nand/Kconfig" endmenu
-
删除冲突生成的临时 orig 和 rej 文件
rm -rf drivers/Kconfig.orig drivers/Kconfig.rej
-
至此冲突解决完
四、生成新的 patch
git add .
git commit . -m"add tracepoint"
# 如果只有一次提交使用format-patch方便
git format-patch HEAD^
# 如果想打commit1和commit2之间的patch
# 其中commit1是起始的commit; commit2是结束的commit
git diff commit1 commit2 > demo.patch
此时会生成一个 patch 文件 0001-add-tracepoint.patch
五、原 patch 修改
我们比对0001-add-tracepoint.patch 和 ../patches/linux-5.10/rk3568_patch/kernel.patch文件发现差异特别大,那是因为每次生成的patch时候对应的文件顺序是不一样的,所以差异比较大,我们要做的是将我们修改的文件patch内容替换即可。
# 比较文件的方法
diff 0001-add-tracepoint.patch ../patches/linux-5.10/rk3568_patch/kernel.patch
打开 0001-add-tracepoint.patch 文件搜索 drivers/Kconfig,将如下内容替换掉…/patches/linux-5.10/rk3568_patch/kernel.patch 中的相同位置内容,至此,patch 修改完成
# 0001-add-tracepoint.patch中的内容
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 826b2b19d..5720a24fb 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -239,4 +239,10 @@ source "drivers/counter/Kconfig"
source "drivers/most/Kconfig"
source "drivers/accesstokenid/Kconfig"
+
+source "drivers/tracepoint/Kconfig"
+
+source "drivers/rkflash/Kconfig"
+
+source "drivers/rk_nand/Kconfig"
endmenu
# 原../patches/linux-5.10/rk3568_patch/kernel.patch中的内容
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 826b2b19d..d7f2fc98b 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -239,4 +239,8 @@ source "drivers/counter/Kconfig"
source "drivers/most/Kconfig"
source "drivers/accesstokenid/Kconfig"
+
+source "drivers/rkflash/Kconfig"
+
+source "drivers/rk_nand/Kconfig"
endmenu
# 替换后../patches/linux-5.10/rk3568_patch/kernel.patch中的内容
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 826b2b19d..5720a24fb 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -239,4 +239,10 @@ source "drivers/counter/Kconfig"
source "drivers/most/Kconfig"
source "drivers/accesstokenid/Kconfig"
+
+source "drivers/tracepoint/Kconfig"
+
+source "drivers/rkflash/Kconfig"
+
+source "drivers/rk_nand/Kconfig"
endmenu
六、内核版本回退
rm 0001-add-tracepoint.patch
git reset --hard HEAD^
七、至此 kernel.patch 修改完成
写在最后
●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
●点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
●更多鸿蒙最新技术知识点,请移步前往小编:https://gitee.com/