Migration to DocBook was completed.
This commit is contained in:
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
923
ja/handbook/linuxemu/chapter.sgml
Normal file
923
ja/handbook/linuxemu/chapter.sgml
Normal 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(“ローダブルカーネルモジュール”) を使用して,
|
||||
リブートせず簡単にインストールできます. スタートアッ
|
||||
プファイルで以下のように指定します.</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:
|
||||
-->
|
||||
Loading…
Add table
Add a link
Reference in a new issue