libkrun
KVM(Linux)またはHypervisor.framework(macOS/ARM64)を通じて、プロセスをmicroVM単位で隔離するための動的ライブラリ。ホストプロセスのメモリ空間に最小限のVMM(Virtual Machine Monitor)を組み込み、C APIとして公開することで、microVM相当の強いセキュリティ境界をコンテナ並みの軽さで得ることを狙う。 #virtualization #rust #container
設計
- 実装は主にRustで、C APIを公開。ホストアプリケーションはこのAPIを呼ぶだけで軽量microVMを作成・管理できる
- 外部ハイパーバイザーに依存しない自己完結型のVMM
- エミュレートするデバイスはvirtio系のみに絞り込み、起動の速さとメモリフットプリントの小ささを実現
- Firecracker・rust-vmm・Cloud Hypervisorのコードを取り込んで構築されている
- AMD SEV/SEV-ES/SEV-SNP対応版、Intel TDX対応版も別途提供されており、機密コンピューティング(Confidential Computing)用途も見据えている
エコシステム
- crunの
krunハンドラ — crunがコンテナ・機密ワークロードを仮想化ベースで隔離する際のバックエンドとして使う - krunkit — macOS上でGPU対応の軽量VMを実行
- muvm — GPUアクセラレーション付きmicroVMの起動
- Microsandbox — AIエージェント向けサンドボックスとして採用、平均100ms未満の起動を謳う
現状
mainブランチはlibkrun 2.0系で、1.x系とAPI/ABIの後方互換性はない。2.0のAPIはまだ開発中。セキュリティ連絡先がlibkrun-security@redhat.comであることから、Red Hat関連のプロジェクトと見られる。
コンテナ向け軽量VM技術の中での位置づけ
Firecracker・Cloud Hypervisor・crosvmと並ぶVMM実装の一つ。他のVMMが「別プロセスとして起動しコンテナランタイムから呼び出される」のに対し、libkrunはライブラリとしてホストプロセスに直接組み込まれる点が異なる。
出典
- GitHub - libkrun/libkrun
- libkrun/README.md at main · libkrun/libkrun
- containers/libkrun | DeepWiki
- crun/krun.1.md at main · containers/crun