助け合いフォーラム
22195について質問です。
正解は
cd /usr/src/linux-4.7; xz -dc /tmp/patch-4.7.3.xz | patch -p1
なんですが
cd /usr/src/linux-4.7.2; xz -dc /tmp/patch-4.7.3.xz | patch -p1
じゃダメに理由がよくわかりません
解説では
「カーネル 4.7.2 のディレクトリに移動していますが、4.7.3 を適用するには、まず 4.7.2 の変更を取り消して 4.7 の状態に戻さなければなりませんので、誤りです。」
とありますが
ソースコードを解凍した場合x.y.zまでバージョンがディレクトリ名に記載されているのが普通ではないでしょうか?
特定のパッチがカーネルバージョン4.7.2に対して適用される場合、そのパッチがすでに4.7.3の変更を含んでいる可能性があります。この場合、4.7.2から4.7.3に適用された変更がパッチに含まれているため、4.7.2から4.7.3にバージョンアップするための作業は不要とchatgptは言っています。
なんというか解説の意味がよくわからないでいます・・・。
どなたかおわかりの方いらっしゃいますか?
「patch-4.7.3.xz」が、4.7.2 との差分なのか 4.7 との差分なのか、というところでしょうか?(違ったらすみません)
以下が参考になると思います。
(カーネル5.x の話ですが、考え方としては 4.x も同じだと思います。)
https://www.kernel.org/doc/html/next/process/applying-patches.html#normal-patches
Normal patches
These patches are not incremental, meaning that for example the 5.7.3 patch does not apply on top of the 5.7.2 kernel source, but rather on top of the base 5.7 kernel source.
So, in order to apply the 5.7.3 patch to your existing 5.7.2 kernel source you have to first back out the 5.7.2 patch (so you are left with a base 5.7 kernel source) and then apply the new 5.7.3 patch.
したがって、「patch-4.7.3.xz」を適用するなら、
移動先ディレクトリ(適用するカーネル)は 4.7 でなくてはならず、
4.7.2 に移動(4.7.2 のカーネルに適用)するのなら、
いったん 4.7.2 の変更を取り消して(4.7 の状態にして)適用する、ということなのではないかなと思います。
ちなみに ChatGPT に尋ねたら私も同じような事を言われました。
「patch-4.7.3.xz」は4.7.2と4.7.3の間の差分を表していると解釈するのが妥当です。
ちょっと困惑しましたが、Linux側が言ってることを信じていいと思います。
というか ChatGPT の答えはうのみにできないということですね。。
コメント
この投稿に対して返信しませんか?