Bochs & QEMU2006年03月30日 09時37分16秒

Bochs は 1998 年からある古参の i386 エミュレータ。開発開始当初からチョコチョコ使っていた。minix を動かしてみたりとか。こちらは、i386 を完全にエミュレート。CPU 等をすべて、仮想化し全ての命令コードはこの C++ のプログラム中で評価される。それを元に ix86 CPU class のメモリの配置を変えることにより、実際のハードウェアで起こることを模倣している。

qemu はそれに比べて新しい。こちらは、命令を他の分割された命令に割り当て実行する。Very Long Instruction Word 型で Transmeta の Crusoe などに近い。

FreeBSD を Current にしようと思ってはみたが、やはり普段使っているものは安定指向なので、気が進まない。いや、そんなことは無いと言う御方もいるかも知れないが、いつも安全第一の作業は欠かさないのである。ファイルの重複バックアップから、機材の替えまで。ソフトウェアは新しい、古いにかかわらず、必ず元に戻せるようにしてから、まず独立したテスト環境を作って試した後にのみ、標準環境に入れるのである。

石橋を叩いて渡るなどという愚かなことはしないのである。間違って、石橋を叩き壊してはいけないのだから。並行した完全な複製の石橋を作り、叩いて試した後にしっかり渡れた場合のみに元の石橋を渡るのだから。

今回はまず、freesbie で make iso をし、ブート可能なイメージファイルを作る。bochs は bochsrc.txt を編集する。qeum はオプションで渡せば可。login がでてくるまでの大まかな時間を計ってみた。login がでたら、エミュレーションを切るのである。まあ、切るのに数秒ぐらいの誤差が入るが、ここでは気にしない。また、FreeBSD のブートが始まる前の 10 秒のプロンプトは、触らなかったので time にそのまま 10 秒追加された。


# time bochs -q
169.931u 2.527s 2:56.18 97.8%   1160+56013k 31+1io 1pf+0w

# time qemu -hda /usr/obj/FreeSBIE.img
60.218u 6.083s 1:11.35 92.9%    828+206973k 74+0io 0pf+0w

実際の時間としてみると bochs が 160 秒ぐらい、qemu が 50 秒ぐらいといったところか。qemu の方が三倍ぐらい早いことになる。ここまで、性能に差があるとは思わなかった。

今使っている安定環境は壊したくはないが、current にも興味がある。これからゆっくり、current を追いかけるための環境を整えていきたいと思う。qemu はその基盤として使う予定である。