LINUX PLIP MINI-HOWTO

Andrea Controzzi, controzz@cli.di.unipi.it

22 July 1996

川島 浩, kei@sm.sony.co.jp

4 December 1996
このハウツーは、あなたがうまく PLIP (Parallel Line Interface Protocol) を設定・使用できることを目的として書かれています。

注意: この文書はかなり以前に書かれたものなので、 いまどきの Linux 環境にはあてはまらない箇所があります。 (JF Project)

注意:

このドキュメントは第二版です。いろいろと書き直したり、追加をおこなって あります。英語は私のネイティブの言語ではないので、きっと文法や綴の間違い があると思います。また、おそらく大丈夫だとは思うのですが、間違いや、古く なってしまった情報もあるかも知れません。

全ての人々に正しい情報を供給するために、** ぜひ ** そのような間違い があったら、私に知らせて下さい!

質問や間違いの訂正、コメントやご意見などは私のメイルアドレス: controzz@cli.di.unipi.it にお願いします。

なにか困った時には、いつでもメイル下さい。 すぐには返事ができないこともあるとは思いますが、必ず返事します。 もし二週間以内に返事が届かなかったら、メイルシステムのトラブルがあったと 思って下さい。そのような場合にはもう一度メイルを出すことをためらわないで ください。あなたを助けることは、私の努めだと思っていますから。 (訳注:うーん、感激。)

まず最初に、Terry Dawson さんの net-2-HOWTO から、たくさんの技術的情報を 得たことをお断りしておきます。私のこのミニハウツーは net-2-HOWTO を 置き換えたり、他の観点から扱うようなものではありません。 ただ単に、あなたが PLIP 接続を簡単に設定できるような方法を提供したい、 ということだけです。このミニハウツーに現れる、(net-2-howto を越える 情報は)私の個人的な経験と、私にコメントを送ってくれたたくさんの人達 からのフィードバックによるものです。

このドキュメントの中では、いくつかの設定ファイルを変更していますが、 ネットワーク一般や、これらのファイルに関する一般的な情報を得るために net-2-HOWTO やその他のドキュメントを併せてお読み下さい。

1. イントロダクション: PLIP とはなにか? どういうときに使うのか?

2. PLIP を使うのに必要なハードウエア

3. カーネルの再構築

4. 設定ファイルについて

5. PLIP リンクを張る

6. ブート時にカーネルが出力するメッセージについて

7. よくある質問 (FAQ)

8. PLIP の簡単インストール

9. PLIP と LP (プリンタデバイス)をうまく共存させるには

10. DOS と LINUX の間で PLIP 接続する。

11. 質問や御意見はぜひ著者にフィードバックを!

12. このミニハウツーの最新版はどこにあるか

13. 謝辞

14. 著作権表示


1. イントロダクション: PLIP とはなにか? どういうときに使うのか?

複数のホスト間を接続するのにはたくさんの方法があります。SLIP に良く似た PLIP は、パラレルポートを介して二つのマシンを接続することができます。

PLIP による接続は、シリアルポートを使う代わりにパラレルポートを使う、 ということを除けば、専用線による SLIP 接続と非常に良く似ています。 パラレルポートは一度に 1ビット以上のデータを送ることができますから シリアルインターフェースよりも高速な伝送が可能です。

PLIP は十分に高速なので、NFS のような立派な TCP/IP 機能も使うことが できます。ですから、たとえば片方のマシンには Linux のフルシステムを インストールしておき、もう片方のマシンには最小限のシステムだけを インストールして、メインのマシンから必要なものをマウントして使う といったことも十分可能です。

不便かもしれないことは、多くのユーザはひとつしかパラレルポートを もっていないということでしょう。これはつまり、プリンタと PLIP を 同時に使えないであろうことを意味しています。つい最近のカーネル までは、たとえ2つ以上のパラレルポートを持っていたとしても、 カーネルモジュールを使うか、他のトリックを使わないと、PLIP と プリンタを同時に使うことはできませんでした。

でも、いまや、あなたが2つ以上のパラレルポートを持っていれば、パッチ を当てることでこの不便を解消することができます。 これには、「PLIP と LP (プリンタデバイス)をうまく共存させるには」の 章を読んで下さい。

そしてなんと、DOS と Linux を PLIP 接続する (望むらくはうまい)方法を 紹介することができるようになりました。

2. PLIP を使うのに必要なハードウエア

PLIP をセットアップするのに必要なハードウエアとしては、(当然)両方の マシンに空いたパラレルポートがあることと、これらを接続するケーブルです。

ケーブルに関しては以下のとおりです。これは、1.2.13 カーネルのソースの 中の plip.c に記述されています。

ここで使われるケーブルはデファクトスタンダードのパラレルヌルケーブル です。つまり、「LapLink」ケーブルとして、いろいろなところで販売されて いるものです。

(訳注: 日本で購入するときには、「インターリンク用パラレル・クロスケーブル」 という名前の方が通りが良いようです。ヨドバシカメラやビッグカメラの ような量販店でも2000〜3000円程度で手に入るようです。)

自分で作る場合には、12本の線の接続が必要です。接続は以下のとおり:

SLCTIN      17 - 17        
GROUND      25 - 25
D0->ERROR   2 - 15          15 - 2
D1->SLCT    3 - 13          13 - 3
D2->PAPOUT  4 - 12          12 - 4
D3->ACK     5 - 10          10 - 5
D4->BUSY    6 - 11          11 - 6

他のピンは接続してはいけません。他のピンというのは:

D5,D6,D7 are 7,8,9
STROBE is 1, FEED is 14, INIT is 16
extra grounds are 18,19,20,21,22,23,24

です。

(訳注: Laplink ケーブルと称するケーブルには何種類か接続があるよう ですが、少なくとも私は上に述べられた通りの接続ケーブルを、すだれ フラットケーブル(シールドなし)で、2m くらいの長さで作成して:

の環境でいずれもうまく動作しています。)

ケーブルに関しては、もっと詳しく書いてある /usr/src/linux/drivers/net/README1.PLIP というドキュメントを読むことを 強くお勧めします。

個人的には自分でケーブルを作るよりも、出来合いのケーブルを買ってくる方を お勧めします。自分でケーブルを作ることによって節約できるお金はわずかな ものですから。 それでもあなたが自分でケーブルを作ることを選ぶのならば、それはあなたの 責任でおこなうのだ(your own risk)、ということを忘れないでください。 私は plip.c の中に書かれていることを正確に伝えているだけであって、 なんら保証をおこなうものではありません。

最後にケーブルの長さについて: 長いケーブル(例えば 3m 以上のケーブル) は、他からの電磁的干渉を受けやすく、問題が発生しやすくなってしまいます。 もしどうしても長いケーブルが必要な場合には、シールドが良く効いた ケーブルを使って下さい。しかし、あまりに長いケーブルは駄目です。 私の思うには、最大でも 15m 程度が限界でしょう。

私にメイルをくれた人のなかで、30m のケーブルでうまくいったという人も います。もし誰か、オフィスと家をつないでみたい(例えば 200m くらい)という 人がいて、お金があるのなら、やってみてください。 最悪の場合でも、動作しないだけですから!

3. カーネルの再構築

あなたは既にカーネルをコンフィグレーションして、コンパイルする方法を 知っているものとします。もしそうでなければ、kernel-howto やその他の ガイドを読んでおく必要があります。

カーネル野郎たちの素晴らしい働きのおかげで、最近のカーネルは「普通の」 人でも本当に簡単にコンフィグレーションできるようになっています。 ぜひ、やってみましょう。

でもまあ、完璧を期するために、以下で簡単な概要について述べます:

注意: ここでは 2.0.xx カーネルを仮定しています。もはや 1.2.xx カーネルを 使う理由はありませんから。

以下では、カーネルのオプション設定に menuconfig を使った場合の例を示します。 他のツールを使った場合でもでもまあ大体似たようなものです。

#make menuconfig

を実行します。

まず、

Loadable module support  --->

[*] Enable loadable module support

と、(もし可能ならば (例えば modules.2.0.0 の場合) 以下も)

[*] Kernel daemon support (e.g. autoload of modules)

をイネーブルしておくことを強くお勧めします。

次に、メニューを戻って

Networking options  --->

を選択します。ここでは少なくとも、

[*] Network firewalls
[*] TCP/IP networking
[*] IP: forwarding/gatewaying

を選択しておく必要があります。

またメニューを戻って、

[*] Network device support
<M> PLIP (parallel port) support

を選択しておきます。

モジュール機能を使うのならば、ぜひ、PLIP をモジュールとしてセットアップ しておきましょう。もしあなたがプリンタ機能も必要な場合には、

Character devices  --->

に行って、

<M> Parallel printer support

とすることで、プリンタ機能もモジュールとして設定しておきましょう。

さて、これでカーネルの PLIP 機能をイネーブルできました。もしこれが あなたにとって初めてのカーネルコンパイルである場合には、その他のオプションに ついても良くチェックした後に、セーブ、終了してください。

最後に、以下のコマンドでコンパイルを行ないます。

#make dep ; make clean
#make zlilo

また、モジュール機能をイネーブルした場合には

# make modules 
# make modules_install

も忘れないで下さい。

4. 設定ファイルについて

まず最初に、あなたが変更を加えようとするファイルはすべてバックアップを とっておきましょう。

  #cp rc.inet1 rc.inet1.BACKUP 

のような風にするのがいいでしょう。

さて、これから接続する2つのマシンの IP アドレスを決めましょう。 以下の例では、標準的な xxx.xxx.xxx.xxx という形式で IP アドレスを 記述しています。

接続する両側のマシンの /etc/rc.d/inet1.rc に以下の行を付け加えます(ファイルの 最後に付け加えるのがいいと思います):

/sbin/route add -net ${NETWORK} netmask ${NETMASK}

ここの、NETWORK と NETMASK という変数はファイルの前の方で適切な値に設定されて いなければなりません。どうすればいいかわからない場合には NET2-HOWTO を読んで 下さい。

以下の条件にあてはまる場合に限り、これらの変数を無視することができます:

2つのマシンをスタンドアロンのネットワークで接続しようとしている場合には、 例えばそれぞれ 200.0.0.1 と 200.0.0.2 というアドレスを選ぶことができます。 そして、NETWORK="200.0.0.0", NETMASK="255.255.255.0" とすることができます。 以下の「PLIP の高速インストール」の章ではこの IP アドレス例を使っています。

注意: 200.0.0.1 や 200.0.0.2 は、単に例としての IP アドレスです。 実際にはこれらのアドレスは使わないことを強くお勧めします。 なぜなら、これらのアドレスはインターネットのどこかで使われている可能性が あるからです! (訳注:最初から安全なアドレスを選んで例示すればいいのに...)

実際に使うアドレスは、以下の「プライベートアドレス」から選ぶことを 強くお勧めします:

10.0.0.0        -   10.255.255.255
172.16.0.0      -   172.31.255.255
192.168.0.0     -   192.168.255.255

両方のマシンの /etc/hosts に、PLIP 経由で接続するそれぞれのホストのエントリーを 追加します。私の例では:

200.0.0.1       one             # this is the "one" IP address
200.0.0.2       two             # this is the "two" IP address

ここで "one" と "two" というのは、接続する2つのホストの名前です。

NFS を使いたい場合には、カーネルのコンフィグレーションの時にそれをイネーブル しておくと共に、エクスポートしたいディレクトリを /etc/exports に記述しておく 必要があります。例えば "one" の /usr を "two" から Read-Only でマウントしたい 場合には、"one" の /etc/exports に以下の行を記述します:

/usr                          two (ro)

5. PLIP リンクを張る

ついに、PLIP インターフェースを起動する番ですが、これらのコマンドは root で実行する必要があります。(もちろん、すでにケーブルは接続されていますよね。)

まず最初に lp デバイスが存在していないことを確認して下さい:

#cat /proc/devices

以下のような行が存在していてはいけません:

6 lp

繰り返しますが、この例では "one" と "two" というホスト名を使っています。 まず、ホスト "one" の上で、以下のようにタイプします:

#ifconfig plip1 one pointopoint two up

次に、これがうまく動作していることを確認します:

  #ifconfig

以下のようなメッセージが表示されるでしょう。

.....
.....
plip1     Link encap:10Mbps Ethernet  HWaddr FC:FC:C8:00:00:01
          inet addr:200.0.0.1  P-t-P:200.0.0.2  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0
          TX packets:0 errors:0 dropped:0 overruns:0
          Interrupt:7 Base address:0x378 

注意: kerneld (必要なモジュールを自動的にロードするデーモン)を使わずに モジュールを使う場合には、ifconfig ... を実行する前に、以下のコマンドを お忘れなく:

#insmod plip

あなたがとても用心深い方ならば、PLIP モジュールがちゃんとロードされている ことを:

 #lsmod

Module:        #pages:  Used by:
plip               3            0

で確認して下さい。

さて、"two" への経路を追加します...

#route add two

そして、"two" へ NFS エクスポートしたければ:

#rpc.portmap
#rpc.mountd
#rpc.nfsd

を "one" の上で実行しておきます。

ホスト "two" の上で実行すべきコマンドも上と同様です。 ただし、上に述べたコマンドの中で、"one" と "two" を入れ換えてくださいね。

もし、片方のマシン(訳注: この場合 "two"のこと) が PLIP 以外の接続を持って いない場合には、そのマシン上で:

#route add default gw one

を実行します。 上に述べた例では、"two" はノートブックで、PLIP 接続しか持って いなくて、それが "one" につながっているという例です。このような場合には \ "two"で、上のコマンドを実行しておきます。

さて、最後に "one" の上で、

#ping two

を実行し、"two" の上で、

#ping one 

を実行して、お互いにパケットのやりとりができていることを確認して下さい。

もちろん、これらのコマンドを毎回実行するのは面倒ですから、なにかスクリプトに しておいて、必要な時に root で実行するのもいいですし、ブート時に自動的に 実行されるように /etc/rc.d/rc.inet2 にこれらのコマンドを付け加えておくのも いいでしょう。以下の章の「PLIP の簡単インストール」を使う場合には必要な 設定ファイルとスクリプトが用意されています。注意: このファイルはちょっと古い かもしれません...ごめんなさい。

6. ブート時にカーネルが出力するメッセージについて

カーネルを再構築して PLIP をイネーブルしたカーネルをコンパイルした後に、 dmesg (8) コマンドを使って、カーネルが出力したメッセージを確認しておき ましょう。

こんな感じのメッセージが出力されているはずです:

NET3 PLIP version 2.0 gniibe@mri.co.jp
plip1: Parallel port at 0x378, using assigned IRQ 7.

もちろん、あなたがモジュール機能を使っている場合には、insmods plip を実行した時(または、kerneld デーモンを使っている場合には PLIP モジュールが必要になった時)にこれらのメッセージが出力されるはずです。 klogd や syslogd の設定によってはこれらのメッセージはシステムログファイルに 出力されますので、これらのメッセージが見つからなくても驚かないでください。 lsmod を実行した時に plip モジュールが存在することを確認できればまあ 十分だと思います。

7. よくある質問 (FAQ)

この章を読むことで、あなたが抱えている問題を解決できることを願っています。 もしこの他にも質問などありましたら、いつでも私当てにメイルをください。

以下では、質問は 「黒丸」 で始まり、その答えは「白丸」で始まるような 形式になっています。

8. PLIP の簡単インストール

このミニハウツーを書く前に、私は簡単に PLIP インストールを行なうための ファイル類を作りました。これを使うと、カーネルをコンパイルするのに加えて、 たった数分で PLIP インターフェースのセットアップができるはずです。 このファイル類は、tar + gzip した形式で、以下の私のホームページに置いて あります:

http://www.cli.di.unipi.it/~controzz/intro.html

おそらく、他の ftp サイトにも誰か置いてくれていると思います。

9. PLIP と LP (プリンタデバイス)をうまく共存させるには

PLIP と LP を共存させる一番いい方法は、カーネルモジュールを使う方法です。 plip.o をロードしておいて PLIP を使い、プリントする必要が生じた時に plip.o をアンロードして...その逆もまたしかり、という方法です。 どうしても PLIP と LP を同時に使いたい場合には、以下のパッチを試してみて ください。

9.1 PLIP と LP を同じポートで使う。

なんらかの理由で PLIP と LP をカーネルの直接サポートで(訳注:モジュール ではなく)使いたい場合には、以下のパッチを試してみて下さい。

以下のソースコードを書き換える必要がありますが、書き換える前にそれらの バックアップをとっておくことをお忘れなく:

******** modifications to linux/drivers/char/lp.c ***********************
struct lp_struct lp_table[] = {
        { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL,
NULL, },
/*      { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL,
NULL, },
        { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL,
NULL, },
*/
};
#define LP_NO 1

******** modifications to linux/drivers/net/Space.c ********************
#if defined(PLIP) || defined(CONFIG_PLIP)
    extern int plip_init(struct device *);
    static struct device plip2_dev = {
        "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, };
    static struct device plip1_dev = {
        "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, };
/*    static struct device plip0_dev = {
        "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, };
*/
#   undef NEXT_DEV
#   define NEXT_DEV     (&plip1_dev)
#endif  /* PLIP */

もちろん、お決まりの免責事項があります: 私は単にこのパッチをもらい、 「そのまま」ここに書いただけです。つまりこれを使うのは、"your own risk" で 行なって下さい。 まあ、いずれにせよ、なにか問題が起きたら、元のファイルに戻して、リコンパイル するだけのことですけどね。

9.2 PLIP と LP を異なったポートで使う。

もし2つ以上のパラレルポートがあるならば、次のパッチを試してみましょう。 片方のポートで PLIP を、もう片方のポートで LP を動作させることができる はずです。

  1. カーネルソースファイルの drivers/char/lp.c 中の1行をコメントアウトする。
    struct lp_struct lp_table[] = {
    { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, },
    { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, },
    /* { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, */
    }; 
    
    3つのポートから 2つのポートになってます。
  2. 次のようにカーネルコンフィグレーションをする。
    PLIP (parallel port) support (CONFIG_PLIP) [n] y
    
    Parallel Printer support [y] y
    
  3. ブート時に次のようなカーネルメッセージが表示されるはず:
    lp1 at 0x0378, using polling driver
    .....
    NET3 PLIP version 2.0 gniibe@mri.co.jp
    plip2: Parallel port at 0x278, using assigned IRQ 5.
    

繰り返しますが、8.1 章と同じ、お決まりの免責事項。"your own risk"

10. DOS と LINUX の間で PLIP 接続する。

このミニハウツーを最初にリリースした後に、Linux と DOS (または Windows)の 間で接続する方法について、たくさんの方から情報をいただきました。そこで、 一般的な興味からこの章を付け加えることにしました。みなさんの役にたつこと を願っています。

この章は、James McDuffie <mcduffie@scsn.net> の Linux Gazzete に 載っていたものをもとにしています。 このドキュメントは、Windows と Trumpet Winsock を使って、Linux と DOS 間 での PLIP 接続をおこなうための基本的なインストール方法から、X-Window の プログラムをWindows 上で実行するための方法まで、広い範囲をカバーしています。

その次の章は、James Vahn <jvahn@short.circuit.com> が送ってくれた追補 です。接続のセットアップに関する詳しい説明と、いろいろな問題を解決する方法に ついて述べられています。

ここでは、すでに Linux 側でうまく PLIP 機能が設定されており、正しいケーブル が接続されていることを前提にしています。そうでない場合には、前の章に 戻って下さい。

さて、DOS 側ではまず、パケットドライバが必要です。以下のところにあると 思います:

ftp://ftp.crynwr.com/drivers/plip.zip 

このプログラムは DOS の上で動作し、イーサネットパケットドライバとして ふるまいます。Windows との間で PLIP を使いたい場合には、Trumpet Winsock も必要です。これは、TCP/IP インターフェースとして機能します。または、 DOS 上の TCP/IP ソフトウエアを使うこともできるでしょう。 (訳注: これらは Win95 では不要のはず)

さて、Linux 側に戻ります。DOS マシンのアドレスを /etc/hosts に 登録します。DOS マシンが登録済みの IP アドレスを持っていない 場合には、適切なアドレスを選びます。(3章で述べた IP アドレスについての 注意を読み返してください。)

Linux マシンを linux、DOS マシンを dos というホスト名だとします。 次のようなコマンドを実行します: (Linux側で)

ifconfig plip1 linux pointopoint dos arp up
route add dos

もちろん、linux をブートするたびにこれらのコマンドを自動的に実行させる には、/etc/rc.d/rc.inet1 に以下のような行を付け加えます:

/sbin/ifconfig plip1 linux pointopoint dos arp up
/sbin/route add dos

これらのコマンドによって、インターフェースをセットアップし、 (ネットワーク)経路を付け加えているわけです。もちろん、二番目の(secondary) パラレルポートを使っているのならば、(plip1 の代わりに)plip2 として くださいね。

DOS/Windows マシンの方に戻って AUTOEXEC.BAT に次の行を付け加えます:

c:\plip\plip.com 0x60
c:\tcpip\winsock\winpkt.com 0x60

ここでは plip.com (パケットドライバ)は c:\plip に、winpkt.com は c:\tcpip にインストールされているものと仮定しています。それ以外の場合には正しい パスを記述して下さい。

上のコマンドでは、plip.com はパケットベクター 0x60 を使い、その後に 同じベクターを使って winpkt.com をロードするように指定しています。 もし、PLIP ケーブルが、lpt1 以外のポートに接続されている場合には、 plip.com のパラメータとして IRQ 番号と I/O アドレスを指定する必要が あります。 また、Windows がパケットベクターを使用可能とするために、winpkt.com を走らせてる必要があります。(上に記述したとおり)

この先は、実際のTrumpet Winsock の設定になります。

必要な設定は、SLIP と PPP のチェックを外すことと、Packet Vector と いう入力欄に 60 と入力することです。 次にこのマシンに割り当てた IP アドレスを指定します。 デフォールトゲートウエイには、Linux マシンの IP アドレスを指定します。

ネームサーバには、あなたのマシンの IP アドレスか、インターネットに接続する つもりがあるのならば、あなたの使っている ISP (プロバイダ)のネームサーバの IP アドレスを指定します。(これについては後でもっと詳しく述べます。) セットアップを終了して、 Winsock を再起動します。これでうまくいくはず! winsock をスタートアップグループに追加して、これで全部自動的にセットアップ されるはずです!

Linux マシンを通じてインターネットに接続する場合には、 IP マスカレード機能 をインストールする必要があります。これについての情報は、NET-2-HOWTO を参照 して下さい。 この機能によって、 Linux マシンの IP アドレスを Windows マシンの IP アドレス として(インターネット側から見て)みせかけることが簡単にできます。

また、X-Window のプログラムを Windows で走らせることのできるプログラムを 見つけました! 以下の場所にあります:

http://www.tucows.com/ 

説明にしたがってセットアップをおこない、Windows マシンから telnet で (Linux マシンに)ログインし、DISPLAY 変数を設定(例えば DISPLAY=duncan:0.0) して、後は必要な(X client) プログラムを走らせるだけです。 xv を Windows の上で走らせるなんて、これ以上にかっこいいことはないでしょう! これがあなたの役に立ちますように!

#####

(訳注: 訳者もこれを探してみました。www.tucows.com は、シェアウエア等の コレクションサイト (infomagic 的なもの) のようで、ここで触れられている X-server エミュレータ on Windows のオリジナル URL は,

http://www.starnet.com/Products/xwin.html

のようです。 ここからは、評価用のデモ版がダウンロードできます。

... ちょっと翻訳からは脱線してしまいますが ... さっそく Win95版をダウンロードして、使用してみましたが、なかなか快適 に動作します。 Xコンソーシアムの X11 リリースから日本語関係のフォント(pcf)をコピーして fonts.dir を作り直してやると、(あたり前ですが) kterm などでちゃんと 日本語も表示できます。 私の本業はゲートアレー設計ですが、電気系の CAD ソフトである、 Verilog の波形表示や、DesignCompilerのウインドウもちゃんと動作します。 (細かい部分ではいくつか動作の変なところもありますが。) ただし、訳者がテストしたのは、イーサネット経由の接続です。 PLIP 接続の上で X-server 機能を走らせる、というのはまだ試していません。)

#####

10.1 DOS と LINUX を PLIP 接続した経験談

注意: 私はこのドキュメントを James Vahn <jvahn@short.circuit.com> から 受取り、そのまま変更せずにここに載せています。ですから、この章に対する 質問は、私よりも彼の方がうまく答えることができるはずです。 というわけで、私にメイルするよりも前に、彼に質問してみてください。 彼の経験は、フロッピーベースの DOS マシンと Linux を接続したというもの ですので、これは一般的な問題に対する完璧な解決方法の一例であると言えます。

最終更新日 11/07/1996 (日/月/年 形式)
<jvahn@short.circuit.com> からの追補

私は、フロッピーベースの DOSマシンから PLIP を使って Linux マシンの二番目の プリンタポートにネットワーク接続しています。Linux の一番目のプリンタポート にはプリンタが接続されています。両方のポートとも常時接続で、DOS ボックス から Linux に telnet できます。以下は、このような環境を構築したときの 記録です。

ブート時にカーネルがプリンタポートを認識する際、除外されていない パラレルポートはすべてプリンタポートとして認識されてしまいます。 つまり、PLIP はどのポートも認識できません。 これを防ぐひとつの方法は、必要に応じてドライバをモジュールとして ロードすることです...

<gniibe@mri.co.jp> によれば:

========================

私は、PLIP/LP をカーネルモジュールとして使うことを勧めています。なぜなら:

PLIP と LP をカーネルモジュールにすると、どのポートを PLIP が使い、 どのポートを LP が使うのかを指定することができます。以下はその例:

# insmod lp.o io=0x378
# insmod plip.o io=0x278 irq=2

2つのパラレルポートを両方とも PLIP に使いたければ:

# insmod plip.o io=0x278,0x3bc irq=2,5

なんて指定も可能です。この例では、

plip0 は I/O アドレス 0x278, IRQ 2
plip0 は I/O アドレス 0x3bc, IRQ 5

を使うという指定です。

=========================

モジュールを使うのが正道という気はしますが、以下ではモジュールを使わずに、 カーネルにパッチをあてて、PLIP とプリンタをそれぞれ別のポートで使う方法を 示します。 もしあなたがモジュールという概念に不案内の場合には、この方が簡単だと 感じるかもしれません。

カーネルソースツリーの中の、2つのファイルを変更する必要があります。 私の場合には カーネル 1.2.13 ですが、私のシステムにうまく合わせるためには .../linux/drivers/net/Space.c を少々変更する必要がありました。 PLIP 定義に関する、205行目あたりを見て、あなたのシステムの コンフィグレーションとうまくあっているかどうかを確認し、どれがどの ドライバに相当するのか(plip0, plip1, plip2)に注意して下さい。 私の場合には、ポート 0x278 は IRQ 5 (カードのジャンパー設定がそうなって いるのです。)を使っているのですが、Space.c の中では、IRQ 2 と定義されて いましたので、マシンのふたをあけてジャンパー設定を変える代わりに、 この部分を変更しました。 他の方法としては、ifconfig を実行する時に IRQ を指定するという方法も ありますが、この方法ではブート時にカーネルが wrong IRQ for PLIP という ようなメッセージを出力されるので、ちょっと嫌ですね。 変更は簡単(一文字だけ)です。

次は、もう少し難しい変更ですが-- .../drivers/char/lp.c の 38行目あたりに次のような部分があるはずです:

struct lp_struct lp_table[] = {
    { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, },
    { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, 
/*  { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, 
 * 0x278 reserved for plip1
 *
 * }; 
 * #define LP_NO 3 
 */
}; 
#define LP_NO 2 

ポートを一つコメントアウトしたことに注意して下さい。この結果、定義されている ポートは2つだけとなります。また、おそらく 0x3bc のポートは PLIP には使えない でしょう。この IRQ 信号は普通このポートには使えません。(昔のモノクローム ディスプレイアダプターでも同様の問題があったように。)

これらのファイルに変更を加える前にちゃんとバックアップはとりましたよね? さて、プリンター、ネット、ダミー、plip 機能をイネーブルして新しいカーネルを 作る番です。

システムを設定します。以下は私の /etc/rc.d/rc.inet1 ファイルの例です:

#!/bin/bash
#
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0

/sbin/ifconfig dummy 200.0.0.1
/sbin/route add -net 200.0.0.0 netmask 255.255.255.0
/sbin/ifconfig plip1 arp 200.0.0.1 pointopoint 200.0.0.2 up
/sbin/route add 200.0.0.2
/sbin/ifconfig dummy down

DOS -> Linux の接続のために、arp が使われていることに注意して下さい。 これは Linux -> Linux の接続では普通使われないものですから。

そして、/etc/hosts に次のような行を加えて、2つのマシン名を定義します:

200.0.0.1       console1
200.0.0.2       console2

ここで console2 は DOS マシンのホスト名です。 実際に設定する IP アドレスについては、オフィシャルなアドレスづけをした ほうがいいでしょう。(Andrea の忠告 (FAQ 参照) を思い出して下さい。) (訳注: 要するに、プライベート IP アドレスを使った方がいい、ということですね。)

これまでの変更と、新しいカーネルを有効にするためにリブートします。 パッチを当てた場合にはブート時に(または dmesg を実行することで)、そうでない 場合にはモジュールがロードされた時に、以下のようなメッセージが出力される はずです:

lp0 at 0x03bc, using polling driver
lp1 at 0x0378, using polling driver
[....]
NET3 PLIP version 2.0 gniibe@mri.co.jp
plip1: Parallel port at 0x278, using assigned IRQ 5.

また、"route" コマンドを実行すると:

Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
console2        *               255.255.255.255 UH    1436   0      136 plip1
loopback        *               255.0.0.0       U     1936   0      109 lo

というようなメッセージが出力されるはずです。

さらに、"ifconfig plip1" というコマンドを実行すると:

plip1     Link encap:10Mbps Ethernet  HWaddr FC:FC:C8:00:00:01
          inet addr:200.0.0.1  P-t-P:200.0.0.2  Mask:255.255.255.0
          UP POINTOPOINT RUNNING  MTU:1500  Metric:1
          RX packets:132 errors:0 dropped:0 overruns:0
          TX packets:136 errors:0 dropped:0 overruns:0
          Interrupt:5 Base address:0x278 

というメッセージが出力されるはずです。

/etc/inetd.conf の中で telnet がイネーブルされていることを確認して下さい。 tcpd や、/etc/hosts.allow (ALL: LOCAL) 、/etc/hosts.deny (ALL: ALL) の 使い方を知るために man ページを読む必要があるかも知れません。 さて、これで "telnet localhost" がうまく動作するはずです。

Linux 側の設定は終りました。今度は DOS 側です。 繰り返しになりますが、ポート 0x3BC を使う場合にはうまく動作するかどうか 疑ってかかった方がいいでしょう。

私の場合には NCSA の telnet と Crynwr の PLIP ドライバを使っています。 以下のサイトにありました:

必ず NCSA telnet のバージョン 2.3.08 と、Crynwr PLIP ドライバのバージョン 11.1 を使ってください。また、Crynwr の SUPPORT.DOC がどこかにありますので、 これも読んで下さい。

さて、CONFIG.TEL ファイルです。 ほとんどはデフォールトのままですので省略して、必要な(願わくば)部分だけ を抜き出しました。私のマシンの二番目(secondary)のパラレルポートは、 0x278, IRQ 5 です。

(訳注 : 以下の設定ファイルのコメント部分も日本語に訳出しましたが、 実際の設定ファイルで(コメントフィールドとはいえ)日本語を使う事が できるかどうかはわかりませんので注意してください。)

myip=200.0.0.2 
netmask=255.255.255.0       # サブネットマスク
hardware=packet             # ネットワークボード(パケットドライバ I/F)
interrupt=5                 # ネットワークボードの IRQ 番号
ioaddr=60                   # ドライバが使うソフトウエア割り込み番号
#
#[変更の不要な部分 ...たくさん...]
#
# ファイルの最後に以下の行を付け加える
name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1 

(ここで、console1 は Linux マシンのホスト名です。あなたのマシン名に合わせて 変更してください。)

私の場合、12フィート(3.6m) のヌルケーブルを作成して2つのマシンを接続 しました。(最初に配線の誤りがあったことを除けば)、何も問題なく動作しています。 標準的な 11芯ヌルプリンタケーブル(訳注: Laplinkケーブルのことかな) でも うまく動作するはずです。

Linux カーネルソースの plip.c の中にケーブルの配線方法が書かれています。

私のケーブルは 17本 <-> 17本 という接続ですが、これは他の用途には使われ ないものでしょうし、どこかで売っていることもないと思います。

@echo off
plip.com 0x60 5 0x278
telbin -s console1

以上のコマンドで、Linux マシンの /dev/ttyp に接続できるはずです。 NCSA telnet は 8つの仮想スクリーンを提供しており、ftp サーバとなること もできます。 PLIP インターフェースは十分なスループットを実現できます。 私の場合にはこんな古いマシンでも ファイル転送で 6.5K/s の速度が 出ています。あなたのマシンではもっと速いでしょう。:-)

11. 質問や御意見はぜひ著者にフィードバックを!

何か質問や意見があったら、以下のメイルアドレスで私にコンタクトして ください: controzz@cli.di.unipi.it

フィードバックは大歓迎です。どんな誤りの指摘でも私にとっては貴重です。 あなたが質問を送ってくれれば、次のリリースではもっとたくさんの FAQ を 書くことができるでしょう。

12. このミニハウツーの最新版はどこにあるか

このミニハウツーは、HOWTO の世話役達によってメンテナンスされており、 毎月 comp.os.linux.answers にポストされています。sunsite や sunsite の ミラーサイトの HOWTO ディレクトリにもあるはずです。

私のホームページにも置いてあります。(ここから私にコンタクトすることも できます。) URL は:

http://www.cli.di.unipi.it/~controzz/intro.html

13. 謝辞

以下の方々に多大なる感謝をします:

14. 著作権表示

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.

If you have questions, please contact Greg Hankins, the Linux HOWTO coordinator, at gregh@sunsite.unc.edu via email.

別途宣言されていない限り、Linux の HOWTO 文書はそれぞれの著者が著作権 を所有しています。この著作権表示が全てのコピーに添付される限 り、Linuxの HOWTO 文書は、どのような物理的、電気的な手段でも、全て、あ るいは一部分のみをコピーして再配布することが可能です。商業的な利用も可 能ですし、推奨しますが、そのような場合には一報してくださることを期待し ます。

Linux HOWTO 文書からの翻訳や派生物、あるいは HOWTO 文書を集めたものは 全てこの著作権表示に従います。すなわち、HOWTO から派生した文書に対して 追加の制限を加えてはいけません。この規則については一定の条件のもとで例 外もあります;詳細については後述する Linux HOWTO のコーディネーターの アドレスまで問い合わせてください。

簡単に言うと、我々はあらゆる可能なチャンネルを経由してこの文書が広く普 及することを願っています。しかしながら、HOWTO 文書を copyright で保護 し、HOWTO 文書を再配布する計画については一報してくださるように期待して います。

なにか質問がある場合には、Linux HOWTO の世話役である Greg Hankins に電子メイルでコンタクトしてください。 彼のメイルアドレスは: gregh@sunsite.unc.edu です。