Kexec

kexecは現在起動中のカーネル上で新しいカーネルのライブブートを可能にする、Linuxカーネルのメカニズムである。"kexec" という名前はkernel executionの略称と、UNIX/Linuxカーネル呼び出しのexecに由来する。kexecは実質的に、システムファームウェア（BIOSやUEFI）が実行するブートローダのステップとハードウェアの初期化フェイズをスキップし、メインメモリに直接新しいカーネルをロードしてすぐにその実行を開始する。これにより完全なブートと関連する長時間処理を避けられるためを最小化することができ、システムの高可用性を満たせるようになる。

kexecのようなメカニズムを実装することはできるが、その場合に以下の2つの大きな問題が発生する:

 古いカーネルはまだ実行中であっても、新しいカーネルは現在起動中のカーネルのメモリを上書きしてしまう。
 システムファームウェアはシステム再起動後にハードウェアデバイス全てを「正常な」状態にリセットする。このため、一般的に新しいカーネルはシステム再起動後にハードウェアデバイス全てが望ましい定義状態となることを期待している。実際の再起動をバイパスしてデバイス状態が不明のままとなってしまった場合、新しいカーネルはデバイス状態を復旧する必要がある。

kexecでブート可能なカーネルを、署名されたカーネルのみとする機能のサポートは、2014年10月5日にリリースされたLinuxカーネルメインラインのバージョン3.17にマージされた。これにより、ルートユーザーがkexecで任意のコードのロードや実行を行うことが不可能となった。これは、UEFIセキュアブートと、署名されたLinuxカーネルモジュールのみが起動中カーネルへ挿入可能であることを保障するカーネル内セキュリティメカニズムを補完する。

 関連項目 
  内部的にkexecを用いるLinuxカーネルのクラッシュダンプメカニズム
  SUSEが開発したLinuxカーネルのライブパッチ適用技術
  レッドハットが開発したLinuxカーネルのライブパッチ適用技術
  後にオラクルに買収されたKsplice社が開発したLinuxカーネルのライブパッチ適用技術

 脚注 

 外部リンク 
  Using kexec and kdump to get core files on Fedora and CentOS hosts 

Category:Linux
Category:オペレーティングシステムの仕組み