ACRN ハイパーバイザの紹介
ACRN ハイパーバイザは、ベアメタルハードウェア上で直接動作する Type 1 ハイパーバイザである。 User VM を管理して I/O エミュレーションを行うために、Service VM と呼ばれる特権的な 管理 VM を持つ。
ACRN ユーザ空間は Service VM 内で動作するアプリケーションで、コマンドライン設定に基づいて User VM 用のデバイスをエミュレートする。ACRN ハイパーバイザサービスモジュール(HSM)は Service VM 内のカーネルモジュールで、ACRN ユーザ空間にハイパーバイザサービスを提供する。
以下にアーキテクチャを示す。
Service VM User VM
+----------------------------+ | +------------------+
| +--------------+ | | | |
| |ACRN userspace| | | | |
| +--------------+ | | | |
|-----------------ioctl------| | | | ...
|kernel space +----------+ | | | |
| | HSM | | | | Drivers |
| +----------+ | | | |
+--------------------|-------+ | +------------------+
+---------------------hypercall----------------------------------------+
| ACRN Hypervisor |
+----------------------------------------------------------------------+
| Hardware |
+----------------------------------------------------------------------+
ACRN ユーザ空間は、User VM 用のメモリを確保し、User VM が使うデバイスを設定して初期化し、 仮想ブートローダをロードし、仮想 CPU の状態を初期化し、User VM からの I/O リクエストの アクセスを処理する。ACRN ユーザ空間は ioctl を使って HSM と通信する。HSM はハイパーコールを 介して ACRN ハイパーバイザとやり取りし、ハイパーバイザサービスを実装する。HSM はユーザ空間に キャラクタデバイスインタフェース(/dev/acrn_hsm)を公開する。
ACRN ハイパーバイザは誰からのコントリビューションも受け付けている。ソースリポジトリは https://github.com/projectacrn/acrn-hypervisor にある。