Linux

【Linux】patchとinc.patchの違いを調べる

【※ 当記事は2020年7月2日時点の情報です】

ペイヴメント(@pavement1234)です

エンジニア
エンジニア

【Linux】カーネルソースコードのダウンロードで入手したpatchとinc.patchの違いを知りたい

こんな悩みを解決します

バージョン情報

Linux Kernel 3.14

patchとinc.patchの違い

【Linux】カーネルソースコードのダウンロードで入手したpatch、inc.patch。どちらも普通のパッチでした。patchのリンクにマウスを持っていくと「Download to previous mainline」と表示され、inc.patchのリンクにマウスを持っていくと「Download incremental patch」と表示されます。まだイマイチ違いが分かりません。そもそも、私はパッチを使いこなせていないので、基本的なことを調べました

【Linuxコマンド】パッチを使いこなしたい

本記事では「Download to previous mainline」と「Download incremental patch」の違いについてのみ調査します

The Linux Kernel Archivesを開きました。確か3日前ぐらいは5.1.16がstableでしたが今日見たら5.2がstableになってました

patchをダウンロードしてみるとpatch-5.1.16.xzというファイル、inc.patchをダウンロードしてみるとpatch-5.1.15-16.xzいうファイルでした

xzファイルをWindowsで解凍するには7-zipが必要(Windows環境でtar.xzを解凍(展開)する方法)。まだこのPCには7-zipを入れてないのでTeraTerm経由でパッチをLinuxパソコンにscp転送しました(なんとなく5.2のパッチもダウンロード)

xz 】コマンド/【 unxz 】コマンド――ファイルを圧縮/伸張するを読み、unxzというコマンドで解凍できることを知ります

無事解凍できました。patchの注釈は「Download to previous mainline」 これは古いメインラインへのパッチと読み取れます。patch-5.1.16を開きMakefileのdiffを見ました 5.1.0から5.1.16への差分のようです

diff –git a/Makefile b/Makefile
index 26c92f892d24..46a0ae537182 100644
— a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 1
-SUBLEVEL = 0
+SUBLEVEL = 16
EXTRAVERSION =
NAME = Shy Crocodile

@@ -636,7 +636,7 @@ ifeq ($(may-sync-config),1)
# Read in dependencies to all Kconfig* files, make sure to run syncconfig if
# changes are detected. This should be included after arch/$(SRCARCH)/Makefile
# because some architectures define CROSS_COMPILE there.
–include include/config/auto.conf.cmd
+include include/config/auto.conf.cmd

$(KCONFIG_CONFIG):
@echo >&2 ‘***’

inc.patchの注釈は「Download incremental patch」。これは増分パッチと読み取れます。patch-5.1.15-16を開きMakefileのdiffを見ました。5.1.15から5.1.16への差分のようです

diff –git a/Makefile b/Makefile
index d7b3c8e3ff3e..46a0ae537182 100644
— a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 1
-SUBLEVEL = 15
+SUBLEVEL = 16
EXTRAVERSION =
NAME = Shy Crocodile

patch-5.2のMakefileのdiffも見てみました。これは5.1.0から5.2.0への差分でした

diff –git a/Makefile b/Makefile
index 26c92f892d24..3e4868a6498b 100644
— a/Makefile
+++ b/Makefile
@@ -1,9 +1,9 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
-PATCHLEVEL = 1
+PATCHLEVEL = 2
SUBLEVEL = 0
EXTRAVERSION =
-NAME = Shy Crocodile
+NAME = Bobtail Squid
(以下省略)

なんか法則が分かってきました

patch-5.1.15-16 は 5.1.15→5.1.16の差分
patch-5.1.16 は 5.1.0→5.1.16の差分
patch-5.2 は 5.1.0→5.2.0の差分

サイズを見てもそんな感じです

-rw-r–r– 1 pavement1234 pavement1234 100804 7月 10 01:31 patch-5.1.15-16
-rw-r–r– 1 pavement1234 pavement1234 1997684 7月 10 01:31 patch-5.1.16
-rw-r–r– 1 pavement1234 pavement1234 64241504 7月 10 01:26 patch-5.2

The Linux Kernel HOWTO5. カーネルへのパッチあてを読み、更にLinuxのバージョンを確認する方法を読みました。今後トラブったらこの辺を参考にします

まとめ

今回patchとinc.patchの違いを調べました。patchは5.1.0から5.1.16の差分、inc.patchは5.1.15から5.1.16の差分でした。やってみると色々わかるもんですね

ABOUT ME
ペイヴメント
ペイヴメントのエンジニア塾(当ブログ)では20年以上の経験から得られたプログラミング系ノウハウについてベテランにも満足して頂けるような内容の濃いコンテンツを初心者にも分かりやすい形で日々発信しています。【経歴】ベンチャーのソフトハウスで4年勤務後、精密機器メーカーのソフト開発部門に勤務し今に至ります。
error: Content is protected !!