kexec
提供: miniwiki
kexecは現在起動中のカーネル上で新しいカーネルのライブブートを可能にする、Linuxカーネルのメカニズムである。"kexec" という名前はkernel executionの略称と、UNIX/Linuxカーネル呼び出しのexecに由来する。kexecは実質的に、システムファームウェア(BIOSやUEFI)が実行するブートローダのステップとハードウェアの初期化フェイズをスキップし、メインメモリに直接新しいカーネルをロードしてすぐにその実行を開始する。これにより完全なブートと関連する長時間処理を避けられるためダウンタイムを最小化することができ、システムの高可用性を満たせるようになる[1][2]。
kexecのようなメカニズムを実装することはできるが、その場合に以下の2つの大きな問題が発生する:
- 古いカーネルはまだ実行中であっても、新しいカーネルは現在起動中のカーネルのメモリを上書きしてしまう。
- システムファームウェアはシステム再起動後にハードウェアデバイス全てを「正常な」状態にリセットする。このため、一般的に新しいカーネルはシステム再起動後にハードウェアデバイス全てが望ましい定義状態となることを期待している。実際の再起動をバイパスしてデバイス状態が不明のままとなってしまった場合、新しいカーネルはデバイス状態を復旧する必要がある。
kexecにより署名されたカーネルのみkexecでブートできるのカーネルは
kexecでブート可能なカーネルを、署名されたカーネルのみとする機能のサポートは、2014年10月5日にリリースされたLinuxカーネルメインラインのバージョン3.17にマージされた[3]。これにより、ルートユーザーがkexecで任意のコードのロードや実行を行うことが不可能となった。これは、UEFIセキュアブートと、署名されたLinuxカーネルモジュールのみが起動中カーネルへ挿入可能であることを保障するカーネル内セキュリティメカニズムを補完する[4][5][6]。
関連項目
- kdump (Linux) – 内部的にkexecを用いるLinuxカーネルのクラッシュダンプメカニズム
- kGraft – SUSEが開発したLinuxカーネルのライブパッチ適用技術
- kpatch – レッドハットが開発したLinuxカーネルのライブパッチ適用技術
- Ksplice – 後にオラクルに買収されたKsplice社が開発したLinuxカーネルのライブパッチ適用技術
脚注
- ↑ Hariprasad Nellitheertha (5 4, 2004). “Reboot Linux faster using kexec”. IBM. 1 21, 2013時点のオリジナルよりアーカイブ。. 12 5, 2013閲覧.
- ↑ David Pendell (8 16, 2008). “Reboot like a racecar with kexec”. linux.com. . 12 5, 2013閲覧.
- ↑ “Linux kernel 3.17, Section 1.10. Signed kexec kernels”. kernelnewbies.org (10 5, 2014). . 11 3, 2014閲覧.
- ↑ Jake Edge (6 25, 2014). “Reworking kexec for signatures”. LWN.net. . 8 9, 2014閲覧.
- ↑ Matthew Garrett (12 3, 2013). “Subverting security with kexec”. dreamwidth.org. . 12 5, 2013閲覧.
- ↑ Kees Cook (12 10, 2013). “Live patching the kernel”. outflux.net. . 12 12, 2013閲覧.
外部リンク