Chapter 16. Linux エミュレーション

目次
16.1. エミュレーションのセットアップ
16.2. ディレクトリー構造

NetBSD の i386 ポートでは、 Linux エミュレーションレイヤーを用いて、 非常にたくさんの Linux ネイティブプログラムを実行できます。 一般的に、エミュレーションというと、遅くて、役立たずのように思うかもしれませんが それは、しばしば、ハードウエアインストラクション(命令セット)や アーキテクチャー(たいてい古い機械のものを)をソフトウエアで 再構成しなければならないからです。 Linux エミュレーションの場合は 根本的に異なり: それは、わずかなソフトウエアーレイヤーだけで、 システムコールのほとんどは、2つのシステムで非常に似通ったものです。 アプリケーションコード自体は、 CPU にフルスピードで処理されるので、 Linux エミュレーションによるパフォーマンスの劣化がなく、 普通の NetBSD アプリケーションの感覚で 動きます。

この章では、 Linux エミュレーションの 設定法を Acrobat Reader version 4 プログラムのインストールを例に説明します。

16.1. エミュレーションのセットアップ

Linux エミュレーションのインストールは compat_linux(8) マニュアルページに説明されていて; パッケージシステムを使って、 二つのステップが必要なだけです。

  1. カーネルの設定。

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

16.1.1. カーネルの設定

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

カスタマイズしたカーネルを使う場合は、 次のオプションが有効になっていることを確認してください:

option COMPAT_LINUX
option EXEC_ELF32      

このオプションをつけてカーネルをコンパイルしていれば、 必要なソフトウエアのインストールを始められます。

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

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_compatsuse_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      

16.1.3. Acrobat Reader のインストール

これで、 Acrobat Reader プログラム (や、他の Linux プログラム) のインストールの準備ができました。 /usr/pkgsrc/print/acroread ディレクトリに行って 実行します。

make
make install      

Acrobat Reader インストールスクリプトはライセンスを承諾するか尋ねてきます。 完了したら、 プログラムを実行することができます。

16.2. ディレクトリー構造

ライブラリーおよびプログラムのインストール結果を 調べると、 /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/ にインストールされます。