close
コンテンツにスキップ

kexec

出典: フリー百科事典『ウィキペディア(Wikipedia)』

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

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

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

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

関連項目

[編集]

脚注

[編集]
  1. Hariprasad Nellitheertha (2004年5月4日). Reboot Linux faster using kexec”. IBM. 2013年1月21日時点のオリジナルよりアーカイブ。2013年12月5日閲覧。
  2. Hariprasad Nellitheertha (2004年5月4日). Kexecを使ってLinuxの起動を早める”. IBM. 2018年9月22日閲覧。
  3. David Pendell (2008年8月16日). Reboot like a racecar with kexec”. linux.com. 2013年12月5日閲覧。
  4. Linux kernel 3.17, Section 1.10. Signed kexec kernels”. kernelnewbies.org (2014年10月5日). 2014年11月3日閲覧。
  5. Jake Edge (2014年6月25日). Reworking kexec for signatures”. LWN.net. 2014年8月9日閲覧。
  6. Matthew Garrett (2013年12月3日). Subverting security with kexec”. dreamwidth.org. 2013年12月5日閲覧。
  7. Kees Cook (2013年12月10日). Live patching the kernel”. outflux.net. 2013年12月12日閲覧。

外部リンク

[編集]