Lubuntu 16.04ディストリビューションにRT_PREEMPTパッチを適用したカーネルをインストールしようとしていますが、対処方法がわからない問題が発生しています。カーネルv4.4.12(linux-4.4.12.tar.xz)のソースと、適切なRT_PREEMPTパッチ(patches-4.4.12-rt20.tar.xz)と思われるものを両方ともカーネルからダウンロードしました。 org。 tar xf
、cd
'dを使用してカーネルソースをディレクトリに抽出し、xzcat ../patches-4.4.12.tar.xz | patch -p1
を使用してパッチを適用しようとしました(ここでの推奨事項に従って: https: //rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO )。このコマンドは、存在しないファイルのパッチ、以前に適用されたパッチ、失敗したハンクなどについて不平を言う多数のエラーを生成するだけです。パッチハンクの一部は成功したように見えますが、多くは失敗します。
これは、このカーネルにパッチを適用するための正しい手段ではありませんか?私がどこで間違っているのか考えていますか?
編集:これは私が見ているエラーの種類をカバーするサンプルです:
Rush@lubuntuvm:~/preempt-rt/linux-4.4.12$ xzcat ../patches-4.4.12-rt20.tar.xz | patch -p1
patching file Arch/x86/kernel/nmi.c
Hunk #1 FAILED at 231.
Hunk #2 FAILED at 256.
Hunk #3 FAILED at 305.
3 out of 3 hunks FAILED -- saving rejects to file Arch/x86/kernel/nmi.c.rej
patching file Arch/x86/kernel/reboot.c
patching file include/linux/kernel.h
Hunk #1 succeeded at 255 (offset -4 lines).
Hunk #2 FAILED at 460.
1 out of 2 hunks FAILED -- saving rejects to file include/linux/kernel.h.rej
patching file kernel/panic.c
Hunk #1 FAILED at 61.
1 out of 1 hunk FAILED -- saving rejects to file kernel/panic.c.rej
patching file kernel/watchdog.c
Hunk #1 FAILED at 361.
1 out of 1 hunk FAILED -- saving rejects to file kernel/watchdog.c.rej
patching file kernel/stop_machine.c
Hunk #12 succeeded at 482 (offset -10 lines).
Hunk #13 succeeded at 544 (offset -10 lines).
Hunk #14 succeeded at 648 (offset -10 lines).
patching file block/blk-mq.c
Reversed (or previously applied) patch detected! Assume -R? [n] n
Apply anyway? [n]
Skipping patch.
3 out of 3 hunks ignored -- saving rejects to file block/blk-mq.c.rej
patching file block/blk-mq.h
Reversed (or previously applied) patch detected! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
3 out of 3 hunks ignored -- saving rejects to file block/blk-mq.h.rej
patching file net/core/dev.c
Hunk #1 succeeded at 3542 (offset -3 lines).
Hunk #2 succeeded at 3552 (offset -3 lines).
patching file Arch/arm64/Kconfig
patching file Arch/arm64/include/asm/thread_info.h
patching file Arch/arm64/kernel/asm-offsets.c
patching file Arch/arm64/kernel/entry.S
can't find file to patch at input line 794
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--
|2.8.1
|
|patches/0026-hwlat-detector-Use-trace_clock_local-if-available.patch0000644001303100130310000000625512741715155025466 0ustar rostedtrostedtFrom c184dd4a4a5d88b3223704297a42d1aaab973811 Mon Sep 17 00:00:00 2001
|From: Steven Rostedt <[email protected]>
|Date: Mon, 19 Aug 2013 17:33:26 -0400
|Subject: [PATCH 026/351] hwlat-detector: Use trace_clock_local if available
|
|As ktime_get() calls into the timing code which does a read_seq(), it
|may be affected by other CPUS that touch that lock. To remove this
|dependency, use the trace_clock_local() which is already exported
|for module use. If CONFIG_TRACING is enabled, use that as the clock,
|otherwise use ktime_get().
|
|Signed-off-by: Steven Rostedt <[email protected]>
|Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
|---
| drivers/misc/hwlat_detector.c | 34 +++++++++++++++++++++++++---------
| 1 file changed, 25 insertions(+), 9 deletions(-)
|
|diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c
|index c07e85932cbf..0fcc0e38df42 100644
|--- a/drivers/misc/hwlat_detector.c
|+++ b/drivers/misc/hwlat_detector.c
あなたはおそらくpatch-4.4.12-rt20.patch.xz
ではなく、patches-4.4.12-rt20.tar.xz
。拡張機能が示唆するように、後者はtarアーカイブであり、単一のパッチファイルではありません。どうやらそれは単一ファイルバージョンと同じパッチを含んでいますが、コミットメッセージなどがあります。
patch
は、役に立たないもの(tarファイル構造など)を無視するのに十分賢いので、一部のパッチは機能します。ただし、コンポーネントパッチは相互に依存している可能性があり、tarファイル内の順序が間違っているため、正しく適用されない可能性があります。