Ubuntu

核心更新檔提示“檢測到反向(或以前應用的)更新檔!假設-R?nnn”

  • May 8, 2021

我第一次嘗試核心更新檔。我不確定是否遇到以下錯誤以及我是否正確執行。但在所有教程和影片節目中,.patch 擴展文件,但我有一個 .xz 文件。

從https://www.kernel.org下載穩定版本 5.12.1 :

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

從https://www.kernel.org/下載更新檔 .xz 文件到目錄:

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/下載穩定的核心及其更新檔是正確的方式,還是它有自己的源 URL,而不是 kernel.org?。

此錯誤消息

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

引用自:https://unix.stackexchange.com/questions/648772