Index: head/ja_JP.eucJP/books/handbook/linuxemu/chapter.xml =================================================================== --- head/ja_JP.eucJP/books/handbook/linuxemu/chapter.xml (revision 48505) +++ head/ja_JP.eucJP/books/handbook/linuxemu/chapter.xml (revision 48506) @@ -1,1297 +1,1299 @@ &linux; バイナリ互換機能 Jim Mock 再構成と一部の更新: Brian N. Handy オリジナルの文書を執筆: Rich Murphey この章では Linux バイナリ互換機能 バイナリ互換機能 Linux &os; は、&linux; と 32 ビットのバイナリ互換機能を提供しています。 このバイナリ互換機能を使うことで、ユーザはほとんどの 32 ビットの &linux; バイナリを、変更することなしに &os; システム上にインストールして実行することが可能になります。 ある状況においては 32 ビットの &linux; バイナリを &linux; で動かすよりも &os; で動かすほうが良いパフォーマンスが出るという報告もあります。 しかしながら、いくつかの &linux; に特有なオペレーティングシステムの機能は &os; ではサポートされていません。たとえば、 仮想 8086 モードを有効にするような &i386; 特有の呼び出しを過度に使う &linux; バイナリは &os; では動きません。 また、現在のところ 64 ビットの &linux; バイナリには対応していません。 この章を読むと、以下のことがわかります。 &os; システムで &linux; バイナリ互換機能を有効にする方法。 &linux; 共有ライブラリを追加する方法。 &linux; アプリケーションを &os; システムにインストールする方法 &os; における &linux; 互換機能の実装の詳細。 この章を読む前に、以下のことを理解しておく必要があります。 サードパーティ製ソフトウェア のインストール方法 &linux; バイナリ互換機能の設定 Ports Collection &linux; ライブラリは、デフォルトでは &os; にインストールされません。 また、&linux; バイナリ互換機能も、デフォルトでは有効ではありません。 - &linux; ライブラリは、 + &linux; ライブラリは、手動もしくは &os; Ports Collection を使ってインストールできます。 - &linux; - ライブラリおよびバイナリの基本セットを &os; - システムにインストールする最も簡単な方法は、 - emulators/linux-base-f10 package または port - を使う方法です。port をインストールするには、 - 以下のコマンドを実行してください。 + port を構築する前に、 + linux カーネルモジュールを読み込んでください。 + このモジュールを読み込んでいないと、構築に失敗してしまいます。 - &prompt.root; cd /usr/ports/emulators/linux_base-f10 -&prompt.root; make install distclean - - port をインストールしたら、 - linux モジュールを読み込んで、 - &linux; バイナリ互換機能を有効にしてください。 - &prompt.root; kldload linux 以下のようにしてモジュールが読み込まれていることを確認してください。 &prompt.user; kldstat -Id Refs Address Size Name - 1 2 0xc0100000 16bdb8 kernel - 7 1 0xc24db000 d000 linux.ko + Id Refs Address Size Name + 1 2 0xc0100000 16bdb8 kernel + 7 1 0xc24db000 d000 linux.ko + &linux; + ライブラリおよびバイナリの基本セットを &os; + システムにインストールする最も簡単な方法は、 + emulators/linux-base-c6 package または port + を使う方法です。port をインストールするには、 + 以下のコマンドを実行してください。 + + &prompt.root; printf "compat.linux.osrelease=2.6.18\n" >> /etc/sysctl.conf +&prompt.root; sysctl compat.linux.osrelease=2.6.18 +&prompt.root; pkg install emulators/linux_base-c6 + 起動時から &linux; 互換機能を有効にする場合には、 /etc/rc.conf に以下の行を追加してください。 linux_enable="YES" カーネルオプション COMPAT_LINUX &linux; バイナリ互換機能をカスタムカーネルに静的にリンクする場合には、 options COMPAT_LINUX をカスタムカーネルのコンフィグレーションファイルに追加してください。 そして、 の説明にしたがって新しいカーネルをコンパイルしてインストールしてください。 手動によるライブラリの追加のインストール 共有ライブラリ &linux; バイナリ互換機能を設定した後に、&linux; アプリケーションが必要な共有ライブラリが存在しないというエラーを出した場合には、 &linux; バイナリがどの共有ライブラリを必要としているかを確認して、 手動でインストールしてください。 &linux; システムで、ldd を使うことにより、 アプリケーションが必要とする共有ライブラリを調べることができます。 たとえば、linuxdoom が必要とする共有ライブラリを調べるには、 Doom がインストールされている &linux; システム上で、以下のコマンドを実行してください。 &prompt.user; ldd linuxxdoom 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 シンボリックリンク &linux; システムでの出力の最後のカラムに表示されているすべてのファイルを &os; システムの /compat/linux の下にコピーしてください。コピーしたら、 最初のカラムに示されるファイル名でコピーしたファイルに対してシンボリックリンクを張ってください。 この例では、&os; システムで以下のようになります。 /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 ldd の出力の最初のカラムに表示されているメジャーバージョンが同じ &linux; 共有ライブラリが既にインストールされている場合は、 最後のコラムにある名前のファイルを新たにコピーする必要はありません。 既にあるライブラリで動作するはずです。 ただ、新しいバージョンの共有ライブラリがある場合には、 コピーすることをお奨めします。 新しいライブラリにシンボリックリンクを変更したら、 古いライブラリは削除してかまいません。 たとえば、以下のライブラリがすでに &os; システムに存在するとします。 /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 そして、ldd の出力が以下のように、 バイナリが新しいバージョンを必要とする場合を考えます。 libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 存在しているライブラリの最後の番号が 1 つか 2 つ古いだけなので、 わずかに古いライブラリでもプログラムは動作するはずです。 しかしながら、libc.so を新しいバージョンに置き換えるのが安全です。 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29 通常は、&linux; のバイナリが必要とする共有ライブラリを探す必要があるのは、 &os; のシステムに &linux; のプログラムをインストールする最初の数回だけです。 それが過ぎれば、十分な &linux; の共有ライブラリがシステムに存在するので、 新しくインストールした &linux; のバイナリも追加の作業をせずに動作させることができるようになります。 &linux; の <acronym>ELF</acronym> バイナリのインストール Linux ELF バイナリ ELF のバイナリを使うためには、 追加の作業が必要です。 マークのない (unbranded) ELF バイナリを実行しようとすると、 以下のようなエラーメッセージが表示されてしまうことでしょう。 &prompt.user; ./my-linux-elf-binary ELF binary type not known Abort &os; のカーネルが &os; の ELF バイナリと &linux; のバイナリとを見分けられるようにするために、&man.brandelf.1; を以下のようにして使ってください。 &prompt.user; brandelf -t Linux my-linux-elf-binary GNU ツールチェイン GNU のツール群が ELF バイナリに自動的に適切なマークを付加するようになったので、 この作業は通常必要ありません。 &linux; <acronym>RPM</acronym> ベースのアプリケーションのインストール &linux; RPM ベースのアプリケーションをインストールするには、 - 最初に archivers/rpm2cpio package または + 最初に archivers/rpm4 package または port をインストールしてください。 インストールすると、このコマンドを root 権限で使うことで、 .rpm をインストールできます。 &prompt.root; cd /compat/linux -&prompt.root; rpm2cpio -q < /path/to/linux.archive.rpm | cpio -id +&prompt.root; rpm2cpio < /path/to/linux.archive.rpm | cpio -id 必要に応じて、インストールした ELF バイナリに brandelf を実行してください。 綺麗にアンインストールできないかもしれませんので注意してください。 ホストネームリゾルバの設定 DNS がうまく動作しなかったり、 以下のようなエラーメッセージが表示される場合は、 /compat/linux/etc/host.conf ファイルを以下のように設定する必要があります。 resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword ファイルの内容を以下のように設定してください。 order hosts, bind multi on この設定では /etc/hosts を最初に検索し、 次に DNS を検索するように指定します。 /compat/linux/etc/host.conf が存在しない場合には、 &linux; アプリケーションは /etc/host.conf を使用しようとし、 &os; の文法とは互換性がないと警告を出力します。 /etc/resolv.conf を利用してネームサーバの設定をしていない場合には、 bind を削除してください。 &mathematica; のインストール Boris Hollas Mathematica 9.X 向けの改訂: アプリケーション Mathematica この節では、&linux; 版の &mathematica; 5.X を &os; へインストールするプロセスについて説明します。 &mathematica; は商用の科学、工学および数学で使われる計算ソフトウェアプログラムです。 30 日のトライアル版を wolfram.com/mathematica からダウンロードできます。 &mathematica; インストーラの実行 &mathematica; をインストールする前に、 - textproc/linux-f10-aspell + textproc/linux-c6-aspell package または port がインストールされていることと、 &man.linprocfs.5; ファイルシステムがマウントされていることを確認してください。 &prompt.root; sysctl kern.fallback_elf_brand=3 これで &os; はマーク付が行われていない ELF バイナリは &linux; ABI を使用すると見なすので、 CDROM から直接インストーラを実行できます。 ダウンロードファイルは、 /tmp/Mathematica_9.0.1_LINUX.sh と保存されます。スーパユーザになり、 このインストールファイルを実行してください。 &prompt.root; sh /tmp/Mathematica_9.0.1_LINUX.sh Mathematica Secured 9.0.1 for LINUX Installer Archive Verifying archive integrity. Extracting installer. ... Wolfram Mathematica 9 Installer Copyright (c) 1988-2013 Wolfram Research, Inc. All rights reserved. WARNING: Wolfram Mathematica is protected by copyright law and international treaties. Unauthorized reproduction or distribution may result in severe civil and criminal penalties and will be prosecuted to the maximum extent possible under law. Enter the installation directory, or press ENTER to select /usr/local/Wolfram/Mathematica/9.0: > Now installing... *********************** Installation complete. ネットワーク経由での &mathematica; フロントエンドの起動 &mathematica; は標準フォントセットにない特別な記号を表示するために特殊なフォントを使用します。 Xorg は、 これらのフォントがローカルマシンにインストールされていることを要求します。 これはつまり、これらのフォントを CD-ROM や &mathematica; がインストールされているホストマシンからローカルマシンにコピーしなければならないということです。 これらのフォントは通常、CD-ROM の /cdrom/Unix/Files/SystemFiles/Fonts + >/cdrom/Unix/Files/SystemFiles/Fonts か、もしくはハードディスクの /usr/local/mathematica/SystemFiles/Fonts + >/usr/local/mathematica/SystemFiles/Fonts に置かれており、実際に使用されるフォントは - Type1 および - X + Type1 および + X サブディレクトリに格納されています。 これらを利用するには次のようないくつかの方法があります。 一つ目の方法は、フォントファイルを /usr/local/lib/X11/fonts + >/usr/local/lib/X11/fonts 以下にある既存のフォントディレクトリにコピーし、 新しいフォントを含むディレクトで &man.mkfontdir.1; を実行してください。 もう一つの方法は、 /usr/local/lib/X11/fonts + >/usr/local/lib/X11/fonts にフォントディレクトリごとコピーする方法です。 &prompt.root; cd /usr/local/lib/X11/fonts &prompt.root; mkdir X &prompt.root; mkdir MathType1 &prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts &prompt.root; cp X/* /usr/local/lib/X11/fonts/X &prompt.root; cp Type1/* /usr/local/lib/X11/fonts/MathType1 &prompt.root; cd /usr/local/lib/X11/fonts/X &prompt.root; mkfontdir &prompt.root; cd ../MathType1 &prompt.root; mkfontdir そして、 フォントパスに新しいフォントディレクトリを追加してください。 &prompt.root; xset fp+ /usr/local/lib/X11/fonts/X &prompt.root; xset fp+ /usr/local/lib/X11/fonts/MathType1 &prompt.root; xset fp rehash &xorg; サーバを使用しているなら、 /etc/X11/xorg.conf に加えることでこれらのフォントディレクトリを自動的に読み込むようにできます。 フォント /usr/local/lib/X11/fonts/Type1 + >/usr/local/lib/X11/fonts/Type1 というディレクトリが存在していない場合には、 上記例の MathType1Type1 + >MathType1 を Type1 としてください。 -->