前回の続き
「CentOS カーネルパッチ適用の仕方(1/2)」
今回適用するパッチの修正は既にLinuxツリーのgitにマージされており、
commit ID:ddea368c78ff9acf45261a7c82635b98e9c1fcd6
修正ソース:drivers/net/bonding/bond_main.c
と分かっている時の例です。
###1. パッチを作成する
Linuxカーネルのgitレポジトリをローカルマシンにcloneにします。
# git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
clone後、commit IDから今回のパッチ内容が正しいか確認します。
git show [commit ID]で、修正前後の内容が見れます。
# cd linux
# git show ddea368c78ff9acf45261a7c82635b98e9c1fcd6
問題なければ、パッチを作成します。
パッチファイル名は自動生成されますので、必要に応じてリネームしてください。
# git format-patch -1 ddea368c78ff9acf45261a7c82635b98e9c1fcd6
###2. パッチを適用する
作成したパッチを使って、パッチ適用とビルドを一緒に実施します。
作成したパッチは /root/rpmbuild/SOURCES
配下に置きます。
今回のバッチをRPMのSPECファイルに追加します。
# cd /root/rpmbuild/SPECS
vi kernel.spec
(略)
Patch needed for building this packages
Patch999998: 0001.patch ★追加
empty final patch to facilitate testing of kernerl patches
Patch999999: linux-kernel-test.patch
(略)
ApplyOptionalPatch debrand-rh-i686-cpu.patch
ApplyOptionalPatch 0001.path ★追加
もう一度ビルドをしてみる。
cd /root/rpmbuild/SPECS
rpmbuild -bb kernel.spec 2>&1 │ tee build.log
2>&1 │ tee build.log を付けることでビルドログが出るため、
パッチが適用されているか、ログで確認をする。
ビルド完了後、`/root/rpmbuild/RPMS/RPMS/に作られたrpmをインストールして、reboot。
これでカーネルパッチの適用は完了。
cd /root/rpmbuild/RPMS/x86̠ 64
rpm -ivh xxx.rpm