Home 暗号プロセッサ OpenICF3 Japanese site English site

PNaCL QEMU
ターゲットCPU
RasPi エミュ


2016年1月24日、かなり限定的ですが音声がでるようになりました。詳しくはこちら

2015年8月7日、Raspberry Piエミュレータのページを作成しました詳しくはこちら

2015年6月6日、限定的ですが日本語キーボードでも動作するようになりました。詳しくはこちら

PNaCL QEMU

PNaCL QEMUとは

QEMUをPNaClでコンパイルしてChromeに移植したものです。 かなり制限事項があります。 サンドボックスなので非常に安全です。

CPUをエミュレーションして実行しているので非常に性能は低いです。Windows95の初期のゲームで グラフィック処理が激しくないものが、やっとできるくらいかと思います。
QEMUがインタプリタモードで動作しているため本来の性能が出ていません。 しかしサンドボックスなので気軽に使えることが最大の特長となります。OSは各自が用意する 必要があります。OSのCDからクリーンインストールすることも可能です。(WindowsNT4はNG) しかしX11のGUIを使うOSは、ほとんどNGです。TinyCoreLinuxはOKでした。
MicrosoftのVirtualPCのvhd形式に対応しているので、そのまま利用できます。 その場合はビデオドライバ(Cirrus GD-5446)を追加インストールする必要があります。 VirtualPCの追加パッケージはアンインストールしておく必要もあります。

必要条件

Google Chrome 43以上が必要です。ChromeOS、 Windows/Mac/Linuxでも動作するかもしれませんが保証外。 CPUがARMのパソコンでも動作する仕様ですが、ARMは動作検証していません。PowerPCのMacでは動作しません。
ChromeOSについては、こちらをご参照ください。

最低 CPU Pentium4 2GHz メモリ 1GB以上必要(性能の問題で動作しない場合あり)
推奨 CPU デュアルコア 2.6GHz メモリ 1GB以上必要

注意点

「neo.undead.spaceでは、大容量のデータをローカルコンピュータに永続 的に保存することを要求しています。」という質問をChromeブラウザがします。OKをしてください。

この設定を戻すには、次の手順でできます。
(1) アドレスバーに chrome://settings/cookies を入力
(2) このサイトのURLを探します。( neo.undead.space )
(3) 見つけたら右上の×のマークをクリックして削除します。

使い方

オリジナルのQEMUのqemu-system-xxxと同じです。ほとんどのオプション機能をdisableにしてコンパイルしているので使えないオプションもあります。このページの左側の欄にあるターゲットCPUをクリックしてqemu-system-xxxのオプションを選択します。「オプション生成」ボタンをクリックします。 OSなどの入ったファイルをDrag&DropでChromeブラウザに転送します。 複数ファイルを一度に転送することはできないので、1つずつ転送します。
転送が終わったらqemu-system-xxxのオプションを確認して「HOST OS 32bit」か「HOST OS 64bit」のボタンをクリックしてqemu-systemm-xxxを実行します。どちらのボタンを押すかはホストOSによって決まります。 CPUが64bitでもOSが32bitなら「HOST OS 32bit」をクリックしてください。 ホストOSが64bitで32bitのChromeを使っている場合も「HOST OS 64bit」です。
ここで転送したファイルは「Delete /qemu」ボタンで消去しない限りは残ります。つまりパソコンの電源を落としても 次回からは転送せずにqemu-system-xxxを起動できます。OSの環境設定をしたら「download」でファイルをバックアップをしておいたほうがいいです。

便利な方法の説明がTipsにあるので、そちらを参照してみてください。

PNaCL QEMUのライセンス

GPLv2です。
修正したソース QEMU
使用しているライブラリ glib , zlib , sdl , gettext , pixman
ライブラリはnaclportsのものを使っています。

PNaCL QEMUソースコードのダウンロード

Chromeアプリ

ChromeアプリとしてChrome Webストアにあります。
PNaCL QEMU

Raspberry Piのエミュレータ

専用のページを作りました。ここ

ターゲットCPU armのページにも説明があるので参照してみてください。

なぜPNaClに移植できたか?

オリジナルQEMUは、シグナルあるいはスレッド中断を使って実現している部分があります。 PNaCLは、どちらの機能もないため、独自に修正しています。 オリジナルのQEMUのVer2.2.1をベースにしています。 シグナルで処理している部分をatomicなcompare_exchange(compare_and_swap)などの命令で、 うまく実現できていると思います。ソースコードを変更した部分は__pnacl__で検索すると見つかります。 この方法はオリジナルQEMUのソースコードがatomicな命令で動作することを意識していなければ、 うまくいかないこともあります。Ver2.2.1では、うまくいったということです。 多忙のため最新のQEMUで、どうなっているのか知りませんが、 サンドボックス環境のOSへ移植するには便利?かも???(ベストな方法なのか、わからないが)

注) QEMUの仮想CPUを2個以上のケースでは、まだ動作の確認ができていない


免責事項

このPNaCL QEMUを利用したことによって損害を被った場合でも一切、責任を負いません。