訳註: これは作業してる最中のもので、本来、訳作業者以外は見えぬべきものです。 訳作業者以外は見ないでください。意味が反対になったりとか当然にあるから、 内容は利用しないでください。この言語への変換作業(翻訳作業)物に関しては、現在、オープンなライセンス条件ではありません。 十進240のコードのキャラクターを<240>に置換してる場合あり
Chapter10.Linux emulation

Table of Contents

10.1. Emulation setup
10.1.1. Configuring the kernel
10.1.2. Installing the Linux libraries
10.1.3. Installing Acrobat Reader
10.2. Directory structure
10.3. Emulating /proc
10.4. Using Linux browser plugins
10.5. Further reading

NetBSD の i386, alpha, mac68k, macppc, および他多くの port では大変な数の native Linux プログラムを Linux エミュレーション層[layer:レイヤー:層]を用いて実行できます。 一般的に、エミュレーションというもののイメージを思い浮かべると、なんか遅くて 役立たずなものです。それは、しばしば、エミュレーションは ハードウェアー instructions や architectures (大抵、古い機械ゆえに)さえ をソフトウェアーで再生しなければならないからです。 Linux エミュレーションの場合は根本的に異なり: それは、薄いソフトウェア層だけで、システムコールのほとんどは2つのシステムで 既に非常に似通ったもので。 アプリケーションコードそれ自体は あなたの CPU でフルスピードで処理されるので、 Linux エミュレーションでのパフォーマンスの低下はなく、感覚は 実に native NetBSD アプリケーションのものと同じです。

この章では、 Linux エミュレーションの設定法を説明し、一例としては : 有名な Acrobat Reader version 7 プログラムのインストールです。

10.1.Emulation setup

Linux エミュレーションのインストールは compat_linux(8) man page に記述されていて; パッケージシステムを使って2つのステップ が必要なだけです。

  1. カーネルの設定

  2. Linux ライブラリーのインストール

  3. Acrobat Reader のような Linux アプリケーションのインストール

10.1.1.Configuring the kernel

GENERIC カーネルを使っているなら、 Linux 互換性は既に有効なので、何もする必要がありません。

カスタムなカーネルを使っているなら、次のオプションが有効化されているかチェック してください:

option COMPAT_LINUX
option EXEC_ELF32

か、 64-bit ELF バイナリーを使うなら 次のオプションで:

option COMPAT_LINUX
option EXEC_ELF64

あらかじめオプション付のカーネルをコンパイルすると、 必要なソフトウェアのインストールを start できます。

10.1.2.Installing the Linux libraries

通例、アプリケーションは共有ライブラリーに対してリンクされていて、 Linux アプリケーションには、 Linux 共有ライブラリーが必要です。 あんまり古くなければ、どの Linux ディストリビューションからでも 共有ライブラリーを入手できますが、 しかし提案する方法は パッケージシステムを使って、ライブラリーを自動的にインストールすることです (これは SUSE ライブラリーを使います) 。 ライブラリーのインストール時、次のことが起こり:

  • Linux プログラムが使う secondary root directory が作られます。 このディレクトリーは /emul/linux です。 エミュレーションモードの Linux プログラムはこのディレクトリーを ルートディレクトリーとして用い、そこのファイルを使います。 要求されたファイルが見つからなければ、 / をルートディレクトリーとして検索します。

    例えば、 Linux アプリケーションが /etc/ld.so.conf をオープンするなら、 最初に /emul/linux/etc/ld.so.conf を探し、なければ /etc/ld.so.conf を探します。

  • Linux 向けの共有ライブラリーがインストールされます。 ほとんどのアプリケーションがダイナミックリンクし、 システム上に必要なライブラリーが見つかることを期待します。 例えば、 Acrobat Reader では、 /usr/pkgsrc/print/acroread7 に行って、 make depends コマンドを 与えると、 pkgsrc は Acrobat Reader に依存する全てを取得しインストールします。

両操作は、ユーザーによる手作業の介入なしに パッケージシステムによって自動的に取り扱われます。 (想像するに、今ごろはもう、 既にあなたはパッケージシステムが好きになり始めて ...). 註として、この節では Linux ライブラリーの手動インストールを記述します。

ライブラリーをインストールするには、 RPM フォーマットを取り扱うプログラムがインストールされていなければならず: それは rpm で、 SUSE ライブラリーの展開に使います。 rpm を構築およびインストールするため、 /usr/pkgsrc/misc/rpm/ ディレクトリーで make および make install を Execute。

次に suse100_base パッケージのインストールが必要です。 SUSE RPM ファイルはパッケージシステムでダウンロードでき、あるいは SUSE CD を持っていれば、それらを /usr/pkgsrc/distfiles/suse100 ディレクトリーにコピーできて、 /usr/pkgsrc/emulators/suse100_base ディレクリーに行った後、 make および make install run 。

同じ方法で、suse100_compat および suse100_x11 をインストール。 最終設定は:

# pkg_info -a | grep suse
suse_base-10.0nb3   Linux compatibility package
suse_compat-10.0nb1 Linux compatibility package with old shared libraries
suse_x11-10.0nb2    Linux compatibility package for X11 binaries
      

10.1.3.Installing Acrobat Reader

Acrobat Reader プログラム (や、 他の Linux プログラム) のインストールの準備が全部整いました。 /usr/pkgsrc/print/acroread7 へと変更し、 いつものコマンドを与えます。

# make
# make install

Acrobat Reader をダウンロードしインストールするには、 make の後 given された simply follow the instructions ように???、 Acrobat Reader license を accept するために、 ACCEPTABLE_LICENSES+=adobe-acrobat-license という行を /etc/mk.conf に加える必要があります。

10.2.Directory structure

Linux ライブラリーおよびプログラムのインストール作業の成果を調査すると、 /emul/linux/usr/pkg/emul/linux を指し示すシンボリックリンクだとわかり、そこに次のディレクトリーが作られています:

bin/
dev/
etc/
lib/
opt/
proc/
root/
sbin/
usr/
var/

どうか、常に /usr/pkg/emul/linux でなくて、 /emul/linux を参照してください。 後者は、実装細部であって、将来変更されるかもしれません。

Linux エミュレーションソフトウェアの為にどれだけの space が要求されますか? ひとつのシステムでは、次の figure でした:

# cd /usr/pkg/emul
# du -k /emul/linux/
...
127804  /emul/linux/

Acrobat Reader、 プログラム、は、 通常パッケージバイナリーのディレクトリーにインストールされ: /usr/pkg/bin 、 いかなる他のプログラム同様 run できます:

$ acroread netbsd.pdf 

10.3.Emulating /proc

いくつかの Linux プログラムは Linux-like /proc ファイルシステムに rely on しています。 NetBSD procfs ファイルシステムは Linux-specific の pseudo-files を含む /proc ファイルシステムをエミュレートできます。 これを成し遂げるには、 linux-オプションを付けて procfs をマウントすることができ:

# mount_procfs -o linux procfs /emul/linux/proc

この例では Linux-like proc ファイルシステムは /emul/linux/proc ディレクトリーにマウントされます。 NetBSD の起動 process 中、自動的に NetBSD にマウントさせることもでき /etc/fstab に次の行を加えることで:

procfs /emul/linux/proc procfs ro,linux

10.4.Using Linux browser plugins

Mozilla-based ブラウザーの Linux プラグイン は nspluginwrapper、 native ブラウザーと foreign プラグインの間の翻訳をするラッパー を通して、 native NetBSD Firefox 構築に使うことができます。 当座は、 nspluginwrapper は GTK2+ に対してリンクした Mozilla-based ブラウザーにだけ確実に動作します (GTK1+ は非対応)。 nspluginwrapper は pkgsrc を通してインストールでき:

# cd /usr/pkgsrc/www/nspluginwrapper
# make install
    

プラグインは 2つのステップでインストールでき: 最初に、プラグインが (例 pkgsrc を通して) システムにインストールされていなければならなくて。 その後、プラグインは nspluginwrapper で プラグインを利用したいユーザーによって登録されていなければなりません。

この簡単な例では Macromedia Flash プラグインのインストールを have a look ます。 We can fullfill Flash プラグインのインストールの最初のステップは pkgsrc を通して:

# cd /usr/pkgsrc/multimedia/ns-flash
# make install
    

その後特権のないユーザーは Flash プラグインを register[登録] でき:

$ nspluginwrapper -i /usr/pkg/lib/netscape/plugins/libflashplayer.so
    

プラグインは正しく登録されているはずです。 nspluginwrapper-l オプションを使うことで (nspluginwrapper -l)これをチェックできます。プラグインがリストに出てるなら、 Firefox を restart し location bar に about:plugins を入力することでプラグインがインストールされたか確認できます。

10.5.Further reading

以下の記事は Linux (および他の) エミュレーションの更なる理解について、たぶん興味を持たせます:

Bibliography

Implementing Linux emulation on NetBSD . Peter Seebach. May 2004.

Irix binary compatibility, part 1 . Emmanuel Dreyfus. Aug 2002.

Irix binary compatibility, part 2 . Emmanuel Dreyfus. Aug 2002.

Irix binary compatibility, part 3 . Emmanuel Dreyfus. Sep 2002.

Irix binary compatibility, part 4 . Emmanuel Dreyfus. Oct 2002.

Irix binary compatibility, part 5 . Emmanuel Dreyfus. Dec 2002.

Irix binary compatibility, part 6 . Emmanuel Dreyfus. Apr 2003.