  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 とはなにか? どういうときに使うのか?

  複数のホスト間を接続するのにはたくさんの方法があります。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 くらいの長さで作成して:

  o  Linux/PLIP

  o  DOS/RDISK600

  o  Win95/ケーブル接続

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

  ケーブルに関しては、もっと詳しく書いてある
  /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)

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

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

  o  ブート時に次のようなメッセージが出力されます:

       SIOCSIFADDR: No such device
       SIOCADDRT: Network is unreachable

  また、上に書かれているように接続をセットアップすると、次のようなエラー
  メッセージが出力されます:

  SIOCSIFADDR: No such device
  SIOCSIFDSTADDR: No such device
  SIOCADDRT: Network is unreachable
  mount clntudp_create: RPC: Port Mapper failure - RPC: Unable to send

     o  なんらかの理由で、このカーネルの PLIP 機能がイネーブルされていま
        せん。次のような可能性が考えられます:

        o  カーネルコンフィグレーション時に、"PLIP support? " という質問
           に yes と答えなかった。

        o  カーネルコンフィグレーション時に、"Printer support? " の質問
           に対して yes と答えた。

        o  PLIP をモジュールとしてコンパイルした。この場合には、それを
           ロードする必要があります。

  o  PLIP と LP を同時にサポートする方法(モジュール以外の方法で)はありま
     すか。おそらく、2つのパラレルポートを使って?

     o  2 つの方法があります。これは、「8) PLIP と LP (プリンタデバイス)
        をうまく共存させるには」の章で述べられています:

        o  両方をサポートするためのパッチをカーネルにあてる。

        o  片方のポートを PLIP に、もう片方を LP に割り当てるためのパッ
           チをカーネルにあてる。

  o  私は2つのコンピュータを接続するためのスクリプトを書きました。自動的
     に接続するために、rc.inet2 の中からこのスクリプトを呼び出し、さらに
     VFS をイネーブルするようにしました。 "two" というホストは "one" の
     ディレクトリをいくつかマウントします。ですから、"two" の /etc/fstab
     にこのためのエントリを追加しました。その結果、"one" がダウンしてい
     る時に "two" をブートすると、"two" は次のようなメッセージを出力して
     数分くらい止まってしまいます:

       "mounting remote file systems...".

     o  これは、"two" が "one" のファイルシステムをマウントしようとした
        けれども "one" がダウンしているので、"two" があきらめるまで待た
        されているという状況です。これを回避するには:

        o  rc.inet2 の中のリモートファイルシステムをマウントするためのコ
           マンドをコメントアウトする。

        o  "two" の /etc/fstab の中のリモートマウントエントリーを削除し
           て、必要になった時にこれらを手動でマウントする。

        というような方法があります。

  o  接続はうまくいっているのですが、ping が通りません。カーネルから次の
     ようなメッセージが出力されます:

       plip1: timed out (1, 89)

     o  これは、「あなた側の接続」はうまくいっていることを意味していま
        す。つまり、あなた側のマシンは信号を送っているのだが、相手から返
        事が返ってきていないという状況です。理由には次のようなものが考え
        られます:

        o  ケーブルがきちんと接続されていない/壊れている/間違っている。

        o  相手のマシンで PLIP が動作していない。

        o  あなたのノートブックコンピュータのパラレルポートが PLIP に適
           していないものである。これについては次の質問を参照して下さ
           い。

  o  PLIP 接続をインストールしたのですが、ping しても 100% data loss に
     なってしまいます。デスクトップとノートブックを接続しています。

     o  ノートブックの中には、PLIP では使えないパラレルポート(プリンタ専
        用) が搭載されいるものもあります。例えば、データを送ることはでき
        ても受信することができないない、などです。こういう場合でもうまく
        PLIP を使う方法があるのかどうかは、私はわかりません。望みがある
        とすれば:

        o  ノートブックのセットアップを眺めて、パラレルポートの設定をプ
           リンタポートから、パラレルポートに変えてみる。

        o  plip モード 0 を試してみる。でも、私はこれはどうやったらでき
           るのか、ちゃんと動作するのか、最近のカーネルでも使えるのか、
           知りませんが...

  o  PLIP はどのくらいの速度が出ますか?

     o  なかなかむずかしい質問です。これには **たくさん** の要素があるか
        らです。以下のような要素がパフォーマンスに大きな影響を与えます:

        o  双方の CPU 速度

        o  パラレルポートの種類と設定

        o  システムの負荷

        o  PLIP の用途

        単なる大雑把な見積りとしては、40Kバイト/秒くらい、というところで
        しょうか。これはシリアル接続に比べてはるかに速く、できの悪いイー
        サネットカードに近い速度でしょう。

  o  plip1 インターフェースに対して、何度も ifconfig up, ifconfig down
     を実行しないとうまく動作しないのですが...?

     o  ifconfig コマンドを実行する時 (ただし、ブートの後の最初の
        ifconfig コマンドでは不要) に、-arp オプションが必要かもしれませ
        ん。私の場合には不要でしたが、必要な場合もあるようです。

  o  プライベートネットワーク用に予約された IP アドレスについての記述を
     読んだことがあるのですが、このハウツーの中で例として使われている
     200.0.0.1 や 200.0.0.2 はこの範囲外です。変更すべきでは?

     o  ええ。そうすべきだと思います。最初から強調しているとおり、これら
        のアドレスは、単に単純だから例として使っているだけです。ですか
        ら、アドレスは自由に変更して下さい。以下は、net-2-howto からの引
        用です:

        RFC1597 はプライベートネットワーク用にいくつかの 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

  o  ソースコードを変更せずに PLIP のパラメータを変えることはできますか?

     o  できます! /sbin/plipconfig コマンドを使ってみて下さい。詳細は
        man ページを読んで下さい。

  o  Debian GNU/Linux を使っているのですが、/etc/rc.d/rc.inet1 や
     rc.inet2 というファイルはありません。どのファイルに plip に関する設
     定を書けばいいのでしょうか?

     o  Debian GNU/Linux の場合には、/etc/init.d/network をエディットし
        てください。この中に rc.inet1 と rc.inet2 に記述する必要のあるコ
        マンドを全部記述します。

  o  PLIP で2つのホストを接続する時になにか問題が生じます。片方のマシン
     は最新のカーネルで、もう片方は古い バージョン 1.0.x PLIP です。こう
     いう組合せは駄目ですか?

     o  ええ。両方のホストで、できる限り同じバージョンの PLIP を使って下
        さい。

  o  1.3.x カーネルの PLIP 機能がうまく動きません。どうしてでしょう?

     o  1.奇数.x のカーネルは、あくまでも開発中(訳注:実験カーネル)のもの
        であることを忘れないで下さい。「神々達」は毎日 linux をより良い
        ものにするために頑張っていますが、安定しないものを我々民草に与え
        たもうことも時々はあります。今現在では、2.0.xx カーネルが安定し
        たバージョンのはずです。
  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 をカーネルモジュールとして使うことを勧めています。なぜな
  ら:

  o  モジュールは設定変更に対して柔軟に対処可能

  o  初心者にとってカーネルの(再)コンパイルは簡単ではない

  o  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 ドライバを使っています。
  以下のサイトにありました:

  o  ftp://ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip

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

  必ず 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.  謝辞

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

  o  Rick Lim <ricklim@freenet.vancouver.bc.ca> PLIP と LP を共存させる
     ためのパッチ

  o  Takeshi Okazaki <GBA03552@niftyserve.or.jp> 異なるポート上で PLIP
     と LP を使うためのパッチ

  o  Jim Van Zandt <jrv@vanzandt.mv.com> このハウツーの中の、「チュート
     リアル」部分についてのアドバイス

  o  James Vahn <jvahn@short.circuit.com> 「DOS と LINUX の間で PLIP 接
     続する」の章の素晴らしい追補

  o  linux ニュースグループに PLIP 関連の記事をポストしてくれた方々、ま
     たは私に直接にメイルをくれた、全ての方々。これらの方々の名前をすべ
     て列挙すると ミニハウツーとしては長くなり過ぎてしまうので: みなさ
     ん、ありがとう!

  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 です。

