7.5. カーネルライブパッチの仕組み
kpatch
カーネルパッチソリューションは、livepatch
カーネルサブシステムを使用して、古い機能の出力先を新しい機能に変更します。ライブカーネルパッチがシステムに適用されると、以下が発生します。
-
カーネルパッチモジュールは、
/var/lib/kpatch/
ディレクトリーにコピーされ、次回の起動時にsystemd
を介して、カーネルへの再適用として登録されます。 -
実行中のカーネルに kpatch モジュールがロードされ、新しいコードのメモリー内の場所を指定するポインターを使用して、新しい機能が
ftrace
メカニズムに登録されます。 -
パッチが当てられた機能にカーネルがアクセスすると、
ftrace
メカニズムにリダイレクトされます。これにより、元々の機能は回避され、パッチを当てたバージョンの機能にカーネルをリダイレクトします。
図7.1 カーネルライブパッチの仕組み