NetBSD の i386 ポートでは、 Linux エミュレーションレイヤーを用いて、 非常にたくさんの Linux ネイティブプログラムを実行できます。 一般的に、エミュレーションというと、遅くて、役立たずのように思うかもしれませんが それは、しばしば、ハードウエアインストラクション(命令セット)や アーキテクチャー(たいてい古い機械のものを)をソフトウエアで 再構成しなければならないからです。 Linux エミュレーションの場合は 根本的に異なり: それは、わずかなソフトウエアーレイヤーだけで、 システムコールのほとんどは、2つのシステムで非常に似通ったものです。 アプリケーションコード自体は、 CPU にフルスピードで処理されるので、 Linux エミュレーションによるパフォーマンスの劣化がなく、 普通の NetBSD アプリケーションの感覚で 動きます。
この章では、 Linux エミュレーションの 設定法を Acrobat Reader version 4 プログラムのインストールを例に説明します。
Linux エミュレーションのインストールは compat_linux(8) マニュアルページに説明されていて; パッケージシステムを使って、 二つのステップが必要なだけです。
カーネルの設定。
Linux ライブラリーのインストール。
GENERIC カーネルを使っている場合は Linux 互換性が すでに有効になっているので、これをする必要はありません。
カスタマイズしたカーネルを使う場合は、 次のオプションが有効になっていることを確認してください:
option COMPAT_LINUX option EXEC_ELF32
このオプションをつけてカーネルをコンパイルしていれば、 必要なソフトウエアのインストールを始められます。
Linux ライブラリーは、どの Linux ディストリビューションからも 持って来ることができ、あまり古る過ぎないもので、推奨する方法は、 パッケージシステムによるライブラリーの自動インストールを することです ( Suse のライブラリーが使われます)。 ライブラリーのインストールには、次のことが行われます:
Linux プログラムが使う 第2ルートディレクトリー が作られました。 この ディレクトリーは /emul/linux/ です。 エミュレーションモードの Linux プログラムは、このディレクトリーを ルートディレクトリーとして使います。
Linux の共有ライブラリーがインストールされました。 たいていのアプリケーションはダイナミックリンクを使い システム上に重要なライブラリーが見つかることを想定しています。 例えば Acrobat Reader では、 /usr/pkgsrc/print/acroread に行って、 make depends コマンドを実行すると、 次のメッセージが出ます:
===> acroread-4.0 requires Linux glibc2 libraries - see compat_linux(8).
これらの操作はユーザーによる手作業の必要なしに パッケージシステムにより 自動的に handle されます。 (パッケージシステムが好きになったでしょ?)
ライブラリーのインストールには、 プログラムのハンドルは RPM フォーマットでインストールされている必要があり: Suse ライブラリーから持ってきた rpm-2.5.4 です 。
次に suse_base パッケージを インストールする必要があります。 Suse RPM ファイルは、パッケージシステムによってダウンロードでき、 あるいは Suse CD を持っているなら、それを /usr/pkgsrc/distfiles/suse ディレクトリーにコピーして: make および make install を実行します。
同様に suse_compat 、 suse_libc5 および suse_x11 をインストールします。 そうすると、こうなります:
# pkg_info -a | grep suse suse_base-6.1p1 Linux compatibility package suse_x11-6.1p1 Linux compatibility package for X11 binaries suse_compat-6.1p1 Linux compatibility package with old shared libraries suse_libc5-6.1p1 Linux compatibility package for libc5 binaries
これで、 Acrobat Reader プログラム (や、他の Linux プログラム) のインストールの準備ができました。 /usr/pkgsrc/print/acroread ディレクトリに行って 実行します。
make make install
Acrobat Reader インストールスクリプトはライセンスを承諾するか尋ねてきます。 完了したら、 プログラムを実行することができます。
ライブラリーおよびプログラムのインストール結果を 調べると、 /emul/linux は /usr/pkg/emul/linux を指すシンボリックリンクだということがわかり、 そこに、次のディレクトリーが作られています:
bin/ boot/ cdrom/ dev/ etc/ floppy/ home/ lib/ mnt/ opt/ proc/ root/ sbin/ usr/
註: いつも /emul/linuxを参照するようにして、 /usr/pkg/emul/linux は見ないでください。 後者は細かい実装項目で、 将来変更するかもしれません。
Linux エミュレーションにどのくらいのディスク容量が必要ですか? 私のシステムでは次の値です:
# cd /usr/pkg/emul # du -k linux ... 60525 linux/
Acrobat Reader プログラムは パッケージのバイナリー用の通常のディレクトリ: /usr/pkg/bin/ にインストールされます。