内核修补提示“检测到反向(或先前应用的)补丁!假设-R? [n]”

内核修补提示“检测到反向(或先前应用的)补丁!假设-R? [n]”

我是第一次尝试内核修补。我不确定以下是否遇到错误以及我是否正确执行。但在所有教程和视频中都显示,.patch 扩展名文件,但我有一个 .xz 文件。

从 下载稳定版本 5.12.1https://www.kernel.org:

root@learn:/usr/local/src# wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.12.1.tar.xz

root@learn:/usr/local/src# mkdir Linux-Kernel-5.12.1

root@learn:/usr/local/src# tar xvf linux-5.12.1.tar.xz -C Linux-Kernel-5.12.1/ --strip-components=1

root@learn:/usr/local/src# cd Linux-Kernel-5.12.1/

root@learn:/usr/local/src/Linux-Kernel-5.12.1# cp /boot/config-$(uname -r) ./.config

从以下位置下载了补丁 .xz 文件https://www.kernel.org/到目录:

root@learn:/usr/local/src/Linux-Kernel-5.12.1# wget https://cdn.kernel.org/pub/linux/kernel/v5.x/patch-5.12.1.xz

申请时:

root@learn:/usr/local/src/Linux-Kernel-5.12.1# patch -p1 < patch-5.12.1
patching file Makefile
Reversed (or previously applied) patch detected!  Assume -R? [n]

这意味着什么?。

那时我该怎么办?

另外,对于 Ubuntu/Debian,正在下载稳定的内核及其补丁https://www.kernel.org/是正确的方法还是除了 kernel.org 之外它还有自己的源 URL?

答案1

这个错误信息

Reversed (or previously applied) patch detected!  Assume -R? [n]

...意味着该patch命令检测到您的补丁已应用于源。它建议您使用,patch -R但这不是您想要的,因为它会取消应用补丁,因此您将获得早期版本的 Linux 源代码。

这是由于你的一个误解造成的。查看补丁的第一行:

--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 12
-SUBLEVEL = 0
+SUBLEVEL = 1
 EXTRAVERSION =
 NAME = Frozen Wasteland

该块的作用是更改 Makefile 的第 4 行,使其SUBLEVEL从 0 变为 1。实际上,此补丁将 Linux 版本从 5.12.0 更改为 5.12.1,即您已经拥有的版本(因此出现错误消息)。

所以,这不是正确的补丁。你想要的是5.12.2 补丁。但如果你看一下它(如上所示),你会发现它适用于5.12.0 源码树,不是 5.12.1 的:

--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 12
-SUBLEVEL = 0
+SUBLEVEL = 2
 EXTRAVERSION =
 NAME = Frozen Wasteland

相关内容