doc/ja/handbook/linuxemu/chapter.sgml
1999-04-08 15:46:01 +00:00

923 lines
33 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.11
$Id: chapter.sgml,v 1.1.1.1 1999-04-08 15:45:57 kuriyama Exp $
-->
<chapter id="linuxemu">
<title>Linux エミュレーション</title>
<para><emphasis>原作: &a.handy; and &a.rich;</emphasis></para>
<para><emphasis>訳: &a.jp.kiroh;.<!-- <br> -->
24 September 1996.</emphasis></para>
<sect1>
<title>Linux エミュレータのインストール</title>
<para>FreeBSD での Linux エミュレーションは, 大部分の Linux
バイナリ(a.out および ELF
フォーマット)を実行できる状態になっています. 2.1-STABLE ブラン
チでのエミュレーションでは, Linux DOOM や Mathematica
が実行できます. &rel.current;-RELEASE でのエミュレーションは,
さらに強化されており, Linux 用 の Quake, Abuse, IDL, netrek
など, 多数のソフトウェアが実行できます.</para>
<para>Linux
オペレーティングシステムには, 特有の機能がいくつかあり, FreeBSD
でサポートされていないものもあります. Linux の
<filename>/proc</filename> ファイルシステム を使ったバイナリは,
FreeBSD では実行できません (FreeBSD で使用可能な
<filename>/proc</filename>
ファイルシステムとは仕様が異なっているためです).
また仮想8086モー ドを有効にするなど, i386
に特有なシステムコールを使っている場合も実行 できません.</para>
<para>Linux エミュレーションの設定方法は, 使用している FreeBSD
のバージョン によって多少異なっています.</para>
<sect2>
<title>2.1-STABLE への Linux エミュレーションのインストール</title>
<para>2.1-STABLE の <filename>GENERIC</filename> カーネルは,
Linux との互換性を保つように構築 されていません.
カーネルの再構築が必要です. 再構築をおこなうには, 2つの方
法があります. 1つは,
エミュレータをカーネル自体にスタティックリンクす る方法.
もう1つは, 動的に Linux
ローダブルカーネルモジュール(LKM)をロー
ドするようにする方法です.</para>
<para>エミュレータを有効にするには,
以下をコンフィグレーションファイル
(<filename>/sys/i386/conf/LINT</filename> など)
に追加します.</para>
<programlisting>
options COMPAT_LINUX</programlisting>
<para>Linux DOOM などのアプリケーションを実行したい場合は,
共有メモリも有効 にしておかなければなりません.
以下を追加します.</para>
<programlisting>
options SYSVSHM</programlisting>
<para>Linux のシステムコールを使用するには, 4.3BSD
のシステムコールとの互換 性が保たれていることが必要です.
以下の行が含まれていることを確認してく ださい.</para>
<programlisting>
options "COMPAT_43"</programlisting>
<para>LKM
を使用せずエミュレータをカーネルにスタティックにリンクしたい場合は, 以下の行を追加します.</para>
<programlisting>
options LINUX</programlisting>
<para><link linkend="kernelconfig"> FreeBSD
カーネルのコンフィグレーション </link> の節の記述に
したがって config と,
新しいカーネルのインストールをおこなってください.</para>
<para>LKM を使用する場合は,
ローダブルモジュールをインストールしなければなり ません.
カーネルとローダブルモジュールのバージョンが異なると, カーネル
がクラッシュする場合がありますので, 安全を期すためには,
カーネルをイン ストールするごとに, LKM
も再インストールしてください.</para>
<screen>&prompt.root; <userinput>cd /usr/src/lkm/linux</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
<para>カーネルと LKM のインストールが終了したら, root で `linux'
コマンドを 実行することで LKM をロードできます.</para>
<screen>&prompt.root; <userinput>linux</userinput>
Linux emulator installed
Module loaded as ID 0
&prompt.root; </screen>
<para>LKM がロードされたかどうかを確認するには,
<command>modstat</command> を実行します.</para>
<screen>&prompt.user; modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator</screen>
<para>システムブート時に, LKM をロードするようにするには,
2つの方法がありま
す. FreeBSD 2.2.1-RELEASE または 2.1-STABLE では,
<filename>/etc/sysconfig</filename> を,
<programlisting>
linux=YES</programlisting>
のように, NO を YES に変更してください.
FreeBSD 2.1-RELEASE およびそれ以
前のバージョンでは, そのような行はありませんので,
<filename>/etc/rc.local</filename> に以下
の行を追加する必要があります.</para>
<programlisting>
linux</programlisting>
</sect2>
<sect2>
<title>2.2-RELEASE への Linux エミュレーションのインストール</title>
<para><literal>options LINUX</literal> や <literal>options
COMPAT_LINUX</literal> を指定する必要 はなくなりました.
Linux エミュレーションは
LKM(&ldquo;ローダブルカーネルモジュール&rdquo;) を使用して,
リブートせず簡単にインストールできます. スタートアッ
プファイルで以下のように指定します.</para>
<orderedlist>
<listitem>
<para><filename>/etc/rc.conf</filename>
に以下の行が必要です.</para>
<programlisting>
linux_enable=YES</programlisting>
</listitem>
<listitem>
<para>これは結果的に, <filename>/etc/rc.i386</filename>
の以下の指定を有効にします.</para>
<programlisting>
# Start the Linux binary emulation if requested.
if [ "X${linux_enable}" = X"YES" ]; then echo -n '
linux'; linux &gt; /dev/null 2&gt;&amp;1
fi</programlisting>
</listitem>
</orderedlist>
<para>実行されたかどうかを確認するには, modstat
を使用します.</para>
<!-- kuriyama - command? -->
<screen>&prompt.user; modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod</screen>
<para>2.2-RELEASE とそれ以降のシステムの中には,
modstat の実行がうまくいかない
ものがあるという報告もあります.
何らかの理由で, Linux LKM がロードできな
い場合は,
<programlisting>
options LINUX</programlisting>
をカーネルの設定ファイルに指定して,
エミュレータをスタティックにリンク
してください.
<link linkend="kernelconfig">
FreeBSDカーネルのコンフィグレーション</link>
の節の記述にしたがって config と,
新しいカーネルのインストールをおこ
なってください.</para>
</sect2>
<sect2>
<title>Linux ランタイムライブラリのインストール</title>
<sect3>
<title>linux_lib port を使用してのインストール</title>
<para>多くの Linux
アプリケーションはシェアードライブラリを使用しますので,
シェアードライブラリのインストールが終了しなければ,
エミュレータのイン ストールは終わったことになりません.
手動でもインストールできますが, linux_lib port
を使用するのが簡単です.</para>
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_lib</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
<para>これで, Linux
エミュレータが動作するようになったはずです. 伝説(とメー
ルのアーカイブ <!-- smiley --> :-) によれば, Linux
エミュレーションは, ZMAGIC ライブラ リとリンクされている
Linux バイナリに対して, 最もうまく動作するようで す.
Slackware V2.0 などに使われている QMAGIC ライブラリだと,
エミュレー タが胸やけするかもしれません.
マイナーバージョンの不一致などを
報告するプログラムもありますが,
普通は 問題にならないようです.</para>
</sect3>
<sect3>
<title>手動でのライブラリのインストール</title>
<para>&ldquo;ports&rdquo;
ディストリビューションが手元にない場合は, 手動でライブラ
リをインストールする必要があります. プログラムが必要とする
Linux のシェ アードライブラリとラインタイムリンカが必要です.
また Linux ライブラリ の用の``shadow root'' ディレクトリ,
<filename>/compat/linux</filename>, を作成する必要があ
ります. FreeBSD で動作する Linux
のプログラムが使用するシェアードライ
ブラリは,まずこのファイルツリーから検索されます. 例えば,
Linux のプロ グラムが <filename>/lib/libc.so</filename>
をロードしようとした場合には, FreeBSD は, まず
<filename>/compat/linux/lib/libc.so</filename>
を開こうとします. 存在にしなかった場合には, 次に
<filename>/lib/libc.so</filename> を試します.
シェアードライブラリは, Linux の <command>ld.so</command>
が参照するライブラリではなく,
<filename>/compat/linux/lib</filename>
以下にインストールする 必要があります.</para>
<!-- kuriyama - why command? -->
<para>FreeBSD 2.2-RELEASE 以降では,
<command>/compat/linux</command>
にかかわる動作が多少異なっており,
ライブラリだけでなくすべてのファイルが, &ldquo;shadow
root&rdquo; /compat/linux
から検索されるようになっています.</para>
<para>Linux のプログラムが必要とする
シェアードライブラリを探す必要があるのは, FreeBSD
のシステムに Linux
のプログラムをインストールする最初の数回だ けでしょう.
それが過ぎれば, 十分な Linux のシェアードライブラリがシス
テムにインストールされ, 新しくインストールした Linux
のバイナリも, 余
計な作業をせずに動作させることができるようになります.</para>
</sect3>
<sect3>
<title>シェアードライブラリの追加</title>
<para><filename>linux_port</filename> をインストールした後に,
アプリケーションが必要なライブラリ
が存在しないというエラーを出したらどうしたらよいでしょうか?
Linux のバ イナリがどのシェアードライブラリを必要とし,
そしてどこで入手できるか, どのように探したらよいでしょうか?
基本的には, 以下の2種類の方法があり
ます(以下の手順にしたがう場合には,
必要なインストール作業をおこなう FreeBSD シ ステム上で root
として作業をおこなう必要があります).</para>
<para>Linux システムを使用でき,
必要なシェアードライブラリが調べられる場 合には, 単に
FreeBSD のシステムにそのライブラリをコピーするだけで す.
例えば, DOOM の Linux バイナリを ftp で持ってきたとします.
使用で きる Linux システムの上に転送して, <command>ldd
linuxxdoom</command> とやれば, 必要とす
るシェアードライブラリがチェックできます.</para>
<screen>&prompt.user; <userinput>ldd linuxxdoom</userinput>
libXt.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>最後のカラムに表示されている
すべてのファイルを持って来て,
<filename>/compat/linux</filename> の下 に置き,
最初のカラムに示されるファイル名から
シンボリックリンクを張る必 要があります. すなわち, FreeBSD
のシステムで, 以下のようなファイルが必 要となります.</para>
<!-- kuriyama - Here of English ver. should be checked. -->
<screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -&gt; libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -&gt; libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
<note>
<para>最初のカラムに表示されているファイルと,
メジャーバージョンの同じ Linux
シェアードライブラリを既にインストールしている場合は,
新たにコピーする 必要はありません.
既にあるライブラリで動作するはずです. ただ, 新しいバー
ジョンのシェアードライブラリがある場合は,
新しいものをコピーすることを お奨めします.
新しいライブラリにシンボリックリンクを変更したら, 古いラ
イブラリは削除してかまいません.
<screen>/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.27</screen>
以上のようなライブラリがインストールされており,
新しいバイナリに対する
<command>ldd</command> の出力が
以下のようになる場合を考えます.</para>
<screen>libc.so.4 (DLL Jump 4.5pl26) -&gt; libc.so.4.6.29</screen>
<para>このように最後の番号が1つか2つ古いだけならば, 普通は
<filename>/lib/libc.so.4.6.29</filename>
をコピーする必要はありません. わずかに古いライブラ リでも,
プログラムは動作するはずだからです. もちろん,
新しいライブラリ と置き換えて,
以下のようにしても構いません.</para>
<screen>/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
</note>
<note>
<para>シンボリックリンクのメカニズムは, Linux
バイナリに<emphasis>のみ</emphasis>必要
なことに注意してください. FreeBSD のランタイムリンカは,
メジャーリビジョ
ン番号の一致したライブラリを検索しますから,
ユーザが気にする必要はあり ません.</para>
</note>
</sect3>
<sect3>
<title><filename>ld.so</filename> の設定 &mdash; FreeBSD
2.2-RELEASE およびそれ以降</title>
<para>このセクションは, FreeBSD 2.2-CURRENT
以降にのみ当てはまります. 2.1-STABLE を使用している方は,
飛ばしてください.</para>
<para>最後に, FreeBSD 2.2-RELEASE を使われている場合は, Linux
のランタイムリンカと
その設定ファイルがシステムに導入されていることを
確認してください. これらのファイルは, FreeBSD
システムの適切な位置(<filename>/compat/linux</filename>
ツリー以 下)にコピーされている必要があります.</para>
<screen>/compat/linux/lib/ld.so
/compat/linux/etc/ld.so.config</screen>
<para>使用できる Linux システムがない場合は,
必要なファイルは近くの FTP サイ トから入手してください.
各種ファイルの入手先についての情報を, 後に付 けておきます.
ここでは, 必要なファイルの入手先がわかっているものとしま
す.</para>
<para>以下のファイルを取得します
(バージョンの不一致を避けるために, すべて同一 の FTP
サイトから入手してください). 取得したファイルを
<filename>/compat/linux</filename>
以下にインストールしてください(例えば,
<filename>/foo/bar</filename> は,
<filename>/compat/linux/foo/bar</filename>
にインストールされます).</para>
<screen>/sbin/ldconfig
/usr/bin/ldd
/lib/libc.so.x.y.z
/lib/ld.so</screen>
<para><command>ldconfig</command> と <command>ldd</command>
は, <filename>/compat/linux</filename>
の下にある必要はありません. システム
のどこにあっても構いません. ただ, FreeBSD
の同名のコマンドと間違えないように 注意してください.
<filename>/usr/local/bin</filename> の中に,
<command>ldconfig-linux</command>,
<command>ldd-linux</command> とし
てインストールするのもよいアイディアでしょう.</para>
<para><filename>/compat/linux/etc/ld.so.conf</filename>
ファイルを作成し, Linux ラインタイムリンカ
がシェアードライブラリを検索する
ディレクトリを記述してください. このファ
イルはプレインテキストファイルで,
それぞれの行にディレクトリ名を含みま す.
<filename>/lib</filename> と <filename>/usr/lib</filename>
は標準ですから, 以下のようなディレクトリが追加できま
す.</para>
<programlisting>
/usr/X11/lib
/usr/local/lib</programlisting>
<para>Linux バイナリが, <filename>/lib/libc.so</filename>
というライブラリを開いた場合, エミュレー タは内部で,
ファイル名を <filename>/compat/linux/lib/libc.so</filename>
にマップします. エ ミュレータがライブラリを検索するために,
すべての Linux のライブラリ
(<filename>/compat/linux/lib/libc.so</filename>,
<filename>/compat/linux/usr/X11/lib/libX11.so</filename>
など) は, /compat/linux
以下にインストールされていなければなりません.</para>
<para>FreeBSD 2.2-RELEASE を使用している場合は, Linux の
ldconfig プログラム を実行する必要があります.</para>
<screen>&prompt.root; <userinput>cd /compat/linux/lib</userinput>
&prompt.root; <userinput>/compat/linux/sbin/ldconfig</userinput></screen>
<para><command>ldconfig</command>
はスタティックリンクされていますから,
実行するのにシェアードラ イブラリを必要としません. ldconfig
は, <filename>/compat/linux/etc/ld.so.cache</filename>
ファイルを作成し,
すべてのシェアードライブラリの名前を格納します. ライ
ブラリの追加をおこなった場合には, ldconfig を再実行して,
このファイルを作り 直さなければなりません.</para>
<para>2.1-STABLE では,
<filename>/compat/linux/etc/ld.so.cache</filename>
をインストールしたり, <command>ldconfig</command>
を実行したりしないでください. 2.1-STABLE では, システムコー
ルの実装方法が異なるため, <command>ldconfig</command>
は使用されません.</para>
<para>これで, libc シェアードライブラリを必要とする Linux
バイナリを実行する設 定が終了しました.
<command>ldd</command> を <command>ldd</command>
自身に実行してテストしてください.
<command>ldd-linux</command>
としてインストールしている場合は, 以下のような結果になるはず
です.</para>
<screen>&prompt.root; <userinput>ldd-linux `which ldd-linux`</userinput>
libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>ここまで終了すれば, 新しい Linux のバイナリを
インストールできます.
新しい Linux バイナリをインストールするときは,
それがシェアードライブ
ラリを必要とするかどうか確認してください. 必要とする場合は,
<filename>/compat/linux</filename> 以下に
インストールされているかどうか確認してください. こ
れは, Linux の <command>ldd</command> を新しいプログラムに
対して実行し, 出力を確認するこ
とによりおこなえます.
<command>ldd</command>
(&man.ldd.1; マニュアルページも参照してください)は, プ
ログラムが必要とするシェアードライブラリのリストを,
<literal><replaceable>majorname</replaceable>
(<replaceable>jumpversion</replaceable>) =&gt;
<replaceable>fullname</replaceable></literal>
という形式で出力します.</para>
<para><replaceable>fullname</replaceable> のかわりに
<literal>not found</literal> と出力される場合は,
ライブラリの追加をす る必要があります.
必要なライブラリの名前は, majorname に <!-- kuriyama - Eng:
mm? --> <literal> lib<replaceable>XXXX</replaceable>
.so.<replaceable>N.mm</replaceable></literal>
という形式で示されています. Linux の FTP サイトで <filename>
lib<replaceable>XXXX</replaceable>.so.N.mm</filename>
を探し, インストールしてください. <replaceable>
XXXX</replaceable>(名前)と<replaceable>N</replaceable>
(メジャー リビジョン番号)は一致している必要があります.
マイナー番号 <replaceable>mm</replaceable> は, それほ
ど重要ではありませんが,
なるべく最新のものをインストールするようにして
ください.</para>
</sect3>
</sect2>
<sect2>
<title>Linux の ELF バイナリをインストールする</title>
<para>ELF のバイナリを使うためには,
&ldquo;焼き印を押す(branding)&rdquo; 作業が必要になります.
焼き印を押していない ELF バイナリを実行しようとすると,
以下のようなエラーメッセージを
うけとってしまうことでしょう.</para>
<screen>&prompt.user; <userinput>./my-linux-elf-binary</userinput>
ELF binary type not known
Abort</screen>
<para>カーネルが FreeBSD の ELF バイナリと Linux のバイナリとを
見分けられるようにするためには, &man.brandelf.1;
を以下のようにして使ってください:</para>
<screen>&prompt.user; <userinput>brandelf -t Linux my-linux-elf-binary</userinput></screen>
<para>今ではGNU のツールたちが,
ELFバイナリに自動的に適切な焼き印を押すようになったので,
今後はこの作業もだんだんと必要なくなってゆくでしょう.</para>
</sect2>
<sect2>
<title>ホストネームリゾルバの設定</title>
<para>DNS がうまく動作しなかったり,
以下のようなエラーメッセージが表示され
る場合は, <filename>/compat/linux/etc/host.conf</filename>
ファイルを設定する必要があります.
<!-- kuriyama - Check English version of here -->
<screen>resolv+: "bind" is an invalid keyword
resolv+: "hosts" is an invalid keyword</screen>
ファイルの内容を以下のように設定してください.
<programlisting>
order hosts, bind
multi on</programlisting>
ここで, order は <filename>/etc/hosts</filename> を最初に検索し,
次にDNSを検索するように指定
します. <filename>/compat/linux/etc/host.conf</filename>
がインストールされていない場合は,
Linux のアプリケーションは, FreeBSD の
<filename>/etc/host.conf</filename> を使用しようとして,
文法の違いによる警告を表示します.
<filename>/etc/resolv.conf</filename> を使用してネームサー
バを設定していない場合には,
<literal>bind</literal> を削除してください.</para>
<para>最後になりますが, 2.1-STABLE を使用している場合は,
<envar>RESOLV_HOST_CONF</envar> 環境変数を指定して,
アプリケーションにホストテーブル
の検索方法を指定する必要があります. FreeBSD 2.2-RELEASE
かそれ以降を使用している場合 は, スキップしてください.
<filename>/bin/csh</filename> を使っている場合は,
以下のようにし ます.</para>
<screen>&prompt.user; <userinput>setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf</userinput></screen>
<para><filename>/bin/sh</filename>の場合は,
以下のようにします.</para>
<screen>&prompt.user; <userinput>RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF</userinput></screen>
</sect2>
<sect2>
<title>必要なファイルを探すには</title>
<note>
<para>以下の情報は, この文書が書かれた時点では有効ですが, FTP
サイトの 名前, ディレクトリ, 配布ファイル名などは,
変更されている可能性がありま す.</para>
</note>
<note>
<para>訳注: ここに取り上げられている FTP サイトは,
日本国内にもミラーサイト が多数存在します. なるべく近くの
FTP サイトからファイルを入手してくだ さい.</para>
</note>
<para>Linux は, いくつかのグループが,
それぞれ独自のバイナリ配布セットを作成 して配布しています.
配布セットは, &ldquo;Slackware&rdquo; や
&ldquo;Yggdrasil&rdquo; など の名前がつけられています.
これらの配布セットは, 多くの FTP サイトから 入手できます.
ファイルが展開されており, 必要なファイルのみを取得できる
場合もありますが,
通常は圧縮された配布セットの形で入手できます. 配布 セットは,
いくつかのサブディレクトリに, gzip で圧縮された tar ファイル
として格納されています. それぞれの配布セットの一次配布先は,
以下の通り です.</para>
<orderedlist>
<listitem>
<para>sunsite.unc.edu:/pub/Linux/distributions</para>
</listitem>
<listitem>
<para>tsx-11.mit.edu:/pub/linux/distributions</para>
</listitem>
</orderedlist>
<para>ヨーロッパのミラーサイトの例:</para>
<orderedlist>
<listitem>
<para>ftp.luth.se:/pub/linux/distributions</para>
</listitem>
<listitem>
<para>ftp.demon.co.uk:/pub/unix/linux</para>
</listitem>
<listitem>
<para>src.doc.ic.ac.uk:/packages/linux/distributions</para>
</listitem>
</orderedlist>
<para>混乱を避けるために, ここでは Slackware だけを取り上げます.
この配布セッ トは, 多くのサブディレクトリ内にある
別々のパッケージから構成されていま す. 通常,
パッケージはインストールプログラムにより自動的に制御されま
すが, &ldquo;手動で&rdquo;おこなうことも可能です.
まず配布セットの中の, <filename>contents</filename>
サブディレクトリの内容を書くにしてください. ここには多く
の小さなテキストファイルが含まれおり,
それぞれのパッケージの内容が記述 されています.
必要なファイルを探している場合は, まず contents 内のテキ
ストファイルを取得し, そのファイルの中から grep
を使用して検索するのが, 最も速い方法でしょう.
以下に必要となるであろうファイルを, grep を使用
して検索した例を示します.</para>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Library</entry>
<entry>Package</entry>
</row>
</thead>
<tbody>
<row><entry><filename>ld.so</filename></entry><entry>ldso </entry></row>
<row><entry><filename>ldconfig</filename></entry><entry>ldso </entry></row>
<row><entry><filename>ldd</filename></entry><entry>ldso </entry></row>
<row><entry><filename>libc.so.4</filename></entry><entry>shlibs </entry></row>
<row><entry><filename>libX11.so.6.0</filename></entry><entry>xf_lib </entry></row>
<row><entry><filename>libXt.so.6.0</filename></entry><entry>xf_lib </entry></row>
<row><entry><filename>libX11.so.3</filename></entry><entry>oldlibs </entry></row>
<row><entry><filename>libXt.so.3</filename></entry><entry>oldlibs </entry></row>
</tbody>
</tgroup>
</informaltable>
<para>この場合は, ldso, shlibs, xf_lib, oldlibs
というパッケージが必要なこと がわかります.
それぞれのcontentsファイルの中で, <literal>PACKAGE
LOCATION</literal> と書いてある行を探してください.
その行に, パッケージが含まれている&ldquo;ディ スク&rdquo;,
今回の場合はサブディレクトリ名が書かれています. たとえば,
以下の ようになります.</para>
<informaltable frame="none">
<tgroup cols="2">
<thead
<row>
<entry>Package</entry>
<entry>Location</entry>
</row>
</thead>
<tbody>
<row><entry>ldso </entry><entry>diska2 </entry></row>
<row><entry>shlibs </entry><entry>diska2 </entry></row>
<row><entry>oldlibs </entry><entry>diskx6 </entry></row>
<row><entry>xf_lib </entry><entry>diskx9 </entry></row>
</tbody>
</tgroup>
</informaltable>
<para>&ldquo;disk<replaceable>XX</replaceable>&rdquo;
というのは, 配布セットの
<filename>slackware/<replaceable>XX</replaceable></filename>
サブディレクトリ を示します. それ以外の場合は,
<filename>contrib</filename> サブディレクトリに格納されて
います. 今回の場合は,
以下のファイルを取得すればいいことがわかります (ファイル名は,
配布セットのルートディレクトリからの相対パスで示してあ
ります).</para>
<itemizedlist>
<listitem>
<para><filename>slakware/a2/ldso.tgz</filename></para>
</listitem>
<listitem>
<para><filename>slakware/a2/shlibs.tgz</filename></para>
</listitem>
<listitem>
<para><filename>slakware/x6/oldlibs/tgz</filename></para>
</listitem>
<listitem>
<para><filename>slakware/x9/xf_lib.tgz</filename></para>
</listitem>
</itemizedlist>
<para>gzip で圧縮された tar ファイルから必要なファイルを
<filename>/compat/linux</filename> ディ
レクトリに格納してください(必要なファイルのみを展開するか,
あるいは必 要でないファイルを後で削除してください).
これで作業は終了です.</para>
<para><emphasis>参照:</emphasis>
<filename>
ftp.freebsd.org:pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README
</filename> と <filename>
/usr/src/sys/i386/ibcs2/README.iBCS2</filename></para>
</sect2>
</sect1>
<sect1 id="mathematica">
<title>FreeBSD への Mathematica のインストール</title>
<para><emphasis>原作: &a.rich; and &a.chuck;</emphasis></para>
<para><emphasis>訳: &a.jp.kiroh;.</emphasis></para>
<para>この文書は, Mathematica 2.2 の Linux
バイナリディストリビューションを, FreeBSD 2.1
にインストールする方法について説明します.</para>
<para>Mathematica は, そのままでは FreeBSD
をサポートしていませんが, Linux は サポートしています. ですから,
Linux エミュレータの設定が終わってしまえ ば, Mathematica
を動作させる環境はほとんど整ったことになります.</para>
<para>DOS 用のスチューデント版 Mathematica から Linux
バージョンへのアップグレー ド価格は, 執筆時点 (1996年5月) では,
&#36;45.00 です. 直接 Wolfram(電話番号(217) 398-6500)に注文して,
支払いはクレジットカー ドでおこなえます.</para>
<sect2>
<title>Mathematica ディストリビューションの展開</title>
<para>バイナリは, Wolfram から CDROM で配布されています. CDROM
には, 1ダー スほどの tar ファイルが含まれており,
それぞれサポートされているアーキテ クチャに対応しています.
Linux 用のファイルは, <filename>LINUX.TAR</filename> です.
例えば <filename>/usr/local/Mathematica</filename>
以下にインストールする場合は, 以下のようにしま す.</para>
<screen>&prompt.root; <userinput>cd /usr/local</userinput>
&prompt.root; <userinput>mkdir Mathematica</userinput>
&prompt.root; <userinput>cd Mathematica</userinput>
&prompt.root; <userinput>tar -xvf /cdrom/LINUX.TAR</userinput></screen>
</sect2>
<sect2>
<title>Mathematica パスワードの取得</title>
<para>Mathematica を実行する前に, 使用するマシンに対応した
&ldquo;machine ID&rdquo; を Wolfram
から取得する必要があります.</para>
<para>Linux 互換ランタイムライブラリがインストールされており,
mathematica の展 開が終了したら, Install ディレクトリで
<command>mathinfo</command> プログラムを使用す ることで
&ldquo;machine ID&rdquo; を得ることができます.</para>
<screen>&prompt.root; <userinput>cd /usr/local/Mathematica/Install</userinput>
&prompt.root; <userinput>mathinfo</userinput>
LINUX: 'ioctl' fd=5, typ=0x89(), num=0x27 not implemented
richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<para>ここで, <hostid>richc</hostid> の &ldquo;machine ID&rdquo;
は, <literal>9845-03452-90255</literal> となります. ioctl
のメッセージは無視してください. まだ FreeBSD
では実装されていません. Mathematica
を実行するたびに同様のメッセージが表示されますが, 実際の使
用に問題はありませんので, 無視してかまいません.</para>
<para>電子メールや電話, ファックスなどで Wolfram に
&ldquo;machine ID&rdquo; を知らせ て登録すると,
いくつかの番号のグループからなるパスワードが送り返されて
きます. パスワードを, マシン名, ライセンス番号とともに,
mathpass ファ イルに追加します.</para>
<para>追加は, 以下のようにおこないます.</para>
<screen>&prompt.root; <userinput>cd /usr/local/Mathematica/Install</userinput>
&prompt.root; <userinput>math.install</userinput></screen>
<para>ライセンス番号と, Wolfram
から送られてきたパスワードを入力を求めます.
入力を間違えたりして, math.install
の実行が失敗しても大丈夫です. <filename>mathpass</filename>
ファイルを手動で編集して, 情報を訂正してください.</para>
<para>パスワードの入力後, <command>math.install</command> では,
インストール方法を, デフォルト 設定でのインストールか,
自分で方法を指定するインストールから選ぶことが できます.
筆者のようにインストールプログラムを信用していない場合は, 自
分でディレクトリを指定する方を選択するでしょう.
自分で指定するインストー ルを選んだ場合, math.install
自身ではディレクトリの作成はおこないません. 注意してください.
別のウィンドウでシェルを開いて, 指定するディレクトリ
を作成してください. 存在しないディレクトリを指定して,
math.install が インストールに失敗した場合には,
ディレクトリを作成し, math.install を 再び実行してください.
筆者らがインストール先に選んだディレクトリは, 以 下の通りです.
くれぐれもあらかじめ作成してから,
<command>math.install</command> で指定す
るようにしてください.</para>
<!-- kuriyama - I've lost original translation of here. Check original Japanese version -->
<informaltable frame="none">
<tgroup cols="2">
<tbody>
<row>
<entry><filename>/usr/local/Mathematica/bin</filename></entry>
<entry>for binaries</entry>
</row>
<row>
<entry><filename>
/usr/local/Mathematica/man/man1</filename></entry>
<entry>for man pages</entry>
</row>
<row>
<entry>/usr/local/Mathematica/lib/X11</entry>
<entry>for the XKeysymb file</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>また, システムレコードファイルとして,
<filename>/tmp/math.record</filename> を使用するように
設定することもできます. このファイルには,
セッションのログが記録されま す. この設定が終了すると,
<command>math.install</command> は残りのファイルを展開して, 必
要な場所に格納します.</para>
<para>Mathematica ノートブックの機能は, X
フロントエンドとして本体とは別に含 まれています. X
フロントエンドを正しくインストールするには,
<filename>/usr/local/Mathematica/FrontEnd</filename>
ディレクトリに移動し, <command>./xfe.install</command> シェ
ルスクリプトを実行します.
インストール先を指定しなければなりませんが,
あらかじめ作成する必要はありません. 必要なディレクトリは,
すべて math.install によって作成されているからです.
インストールが終了したら,
<filename>/usr/local/Mathematica/bin</filename>
ディレクトリに, <filename>mathematica</filename> という名前の
シェルスクリプトが新たに作成されているはずです.</para>
<para>最後に, Mathematica
がインストールしたシェルスクリプトを修正する必要 があります.
<filename>/usr/local/Mathematica/bin</filename>
に含まれるすべてのシェルスクリプ
トの先頭部分に以下の行を追加します.</para>
<!-- kuriyama - nik mistaken for here? -->
<screen>XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB</screen>
<para>これは, Mathematica が使用する Mathematica
バージョンのキーマップファイル <filename>XKeysymDB</filename>
の場所を指定するものです.</para>
<para>2.1-STABLE を使用している場合は,
以下の行も追加してください.</para>
<!-- kuriyama - Same as above -->
<screen>RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF</screen>
<para>これは, Mathematica に Linux バージョンの host.conf
を使用するように指定し ます. FreeBSD の host.conf の文法は,
Linux のものと異なっているため, この 指定をおこなわないと,
<filename>/etc/host.conf</filename>
に関わるエラーが発生します.</para>
<para>新しいマニュアルページを利用したい場合は, さらに
<filename>/etc/manpath.config</filename> ファイ
ルを修正する必要があります. また自分の
<filename>~/.cshrc</filename> を変更して,
<filename>/usr/local/Mathematica/bin</filename>
をパスに追加してください.</para>
<para>これでインストール作業はすべて終了です.
<command>mathematica</command> とタイプすれば, 見栄えのする
Mathematica ノートブックが表示されるはずです. Mathematica
には, Motif ユーザインタフェースが含まれますが,
スタティックにリンクさ れているため, Motif
のライブラリは必要ありあません. 頑張って Mathematica
をインストールしてください.</para>
</sect2>
<sect2>
<title>バグ</title>
<para>ノートブックフロントエンドは,
以下のようなエラーメッセージを表示して,
ハングすることがあることが知られています.</para>
<screen><errorname>File .../Untitled-1.mb appears to be broken for OMPR.257.0</errorname></screen>
<para>今のところ原因はわかっていませんが,
このバグが影響を及ぼすのは, ノートブッ クの X window
フロントエンドのみです. Mathematica エンジン本体に影響は
ありません. そのため, ``math''
によって起動されるコマンドラインのインタ
フェースを使用している場合は, このバグは関係ありません.</para>
</sect2>
<sect2>
<title>謝辞</title>
<para>&a.sos;と&a.peter;に深く感謝します.
Linuxエミュレーションが現在の形に あるのは, 彼らのおかげです.
そして, 彼ら二人にハッパをかけて, 犬のよう に働かせた Michael
Smithに. 今やLinuxエミュレーションは, linuxよりうま
くlinuxバイナリを実行できます <!-- smiley -->:-)</para>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->