「カーネルへのパッチ適用」の編集履歴(バックアップ)一覧に戻る

カーネルへのパッチ適用 - (2011/01/03 (月) 04:40:24) のソース

現在利用しているカーネルをバージョンアップする場合、
カーネルソース全体を入手する方法と、差分データ(パッチ)だけを
入手して既存のカーネルソースに適用する方法があります。
パッチファイルは容量も小さいので、カーネルソース全体を入手するよりも
ダウンロードしやすいなどの利点があります。
パッチファイルはpatchコマンドを使って適用します。

 # patch オプション < パッチファイル
 # patch オプション パッチファイル

オプション

 -d ディレクトリ
指定したディレクトリに移動してから処理を行う

 -p
パッチファイル内に書かれたパス名を修正する
・ -p0 ~ パス名を修正しない
・ -p1 ~ 最初の「/」まで削除
・ -p2 ~ 次のディレクトリまで削除する

 -C
どういう処理が行われるかテストする

 -R
パッチの適用を取り消して元に戻す


下の例では、パッチファイルpatch-2.4.10を適用します。
 # patch -p1 < patch-2.4.10

パッチファイルは通常、圧縮された形で配布されているため、
回答と同時に適用するには次のようにします。
 # bzip2 -dc patch-2.4.10.bz2 | patch -p1

パッチファイル内に記述されているパスと実際のパスが異なる場合は、
-pオプションを適切に指定しなければなりません。
例えば、パッチファイルを/usr/src/patch-2.4.10.gzとして配置し、
カレントディレクトリが/usr/src/linuxである場合は次のようになります。

 # gzip -dc ../patch-2.4.10.gz | patch -p1

これはパッチファイル内でファイルのパスが
「a/arch/i386/kernel/acpi/boot.c」のように
なっているからです。
-p1オプションを指定すると「a/」の部分が取り除かれ
パス名が適切になります。
目安箱バナー