Asterinasプロジェクトは、2026年10月13日に発表した0.19.0で、Asterinas NixOS環境内で自身のカーネルをビルドし、その新しいカーネルをネストしたQEMUで起動したと説明した。これは、OS上で同じOSを再構築するための開発ツールが動作した成果である。

依存関係と開発環境を構成するNix、RustのビルドツールであるCargoとコンパイラrustc、仮想マシンを実行するQEMUが、この手順に使われる。10月15日に確認したAsterinas Bookは、この手順がまだ実験的だと明記している。検証対象はx86-64のみで、ネストVMで確認した範囲も新しいカーネルの起動成功までである。

ビルド時のメモリを圧迫するファイルキャッシュ

このビルド経路を試すには、リソースに余裕が必要である。Asterinas Bookは、x86-64 Linuxホストと約50 GiBの空きディスク容量を要求している。ホストには、VMをハードウェアアクセラレーションで実行するLinuxの機能であるKVMが必要となる。その上で実行する外側のAsterinas VMには、40 GiBのメモリと4個の仮想CPUを割り当てる。

文書は、カーネルビルド終了時のメモリ使用量が約31 GiBに達すると報告している。原因として、メモリが不足してもファイルキャッシュをまだ回収できない点を挙げている。ファイルを再び読む際に再利用するため保持したデータが、ビルドに必要なメモリ領域を圧迫する。文書にある32 GiB、仮想CPU 8個の構成では、ビルド終盤にメモリが不足することもあった。

二つの構成ではメモリ量とCPU数がともに異なるため、メモリ量だけを変えた比較ではない。約31 GiBという使用量も、コンパイラ自体に必要なメモリだけとは解釈しにくい。セルフビルドの成功とは別に、メモリが逼迫した環境ではキャッシュ回収機能の欠如が、ビルドの実行可能性を左右する制約とみられる。

VMXサポートと/dev/kvmの間の隔たり

このバージョンのIntel VMXサポートは、CPUのハードウェア仮想化機能を使ってゲストを実行するための基盤である。プロジェクトは、ゲストCPUの状態管理、ゲストのメモリアドレスをホストの物理メモリへ対応させるEPT、ゲストからホストへ制御権を返すVM-exit経路などを実装したと説明している。

特権命令を扱う低水準の機能はOSTDフレームワークが、上位の実行ポリシーはカーネルが担う構造である。ただし、この基盤と、QEMUのようなツールが利用するKVM互換の/dev/kvmインターフェースは、実装上の別の段階に当たる。

Asterinas Bookは、AsterinasがまだKVMを提供していないため、ネストVMをQEMUのソフトウェアエミュレーションで実行すると明記している。外側のLinuxホストがKVMでAsterinasを実行することと、Asterinasが内側のVMにハードウェアアクセラレーションを提供することは、別々のサポートである。

2026年8月5日に承認されたハイパーバイザRFCには、KVM互換インターフェースの設計が含まれている。設計が承認されただけでは、そのインターフェースがこのバージョンに実装されたとはいえない。

ネストVMで確認できたのは起動まで

ネストしたQEMUは、Asterinas内で必要な待ち受けソケットを開けないため、ネットワークと画面出力を無効にした状態で動作する。ネストVMは起動成功メッセージを出力して終了するが、文書によれば、それを実行したmake run_kernelコマンドはまだ戻らない。

Asterinas内のNixビルドも、管理者権限を持つrootで実行される。必要な隔離機能をサポートしていないため、ビルドを別の環境に閉じ込めるサンドボックスは使わない。

この結果は、Asterinas上で相当数の開発ツールが動作する根拠になる。一方、一般的なネスト環境での開発セッションや、隔離されたマルチユーザーのビルドまで検証した結果ではない。リソース条件を満たせるなら、セルフビルド経路を検討する出発点にはなる。

所要時間も考慮する必要がある。文書は、インストールに約30分、初回ビルドにはホスト性能に応じて1時間超かかると案内している。

開発シェルの準備後に行うネスト起動の確認

以下のコマンドは、Asterinas Bookのインストールとビルドの全手順を完了していることが前提となる。40 GiBのメモリを割り当てた外側VM内で開発シェルを準備し、カーネルをビルドした後、次のコマンドでネスト起動を確認する。

make run_kernel \
  ENABLE_KVM=0 \
  NETDEV=none \
  QEMU_DISPLAY=none \
  MEM=2G \
  AUTO_TEST=boot

ENABLE_KVM=0はハードウェアアクセラレーションを無効にし、NETDEV=noneとQEMU_DISPLAY=noneはネットワークと画面出力を無効にする。MEM=2Gは内側VMのメモリ設定で、AUTO_TEST=bootは起動試験を選ぶ。

文書が示す成功メッセージは"Successfully booted."である。このメッセージの後にネストVMが終了しても、外側のmakeコマンドは戻らないという制限も併せて確認する必要がある。

次の注目点は、ファイルキャッシュの回収によってセルフビルドのメモリ負荷が減るか、そしてVMXによる基盤機能の上にKVM互換インターフェースが実装されるかだ。前者は開発作業のリソース制約を、後者は既存の仮想化ツールと連携できる範囲を変える。

Asterinas 0.19.0のセルフビルドと起動の成功は開発環境の進展だが、メモリ回収とKVM互換ホスト対応は残された課題である。