kexec

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]

関連項目

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

脚注

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

外部リンク

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.