4. セットアップ

4.1. 何が必要か

 TERM を構築して使い始める前に、カーネルに TCP/IP のサポートを組み込んである ことを確認しましょう。さらに、ループバックインターフェースも使えるようになっ ていることも確認してください。そうしたら、このセクションの残りに進むことがで きます。

4.2. 概念の説明

 新しい TERM のバージョンでは新しい二つの概念が TERM に導入されました。これ ら二つの概念については、次の二つのサブセクションで解説します。

4.2.1. 共有

 バージョン 1.16 から他のユーザと TERM コネクションを共有するという概念が導 入されました。これは、共有の機能を導入すると、あなたが使っているものと同じ TERM コネクションを他の人たちも使えるようになることを意味します。すなわち、あ なたが TERM コネクションを通じてリモートマシン上で作業中(ローカルマシンから trsh で入っていたとしましょう)、ローカルマシンにいるもう一人の人が、同じ TERM コネクションを使って同時に世界のどこかの ftp サイトからファイルを彼のもとに ftp してくることができるのです。

 この機能を切っておく(つまり、TERM をプライベートモードで起動する)と、あなた と、そしてあなただけ(われわれは root をカウントに入れません :-) が TERM コネク ションを利用できます。

 もちろん、あなたの使っているのと同じ TERM コネクションを他の人たちに利用さ せたい側だけに共有 TERM をインストールしたいと思うでしょう。そのため、もし他 の人たちがあなたのローカルマシンにログインアカウントをもっていて、それをリ モートネットワークのどこかから使いたいというような場合、あなたはリモート側の TERM で共有機能を導入することになります。このような方法をとると、これらすべて の人たちがあなたのマシンに同じ TERM コネクションを互いに、そしてあなたと共有 してログインすることができます(注意:最初の例では、TERM コネクションのローカ ル側で共有機能を導入しておく必要があったのです。)

 root としてインストールする際の注意:root として TERM をインストールする際 には、最初に 'term' というメンバーのいないグループを /etc/group に以下のよう な行を追加して作っておく必要があります(コンパイルの前に)。

    term::16:root

 または、グループ ID 16 番がすでに使われてしまっていたら別の未使用のものを 使ってください。

 コンパイルとインストールが終わったら TERM とそのクライアントを 'term' に SGID してください:

    chgrp term <term_client>
    chmod g+s <term_client>

 さらに、TERM 対応の他のプログラムも 'term' に SGID しておかねばなりません。

4.2.2. フル TERM ネットワーク

 TERM バージョン 2.0.0 から、フル TERM ネットワークという記述が使われるよう になりました。外界とのコネクションが TERM コネクションだけしかない場合、フル TERM ネットワークを使うことになり、あなたはフル TERM ネットワークを入れて TERM を構築するべきでしょう。このような場合、共有ディレクトリに termnet というファ イルが置かれます。これは TERM に外界とのコネクションが TERM を通じてしか行わ れないことを TERM に知らせるためのものです。

 TERM コネクションに加えて何らかのネットワークコネクションがある場合、TERM 対応プログラムは最初にこのネットワークコネクションを通じて仕事を完了しようと します。これに失敗すると、TERM が起動され TERM コネクションを通じて仕事を完了 しようとします。このことをもっと明確にするために、いま TERM 対応 telnet が使 われた例を考えます。この telnet は TERM と共にでも、そうでなくても動作します。

    telnet localhost

は接続のために TERM を使いません。しかし、

    telnet zeus.cs.kun.nl

は他のタイプのネットワークコネクションがない限り TERM を使います。

 フル TERM ネットワークは嘘のホストネームを使うことを意味します。つまりリ モートホストのものが使われるわけです。さらには、bind(0) が常にリモートホスト で動作するようになります。本質的には、このことによって TERM が走っていても TERM を通さない多くのプログラムは利用できないことになります。残念ながら、 UDP プログラムやデーモンのほとんどは、この悪いトリックのため TERM のもとでは 動作しません。

4.3. TERM の構築

 もしあなたがラッキーなら、これは make を起動するだけです。しかしおそらくほ とんどの場合、それ以上のことをする必要があるでしょう。新しいバージョンの新し い機能のために、TERM のバイナリを作る作業はちょっと複雑になっています。バイナ リを得るために二つの方法があります。

 TERM を構築するためのこれらの方法をすべてカバーするためにこのセクションは 3 つのパートに分かれます。

  1. TERM の構築、バージョン 2.0.0 以上

  2. TERM の構築、バージョン 1.16 から 1.19 まで

  3. TERM の構築、バージョン 1.15 まで

4.3.1. TERM の構築、バージョン 2.0.0 以上

 最初に、上の「フル TERM ネットワーク」について のセクションを読んだかどうか確認してください。

 TERM バージョン 2.0.0 かそれ以上では、TERM のバイナリとクライアントを作るた めに多くの方法があります。これらのすべては root であっても一般ユーザであって も実行可能です。

  1. フル TERM ネットワークを使わずにプライベートモードで TERM を構築する

  2. フル TERM ネットワークを使ってプライベートモードで TERM を構築する

  3. フル TERM ネットワークを使わないで共有モードで TERM を構築する

  4. フル TERM ネットワークを使って共有モードで TERM を構築する

 これらのバージョンの TERM では、configure スクリプトを用いる新しいコンパイ ル方法が導入されました。configure は起動されると何のオペレーティングシステム に TERM をインストールしようとしているのか、ソースディレクトリは利用可能か、 ランタイムオプションをつけるかどうかなどをチェックします。そこで見つけたこと をもとにして、configure は TERM のパッケージに含まれる Makefile.in を使って Makefile を作ります。

 configure のオプションのうち重要な2つは --root と --user で、これは TERM のインストールが root として行われるのか、一般ユーザとして行われるのかを規定 します。TERM のインストールには、あなたの望むように、他のオプションも指定でき ます(例えば標準的でない path)。

  1. フル TERM ネットワークを使わずにプライベートモードで TERM を構築する

     この方法で TERM を構築するには、次のようなコマンドを実行する必要があります (root としてか、一般ユーザとしてかの両方):

        ./configure --root または --user
        make install installman

     これはバイナリを構築し、それらのバイナリとマニュアルページをインストールし ます。

  2. フル TERM ネットワークを使ってプライベートモードで TERM を構築する

     この方法で TERM を構築するには、次のようなコマンドを実行する必要があります (root としてか、一般ユーザとしてかの両方):

        ./congfigure --root または -user
        make installnet installman

     これはバイナリを構築し、それらのバイナリとマニュアルページをインストールし ます。

  3. フル TERM ネットワークを使わないで共有モードで TERM を構築する

     この方法で TERM を構築するには、次のようなコマンドを実行する必要があります (root としてか、一般ユーザとしてかの両方):

        ./configure --root または --user
        make share installman

     これはバイナリを構築し、それらのバイナリとマニュアルページをインストールし ます。

  4. フル TERM ネットワークを使って共有モードで TERM を構築する

     この方法で TERM を構築するには、次のようなコマンドを実行する必要があります (root としてか、一般ユーザとしてかの両方):

        ./configure --root または --user
        make share installnet installman

     これはバイナリを構築し、それらのバイナリとマニュアルページをインストールし ます。

4.3.2. TERM の構築、バージョン 1.16 から 1.19 まで

 これらのバージョンの TERM を構築するために、以下の方法の中から選ぶことがで きます。

  1. 一般ユーザとして、プライベートモードで TERM を構築する

  2. 一般ユーザとして、共有モードで TERM を構築する

  3. root として、プライベートモードで TERM を構築する

  4. root として、共有モードで TERM を構築する

 いかに、TERM のコンパイルの時に共有機能を導入したり、切ったりする方法につい て説明します。

  1. あなたは一般ユーザで(root アクセスがなく)、他のユーザと TERM コネクション を[共有したくない]とします。

     TERM コネクションを他のユーザと共有したくないユーザは、TERM を構築するため に以下のようにします:

        make DO=install OS-type
        make installman

     TERM の後、そのクライアントとマニュアルページが構築されインストールされます。

     さらに、あなたは '$HOME/.term' というディレクトリを作る必要があります。これ は、TERM が 'termrc' ファイルを探すためのディレクトリです。

  2. あなたは一般ユーザで(root アクセスがなく)、TERM コネクションを他のユーザ と[共有したい]とします。

     TERM コネクションを共有したいユーザは、このようにします:

        make DO=installshare USERSHARE=$HOME/term OS-type
        make installman

     TERM の後、そのクライアントとマニュアルページが構築されインストールされます。

     さらに、パーミッション 'drwxrwxr-x' をもったディレクトリ '$HOME/term'(デ フォルト)が必要です。最低でも、このディレクトリの中に TERM がそのコネクション に使うソケット('tmp/private/socket=')が見つかるでしょう。

  3. あなたは root で、他のユーザと TERM コネクションを[共有したくない]としま す。

     TERM コネクションを共有可能にしたくない root は TERM を構築するために以下の ようにします:

        make DO=install OS-type
        make installman

     TERM の後、そのクライアントとマニュアルページが構築されインストールされます。

     さらに、パーミッション 'drwxr-xr-x' をもったディレクトリ '/usr/local/lib/term'(デフォルト)が必要です。最低でも、このディレクトリの中に TERM がそのコネクションに使うソケット('tmp/private/socket=')が見つかるでしょ う。

  4. あなたは root で、TERM コネクションを[共有したい]とします。

     最初に、上の「共有」のセクションを読んだことを確認してください。

     TERM コネクションを共有したい root は以下のようにします:

        make DO=installshare OS-type
        make installman

     TERM の後、そのクライアントとマニュアルページが構築されインストールされます。

     さらに、パーミッション 'drwxrwxr-x' をもち TERM グループに所有されたディレ クトリ '/usr/local/lib/term'(デフォルト)が必要です。最低でも、このディレクト リの中に TERM がそのコネクションに使うソケット('tmp/private/socket=')が見つか るでしょう。

4.3.3. TERM の構築、バージョン 1.15 まで

 これらのバージョンの TERM の構築にはこのコマンド以外に必要ありません。

    make DO=install OS-type
    make installman

 この後、TERM と、そのクライアントとマニュアルページがうまく構築されてインス トールされ、使えるようになっているでしょう。

 さらに、ディレクトリ '$HOME/term' を作ることが必要です。このディレクトリは、 TERM が termrc ファイルを探すために使います。

 やらなくてはならないことは、Makefile 中のいくつかの PATH とコンパイラフラグを 変更することだけです。

4.4. client.a, libtermnet.a, libtermnet.sa, libtermnet.so

 TERM とともに、TERM クライアントのための関数群のライブラリが提供されていま す。

 バージョン 1.16 までは、このライブラリは client.a と呼ばれていました。TERM のコンパイル時にこのライブラリも構築され、TERM クライアントのコンパイルの時に 使われていました。また、別のディレクトリにはインストールされませんでした。

 バージョン 1.16 からライブラリの名前が libtermnet.a に変わっています。バー ジョン 1.19 まではこのライブラリは TERM ディレクトリに作られ、TERM クライアン トのコンパイルに利用されています。これは別のディレクトリにはインストールされ ません。

 バージョン 2.0.0 からは、libtermnet.a に加え libtermnet.so と libtermnet.sa (シェアドライブラリと exported initialized library)が TERM パッケージのコンパ イルの際に作られるようになりました。パッケージのすべての部分のインストールの 際に、これら3つのライブラリファイルもディレクトリ '/usr/local/lib'(デフォル ト)にインストールされます。その後、libtermnet.so.2 から libtermnet.so.2.x.x にリンクが張られます。最後に、ldconfig がファイル '/etc/ld.so.conf' に書かれ たコマンドラインによって特定されるもっとも新しいシェアドライブラリへの必要な リンクとキャッシュ(ランタイムリンカ、ld.so が利用するために)を作り、これはも とからあるディレクトリ('/usr/lib' と '/lib')についても同じです。インストール が正しく終了するとスタティックライブラリの代わりにダイナミックライブラリを使 うように構築された TERM クライアントがこれら3つのライブラリファイルを使える ようになります。また、これらのライブラリはあなたの自分のソフトウェアを TERM 対応にするために利用することもできます(以下参照)。

4.5. 環境変数の設定

 TERM はユーザによって設定されたいくつかの環境変数を認識します。これらのう ち、私が解説する最初の3つは:

 これらの変数を設定することで TERM の実行方法をコントロールすることができま す。

 バージョン 1.15 までの TERM では変数 TERMDIR だけが重要です(これらのバー ジョンに共有モードはありません)。これらのバージョンでは、TERMDIR は以下のよう にセットするとよいでしょう。

    setenv TERMDIR $HOME     (csh または tcsh)
    export TERMDIR=$HOME     (bash)

 バージョン 1.16 からは TERM はさらに変数 TERMSHARE と TERMMODE を認識するよ うになっています。これらの変数によって、TERM にプライベートモードで走るのか共 有モードで走るのかを知らせることができます。ここではプライベートモードと共有 モードへの変数の設定法を解説しましょう。

 TERMMODE は以下の3つの値をとります。

  1. TERM をプライベートモードで実行するには、変数 TERMDIR と TERMMODE を以下の ように設定します:

     csh と tcsh では

        setenv TERMDIR $HOME
        setenv TERMMODE 0

     bash では

        export TERMDIR=$HOME
        export TERMMODE=0

  2. TERM を共有モードで利用したい場合、変数の設定には二つの方法があります:

    1. TERM が SUID プログラムとしてインストールされた場合、 TERMMODE のみ設定する 必要があります。

          setenv TERMMODE 2    (csh または tcsh)
          export TERMMODE=2    (bash)

    2. TERM が SGID プログラムとしてインストールされているときには、変数は以下の ように設定する必要があります。

       csh か tcsh では

          setenv TERMMODE 1
          setenv TERMDIR /usr/local/lib/term
          setenv TERMSHARE $TERMDIR

       bash では

          export TERMMODE=1
          export TERMDIR=/usr/local/lib/term
          export TERMSHARE=$TERMDIR

       このように変数を設定することで、古いクライアント(古いバージョンの client.a をリンクしたクライアント)の実行が可能になります。

       バージョン 2.0.0 から TERM はさらに変数 TERMSERVER を認識するようになりまし た。この変数は複数のモデムを持っていて、同時に2以上のコネクションを張るとき に設定する必要があります。どのコネクションを使うのか特定するために、TERM を サーバネーム付きで起動しなくてはなりません:

          nohup term -v /dev/modem1 Connection1 &
          nohup term -v /dev/modem2 Connection2 &

       ユーザは使いたいコネクションの名前を変数 TERMSERVER に設定することになりま す。

          setenv TERMSERVER Connection1    (csh または tcsh)
          export TERMSERVER Connection2    (bash)

4.6. TERM のテスト

 TERM のテストデーモンを構築するために make test (新しいバージョンの TERM で は make termtest)を実行してください。(term)test はあなたのシステム上で二つの コピーとして作動し、trsh と tupload が可能になっているはずです(試してみてくだ さい

    tupload ./term /usr/tmp

は '/usr/tmp’に TERM バイナリのコピーを作成します)。ローカルの TERM の出力 は 'local.log'に、リモートのものは 'remote.log'に出力されます。あなたは TERM を -d255 フラグをつけてこれらのファイルにデバッグ出力をさせることができ、ま た、termrc ファイル中でセットすることもできます。

注意:test は ./test と実行し、あなたのシステムの test が実行されてしまわない ようにしてください。

4.7. TERM とコミュニケーションプログラム

 TERM を使えるようにする前に、kermit や seyon といったコミュニケーションプロ グラムを用いてモデム経由の接続を確立しなくてはなりません。コミュニケーション プログラムのドキュメントに、リモートマシンとの接続の確立には何をすることが必 要なのかが書かれています。

 リモートマシンとの接続が確立し、TERM を起動しようというときに、リモートマシ ンとの接続を切らないでコミュニケーションプログラムを終了、あるいは中断する必 要があります。コミュニケーションプログラムが linecheck や TERM からキャラクタを奪ってしまわないように、このことが必要です。

 どのように接続を保持し、コミュニケーションプログラムが linecheck や TERM か らキャラクタを奪わないようにするのかについて、以下にいくつかのコミュニケー ションプログラムを挙げます。

4.7.1. Kermit

 kermit を使っているなら、TERM を始めるのは簡単です。ローカルの kermit プロ ンプトで suspend と打ち込めばいいのです。Linux のプロンプトに戻ったでしょう。 このプロンプトから TERM コネクションを張ることができます。

4.7.2. Seyon

 あなたが seyon を使っているなら、linecheck や TERM を起動するのに簡単な方法 は Transfer Menu ('$HOME/.seyon/protocols'によってコントロールされています) に登録してしまうことです。

 ファイル '$HOME/.seyon/protocols' に加えてください:

    "Line check" "$cd /tmp; linecheck"
    "Term" "$term -c off -w 10 -t 150 -s 38400 -l $HOME/tlog"

 その後ローカルマシンで linecheck や TERM を実行したければ、Transfer Menu を 選んで、"Line Check" か "Term" アイテムを選択し、"Go" します。

 もちろん、シェルコマンドボタンを使って、ポップアップダイアログボックスに 'linecheck' や 'term' と打ち込むこともできます。これはさらに自動的に入力と出 力をリダイレクトします。

4.8. 透過的なリンクを作る

 きっと、あなたはローカルとリモートのホストとの間のモデムコネクションを確立 できるでしょう。一般的には、何らかの種類のターミナルサーバにダイアルし、そこ からリモートホストに接続することになるでしょう。あなたはさらにモデムと会話す るために kermit や seyon などのある種のターミナルソフト(著者が使っているた め、この文書では例としてkermit を挙げます)を使っていることでしょう。もしモデ ムやターミナルソフトで問題が起きたら、Serial-HOWTO を読んでください;きっと助 けになるでしょう。

 リンクを確立し終えたら、それを可能な限り透過的にしたいと思うでしょう。ター ミナルサーバのコマンドをチェックしてください(help か ? から始まるでしょう)。 可能なら8ビットオプションをつけてください。これはシステムへのログインの仕方 を変えることになるかもしれません。例えば、もしサーバが rlogin を使っていた ら、それを使わなくてはならないし透過的にするためにはそれに -8 オプションをつ けなければなりません。特に xon/xoff フロー制御には注意してください。それは好 ましくありません。rts/cts (ハードウェア)フロー制御ができるようにしてみてくだ さい。8ビット rts/cts コミュニケーションを形成するためにモデムのドキュメント を読む必要があるかもしれません。

4.9. linecheck を実行する

警告:いくつかの文書では、linecheck のコマンドラインオプションが間違った順序 で説明されています。私はこれをチェックし、以下のオプションの順序が正しいこと を確認しました。

注意:TERM バージョン 2.3.0 からはコマンドラインにログファイルの名前を必要と しなくなりました。ログファイルは linecheck を起動したディレクトリ上のファイル 'linecheck.log' にその出力を書き出します。

 Linecheck は TERM とともに供給されるプログラムです。リンクの透過性をチェッ クして TERM が正しく動作するために必要な設定の情報を提供します。linecheck は 8ビットのキャラクタ 256 個をそれぞれ送り、それがきちんと送信されたかどうかを 検査します。TERM はリンクを通じて送信できないキャラクタを設定されなくてはなり ませんので、linecheck はそのキャラクタが何なのかを特定するのです。linecheck は透過的モデムリンクを利用可能な形に確立してから用います。linecheck を動作さ せるために、以下のこと行ってください:

  1. リモートシステム上で実行

        linecheck linecheck.log

  2. ローカルシステムに戻って、コミュニケーションプログラムを中断します(上を参照)

  3. ローカルシステム上で実行

        linecheck linecheck.log > /dev/modem < /dev/modem

 linecheck の実行が終わると、linecheck.log ファイルの終わりにいくつか数字が 出ていることがわかります。これらは、リンクの相手側において termrc の中でエス ケープされなくてはなりません。例えば、私のシステムで、ローカルの 'linecheck.log' に何も書かれておらず、リモートの 'linecheck.log'に 29 と 157 をエスケープするように書かれていたとします。そこで、ローカルの 'termrc' では これらのキャラクタをエスケープし、リモートの 'termrc' では何もエスケープしま せん。もし片側でキャラクタをエスケープしたら、反対側では無視しなくてはなりま せん。ですからこの例では、リモートシステムで 29 と 157 を無視しなくてはならな いことになります。

 linecheck がハングアップしたら、

    linecheck linecheck.log 17 19

をリモートシステムで、そして

    linecheck linecheck.log 17 19 > /dev/modem < /dev/modem

をローカルで実行してみてください。これは xon/xoff (フロー制御)をエスケープし ます。これはソフトウェアフロー制御を行っているときにラインをハングアップさせ てしまいます。もし、このことでハングアップの問題が解決したなら、それぞれの 'termrc' で 17/19 をエスケープ/無視する事になります。もしターミナルサーバが また別のキャラクタを通さないようになっていたら、上と同じようにして、それらの キャラクタをエスケープして linecheck を実行してみてください。linecheck がハン グアップしたらこれらのキャラクタを特定することができます。もしこうなってし まったら、kill して、その後ログファイルを見てください。最後に送信されたキャラ クタが悪いということなのでしょう。これらのキャラクタをエスケープしてもう一度 試してみてください。

 最終的に、私のローカルの termrc はこのような行を含みます。

    escape 29
    escape 157

 そして、リモートの termrc はこのような行を含みます。

    ignore 29
    ignore 157

 これはリモートの 'linecheck.log' に 29 と 157 をエスケープするように書かれ ていたからです。

4.10. TERM を実行してみる

 リモートシステムにログインして、(まだやっていなければ)可能な限り透過的なリ ンクを張ってください。TERM をリモート側で起動します。私は以下の方法をとってい ます:

    exec term -r -l $HOME/tlog -s 38400 -c off -w 10 -t 150

 それぞれのオプションを一つ一つ書き下しましょう(私はこれらのオプションを termrc に簡単に加えることもできたのです。しかし私は、TERM が作動しているとき にファイルを編集することを避けるために、このような方法をとっています)。

 exec は現在のシェルを終了して、そこに与えられたプログラムを走らせます。私は ログインシェルをもう一度使う気がないので、exec しています;それは単にメモリの 無駄だからです。リンクのデバッグを行っているときや、確実にリモートの TERM を kill したい場合には、exec を使うことを望まないかもしれません。

 -r オプションは、片側だけでつける必要があります。TERM はこれをコネクション のリモート側だと判断します(TERM のリモート側はあなたのローカルマシンであるこ とも可能であることに注意してください)。もし片側でこのオプションを使わないと、 TERM クライアントは自発的にクラッシュします。

 -l $HOME/tlog :これは、ホームディレクトリのファイル tlog にエラーを記録し ます。デバッギングには非常に有効です。これをやらない手はありません。

 -s 38400 :私は 14400 ボーの圧縮機能付きモデムを持っています。最適な圧縮比 で、可能な限り速くパイプを通したいのです。さらに遅いモデムでは、幾分低い値を 用いるべきでしょう。もしあなたがシリアルポートとして 16450 uart を持った遅い マシンを使っているのなら、高いボーレートはシリアルポートのチップへの過負荷に よってデータを失うかもしれません。TERM はこれを修復するでしょうが、ログファイ ルに多くのエラーメッセージ(または 0.99pl15 以上のバージョンの linux カーネル からのオーバーランウォーニング)がある場合、この数値をさらに下げることになる でしょう。

 -c off :これはデータ圧縮をオフにします。私は圧縮モデムを持っているので、二 重の圧縮をしたくないのです。

 -w 10 -t 150 :これも、速いモデムリンクを最適化するためのオプションです。私 は window を 10 に、timeout を 150 にセットしています。これは term_setup のマ ニュアルページの推奨値によるものです。

 コミュニケーションプログラムを中断して(上を参照)ローカルマシンに戻ってくだ さい。あなたは TERM が動作しているときにそれ(訳注:コミュニケーションプログ ラム)も動作していることを望まないかもしれません。シリアルポートを通して TERM とぶつかってしまうかもしれないからです。もしコミュニケーションプログラムを終 了してもモデムがハングアップしないようにできるならば(DTR がトグルしたとき)、 この時点でプログラムを終了してしまうこともできます。

 ではローカルで TERM を起動しましょう。私はこれを用いています:

    term -c off -; $HOME/tlog -s 38400 -w 10 -t 150 < /dev/modem > /dev/modem &

 TERM にモデムがどこにあるのかを教えてやる必要がありますので、標準入力と標準 出力を '/dev/modem' に向けています(< と > が行っているのがこれです)。さらに バックグラウンドで実行しています;このスクリーンで他にやりたいことができるか らです。

 これで TERM は動作するはずです :-)。trsh を実行して、何が起こるか確かめてく ださい。もしハングアップしたり、リンクが遅く感じるようであればそれぞれの側の 'tlog' を見てみてください。タイムアウトやエラーが発生していますか?もしそうな らば、何かを間違えて設定してしまったことになります。もう一度(これを読み終えた 後で :-)試してみてください。なお、コネクションがおそろしく速く見える、と いうことではありません。特に圧縮を使っている場合には−−ちょっとギクシャクし た感じになるでしょう。本当のスピードはファイル転送などの時にわかります。

4.11. TERM を終了する

 間違いなく、あなたが TERM を使ってたくさんの作業をした後、作業を終えて TERM コネクションを落とそうと思うでしょう。このためには4つの方法があることを理解 しなければなりません。

  1. 両方の側の TERM プログラムを kill する。これがコネクションを終了するために 勧められるもっとも単純な方法です。

  2. より良い方法は以下のコマンドをローカルで実行することです。

        echo '00000' > /dev/modem

     この方法でうまく TERM コネクションを終了できるでしょう。これはすべてのバー ジョンの TERM で働きます。ゼロの列が少なくとも5個の0を含んでいるようにして ください。

  3. バージョン 2.0.0 以上の TERM の termrc ファイル中で、 terminate '<some string>' という記述を加えられるようになりました。これは TERM を終了させる文字列('00000'がデフォルト)を設定します。偶然終了してしまう ことを避けるため、5文字以上でなければなりません。

  4. バージョン 1.14 からは tshutdown というプログラムがあります(実際は、バー ジョン 1.14 ではこれはパッチの形で入手できたのですが、それより新しいバージョ ンではパッケージに組み込まれました)。tshutdown の実行で TERM コネクションをう まく終了できます。

4.12. パーティションから TERM を削除する

 そうですか、これが必要なんですね。TERM を離れたいあなたのために TERM を削除 するステップについて説明します。TERM を削除する課程で以下のステップを踏まねば なりません:

 これらの作業によって、TERM に関連するあらゆるものを削除したと確信できること になります。

4.13. コネクションを最適化する

 TERM を実行させることができたら、最適化を行おうと思うでしょう。リンクのス ピードを測るのによい方法は、ファイルをアップ/ダウンロードしながら一つのウィ ンドウで tmon を実行することです。(大きな)テキストファイルと圧縮されたファイ ルの両方で試してみてください;プレインテキストは圧縮されたファイルの二倍くら い速いでしょう。いじれるパラメータはボーレート(-s)、圧縮(-c)、ウィンドウ (-w)、タイムアウト(-t)、そしてリトレイン(-A)です。

 リトレインパラメータには注意してください。TERM バージョン 1.19 ではリトレイ ンパラメータなしのものに比べ 80% から 90% の性能低下がありました。これが TERM バージョン 1.19 のバグなのか、この問題が TERM バージョン 1.19 だけのもの なのかはっきりしていません。

 ボーレート:TERM が毎秒シリアルリンクを通して送ろうとするビット数の最大の数 です。TERM はこれ以上の速さでキャラクタを送ることを避けます。デフォルトはコン ピュータのシリアルポートのスピードを使うことですが、電話回線の状態などでモデ ムの動作速度がシリアルポートより遅い場合、このスピードは速すぎるかも知れませ ん。ボーレートオプションは、モデムへの出力をバッファリングするシステムで使用 するものです。セットアップとチューニングの時には大きすぎるものよりは、小さな ボーレートを使う方がいいでしょう。高速のリンク(> 38400)では、無制限にするのが おそらく有利でしょう。これは値 'off' を使うことで実現できます。TERM はそうす ると、フロー制御を完全にカーネルに依存してしまいます。

 圧縮:圧縮モデムを持っていないのなら、これをオンにしたいでしょう。圧縮モデ ムを持っているのなら、圧縮はオフにすべきです。でないと二重に圧縮することに なって、一般的には送信するデータを増やしてしまうことになります。圧縮モデムは MNP-5 や V42.bis プロトコルを用いるものです。モデムの説明書とモデムの接続メッ セージを確認してください。

 ウィンドウ:これは、リモートの TERM から承認(または ack)が返ってくるまでに ライン上を送ろうとするデータ、あるいはパケットのまとまりの数です。速いモデム では、これを大きくすることは利益になるでしょうが、遅いリンクではこれがリモー ト側を圧迫するかもしれません。

 タイムアウト:TERM が ack を待つ時間です。ウィンドウを上げたなら、またログ ファイルにタイムアウトが出たら、これを増やしてみてください。

 14400/V42.bis では、私は -c off -w 10 -t 150 を使っています。tupload で圧縮 ファイルではだいたい 1700 cps を、アスキーファイルでは 3500 cps を得ています。

4.14. トラブルシューティング

 このセクションでは、TERM やそのクライアントの実行で問題が生じた時に何を確認 すべきかについていくつかの考えが示されています。