923 lines
33 KiB
Text
923 lines
33 KiB
Text
<!--
|
||
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(“ローダブルカーネルモジュール”) を使用して,
|
||
リブートせず簡単にインストールできます. スタートアッ
|
||
プファイルで以下のように指定します.</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 > /dev/null 2>&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>“ports”
|
||
ディストリビューションが手元にない場合は, 手動でライブラ
|
||
リをインストールする必要があります. プログラムが必要とする
|
||
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>
|
||
にかかわる動作が多少異なっており,
|
||
ライブラリだけでなくすべてのファイルが, “shadow
|
||
root” /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) => /usr/X11/lib/libXt.so.3.1.0
|
||
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
|
||
libc.so.4 (DLL Jump 4.5pl26) => /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 -> libXt.so.3.1.0
|
||
/compat/linux/usr/X11/lib/libX11.so.3.1.0
|
||
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
|
||
/compat/linux/lib/libc.so.4.6.29
|
||
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen>
|
||
|
||
<note>
|
||
<para>最初のカラムに表示されているファイルと,
|
||
メジャーバージョンの同じ Linux
|
||
シェアードライブラリを既にインストールしている場合は,
|
||
新たにコピーする 必要はありません.
|
||
既にあるライブラリで動作するはずです. ただ, 新しいバー
|
||
ジョンのシェアードライブラリがある場合は,
|
||
新しいものをコピーすることを お奨めします.
|
||
新しいライブラリにシンボリックリンクを変更したら, 古いラ
|
||
イブラリは削除してかまいません.
|
||
|
||
<screen>/compat/linux/lib/libc.so.4.6.27
|
||
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27</screen>
|
||
|
||
以上のようなライブラリがインストールされており,
|
||
新しいバイナリに対する
|
||
<command>ldd</command> の出力が
|
||
以下のようになる場合を考えます.</para>
|
||
|
||
<screen>libc.so.4 (DLL Jump 4.5pl26) -> 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 -> libc.so.4.6.29</screen>
|
||
</note>
|
||
|
||
<note>
|
||
<para>シンボリックリンクのメカニズムは, Linux
|
||
バイナリに<emphasis>のみ</emphasis>必要
|
||
なことに注意してください. FreeBSD のランタイムリンカは,
|
||
メジャーリビジョ
|
||
ン番号の一致したライブラリを検索しますから,
|
||
ユーザが気にする必要はあり ません.</para>
|
||
</note>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><filename>ld.so</filename> の設定 — 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) => /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>) =>
|
||
<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 のバイナリを使うためには,
|
||
“焼き印を押す(branding)” 作業が必要になります.
|
||
焼き印を押していない 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 は, いくつかのグループが,
|
||
それぞれ独自のバイナリ配布セットを作成 して配布しています.
|
||
配布セットは, “Slackware” や
|
||
“Yggdrasil” など の名前がつけられています.
|
||
これらの配布セットは, 多くの 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 だけを取り上げます.
|
||
この配布セッ トは, 多くのサブディレクトリ内にある
|
||
別々のパッケージから構成されていま す. 通常,
|
||
パッケージはインストールプログラムにより自動的に制御されま
|
||
すが, “手動で”おこなうことも可能です.
|
||
まず配布セットの中の, <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> と書いてある行を探してください.
|
||
その行に, パッケージが含まれている“ディ スク”,
|
||
今回の場合はサブディレクトリ名が書かれています. たとえば,
|
||
以下の ようになります.</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>“disk<replaceable>XX</replaceable>”
|
||
というのは, 配布セットの
|
||
<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月) では,
|
||
$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 を実行する前に, 使用するマシンに対応した
|
||
“machine ID” を Wolfram
|
||
から取得する必要があります.</para>
|
||
|
||
<para>Linux 互換ランタイムライブラリがインストールされており,
|
||
mathematica の展 開が終了したら, Install ディレクトリで
|
||
<command>mathinfo</command> プログラムを使用す ることで
|
||
“machine ID” を得ることができます.</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> の “machine ID”
|
||
は, <literal>9845-03452-90255</literal> となります. ioctl
|
||
のメッセージは無視してください. まだ FreeBSD
|
||
では実装されていません. Mathematica
|
||
を実行するたびに同様のメッセージが表示されますが, 実際の使
|
||
用に問題はありませんので, 無視してかまいません.</para>
|
||
|
||
<para>電子メールや電話, ファックスなどで Wolfram に
|
||
“machine ID” を知らせ て登録すると,
|
||
いくつかの番号のグループからなるパスワードが送り返されて
|
||
きます. パスワードを, マシン名, ライセンス番号とともに,
|
||
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:
|
||
-->
|