パスワードを忘れた? アカウント作成
5490 story

x86エミュレータ・QEMU 23

ストーリー by yourCat
何に使おうか 部門より

benjamin 曰く、 "QEMUという、x86版Linuxで動くプロセスを他のアーキテクチャのLinuxで走らせるエミュレータが出てきました。PowerPCとS390で使える上に、i386でも動きます (x86 Linuxをi386上でエミュレート)。これ自体がGPLなライブラリ (libqmeu) になっていて他のソフトウェアプロジェクトでも使えるという点が面白いです。リファレンス文書が用意されているので、アレゲな試用レポートをお待ちしております。"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Binary Emulation (スコア:2, 参考になる)

    by Anonymous Coward on 2003年04月13日 11時32分 (#297730)
    商用ですが、似たことをするものが存在しているようです。 [zdnet.co.jp]
    FX!32というAlphaでx86のコードを動かすものの資料です。 [compaq.com]

    Web上に資料が見当たらなかったのですが、(これのP.104参照 [ascii.co.jp])
    x86 DarwinでPPC Darwinのバイナリを動かそうという試みもありましたね。
    • FX!32は実行していくうちにx86バイナリがAlphaネイティブに変換されていくという
      驚異のバイナリエミュレータだったような。

      あと、こうやってリアルタイムコード変換後のデータを、
      HDDに書きこまずにメモリ上にキャッシュとしてのみ保持するのが
      Transmetaのコードモーフィング技術ではなかったかな。

      なんだかんだ言ってもx86のコード資産は膨大ですから、
      その有効活用を図るソフトのメリットはかなり大きいですね。
      エミュレータとしてはVMWAREが定番みたいですが、
      フリーのbochs/plex86やosaskなんかにも期待しています。
      親コメント
      • VMwareはバイナリの変換まではしません。CPUの例外処理、付随するHWの処理だけで、実処理は親環境に渡しています。(だから単なる演算だけならそんなには遅くならない)
        あと、コードモーフィングはHDDに書き込まない技術じゃなくて現行のCMSが書き込まない実装だっただけです。
        --
        # rm -rf ./.
        親コメント
        • by Anonymous Coward
          実際、HDDに書き込むCMSの実装ももうすぐ出てきますしね。
          # ASTROの方が気になるけど・・・
      • by shudo (7398) on 2003年04月13日 15時35分 (#297803) ホームページ
        | FX!32は実行していくうちにx86バイナリがAlphaネイティブに変換されていくという
        | 驚異のバイナリエミュレータだったような。

        すごいですよね。
        個人的には、FPU の仕様の違いをどうカバーしてるのかが、ずっと気になってます。

        こういった実行時 (on demand な) バイナリ変換は、ゲーム機のエミュレータもやってるようです。
        MIPS (Playstation) -> x86 とか。

        あと、Java の JITコンパイラもやってるわけです。
        Java バイトコードはもともと変換を意識して設計してあるので、変換元としては x86 のコードよりはずいぶん易しいのですが。

        IEEE CSの会誌 2000年 3月号に Binary Translation の特集があって、IBMワトソンの DAISY の記事に感銘を受けた覚えがあります。

            2000年 3月号
            http://www.computer.org/computer/co2000/r3toc.htm

            DAISY
            http://www.research.ibm.com/daisy/

        PowerPC などからある種の VLIW プロセッサへの実行時変換器です。
        親コメント
        • Re:Binary Emulation (スコア:1, 参考になる)

          by Anonymous Coward on 2003年04月13日 17時14分 (#297819)
          FPU の仕様の違いは「気にしない」という、ある意味で現実的な
          実装だった筈です。>FX!32

          #297730 のリンク先のレポートには、

          >Very few applications rely on the full precision
          >provided by the x86 floating-point unit's (FPU's) 80-bit
          >registers.

          とか載ってて…それが問題になる場合は「本物」を使えという事
          なんでしょうね。
          親コメント
    • Re:Binary Emulation (スコア:1, 参考になる)

      by Anonymous Coward on 2003年04月13日 16時21分 (#297811)
      >Web上に資料が見当たらなかったのですが

      ココ [asahi-net.or.jp]ですね。
      親コメント
  • 逆に (スコア:2, すばらしい洞察)

    by pantora (11989) on 2003年04月13日 11時43分 (#297734)
    ia32でしか動かないワームやexpliotとかでも
    PPCやs390アーキテクチャで動いてしまう訳ね。

    ちと考え過ぎ?
    --
    PCにECC Registeredメモリの利用を推奨します。
    • by Anonymous Coward
      そういうワームはGPL違反で告訴してください。
      • by tanimachi (4564) on 2003年04月13日 13時13分 (#297763) 日記
        それをGPLで告訴できるってことは、このエミュレータで動かせるソフトはGPL限定ということなんですが。

        まさか、そんなことはないよなぁ。それでは使えないにも程がある。
        # ジョークにマジレス
        親コメント
        • "The QEMU virtual x86 CPU core library is released under the GNU Lesser General Public License."
          とあるので、このライブラリを使って独自のエミュレータや86コードをそのまま載せた"移植アプリ"などを作る場合はソースを開示する必要はないのではないかと。

          また、
          "The Linux x86 QEMU emulator is released under the GNU General Public License."
          とは書いてありますが、いくらエミュレータがGPLでもそこで動かすソフトまでGPLが必要ってことではありますまい。エミュレータを改編する場合はソースを開示する必要があるわけで。
          …って、詳しくは分からないのでいまいち確証は持てませんが。

          親コメント
      • by Anonymous Coward
        ソース付きのワームはだめ?
        もしくは、サーバーを勝手に立ててソースを公開するワームとか。
        • by Anonymous Coward

          ソース付きのワームはだめ?
          もしくは、サーバーを勝手に立ててソースを公開するワームとか。

           Linux も GPL なソース付きワームだったりして。
           身の回りでも知らない間に 21/23 番ポートが開いているマシンが増えているし。
  • by rug (55) on 2003年04月13日 14時06分 (#297778) 日記
    他にはSoftx86 [sourceforge.net]とかOstridge [sourceforge.net]なんてものもありますね。plex86 [sourceforge.net]はweb pageにlightweight VM strategyとか書かれていて、なんか大きく変わったみたいですが、よくわかっていないです。(滝汗
  • としては当然ながら、SwingSet2 を動かそうとしてみましたが、エラーが出て普通のプロセスとして立ち上がってしまいました。残念です。

    $ /usr/local/qemu-i386/bin/qemu-i386 -L / /usr/local/java/bin/java -jar /usr/local/java/demo/jfc/SwingSet2/SwingSet2.jar
    qemu: Unsupported syscall: 191
    qemu: Unsupported syscall: 149
    • 191番は getrlimit(2) で、149番は sysctl(2) みたい。
      (arch/i386/kernel/entry.S より)
      すぐに追加実装できそう。

      Linux / x86 エミュ for Linux / 他のプロセッサ ってことは、
          x86 エミュレータ + システムコールの中継器
      だけで済みそうだから、エミュレータとしてはかなり単純な部類かと。なるほど。

      x86 プロセッサのエミュレータが主眼で、実証のために Linux のシステムコールをホストOSに中継する仕掛けを作った?
      親コメント
  • Wine [winehq.org]が最大の活用法かもしれませぬ。
    (エンドユーザーにとって)x86の最大のコード資産を形成してるのはWindows上のソフトウェア群でしょうし、例えばMacOS XのようなほかのUNIXyなOSに移植されればもっと活用の幅が広がるでしょうな。

    # またLZEXEの人か…
  • by gy0 (3393) on 2003年04月13日 15時30分 (#297802) 日記
    おもいっきりQEMUのサイトにも書いてありますが、
    やっぱりWineが動いてくれると有りがたいでしょうね。

    あとはコーデックとか。でもライセンス関係でやばかったりするのかもしれないですけど。

    #試しもせずろくに調べもせずに書き散らして無責任の極みである、が。
    --
    gy0
  • これらのボード上に乗っかってる拡張BIOSを実行しないと、レジスタが初期化/イネーブルにならないボードがあって、非x86環境で使うに使えなくて困ってしまったことが…
    いや、そのハードの全仕様を公開してもらえれば話は早いんですが、NDAだなんだといろいろあって結局仕様を入手できず、「もうこうなったらx86エミュレータを作って拡張BIOS実行するしか!」とか言って、ホントに作る寸前まで行ったことがあったっけな(汗)

    ただ、PC/AT用の拡張ボードの場合は、それらの拡張BIOS内で、PC/ATのBIOSやらワークエリアやら、他のI/Oとかも少なからずアクセスするでしょうから、“x86エミュレータ”だけでは足りず、“PC/AT互換機エミュレータ”が必要になるでしょうが…

  • by Anonymous Coward on 2003年04月13日 19時17分 (#297859)
    libqmeu

    なるほど、Big EndianとLittle Endianが混在している。
    • by deleted user (3598) on 2003年04月13日 22時57分 (#297940)
      ご指摘ありがとうございます。>AC様
      “libqemu”が正しいです。タイプミス&チェック不充分でした。すみません。
      --
      =^..^=
      Enjoy Computing, Skiing, as much as Horse Racing.
      親コメント
typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...