カーネルパッチ

パッチファイルの作成:
パッチファイルは diff コマンドによって出力されたソース・ツリーの差分です。
カーネルパッチを作成するには、変更を加えたカーネルソース "kernel-dir.new" と オリジナルのカーネルソース "kernel-dir.org"を用意し、diff コマンドに よる差分を パッチファイルとして出力します。
※変更を加えたカーネルソースはオブジェクト・ファイルを含まないように気をつけましょう

# diff -urN kernel-dir.org kernel-dir.new > kernel-new.patch

オプション説明:
u: unified 出力フォーマット
r: サブディレクトリも比較
N: ファイル存在差分も比較

パッチファイルの圧縮:
パッチファイルのサイズが大きい場合は圧縮する必要があるかもしれません。
通常は bzip2 コマンドを使用して bz2 形式で圧縮します。

# bzip2 -k kernel-new.patch
(同ディレクトリ内に kernel-new.patch.bz2 が作成される)

オプション説明:
k: 元のファイルを残す(必要なければ指定しなくてよい)

パッチファイルの解凍:
bz2 形式で圧縮されたパッチファイルは bunzip2 コマンドで解凍します。

# bunzip2 -k kernel-new.patch.bz2
(同ディレクトリ内に kernel-new.patch が作成される
 ※既に存在していると失敗するので注意)

オプション説明:
k: 元のファイルを残す(必要なければ指定しなくてよい)

パッチファイルの適用:
カーネルソースのルートディレクトリ(linux-xxxの中)で patch コマンドを 実行してパッチを適用します。

# patch -p1 < kernel-new.patch

オプション説明:
p1: パス名の除去カウント
(カレントディレクトリ以下を対象とするように指定してる)


home