Ubuntu
核心更新檔提示“檢測到反向(或以前應用的)更新檔!假設-R?nnn”
我第一次嘗試核心更新檔。我不確定是否遇到以下錯誤以及我是否正確執行。但在所有教程和影片節目中,.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