42.4. カーネルのライブパッチ適用のプロセス
kpatch
カーネルパッチソリューションは、livepatch
カーネルサブシステムを使用して、古い関数を更新された関数にリダイレクトします。システムにライブカーネルパッチを適用すると、次のプロセスがトリガーされます。
-
カーネルパッチモジュールは、
/var/lib/kpatch/
ディレクトリーにコピーされ、次回の起動時にsystemd
を介して、カーネルへの再適用として登録されます。 -
kpatch
モジュールは実行中のカーネルにロードされ、新しい関数は新しいコードのメモリー内のロケーションへのポインターとともにftrace
メカニズムに登録されます。
カーネルがパッチを適用した関数にアクセスすると、ftrace
メカニズムによって関数がリダイレクトされ、元の関数がバイパスされてカーネルが関数のパッチを適用したバージョンに誘導されます。
図42.1 カーネルライブパッチの仕組み