kexecは、
Linuxカーネルが提供するメカニズムの一つで、現在稼働中の
カーネル上で、新しい
カーネルを直接起動することを可能にします。これは、従来のシステム再起動プロセスを大幅に短縮し、システムのダウンタイムを最小限に抑えることができます。
通常、システムを再起動する際には、まずシステム
ファームウェア(BIOSやUEFI)が起動し、
ハードウェアの初期化が行われた後、
ブートローダーが
カーネルをロードします。しかし、kexecはこのシステム
ファームウェアと
ブートローダーのステップをスキップし、新しい
カーネルを直接メインメモリにロードして実行を開始します。このため、従来の
ブートプロセスに伴う時間のかかる処理を回避し、迅速なシステム切り替えを実現できます。
しかし、kexecの実装にはいくつかの課題があります。まず、新しい
カーネルは、古い
カーネルがまだ実行中であるにもかかわらず、そのメモリ領域を上書きしてしまう可能性があります。また、システム
ファームウェアは通常、再起動時に
ハードウェアデバイスを「正常な」状態にリセットしますが、kexecではこのリセットがスキップされるため、デバイスの状態が不明瞭なままとなります。このため、新しい
カーネルは、デバイスの状態を正しく復旧させる必要があります。
さらに、セキュリティの観点からも注意が必要です。kexecを使用すると、ルートユーザーが任意のコードを
カーネルとしてロード・実行できるため、悪意のあるコードが実行されるリスクがありました。しかし、
Linuxカーネルのバージョン3.17以降では、署名された
カーネルのみがkexecで起動可能となり、このセキュリティ上の懸念が解消されました。この機能は、UEFIセキュア
ブートや、署名された
カーネルモジュールのみが
カーネルに挿入可能となるセキュリティメカニズムを補完します。
kexecは、システムの高可用性を実現するために非常に重要なメカニズムであり、システムのダウンタイムを短縮するための重要なツールです。
関連技術として、以下のようなものがあります。
kdump (
Linux): kexecを内部的に利用した
Linuxカーネルのクラッシュダンプメカニズムです。
kGraft:
SUSEが開発した
Linuxカーネルのライブパッチ適用技術です。
kpatch:
レッドハットが開発した
Linuxカーネルのライブパッチ適用技術です。
Ksplice: オラクルに買収されたKsplice社が開発した
Linuxカーネルのライブパッチ適用技術です。
これらの技術は、
カーネルを再起動することなく、セキュリティパッチやバグ修正を適用することを可能にし、システムの可用性をさらに高めることができます。
参考資料として、以下の外部リンクを参照してください。
*
Using kexec and kdump to get core files on Fedora and CentOS hosts(例:具体的なURL)