「パッチするファイル」を尋ねる質問にパッチを適用するときはどうすればよいですか?

「パッチするファイル」を尋ねる質問にパッチを適用するときはどうすればよいですか?

システム停止の問題がありましたが、これを発見しました議論するgithubでは、それらの1人が5つのパッチを追加することを提案しました。

ここに画像の説明を入力してください。

私が入力したとき:

patch p1 < 0001-PM-autocomplet.patch

質問を受けましたが、File to patch何を記入するのかわかりませんでした。このパッチをどのように適用して適用しますか? ここに画像の説明を入力してください。

ベストアンサー1

この形式のパッチを適用するには:

diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
index 0f65d36..ff59753 100644
--- a/include/linux/pm_qos.h

patch -p1、複数の条件を満たす必要があります。

  1. カーネルソースツリーの最上位ディレクトリにある必要があります。この-p1オプションは、ファイル名からパス部分を削除することでa/include/linux/pm_qos.h処理されますinclude/linux/pm_qos.h。これは、現在の作業ディレクトリで確認する必要がある相対パスです。

  2. このファイルは、include/linux/pm_qos.hパッチするカーネルのバージョンになければなりません。

1と2が満たされていない場合は、適用するファイルが見つからず、patch対話的にパス名の入力を求められます。

もちろん:

  1. ファイルinclude/linux/pm_qos.hは、パッチが生成されたファイルと「十分に似ている」必要があります。それ以外の場合、パッチは適用されません。

パッチに記載されている他のすべてのファイルにも同じ説明が適用されます。

パッチが生成されたバージョンとは異なるカーネルバージョンをパッチしようとすると、「固定」される可能性があります。これにはカーネル開発のある程度の理解が必要です(適用に必要な調整がどれほど複雑であるかによって異なります)。パッチは)です。

時々、カーネルファイルの名前が変更されたばかりです。パッチに記載されているファイルの名前が新しい名前に変更されると、パッチはかなりきちんと適用されます。一方、最悪の場合は、パッチが何をしているのかを実際に理解してから(おそらくパッチが作成された元のカーネルを見て)、ターゲットカーネルに最初から同じロジックを実装する必要があります。 「中間難易度」では、変数名、関数名、名前が変更される構造メンバー名などの問題のみを処理するだけです。パッチが新しい名前だけに従う場合は、パッチが適用されます。

おすすめ記事