kernel乗換え用patchの作り方
「kernel乗換え用patch」を作成するシェルスクリプトを公開。同じ階層に存在する**-dev**の無いフォルダをオリジナルソースツリーとして、配下に含まれる全ソースファイルの差分を出力する。
カスタマイズソースディレクトリの~/linux-2.6.16.26-dev/をカレントにしてスクリプトを起動する事が前提。環境変数COMPAIR_FILESにソースツリーに含まれるKconfig,Makefile,.c,.hファイルだけを全てリストアップするfindコマンドの使い方がミソ。sortを通しているのは各版数のpatchを比較しやすくする為の小技だ。
#!/bin/sh
#
# current is customized kernel source directory
# ex) ~/linux-2.6.16.26-dev/
# original kernel source directory
# ex) ~/linux-2.6.16.26/
#
DIR_DEV=`pwd`
DIR_DEV=`basename $DIR_DEV`
DIR_ORG=`echo $DIR_DEV | sed 's/**-dev**$//'`
cd ..
**COMPAIR_FILES**=`find $DIR_ORG **-name Kconfig** -or **-name Makefile** -or **-name *.[ch]** | sort`
for fname in $COMPAIR_FILES;
do
targetfile=`echo $fname | sed s/$DIR_ORG/$DIR_DEV/`
diff -bc $fname $targetfile;
done
注意点としては、オリジナルソースツリーに存在しない新規のファイルやシンボリックリンクは対象外なので、手作業で対応すること。あとkernel版数に依存しないので、版数が変ってもそのまま使用可能。
patchを作成する場合は
$ mkpatch.sh > linux-2.6.16.26-dev.patch
patchを適用する場合は
$ patch **-p1** < linux-2.6.16.26-dev.patch
となる。