Red HatがLinuxカーネルにライブパッチするツールとしてkpatchを公開したのでそれはどうやってhot patchを作るのかを調べてみる。 kpatchのソースコードはgithubに置かれている。 kpatchはパッチの作成を行うモジュール群、パッチを当てるモジュール、両者を行うためのkpatchというbashスクリプトの3種類で構成されているけど、そのうちkpatchコマンドはラッパーみたいなものなので特に気にしない。kpatchの場合、patchを当てるモジュールはカーネルモジュール(kpatch.ko)、パッチの形式もカーネルモジュール(kpatch-$PATCHNAME.ko)となっている。 あ、hot patch作成の流れではソースコードレベルのpatchと、バイナリパッチの2種類があるので前者はpatch、後者はhot patchと呼ぶことにする。 基本的な流れは以下