let's start pre-virtualization

記事を書いた日
2008/06/06
更新した日
2008/12/06

Pre-virtualizationを使ってみます。

ということで、まずは紹介です
探してみると日本語の資料が少ないですね。
こんなエントリを書いてしまったらまずいような気がしますが、やはり僕も日本語の資料がほしいので書きます。
気をつけていますがもしかしたら間違ったことを書いてしまっている可能性があるので、嘘を嘘と見抜けない方は読まないほうがいいかもしれません。
では始めましょう。

Pre-virtualizationとは

http://l4ka.org/projects/virtualization/afterburn/
こちらのページで行われているプロジェクトです。
このプロジェクトはl4プロジェクトの一部として開発が進められているらしいです。
しばらく更新が止まっていましたが、2008年からまた更新が始まっています。
それに伴い、若干の修正が加えられています。

Download

ダウンロードします。ダウンロードは↓のページで行います。
http://l4ka.org/projects/virtualization/afterburn/download.php

英語が堪能な方は適当にGetting Startのページを流し読みして勝手に始めてください。
そうじゃなくても「おまえの下手な解説なんか誰が読むかボケ」っていう人も勝手に始めてください。
とにかく日本語の資料が少なくて困っていますという方はまず英語を読む努力をしましょう。
最近Marcurialを用いて管理を始めたようです。以前は単純なダウンロードページしかありませんでした。
Mercurialを使ってみたいという方はこちらをどうぞ。

解凍

解凍します。zipで落としてきた場合はunzipコマンドで解凍できます。tar.bz2とかの場合はtarでどうぞ。
unzip afterburner.zip

準備とか

以下は解凍したディレクトリ内で行います。別のディレクトリで行ってもできますが、面倒くさいので省きます。makeのことを分かってる人は適当にほげほげしてください。
cd afterburner
で、makeします。
make -f ./Makefile
make menuconfig
使うカーネルとかXenとかマイクロカーネルとかいろいろ設定します。
ここの情報についてはそのうち書くかもしれません。
最後に
make installs
これでいけます。必要なファイルとかがダウンロードされてインストールされるはずです。

いけますと書きましたが、僕はうまくいきませんでした。

うまくいかない人は↓のエラーとかを読んで下さい。
各ファイルがインストールされるディレクトリは、makeを実行したディレクトリ内に作られるディレクトリです。

エラーとか

エラーとか1

なんかコンパイル中にエラーが出てとまったりします。
そういうときはコンフィグを見直してみたりします。
あとはgccのバージョンを代えてみたりするとか。

ちなみに出るエラーはこれ
Building dietlibc in /home/yoshi/src/afterburner-26664bde9fef/extern/dietlibc-0.30
make[1]: *** No targets specified and no makefile found.  Stop.
make: *** [/home/yoshi/src/afterburner-26664bde9fef/extern/dietlibc-0.30/bin-i386/dietlibc.a] Error 2

エラーとか2

なんかいろいろいじって試してみたところ、ちょっとすすんだんだけどまたエラーで止まった。次はこれ
*** This configuration is not supported in the following subdirectories:
     target-libf2c target-libffi target-boehm-gc target-zlib target-libjava zlib fastjar target-libobjc
    (Any other directories should still work fine.)
/home/yoshi/src/afterburner/usr/bin/ld: unrecognized option '--hash-style=both'
/home/yoshi/src/afterburner/usr/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status
*** The command 'gcc -o conftest -g -O2   conftest.c' failed.
*** You must set the environment variable CC to a working compiler.
make: *** [receipts/install-gcc-3.4.4] Error 1

ここで出たエラーの原因がわからなかったので、config.logを見てみましたら、
glibc-2.4
が無いとのこと。apt-cache searchしてみるもののglibc-2.3.6しかない。
<http://www.google.co.jp/search?hl=ja&q=debian+glibc+2.4&btnG=%E6%A4%9C%E7%B4%A2&lr=>によれば、debian etchではglibc-2.4は入らないらしいです。
解決策としては、source.lstにsid,lennyを加えるとか、ubuntuで入ってるglibc-2.4を持ってくるとか、自分でコンパイルして入れるとか。
僕は/etc/apt/source.lstを以下のように書き換えました。
deb http://ftp.jp.debian.org/debian/ etch main contrib non-free
deb http://ftp.jp.debian.org/debian/ sid main contrib non-free
deb http://ftp.jp.debian.org/debian/ lenny main contrib non-free
sid,lennyを加えることでglibc-2.7がaptitudeで入りますが、不安定版の要素が混じるので自己責任でお願いします。

ともあれ、これでとりあえず解決できました。

エラーとか?

gcc-4.1だとコンパイルできなかったりしました。
解決するためには、makeのときにgcc-3.4を使いました。
やりかたは省略します。[gcc 切り替え]とかでぐぐるといいと思います。

asm-parser

この研究は仮想計算機の高速化が目標になっています。アセンブリ言語レベルでの命令書き換えが特徴の一つです。
afterburner/asm-parser/でANTLRを使用してアセンブリ言語の書き換え器を作成しています。

READMEにはトップディレクトリで
make menuconfig
make world
で大丈夫と書いてありますが、僕は結局うまくいかなかったので僕がやったやり方を載せておきます。

アセンブリレベルでの書き換え機のことをafterburnerと呼んでいます。[ANTLR>http://www.antlr2.org/]を使っています。
java antlr.Tool 
make
でバイナリが作成されます。が、実効してみたところこんなエラーが出てきました。
antlr-config がありません
Makefileを見てみたところ、コンパイルフラグの設定にantlr-configというコマンドを用いているみたいです。afterburner/usr/bin/にあったんですけど、なんでエラー吐くんでしょうね。よくわかんないです。
たぶんこれを/usr/binとかにコピーすればうまくいくんでしょうね。

で、READMEとかINSTALLとかを眺めていたらティンときたのでANTLR-2.7.7をダウンロードしてインストールすることにしました。
http://www.antlr2.org/download.html
ここからsource distributionをダウンロードします。

ここからは[こちら>http://www35.atwiki.jp/yoshinabu/pages/54.html]の2.7.7の項目を読んでください。

で、antlr-2.7.7のインストールが終わったら、
java antlr.Tool Asm.g
make
とやってみてください。

実行

maek run-qemu
で実行できるみたいです。
最終更新:2008年12月06日 20:08
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。