次のページ 前のページ 目次へ

16. EM86:Linux/Alpha 上で Linux/x86 アプリを動かす方法

Jim Paradis のおかげで、Linux/x86 のバイナリを Alpha 上で動かすことが できるようになりました。 em86 エミュレータは、Digital が Windows NT 用に 開発した FX!32 エミュレータとバイナリ・トランスレータ をベースにしています (残念ながら、バイナリ・トランスレータは Linux では利用できません)。

このエミュレータは現在のところベータ版としての位置づけですが、 Netscape や Applix などのアプリケーションがちゃんと動きます。いまのところ、 UDB では em86 を動かすには遅すぎるでしょう(もちろん忍耐力にもよります)。 でも、300MHz の 21164 であれば、十分に速く動作します(スピードの遅さに 我慢ができなくて、かつ Digital Unix のライセンスを持っているのであれば、 次章をご覧ください)。
将来のバージョンでは、現在のようにエミュレータで利用するために x86 のライブラリをロードするのではなく、シェアードライブラリのコールを Alpha のライブラリに直接変換する機能が付け加えられるでしょう。これにより、 スピードが速くなるだけでなく、余分なディスクスペースが不要になります。

詳細は em86 の ftp ディレクトリをご覧ください。README には、em86 を インストールするために必要な全ての情報が書かれています。2.0.30 の カーネル用に、 alpha-patches ディレクトリに em86 のためのパッチがあります。

16.1 README から 2 点引用

em86 で動かすことができるアプリケーションです。

アプリケーションでの注意点

      EM86 はいろんな状況下で xtetris などの小さなプログラムによってテ
      ストされてきました。さらに、安定度はまちまちですが、主要な 3 つ
      のパッケージが、EM86 で動作することが確認されています。

      ________________________________________________________________
      アプリケーション______注意点____________________________________
      Netscape Navigator    インストール方法に書かれている通りに
      Gold 3.01             Netscape Navigator Gold をインストールしま
                            す。
                            _____________ 警告 _______________

                            どんな場合でも、Java や JavaScript を有効
                            にしないでください。もし有効にすると、ブラ
                            ウザがクラッシュするでしょう。これは
                            Linux/x86 でも起きる問題なのですが、状況は
                            全く改善していません。私たちも現在この問題
                            を調査中です。
                            __________________________________

                            コマンドラインから ping は通っているのに、
                            Netscape がインターネットのホストを見つけ
                            られない場合、 /etc/nsswitch.conf というフ
                            ァイルを作成してください。

      Adobe Acrobat Reader  インストール方法に書かれているとおりにイン
      3.0                   ストールしてください。カーネルに
                            em86-patch が当たっていれば、アプリケーシ
                            ョンが普通に動作します。そうでなければ、
                            次のスクリプトのなかで EM86 から acroread
                            を呼び出すように修正します。

                            /usr/local/Acrobat3/bin/acroread

      Applixware 4.2        Applixware は rpm を使ってインストールを
                            行うので、アーキテクチャ・チェックを無視
                            するようにします(rpm はデフォルトでは異
                            なるアーキテクチャのバイナリはインストー
                            ルできないようになっています)。方法は、
                            CD からインストール・スクリプトをハードデ
                            ィスクなどにコピーし、そのスクリプトの
                            rpm コマンドに "-ignorearch" を加えます。
                            Applixware には他のバイナリを呼び出すもの
                            もあるので、必ずカーネルに em86-patch
                            を当ててください。また、Applixware はスタ
                            ックを非常に多く使うため、カーネルに
                            traparg パッチも当てなければなりません。

em86 でできないことです。

制限
      EM86 での制限事項は以下の通りです。
      o   EM86 は、ユーザモードのプログラムだけをエミュレートします。
      o   EM86 は、仮想メモリ・アドレス 78000000 を越えるプログラムは
          動作しません。
      o   EM86 は現在、以下のシステムコールはサポートしません(将来も
          サポートされないでしょう):setup、break、ptrace、stty、
          gtty、prof、acct、phys、lock、mpx、ulimit、profil、ioperm、
          iopl、idle、mx86、modify-Ldt、create_module、init_module、
          delete_module、get_kernel_syms、bdflush、afs_syscall、
          sysctl
      o   EM86 0.9.1 は以下のシステムコールはサポートしませんが、いず
          れサポートされる予定です:mount、umount、uselib
          old_readdir、sysinfo、ipc sigreturn、clone、adjtimex、
          quotactl、sysfs、flock、msync、mlock、munlock、mlockall、
          munlockall、sched_setparam、sched_getparam
          sched_setscheduler、sched_getscheduler、sched_yield、
          sched_get_priority_max、sched_get_priority_min、
          sched_rr_get_interval、nanosleep、mremap

Alpha が Intel の CPU のように振る舞って、CPU サイクルを独占されるのを 避けたい場合は、次章で説明する他のアプリケーション動作方法をご覧ください。


次のページ 前のページ 目次へ