summaryrefslogtreecommitdiffstats
path: root/share/doc/ja_JP.EUC/handbook/linuxemu.sgml
blob: 8732ef4828687e2c0c512842e94b580db7560a37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
<!-- $Id: linuxemu.sgml,v 1.1.1.1 1996/11/15 05:14:43 asami Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.14 -->

<chapt><heading>Linux エミュレーション<label id="linuxemu"></heading>

<p><em>原作: &a.brian and &a.rich;</em>
<p><em>訳: &a.kiroh;.<newline>24 September 1996.</em>

<sect><heading>Linux エミュレータのインストール</heading>

<p>
FreeBSD での Linux エミュレーションは, 大部分の Linux バイナリ(a.out 
および ELF フォーマット)を実行できる状態になっています. -STABLE ブラン
チでのエミュレーションでは, Linux DOOM や Mathematica が実行できます.
FreeBSD-current でのエミュレーションは, さらに強化されており, Linux 用
の Quake, Abuse, IDL, netrek など, 多数のソフトウェアが実行できます.

Linux オペレーティングシステムには、特有の機能がいくつかあり, FreeBSD 
でサポートされていないものもあります. Linux の /proc ファイルシステム
を使ったバイナリは, FreeBSD では実行できません (FreeBSD で使用可能な 
/proc ファイルシステムとは仕様が異なっているためです). また仮想8086モー
ドを有効にするなど, i386 に特有なシステムコールを使っている場合も実行
できません.

<p>
カーネルが Linux エミュレーションを使用するように構築されているかを調
べるには, Linux のバイナリを実行してみるのが簡単です.
<tscreen>
<verb>
linux-executable: Exec format error. Wrong Architecture.
</verb>
</tscreen>
このようなエラーメッセージが表示されるようであれば, Linux との互換性は
サポートされていません. カーネルを再構築してインストールする必要があり
ます.

Linux エミュレーションの設定方法は, 使用している FreeBSD のバージョン
によって多少異なっています.

<sect1><heading>2.1-STABLE への Linux エミュレーションのインストール</heading>

<p>2.1-STABLE の GENERIC カーネルは, Linux との互換性を保つように構築
されていません. カーネルの再構築が必要です. 再構築をおこなうには, 2つの方
法があります. 1つは, エミュレータをカーネル自体にスタティックリンクす
る方法. もう1つは, 動的に Linux ローダブルカーネルモジュール(LKM)をロー
ドするようにする方法です.

<p>エミュレータを有効にするには, 以下をコンフィグレーションファイル
 (/sys/i386/conf/LINT など) に追加します.
<tscreen>
<verb>
options COMPAT_LINUX
</verb>
</tscreen>
Linux DOOM などのアプリケーションを実行したい場合は, 共有メモリも有効
にしておかなければなりません. 以下を追加します.
<tscreen>
<verb>
options SYSVSHM
</verb>
</tscreen>
Linux のシステムコールを使用するには, 4.3BSD のシステムコールとの互換
性が保たれていることが必要です. 以下の行が含まれていることを確認してく
ださい.
<tscreen>
<verb>
options "COMPAT_43"
</verb>
</tscreen>

LKM を使用せずエミュレータをカーネルにスタティックにリンクしたい場合は,
以下の行を追加します.
<tscreen>
<verb>
options  LINUX
</verb>
</tscreen>
<ref id="kernelconfig" name="FreeBSDカーネルのコンフィグレーション">の節の記述に
したがって config と, 新しいカーネルのインストールをおこなってください.

LKM を使用する場合は, ローダブルモジュールをインストールしなければなり
ません. カーネルとローダブルモジュールのバージョンが異なると, カーネル
がクラッシュする場合がありますので, 安全を期すためには, カーネルをイン
ストールするごとに, LKM も再インストールしてください.
<tscreen>
<verb>
% cd /usr/src/lkm/linux
% make all install
</verb>
</tscreen>
カーネルと LKM のインストールが終了したら, root で `linux' コマンドを
実行することで LKM をロードできます.
<tscreen>
<verb>
% linux
Linux emulator installed
Module loaded as ID 0
%
</verb>
</tscreen>
LKM がロードされたかどうかを確認するには, `modstat' を実行します.
<tscreen>
<verb>
% modstat
Type     Id Off Loadaddr Size Info     Rev Module Name
EXEC      0   3 f0baf000 0018 f0bb4000   1 linux_emulator
%
</verb>
</tscreen>
システムブート時に, LKM をロードするようにするには, 2つの方法がありま
す. FreeBSD-current または FreeBSD-STABLE では, /etc/sysconfig を,
<tscreen>
<verb>
linux=YES
</verb>
</tscreen>
のように, NO を YES に変更してください. FreeBSD 2.1 RELEASE およびそれ以
前のバージョンでは, そのような行はありませんので, /etc/rc.local に以下
の行を追加する必要があります.
<tscreen>
<verb>
linux
</verb>
</tscreen>

<sect1><heading>2.2-current への Linux エミュレーションのインストール
</heading>

<p>-current では, ``options LINUX'' や ``options COMPAT_LINUX'' を指定する必要
はなくなりました. Linux エミュレーションは LKM(「ローダブルカーネルモジュール」)
を使用して, リブートせず簡単にインストールできます. スタートアッ
プファイルで以下のように指定します.
<enum>
<item>/etc/sysconfig に以下の行が必要です.
<tscreen>
<verb>
linux=YES
</verb>
</tscreen>
<item> これは結果的に, /etc/rc.i386 の以下の指定を有効にします.
<tscreen>
<verb>
# Start the Linux binary emulation if requested.
if [ "X${linux}" = X"YES" ]; then
        echo -n ' ';            linux
        # XXX BOGUS - Linux script shouldn't make any output on success
fi
</verb>
</tscreen>
</enum>

<p>実行されたかどうかを確認するには, modstat を使用します.
<tscreen>
<verb>
% modstat
Type     Id Off Loadaddr Size Info     Rev Module Name
EXEC      0   4 f09e6000 001c f09ec010   1 linux_mod
%
</verb>
</tscreen>
FreeBSD-current システムの中には, modstat の実行がうまくいかないものがあ
るという報告もあります. 何らかの理由で, Linux LKM がロードできな
い場合は,
<tscreen>
<verb>
options  LINUX
</verb>
</tscreen>
をカーネルの設定ファイルに指定して, エミュレータをスタティックにリンク
してください. <ref id="kernelconfig" name="FreeBSDカーネルのコンフィグレーション">
の節の記述にしたがって config と, 新しいカーネルのインストールをおこ
なってください.

<sect1><heading>Linux ランタイムライブラリのインストール</heading>

<sect2><heading>linux_lib port を使用してのインストール</heading>

<p>多くの Linux アプリケーションはシェアードライブラリを使用しますので,
シェアードライブラリのインストールが終了しなければ, エミュレータのイン
ストールは終わったことになりません. 手動でもインストールできますが,
linux_lib port を使用するのが簡単です.
<tscreen>
<verb>
% cd /usr/ports-current/emulators/linux_lib
% make all install
</verb>
</tscreen>

これで, Linux エミュレータが動作するようになったはずです. 伝説(とメー
ルのアーカイブ :-) によれば, Linux エミュレーションは, ZMAGIC ライブラ
リとリンクされている Linux バイナリに対して, 最もうまく動作するようで
す.  Slackware V2.0 などに使われている QMAGIC ライブラリだと, エミュレー
タが胸やけするかもしれません. これを書いている時点(1996年5月)で, ELF 
エミュレーションは依然実験段階ですが, かなりうまく動作しているようです. 
マイナーバージョンの不一致などを報告するプログラムもありますが, 普通は
問題にならないようです.

<sect2><heading>手動でのライブラリのインストール</heading>

<p>``ports'' ディストリビューションが手元にない場合は, 手動でライブラ
リをインストールする必要があります. プログラムが必要とする Linux のシェ
アードライブラリとラインタイムリンカが必要です. また Linux ライブラリ
の用の``shadow root'' ディレクトリ, /compat/linux, を作成する必要があ
ります.  FreeBSD で動作する Linux のプログラムが使用するシェアードライ
ブラリは,まずこのファイルツリーから検索されます. 例えば, Linux のプロ
グラムが/lib/libc.so をロードしようとした場合には, FreeBSD は, まず
/compat/linux/lib/libc.so を開こうとします. 存在にしなかった場合には,
次に /lib/libc.so を試します. シェアードライブラリは, Linux の ld.so 
が参照するライブラリではなく, /compat/linux/lib 以下にインストールする
必要があります.

FreeBSD-current では, /compat/linux にかかわる動作が多少異なりま
す. -current では, ライブラリだけでなくすべてのファイルが, ``shadow
root'' /compat/linux から検索されます.

Linux のプログラムが必要とするシェアードライブラリを探す必要があるのは,
FreeBSD のシステムに Linux のプログラムをインストールする最初の数回だ
けでしょう. それが過ぎれば, 十分な Linux のシェアードライブラリがシス
テムにインストールされ, 新しくインストールした Linux のバイナリも, 余
計な作業をせずに動作させることができるようになります.

<sect2><heading>シェアードライブラリの追加</heading>

<p>
linux_port をインストールした後に, アプリケーションが必要なライブラリ
が存在しないというエラーを出したらどうしたらよいでしょうか? Linux のバ
イナリがどのシェアードライブラリを必要とし, そしてどこで入手できるか,
どのように探したらよいでしょうか? 基本的には, 以下の2種類の方法があり
ます(以下の手順にしたがう場合には, 必要なインストール作業をおこなう FreeBSD シ
ステム上で root として作業をおこなう必要があります).

<p>Linux システムを使用でき, 必要なシェアードライブラリが調べられる場
合には, 単に FreeBSD のシステムにそのライブラリをコピーするだけで
す. 例えば, DOOM の Linux バイナリを ftp で持ってきたとします. 使用で
きる Linux システムの上に転送して, `ldd linuxxdoom' とやれば, 必要とす
るシェアードライブラリがチェックできます.

<tscreen>
<verb>
% 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
</verb>
</tscreen>

<p>
最後のカラムに表示されているすべてのファイルを持って来て, /compat/linux の下
に置き, 最初のカラムに示されるファイル名からシンボリックリンクを張る必
要があります. すなわち, FreeBSD のシステムで, 以下のようなファイルが必
要となります.
<tscreen>
<verb>
/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
</verb>
</tscreen>

<p>
最初のカラムに表示されているファイルと, メジャーバージョンの同じ Linux
シェアードライブラリを既にインストールしている場合は, 新たにコピーする
必要はありません. 既にあるライブラリで動作するはずです. ただ, 新しいバー
ジョンのシェアードライブラリがある場合は, 新しいものをコピーすることを
お奨めします. 新しいライブラリにシンボリックリンクを変更したら, 古いラ
イブラリは削除してかまいません.
<tscreen>
<verb>
/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27
</verb>
</tscreen>
以上のようなライブラリがインストールされており, 新しいバイナリに対する 
ldd の出力が以下のようになる場合を考えます。
<tscreen>
<verb>
libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29
</verb>
</tscreen>

このように最後の番号が1つか2つ古いだけならば, 普通は
/lib/libc.so.4.6.29 をコピーする必要はありません. わずかに古いライブラ
リでも, プログラムは動作するはずだからです. もちろん, 新しいライブラリ
と置き換えて, 以下のようにしても構いません.
<tscreen>
<verb>
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
</verb>
</tscreen>

<p>シンボリックリンクのメカニズムは, Linux バイナリに<em>のみ</em>必要
なことに注意してください. FreeBSD のランタイムリンカは, メジャーリビジョ
ン番号の一致したライブラリを検索しますから, ユーザが気にする必要はあり
ません.

<sect2><heading>ld.so の設定 -- FreeBSD-current のみ</heading>

<p>このセクションは, FreeBSD-current にのみ当てはまります.
FreeBSD-STABLE を使用している方は, 飛ばしてください.

<p>
最後に, FreeBSD-current を使われている場合は, Linux のランタイムリンカと
その設定ファイルがシステムに導入されていることを確認してください.
これらのファイルは, FreeBSD システムの適切な位置(/compat/linux ツリー以
下)にコピーされている必要があります.

<tscreen>
<verb>
/compat/linux/lib/ld.so
/compat/linux/etc/ld.so.config
</verb>
</tscreen>

<p>使用できる Linux システムがない場合は, 必要なファイルは近くの FTP サイ
トから入手してください. 各種ファイルの入手先についての情報を, 後に付
けておきます. ここでは, 必要なファイルの入手先がわかっているものとしま
す.

<p>
以下のファイルを取得します(バージョンの不一致を避けるために, すべて同一
の FTP サイトから入手してください). 取得したファイルを /compat/linux 
以下にインストールしてください(例えば, /foo/bar は,
/compat/linux/foo/bar にインストールされます).

<tscreen>
<verb>
/sbin/ldconfig
/usr/bin/ldd
/lib/libc.so.x.y.z
/lib/ld.so
</verb>
</tscreen>

<p>ldconfig と ldd は, /compat/linux の下にある必要はありません. システム
のどこにあっても構いません. ただ, FreeBSD の同名のコマンドと間違えないように
注意してください. /usr/local/bin の中に, ldconfig-linux, ldd-linux とし
てインストールするのもよいアイディアでしょう.
<p>
/compat/linux/etc/ld.so.conf ファイルを作成し, Linux ラインタイムリンカ
がシェアードライブラリを検索するディレクトリを記述してください. このファ
イルはプレインテキストファイルで, それぞれの行にディレクトリ名を含みま
す. /lib と /usr/lib は標準ですから, 以下のようなディレクトリが追加できま
す.
<tscreen>
<verb>
/usr/X11/lib
/usr/local/lib
</verb>
</tscreen>

<p>
Linux バイナリが, /lib/libc.so というライブラリを開いた場合, エミュレー
タは内部で, ファイル名を /compat/linux/lib/libc.so にマップします. エ
ミュレータがライブラリを検索するために, すべての Linux のライブラリ
(/compat/linux/lib/libc.so, /compat/linux/usr/X11/lib/libX11.so など)
は, /compat/linux 以下にインストールされていなければなりません.

<p>FreeBSD-current を使用している場合は, Linux の ldconfig プログラム
を実行する必要があります.
<tscreen>
<verb>
% cd /compat/linux/lib
% /compat/linux/sbin/ldconfig
</verb>
</tscreen>

<p>
ldconfig はスタティックリンクされていますから, 実行するのにシェアードラ
イブラリを必要としません. ldconfig は, /compat/linux/etc/ld.so.cache 
ファイルを作成し, すべてのシェアードライブラリの名前を格納します. ライ
ブラリの追加をおこなった場合には, ldconfig を再実行して, このファイルを作り
直さなければなりません.

FreeBSD-STABLE では, /compat/linux/etc/ld.so.cache をインストールしたり,
ldconfig を実行したりしないでください. FreeBSD-stable では, システムコー
ルの実装方法が異なるため, ldconfig は使用されません.

<p>
これで, libc シェアードライブラリを必要とする Linux バイナリを実行する設
定が終了しました. ldd を ldd 自身に実行してテストしてください.
ldd-linux としてインストールしている場合は, 以下のような結果になるはず
です.

<tscreen>
<verb>
% ldd-linux `which ldd-linux`
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
</verb>
</tscreen>

<p>ここまで終了すれば, 新しい Linux のバイナリをインストールできます.
新しい Linux バイナリをインストールするときは, それがシェアードライブ
ラリを必要とするかどうか確認してください. 必要とする場合は,
/compat/linux 以下にインストールされているかどうか確認してください. こ
れは, Linux の ldd を新しいプログラムに対して実行し, 出力を確認するこ
とによりおこなえます. ldd(ldd(1)マニュアルページも参照してください)は, プ
ログラムが必要とするシェアードライブラリのリストを, majorname
(jumpversion) => fullname という形式で出力します.

<p>
fullname のかわりに ``not found'' と出力される場合は, ライブラリの追加をす
る必要があります. 必要なライブラリの名前は, majorname に
libXXXX.so.N.mm という形式で示されています. Linux の FTP サイトで
libXXXX.so.N.mm を探し, インストールしてください. XXXX(名前)とN(メジャー
リビジョン番号)は一致している必要があります. マイナー番号 mm は, それほ
ど重要ではありませんが, なるべく最新のものをインストールするようにして
ください.

<sect1><heading>ホストネームリゾルバの設定</heading>

<p>DNS がうまく動作しなかったり, 以下のようなエラーメッセージが表示され
る場合は, /compat/linux/etc/host.conf ファイルを設定する必要があります.
<tscreen>
<verb>
resolv+: "bind" is an invalid keyword
resolv+: "hosts" is an invalid keyword
</verb>
</tscreen>
ファイルの内容を以下のように設定してください.
<tscreen>
<verb>
order hosts, bind
multi on
</verb>
</tscreen>
ここで, order は /etc/hosts を最初に検索し, 次にDNSを検索するように指定
します. /compat/linux/etc/host.conf がインストールされていない場合は,
Linux のアプリケーションは, FreeBSD の /etc/host.conf を使用しようとして,
文法の違いによる警告を表示します. /etc/resolv.conf を使用してネームサー
バを設定していない場合には, `bind' を削除してください.

<p>最後になりますが, FreeBSD-STABLE を使用している場合は,
RESOLV_HOST_CONF 環境変数を指定して, アプリケーションにホストテーブル
の検索方法を指定する必要があります. FreeBSD-current を使用している場合
は, スキップしてください. /bin/csh を使っている場合は, 以下のようにし
ます.
<tscreen>
<verb>
setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf
</verb>
</tscreen>

/bin/shの場合は, 以下のようにします.
<tscreen>
<verb>
RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF
</verb>
</tscreen>

<sect1><heading>必要なファイルを探すには</heading>

<p>
注意: 以下の情報は, この文書が書かれた時点では有効ですが, FTP サイトの
名前, ディレクトリ, 配布ファイル名などは, 変更されている可能性がありま
す.
<p>
訳注: ここに取り上げられている FTP サイトは, 日本国内にもミラーサイト
が多数存在します。なるべく近くの FTP サイトからファイルを入手してくだ
さい.

<p>
Linux は, いくつかのグループが, それぞれ独自のバイナリ配布セットを作成
して配布しています. 配布セットは, ``Slackware'' や ``Yggdrasil'' など
の名前がつけられています. これらの配布セットは, 多くの FTP サイトから
入手できます. ファイルが展開されており, 必要なファイルのみを取得できる
場合もありますが, 通常は圧縮された配布セットの形で入手できます. 配布
セットは, いくつかのサブディレクトリに, gzip で圧縮された tar ファイル
として格納されています. それぞれの配布セットの一次配布先は, 以下の通り
です.
<verb>
sunsite.unc.edu:/pub/Linux/distributions
tsx-11.mit.edu:/pub/linux/distributions
</verb>

<p>
ヨーロッパのミラーサイトの例:
<verb>
ftp.luth.se:/pub/linux/distributions
ftp.demon.co.uk:/pub/linux/distributions
src.doc.ic.ac.uk:/packages/linux/distributions
</verb>

<p>
混乱を避けるために, ここでは Slackware だけを取り上げます. この配布セッ
トは, 多くのサブディレクトリ内にある別々のパッケージから構成されていま
す.  通常, パッケージはインストールプログラムにより自動的に制御されま
すが, ``手動で''おこなうことも可能です. まず配布セットの中の,
``contents'' サブディレクトリの内容を書くにしてください. ここには多く
の小さなテキストファイルが含まれおり, それぞれのパッケージの内容が記述
されています. 必要なファイルを探している場合は, まず contents 内のテキ
ストファイルを取得し, そのファイルの中から grep を使用して検索するのが, 
最も速い方法でしょう. 以下に必要となるであろうファイルを, grep を使用
して検索した例を示します.
<tabular ca=ll>
Library		<colsep>Package		<rowsep>
ld.so		<colsep>ldso   		<rowsep>
ldconfig	<colsep>ldso   		<rowsep>
ldd		<colsep>ldso   		<rowsep>
libc.so.4	<colsep>shlibs 		<rowsep>
libX11.so.6.0	<colsep>xf_lib 		<rowsep>
libXt.so.6.0	<colsep>xf_lib 		<rowsep>
libX11.so.3	<colsep>oldlibs		<rowsep>
libXt.so.3	<colsep>oldlibs		<rowsep>
</tabular>

<p>
この場合は, ldso, shlibs, xf_lib, oldlibs というパッケージが必要なこと
がわかります. それぞれのcontentsファイルの中で, ``PACKAGE LOCATION'' 
と書いてある行を探してください. その行に, パッケージが含まれているディ
スク, 今回の場合はサブディレクトリ名が書かれています. たとえば, 以下の
ようになります.
<tabular ca=ll>
Package                 <colsep>Location	<rowsep>
ldso                    <colsep>diska2		<rowsep>
shlibs                  <colsep>diska2		<rowsep>
oldlibs                 <colsep>diskx6		<rowsep>
xf_lib                  <colsep>diskx9		<rowsep>
</tabular>

<p>``diskXX'' というのは, 配布セットの ``slackware/XX'' サブディレクトリ
を示します. それ以外の場合は, ``contrib'' サブディレクトリに格納されて
います. 今回の場合は, 以下のファイルを取得すればいいことがわかります
(ファイル名は, 配布セットのルートディレクトリからの相対パスで示してあ
ります).
<tscreen>
<verb>
slakware/a2/ldso.tgz
slakware/a2/shlibs.tgz
slakware/x6/oldlibs/tgz
slakware/x9/xf_lib.tgz
</verb>
</tscreen>

<p>
gzip で圧縮された tar ファイルから必要なファイルを /compat/linux ディ
レクトリに格納してください(必要なファイルのみを展開するか, あるいは必
要でないファイルを後で削除してください). これで作業は終了です.

<p><bf>参照:</bf>
<verb>
ftp.freebsd.org:pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README

/usr/src/sys/i386/ibcs2/README.iBCS2
</verb>

<sect><heading>FreeBSD への Mathematica のインストール<label id="mathematica"></heading>

<p><em>原作: &a.rich and &a.chuck</em>
<p><em>訳: &a.kiroh;.</em>

この文書は, Mathematica 2.2 の Linux バイナリディストリビューションを,
FreeBSD 2.1 にインストールする方法について説明します.

<p>
Mathematica は, そのままでは FreeBSD をサポートしていませんが, Linux は
サポートしています. ですから, Linux エミュレータの設定が終わってしまえ
ば, Mathematica を動作させる環境はほとんど整ったことになります.

<p>
DOS 用のスチューデント版 Mathematica から Linux バージョンへのアップグレー
ド価格は, 執筆時点 (1996年5月) では, &dollar;45.00 です.
直接 Wolfram(電話番号(217) 398-6500)に注文して, 支払いはクレジットカー
ドでおこなえます。

<sect1><heading>Mathematica ディストリビューションの展開</heading>
<p>
バイナリは, Wolfram から CDROM で配布されています. CDROM には, 1ダー
スほどの tar ファイルが含まれており, それぞれサポートされているアーキテ
クチャに対応しています. Linux 用のファイルは, LINUX.TAR です. 例えば 
/usr/local/Mathematica 以下にインストールする場合は, 以下のようにしま
す.
<tscreen>
<verb>
% cd /usr/local
% mkdir Mathematica
% cd Mathematica
% tar -xvf /cdrom/LINUX.TAR
</verb>
</tscreen>

<sect1><heading>Mathematica パスワードの取得</heading>
<p>
Mathematica を実行する前に, 使用するマシンに対応した `machine ID' を 
Wolfram から取得する必要があります.

<p>
Linux 互換ランタイムライブラリがインストールされており, mathematica の展
開が終了したら, Install ディレクトリで `mathinfo' プログラムを使用す
ることで `machine ID' を得ることができます.
<tscreen>
<verb>
% cd /usr/local/Mathematica/Install
% mathinfo
LINUX: 'ioctl' fd=5, typ=0x89(), num=0x27 not implemented
richc.isdn.bcm.tmc.edu   9845-03452-90255
%
</verb>
</tscreen>
ここで, `richc' の `machine ID' は, `9845-03452-90255' となります.
ioctl のメッセージは無視してください. まだ FreeBSD では実装されていません.
Mathematica を実行するたびに同様のメッセージが表示されますが, 実際の使
用に問題はありませんので, 無視してかまいません.

<p>電子メールや電話, ファックスなどで Wolfram に `machine ID' を知らせ
て登録すると, いくつかの番号のグループからなるパスワードが送り返されて
きます.  パスワードを, マシン名, ライセンス番号とともに, mathpass ファ
イルに追加します.

追加は, 以下のようにおこないます.
<tscreen>
<verb>
% cd /usr/local/Mathematica/Install
% math.install
</verb>
</tscreen>
ライセンス番号と, Wolfram から送られてきたパスワードを入力を求めます.
入力を間違えたりして, math.install の実行が失敗しても大丈夫です.
`mathpass' ファイルを手動で編集して, 情報を訂正してください.

<p>
パスワードの入力後, math.install では, インストール方法を, デフォルト
設定でのインストールか、自分で方法を指定するインストールから選ぶことが
できます. 筆者のようにインストールプログラムを信用していない場合は, 自
分でディレクトリを指定する方を選択するでしょう. 自分で指定するインストー
ルを選んだ場合, math.install 自身ではディレクトリの作成はおこないません.
注意してください. 別のウィンドウでシェルを開いて, 指定するディレクトリ
を作成してください. 存在しないディレクトリを指定して, math.install が
インストールに失敗した場合には, ディレクトリを作成し, math.install を
再び実行してください. 筆者らがインストール先に選んだディレクトリは, 以
下の通りです. くれぐれもあらかじめ作成してから, math.install で指定す
るようにしてください.
<tscreen>
<verb>
/usr/local/Mathematica/bin       バイナリファイル
/usr/local/Mathematica/man/man1  マニュアルページ
/usr/local/Mathematica/lib/X11   XKeysymbファイル
</verb>
</tscreen>
また, システムレコードファイルとして, /tmp/math.record を使用するように
設定することもできます. このファイルには, セッションのログが記録されま
す. この設定が終了すると, math.install は残りのファイルを展開して, 必
要な場所に格納します.

<p>
Mathematica ノートブックの機能は, X フロントエンドとして本体とは別に含
まれています. X フロントエンドを正しくインストールするには,
/usr/local/Mathematica/FrontEnd ディレクトリに移動し, ./xfe.install シェ
ルスクリプトを実行します. インストール先を指定しなければなりませんが,
あらかじめ作成する必要はありません. 必要なディレクトリは, すべて
math.install によって作成されているからです. インストールが終了したら,
/usr/local/Mathematica/bin ディレクトリに, ``mathematica'' という名前の
シェルスクリプトが新たに作成されているはずです.

<p>最後に, Mathematica がインストールしたシェルスクリプトを修正する必要
があります. /usr/local/Mathematica/bin に含まれるすべてのシェルスクリプ
トの先頭部分に以下の行を追加します.
<tscreen>
<verb>
XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB
</verb>
</tscreen>
これは, Mathematica が使用する Mathematica バージョンのキーマップファイル
XKeysymDB の場所を指定するものです.

FreeBSD-STABLE を使用している場合は, 以下の行も追加してください.
<tscreen>
<verb>
RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF
</verb>
</tscreen>
これは, Mathematica に Linux バージョンの host.conf を使用するように指定し
ます. FreeBSD の host.conf の文法は, Linux のものと異なっているため, この
指定をおこなわないと, /etc/host.conf に関わるエラーが発生します.

<p>
新しいマニュアルページを利用したい場合は, さらに /etc/manpath.config ファイ
ルを修正する必要があります. また自分の~/.cshrcを変更して, 
/usr/local/Mathematica/bin をパスに追加してください.

<p>
これでインストール作業はすべて終了です. ``mathematica'' とタイプすれば,
見栄えのする Mathematica ノートブックが表示されるはずです. Mathematica 
には, Motif ユーザインタフェースが含まれますが, スタティックにリンクさ
れているため, Motif のライブラリは必要ありあません. 頑張って 
Mathematica をインストールしてください.

<sect1><heading>バグ</heading>

<p>
ノートブックフロントエンドは, 以下のようなエラーメッセージを表示して,
ハングすることがあることが知られています.
<tscreen>
<verb>
File .../Untitled-1.mb appears to be broken for OMPR.257.0
</verb>
</tscreen>

今のところ原因はわかっていませんが, このバグが影響を及ぼすのは, ノートブッ
クの X window フロントエンドのみです. Mathematica エンジン本体に影響は
ありません. そのため, ``math'' によって起動されるコマンドラインのインタ
フェースを使用している場合は, このバグは関係ありません.

<sect1><heading>謝辞</heading>

<p>&a.sosと&a.peterに深く感謝します. Linuxエミュレーションが現在の形に
あるのは, 彼らのおかげです. そして, 彼ら二人にハッパをかけて, 犬のよう
に働かせた Michael Smithに. 今やLinuxエミュレーションは, linuxよりうま
くlinuxバイナリを実行できます! :-)

OpenPOWER on IntegriCloud