特定のバージョンのカーネルソースを比較

CentOSの特定のバージョンのカーネルソースを比較したときのメモ

RPMディレクトリ作成

eval echo "%_topdir ~/rpm" > ~/.rpmmacros
mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

SRPMをダウンロード

wget http://ftp.iij.ad.jp/pub/linux/centos/5.6/updates/SRPMS/kernel-2.6.18-238.12.1.el5.src.rpm
wget http://vault.centos.org/5.5/updates/SRPMS/kernel-2.6.18-194.11.1.el5.src.rpm

※URLは適当に探してくる

SRPMのインストール

rpm -ivh kernel-2.6.18-194.11.1.el5.src.rpm

RPMを %prep 段階まで作成(ソースの展開からパッチまで)

rpmbuild -bp --target x86_64 ~/rpm/SPECS/kernel-2.6.spec

出来上がったカーネルソースをリネームしておく

mv ~/rpm/BUILD/kernel-2.6.18/ ~/rpm/BUILD/kernel-2.6.18-194.11.1.el5/

別バージョンのカーネルソースも同じ様に作成

rpm -ivh kernel-2.6.18-238.12.1.el5.src.rpm
rpmbuild -bp --target x86_64 ~/rpm/SPECS/kernel-2.6.spec
mv ~/rpm/BUILD/kernel-2.6.18/ ~/rpm/BUILD/kernel-2.6.18-238.12.1.el5/

比較してみる

(cd ~/rpm/BUILD/ && diff -rq \
 kernel-2.6.18-194.11.1.el5/linux-2.6.18.x86_64/ \
 kernel-2.6.18-238.12.1.el5/linux-2.6.18.x86_64/ )

(cd ~/rpm/BUILD/ && diff -u \
 kernel-2.6.18-194.11.1.el5/linux-2.6.18.x86_64/xxx/yyy/zzz.c \
 kernel-2.6.18-238.12.1.el5/linux-2.6.18.x86_64/xxx/yyy/zzz.c )