커널 패치를 시도한 것은 이번이 처음입니다. 다음 내용에 오류가 있는지, 올바르게 수행하고 있는지 잘 모르겠습니다. 하지만 모든 튜토리얼과 비디오에는 .patch 확장 파일이 표시되지만 .xz 파일이 있습니다.
다음에서 안정 버전 5.12.1을 다운로드하세요.https://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
다음에서 patch.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