Migration to DocBook was completed.

This commit is contained in:
Jun Kuriyama 1999-04-08 15:46:01 +00:00
parent 1f57381cf8
commit 9c0d1e1149
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=4639
81 changed files with 112469 additions and 438 deletions

View file

@ -0,0 +1,923 @@
<!--
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:
-->