LilyVM: ユーザレベル OS のための軽量 VM 榮樂 英樹 (筑波大学第三学群情報学類) 新城 靖 (筑波大学/JST CREST) 加藤 和彦 (筑波大学/JST CREST) 従来のユーザレベル OS の実現方法は、基本的には、ホスト OS を 新たなアーキテクチャ (ハードウェア環境) としてとらえ、そのアー キテクチャに移植することである。たとえば、User-mode Linux で は、i386、alpha などのアーキテクチャに並ぶ形で um (user mode) というアーキテクチャが追加されている。この移植作業は、 実際の新しいアーキテクチャへの移植と同様にそれほど容易なこと ではない。 容易にユーザレベル OS を実現する方法として、軽量 VM を用いる 方法を提案し、LilyVM という名前の軽量 VM を実現している。軽 量 VM とは、部分的なハードウェアのエミュレーションを行う仮想 計算機である。その特徴は、OS のコードの大部分を実 CPU で直接 実行し、特権命令や一部の非特権命令の実行や割込みをソフトウェ アによりエミュレートしていることである。 実際に、Linux および NetBSD 上で、以下の OS が動作している。 - NetBSD 1.6 - FreeBSD 4.10 - Linux 2.4 この時、元の OS に対する修正は、アドレス定数などごく単純なも のであった。 ユーザレベル OS から、ネットワークに接続したいという要望があ る。そこで、LilyVM のネットワーク機能を新たに開発した。その 特徴は、ホスト OS の機能を利用して高度な機能を付加している点 にある。たとえば、ホスト OS 上の SSL ライブラリを利用するこ とで、ユーザレベル OS 上で動作する HTTP サーバを、SSL 対応に することができる。また、このような機能を特権利用者の権限を用 いずに実現している。 デモでは、Linux をホスト OS として、LilyVM を使って NetBSD, FreeBSD, Linux を起動する。また、ネットワーク機能を使って、 仮想計算機上で X11 のアプリケーションを実行し、インターネッ トとの通信も行う。 LilyVM のソースプログラム、ユーザレベル OS のディスクイメー ジ、カーネルのパッチとバイナリは、以下の URL から入手可能で ある。 URL: http://lilyvm.sourceforge.net 参考文献: [1] Eiraku, H. and Shinjo, Y.: Running BSD Kernels as User Processes by Partial Emulation and Rewriting of Machine Instructions, USENIX BSDCon 2003 Conference (BSDCon '03), pp.91-102 (September 2003). [2] 榮樂 英樹, 新城 靖, 加藤 和彦: ユーザレベル OS のため のユーザレベルネットワーク機能, 第 3 回情報科学技術フォーラ ム (FIT2004), B-028, pp.161-162 (2004).