Text-Terminal-HOWTO David S. Lawyer dave@lafn.org v1.13, June 2000 翻訳:青野 正幸 masayuki@shikoku.ne.jp 日本語訳:2000 年 7 月 22 日作成 この文書は、テキスト端末とは何か、どのように働くのか、インストールや設 定の方法、それに端末の修理方法について述べています。端末のマニュアルが なくとも役に立つでしょう。Linux システム上での本当の端末について書いて いますが、端末エミュレータについても適用できますし、非 Linux システム に使えると思います。 ______________________________________________________________________ 目次 1. はじめに 1.1 著作権表示、登録商標、免責事項、クレジット 訳注:ライセンス関係については原文をそのまま示します。 1.1.1 Copyright 1.1.2 Disclaimer 1.1.3 Trademarks. 1.1.4 Credits 1.2 将来の計画:助けてください 1.3 この HOWTO の最新版について 1.4 関連文書 1.5 本書で使う用語 1.6 端末とは ? 1.7 日本語版謝辞 2. 端末のタイプ 2.1 ダム端末 2.2 テキスト端末 2.3 グラフィックス端末 2.3.1 シリアルライングラフィックス端末 2.3.2 高速グラフィックス端末 (しばしば他の名前で知られる) 2.4 ネットワークコンピュータ (NC) 2.5 PC 上でのエミュレーション 3. クイックインストール 4. なぜ端末を使うのでしょう? 4.1 イントロ 4.2 低価格のハードウェア ? 4.3 ソフトウェアの管理 4.4 ハードウェアアップグレード 4.5 端末のその他の利点 4.6 端末の主な難点 4.7 テキスト端末は時代遅れでしょうか ? 5. 端末動作についての概要 (Linux) 5.1 デバイス名称 5.2 ログイン / ログアウト 5.3 半 / 全二重 5.4 端末のメモリ 5.5 端末へのコマンド 5.6 Terminfo で解決した標準化の不足点 5.7 インターフェース 5.8 エミュレーション 5.9 コンソール 6. /dev/tty のような端末スペシャルファイル 6.1 シリアルポート端末 6.2 擬似端末 6.3 制御端末 /dev/tty 6.4 /dev/ttyIN ``端末'' 6.5 コンソール /dev/ttyN 6.6 ``mknod'' でデバイスを作成する 7. 端末の動作に関する詳細 7.1 端末メモリの詳細 7.2 初期の端末 7.3 エスケープシーケンスと制御コード (イントロ) 7.3.1 制御コード 7.3.2 エスケープシーケンス 7.4 表示属性とマジッククッキー 8. 幾つかの端末に固有な特徴 8.1 カラー 8.2 マルチセッション 8.3 プリンタ / 補助ポート 8.4 ページ 8.5 文字セット 8.6 フォント 8.7 キーボードと特殊キー 9. 端末エミュレーション -- コンソール 9.1 イントロ 9.2 エミュレーション用に TERM を使わないで 9.3 通信 (ダイアル) プログラム 9.3.1 X-Windows でのエミュレーション 9.3.2 本当の端末のほうが良い 9.4 テスト端末エミュレーション 9.5 Linux コンソール 9.6 エミュレーションソフトウェア 9.6.1 Linux PC を端末にする 9.6.2 非 Linux PC を端末にする 10. フロー制御 (ハンドシェイク) 10.1 フロー制御がなぜ必要か ? 10.2 パディング 10.3 シリアルポートのオーバラン 10.4 送信停止 10.5 キーボードロック 10.6 送信再開 10.7 ハードウェアフロー制御 (RTS/CTS 等) 10.7.1 RTS/CTS, DTR そして DTR/DSR フロー制御 10.7.2 DTR か DTR/DSR フロー制御で接続 10.7.3 古い RTS/CTS ハンドシェイクは異なる 10.7.4 リバースチャネル 10.8 ハードウェアフロー制御はハード的になされるか? 10.9 ETX/ACK や ENQ/ACK フロー制御はもはや廃れかけてる ?? 11. 物理的な接続 11.1 マルチポート I/O カード 11.2 ケーブルでの直接接続 11.2.1 ヌルモデムケーブルのピン配置 (3,4,5 番端子) 11.2.2 標準ヌルモデムケーブルのピン配置 (7 線式) 11.2.3 長さの制限 11.2.4 ハードウェアフロー制御ケーブル 11.2.5 ケーブルの両端 11.2.6 ツイステッドペア線を使った賢いやりかた 11.2.7 ケーブルの接地 11.3 モデム接続 11.3.1 端末からの発信 11.3.2 端末は着信を受けつける 11.4 ターミナルサーバとの接続 11.5 コネクタとアダプタのタイプ 11.5.1 コネクタ / アダプタの性別 11.5.2 アダプタのタイプ 11.5.3 DB コネクタ 11.5.4 RJ モジュラーコネクタ 11.6 ケーブルを作るか、改造する 11.6.1 買うか作るか ? 11.6.2 ピン番号 11.6.3 ケーブル端に DB コネクタを取り付ける 11.6.4 RJ コネクタの取り付け 12. 一般的なセットアップ (設定) 12.1 イントロ 12.2 端末のセットアップ (設定) の概要 12.3 コンピュータセットアップ (設定) の概要 12.4 多くのオプション 12.5 通信インターフェイスのオプション 12.5.1 通信速度 12.5.2 パリティ、それを使うべきか ? 12.5.3 キャラクター長 12.5.4 どのフロー制御にする (ハンドシェイク) ? 12.5.5 ポートの選択 12.6 すぐに試してみるには 13. 端末のセットアップ (設定) の詳細 13.1 端末へエスケープシーケンスを送る 13.2 より古い端末のセットアップ 13.3 セットアップ (設定) モードの情報を得る 13.4 通信オプション 13.5 セットアップの保存 13.6 オプションとパラメータのセットアップ 13.7 エミュレーション {Personality} {{Terminal Modes}} 13.8 表示オプション 13.8.1 キャラクタセルのサイズ {Char Cell} 13.8.2 列 / ライン 13.8.3 カーソル 13.8.4 表示属性 (マジッククッキー) 13.8.5 表示制御文字 {Monitor} 13.8.6 2 倍の幅 / 高さ 13.8.7 反転表示 {Display} (背景の明 / 暗) 13.8.8 ステータス行 13.8.9 80/132 の切り替え : クリアするか残すか ? 13.9 ページに関連付いたオプション 13.9.1 ページサイズ 13.9.2 結合 (カーソルと表示の) 13.10 報告と応答 13.10.1 応答メッセージ (文字列) 13.10.2 自動応答 13.10.3 応答キャンセル 13.10.4 端末 ID {ANSI ID} 13.11 キーボードオプション 13.11.1 キークリック 13.11.2 キャップスロック {Keylock} 13.11.3 オートリピート {Repeat} 13.11.4 マージンベル 13.11.5 キーの再定義 13.11.6 コーナーキー (Wyse 専用) 13.11.7 数字キーパッドか、矢印キーを送る 13.11.8 Shift + Delete や Shift + Backspace は何を送るか ? 13.11.9 PC 走査コード 13.11.10 代替文字 13.12 受信した制御コードの意味 13.12.1 自動ニューライン {Newline} 13.12.2 自動改行 {Rcv CR} 13.12.3 Del (Wyse だけ ??) または Null の認識 13.13 新しいテキストの挿入 13.13.1 行のラップ 13.13.2 スクロール 13.13.3 新しいページ ? 13.14 ファンクションキー 13.15 ブロックモードオプション 13.15.1 フォーム表示 13.15.2 ブロック全体を送る ? 13.15.3 送る領域 13.15.4 ブロック / ページ の終端 13.16 ロック 13.17 スクリーンセーバ {Scrn Saver} 13.18 プリンター 14. コンピュータセットアップ (設定) の詳細 14.1 Getty (/etc/inittab ファイル) 14.1.1 Agetty (多分 getty という名前でしょう) 14.1.1.1 Agetty のパリティ検出 14.1.1.2 Agetty の 8 ビットデータにおけるパリティ 14.1.2 getty (getty_ps の一部) 14.1.3 mgetty 14.2 Stty と Setserial 14.3 Setserial 14.3.1 はじめに 14.3.2 検出 14.3.3 ブート時の設定 14.3.4 設定スクリプト / ファイル 14.3.5 スクリプトの編集 (バージョン 2.15 以降 : 不正確です) 14.3.6 /etc/serial.conf を使った新しい設定方法 14.3.7 IRQs 14.4 Stty 14.4.1 はじめに 14.4.2 ``よその'' 端末に対しての stty の使用 14.4.2.1 古いリダイレクションの方法 14.4.3 端末での 2 つのインタフェース 14.4.4 どこに stty コマンドを置くか ? 14.5 Terminfo と Termcap (簡易版) 14.6 TERM と TERMINFO の設定 14.6.1 私の端末の terminfo の名前は何 ? 14.7 めったに必要ない /etc/ttytype ファイル 14.8 ログインの制限 14.9 TERM=my_term_type はコマンドだけを実行する 14.9.1 コマンド ls の例 15. Terminfo と Termcap (詳細) 15.1 はじめに 15.2 Terminfo データベース 15.2.1 はじめに 15.2.2 データベースの場所はどこ ? 15.2.2.1 コンパイル済データベースの場所 15.2.2.2 ソースコードデータベースの場所 15.2.3 Terminfo コンパイラ (tic) 15.2.4 Terminfo を見なさい 15.2.5 不要なデータの削除 15.3 既存の Terminfo ファイル (とハードウェア) 内のバグ 15.4 Terminfo ファイルの修正 15.5 初期化文字列 15.6 TERM 変数 15.7 Terminfo/Termcap 文書 16. 端末の使用 16.1 はじめに 16.2 端末の起動 16.3 端末 (シリアル) デバイスドライバ 16.4 エディターの問題 16.4.1 emacs と ^S, ^Q 16.4.2 vi とカーソルキー 16.5 ls での間違った色表示 16.6 固まった表示 (端末のハング) 16.7 おかしくなった端末インターフェース 16.7.1 徴候といくつかの修正 16.7.2 端末にバイナリキャラクタを送る 16.7.3 異常終了したプログラム 16.8 特殊 (制御) 文字 16.8.1 コマンドラインでの編集 16.8.2 割り込み (& Quit, Suspend, EOF, Flush) 16.8.3 スクロールの開始 / 停止 16.8.4 次のキャラクタを文字通りとりなさい 16.9 7 ビット端末で Latin-1 のファイルを見る 16.10 インタフェースを点検する 16.11 端末の設定変更 16.11.1 setterm 16.11.2 tput 16.11.3 echo 16.11.4 変更の保存 16.12 端末をコンソールとして作る 16.12.1 カーネル 2.2 以降 16.12.2 カーネル 2.2 以前 16.12.3 モニタ (PC コンソール) 無しで Linux を実行できますか ? 16.13 マルチセッション 16.14 ログアウト 16.15 端末間でのチャットやスパイ 16.16 シリアルポートの共有 17. トラブルシューティング (ソフトウェア) 17.1 端末は順調に動いていたのに 17.2 新しくインストールした端末 17.3 端末はだいじょうぶですか ? 17.4 テキストを見逃すこと 17.5 l getty を即座に再起動する 17.5.1 シリアルモジュールがロードされていない 17.5.2 モデム制御電圧が出ていない 17.5.3 キーの短絡 17.6 ログイン直後の失敗 17.7 ログインできない 17.8 誤ったログインプロンプト 17.9 ログインプロンプトがでない 17.9.1 コンソールから問題を診断しなさい 17.9.2 電圧の測定 17.10 低速 : キャラクタとキャラクタの間で数秒の待ち 17.11 端末がスクロールしない 17.12 シリアルモニタリング / 診断 17.13 ローカルモード 17.14 シリアルの電気的なテスト装置 17.14.1 引き出し工具 17.14.2 電圧の測定 18. 修理と診断 18.1 修理についての参考書籍と Web サイト 18.1.1 参考書籍 18.1.2 Web サイト 18.2 安全性 18.3 外観 18.4 診断 18.4.1 端末から異音が聞こえる場合 18.4.2 端末から異音がしない場合 18.5 画面上のエラーメッセージ 18.5.1 キーボードエラー 18.5.2 NVR のチェックサムエラー 18.6 コンデンサ 18.7 キーボード 18.7.1 キーボード 18.7.2 どのように働くか 18.7.3 1 回押すと、2 つの違う文字が表示される 18.7.4 最近のキーボード vs 古いキーボード 18.7.5 キーボードがまったく動かない 18.7.6 b を押すと bb などの表示になる (2 重化) 18.7.7 キーボードが自分でタイプする 18.7.8 キーボードに液体をこぼした 18.7.9 キーボードの接点を掃除する 18.7.9.1 薄膜つきキーボード 18.7.9.2 独立したスイッチを持ったキーボード 19. 付録 A: 一般 19.1 Linux 端末のコマンド一覧 19.1.1 端末ヘ送るコマンド 19.1.2 端末デバイスドライバの設定 19.1.3 Terminfo 19.1.4 その他 19.2 インターネットと書籍 19.2.1 インターネット上の端末情報 19.2.2 端末関連の書籍 19.2.3 端末全般についての書籍 19.2.4 端末についての章がある本 19.3 非 Linux OS 20. 付録 B: エスケープシーケンスのコマンド用語 20.1 エスケープシーケンスリスト 20.2 8 ビット制御コード 20.3 プリンタ Esc 20.4 報告 20.5 カーソルの移動 20.6 ページ (定義) 21. 付録 C: EIA-232 (RS-232) のシリアル通信 21.1 イントロ 21.2 電圧 21.2.1 ビット 1 つを表す電圧 21.2.2 バイトデータを表す電圧シーケンス 21.3 パリティ検査 21.4 バイトデータの構成 (フレーム分割) 21.5 EIA-232 の制限 21.5.1 低速で短距離 21.5.2 EIA-232 への継承 21.5.3 ラインドライバ 21.6 同調させることと同期 21.6.1 どのようにして ``非同期'' を同期させるか 21.6.2 同期に対する非同期の定義 21.6.3 同期通信 21.7 ブロックモード 21.7.1 はじめに 21.7.2 ブロックモード、フォームの種類 21.7.3 能力 21.8 EIA-232 (RS-232) 関連書籍 21.9 シリアルソフトウェア 22. 付録 D: 端末メーカ名 22.1 CIT 22.2 IBM 端末 22.2.1 IBM 3153 22.3 テレタイプ 22.4 VT (DEC) 22.5 Wyse 22.5.1 Wyse 60 22.5.2 Wyse 85 22.5.3 Wyse 99-GT 22.5.4 Wyse 150 ______________________________________________________________________ 1. はじめに すぐにでも端末をインストールするなら``クイックインストール''をご覧くだ さい。 1.1. 著作権表示、登録商標、免責事項、クレジット 訳注:ライセンス関係 については原文をそのまま示します。 1.1.1. Copyright Copyright 1998-2000 by David S. Lawyer.dave@lafn.org Please freely copy and distribute (sell or give away) this document in any format. Forward any corrections and comments to the document maintainer. You may create a derivative work and distribute it provided that you: 1. Send your derivative work (in the most suitable format such as sgml) to the LDP (Linux Documentation Project) or the like for posting on the Internet. If not the LDP, then let the LDP know where it is available. Except for a translation, send a copy to the previous maintainer's url as shown in the latest version. 2. License the derivative work in the spirit of this license or use GPL. Include a copyright notice and at least a pointer to the license used. 3. Give due credit to previous authors and major contributors. If you're considering making a derived work other than a translation, it's requested that you discuss your plans with the current maintainer. 1.1.2. Disclaimer While I haven't intentionally tried to mislead you, there are likely a number of errors in this document. Please let me know about them. Since this is free documentation, it should be obvious that I cannot be held legally responsible for any errors. 1.1.3. Trademarks. Any brand names (starts with a capital letter) should be assumed to be a trademark). Such trademarks belong to their respective owners. 1.1.4. Credits Much of the section "Physical Connection" is from Serial-HOWTO v. 1.11 by Greg Hankins (with his permission). His "How Do I Set Up A Terminal Connected To My PC?" was incorporated into v1.00 at various places. v1.09 has about 25 changes (and error corrections) suggested by Alessandro Rubini who reviewed this HOWTO. 1.2. 将来の計画:助けてください 事実、意見、論理の組み立て、単語の綴、文法、文章の分りやすさ、リンク等 に問題があれば、筆者にお知らせください。ただし 一ヶ月以上古い版の文書 であれば、先に最新版かどうかを確認してください。また、この文書に関連す ると思われる情報があればお知らせください。 この文書の version 1.00 以降は、端末のマニュアルに頼ることなく端末の セットアップができるようにすることを第一の目標としてこの文書を作成して きました。この点で多くのものが必要です。この問題を解決する一つの方法 は、端末の製造メーカ自身がインターネット上にマニュアル類を公開すること です。そうするよう彼らにうながして欲しい。ほとんどの端末を構成する方法 についての情報をこの文書で提供することは、気が遠くなるような作業です。 端末には多くの種類がありますが、1980 年頃に使われていた台数よりはるか に少ない種類ですから、この作業は全く不可能というわけではありません。 あなたが所有している端末で、特に製造後 10 年以内のものの余分なマニュア ル類があれば私宛に送ってもらえませんか (より古いものも受け付けます)。 また、お使いの端末について何か情報をいただけましたら、「付録 D: 製品名 一覧」にいくつかの端末情報として記載できると思います。 1.3. この HOWTO の最新版について Text-Terminal-HOWTO の最新版は LDP とそのミラーサイトで閲覧または入手 することができます。ミラーサイトの一覧は にあります。この文書は様々なフォー マットで入手可能です。最新版の日付をちょっと確認したいだけなら、 を見るとよいで しょう。現在のバージョンは v1.13, June 2000 です。 1.4. 関連文書 これらの文書は上記のウェブサイトで入手してください。 o Serial-HOWTO には端末やモデムプールのためのマルチポートシリアルカー ドについての情報があります。シリアルポート上のトラブルシューティン グを含む一般的な技術情報が記載されています。 o Modem-HOWTO o Serial-Programming-HOWTO o NCD-X-Terminal mini-HOWTO o Xterminal-HOWTO (メンテナンスされていません)。 にあります。 1.5. 本書で使う用語 設定 (configuration) とセットアップ (set-up) は同じ意味で使っていま す。 Linux のコマンドはオプション( - を用いて)を使いますが、広義でのオ プションは他の様々な種類の「選択」をも含みます。広義でのインストールは ソフトウェアとハードウェアをセットアップ (設定) することと同義です。疑 わしい (違うかもしれない) 説明には文末に疑問符を二つ ?? 付け加えていま す。確かなことをご存知なら私に知らせてください。 1.6. 端末とは ? 端末とはスクリーンとキーボードから構成され、(ホスト) コンピュータとリ モートで会話するために使う装置です。それはパーソナルコンピュータのよう にも使えますが、端末は (別な部屋または世界の他の場所にある) ホストコン ピュータと遠隔接続されます。プログラムはホストコンピュータ上で実行され ますが、結果は端末のスクリーン上に表示されます。処理能力は相対的に低い ものです (端末としてではなくコンピュータとしてみた場合です) から、一般 に、端末に送られたデータ (ひょっとしたらフルスクリーングラフィックスを 含む) を表示したり、キーボードでタイプしたデータをホストへ送るくらいの 能力しか持っていません。 1970 年中頃から 1980 年中頃にかけてメインフレームが全盛だった時代に、 ほとんどの人はコンピュータと会話するのに端末を使っていました。プログラ ムを作り、実行し、文書を書いて、印刷用のコマンドを発行する等々。ケーブ ルが端末とコンピュータを接続していました (しばしば回り道しながら)。端 末 (terminal) と呼ばれるのは、ケーブルの終端 (terminal end) に位置して いたからです。 コンピュータモニタとキーボードにより Linux (X ウインドウの使用を除く) を使用したことがあるなら、あなたはすでに端末とは何かを知っていることに なります。なぜなら、それ (もしくは、より正確に言えば ``仮想端末'') を 使っているのですから。(キーボードが附属している) モニタは端末をエミュ レートします。X-Windows では xterm, rxvt, zterm が端末をエミュレートし ています。 本当の端末はモニタとは違ったものです。理由は、電子的なセットアップが異 なるからです。テキスト端末はコンピュータのシリアルポートに長いケーブル を経由して接続します。従って、通常はコンピュータの隣に設置されるモニタ とは対照的に、端末はホストコンピュータからかなり離れた所にあります。コ ンピュータ内部のビデオカードはモニタスクリーン上の画像を記憶します。端 末にはビデオカードと同等品が内蔵されていますが、大抵のテキスト端末はグ ラフィックス表示もできない、文字だけのモノクロスクリーンしか表示できな いので、コンピュータ内部のビデオカードよりも貧弱です。その上、ほとんど のテキスト端末にはマウスがありません。 ネットワークでのクライアント - サーバ用語を当てはめるなら、端末はクラ イアントで、ホストコンピュータがサーバだと言えます。他方、端末は ``シ ンクライアント (thin client)'' であるとも言います。しかし実際、端末は ``クライアント'' ではなく、またホストは ``サーバ'' ではないのです。ホ ストが提供する唯一の ``サービス'' は、キーボードから入力された全ての文 字を受信して、その通りに (期待通りに) コンピュータが反応するだけです。 端末はコンピュータの中のウィンドウのようなものです。ちょうどモニタ (と キーボード) がそうであるように。あなたはすでに Linux で (左側の Alt-F2 キー等を押すことによって) 仮想端末を使ったことがあるかもしれません。本 当の端末は、見た目こそ、そのような仮想端末に似ていますが、モニタ画面を 共有しているのでは無く、端末ごとに、モニタスクリーン (とキーボード) が あります。コンソール (モニタ) で仮想端末をひとりでいくつも使用している のではなく、本当の端末の前に人が座って、別の人たちと同時にコンピュータ を利用しています。 1.7. 日本語版謝辞 翻訳にあたって下記の皆さんからアドバイスやコメントをいただきました。ど うもありがとうございました。 大森保英さん 川嶋さん 佐野武俊さん 佐藤亮一さん 水原@表千家さん 高城正平さん 武井伸光さん 中野武雄さん 野本浩一さん 早川仁さん 森本 淳さん 山森 浩幸さん 2. 端末のタイプ 2.1. ダム端末 ``ダム端末 (dumb terminal)'' には様々な矛盾した定義がありますが、時が たつにつれ、ますます多くの端末がダム (愚か) と呼ばれるようになりまし た。本書では主としてスクリーン上にテキストだけを表示するテキスト端末を 扱います。本書のタイトルを ``Dumb-Terminal-HOWTO'' としてもよかったか もしれませんが、雑誌記事では、たとえフルグラフィックスユーザインター フェイス (GUI) を備えた賢い (smart) 端末をも含めてダムと呼んでいるので す。もし全ての端末が ``ダム端末'' なら、端末の前にダムとつける意味はあ りません (セルコンピュータや ``スマート'' 端末のかわりのような商売上の 表現を除いては)。ダム端末の意味はあいまいなので、ここでは端末のタイプ を明瞭に区別するものではありません。 2.2. テキスト端末 テキスト端末では、コンピュータと端末を結ぶケーブル上を情報が 2 方向に 流れています。通常、この流れは各バイトが文字を表現する ASCII バイトで す。キーボードでタイプしたバイトはコンピュータに向い、コンピュータから のほとんどのバイトが端末スクリーンに表示されます。コンピュータからの特 別なバイト (もしくはバイト列) は、カーソルをどこへ動かすか、何を消す か、どこからどこへ下線を引くか、あるいはブリンクやボールド等を端末に指 示します。そのような特別なコマンドは 100 を越え、多くの端末ではフォン トの変更さえできます。 使用する文字セット用のコード表を使ってエンコードした文字 (文字列) を通 信に使用します。通常、使用可能な 256 バイトの内、最初の 128 バイトが ASCII コードとして使われます。Unix のようなシステムのための端末では、 ホストコンピュータと端末の非同期シリアルポート (RS-232-C = EIA-232-D) 間をケーブルで接続します。たまにモデムやターミナルサーバ等を経由するこ とがあります。 テキスト端末には他に ``シリアル端末''、``キャラクタセル端末''、``ASCII /ANSI 端末''、``非同期端末''、``データ端末''、``ビデオ端末''、``ビデオ 表示端末 (VDT)'' の名称があります。昔は ``ビデオ表示装置 (VDU)'' が端 末として使われましたが、厳密に言うと、それにはキーボードがありませんで した。 ``ブロックモード'' は IBM の古いメインフレームで唯一使われましたが、最 新の多くの端末にもこの機能が備わっています (多くは使われませんが)。タ イプしたキャラクタは一時的に端末のメモリに保持されます (そして、端末に 組み込みのエディタで編集することもできます)。それから、送信キー (もし くはそれに類するキー) が押されると、キャラクタのブロック (時にキャラク タ列として) が一挙にコンピュータに送られます。ブロックモードは Linux ではサポートされていません (1998 年後半現在)。 ``Block Mode''をご覧く ださい。 2.3. グラフィックス端末 ASCII 記号を使ってでもある程度までならテキスト端末上で「絵」を描くこと は可能です。矢印は <---、箱を表示するなら _ と | でできるでしょう。特 別なグラフィックス文字セットを描くことさえ可能です。このようなものは本 物のグラフィックス端末ではありませんが、``グラフィックス端末'' という 用語は、テキストがグラフィックスの限定した形態であることから、テキスト 端末にもあてはまります。 グラフィックスを表示するための二つの基本的なタイプに、ラスタとベクター (稀に使われます) があります。ラスタグラフィックス (ビットマップ) は電 子ビーム (または活性化ピクセル、またはフラットスクーン上のドット) に よって描かれた水平走査線でスクリーンにドットを描いていきます。ベクター グラフィックスディスプレイは、通常、モノクロで、ドットはありません。そ れらは、どの方向 (どんな角度や位置) にも移動できる電子ビームで直線や曲 線を描くのにすぐれた電子デバイスを使います。ベクターグラフィックスはジ グザグのない高品質の線画を描きますが、それはまたあまり使われず、かつ高 価なものです。今日、ラスタグラフィックスはほぼ一般的に使われていま す。PC ではベクターグラフィックス形式でエンコードされたイメージもたま に使われますが、表示するときにラスタグラフィックス形式に (描画品質の劣 化を伴って) 変換されているのです。 2.3.1. シリアルライングラフィックス端末 本書の大部分も、この種の端末を対象としたものです。これらのほとんどは、 テキスト端末としても機能します。そのようなグラフィクスのプロトコルには 以下のものがあります:Tektronix Vector Graphics, ReGIS (DEC), Sixel (D EC), NAPLPS (North American Presentation Level Protocol Syntax) 2.3.2. 高速グラフィックス端末 (しばしば他の名前で知られる) 本書ではこれについての記述はありません。賢い (smart) と呼ぶに値する端 末とは PC モニタのようにフルスクリーングラフィックスを瞬時に表示できる グラフィックス端末のことです。それはマウスもサポートするでしょう。画像 (や、その他のグラフィックス) ビットマップを表示するために、端末にバイ トを送ります。ツイステッドペアケーブルや同軸ケーブルを使ったホストコン ピュータとの高速通信にも用いられます。X-Windows 端末はそのような装置で す。 ``Related HOWTO's''にある Xterminal-HOWTO へのリンクをご覧くださ い。 MS-Windows GUI を表示するために様々なタイプのインターフェイスと端末が あります : Citrix の WinFrame を使った Winterm はその一つです。 (Citri x のコードをベースにした) 他のものとして Microsoft 社の Hydra (コード ネーム ) があります。これは MS Windows NT 4.00 以降で動く ``Windows Te rminal Server'' として知られているものです。Citrix 社は ICA プロトコル を使って、WinFrame(ICA) をベースにした端末が Hydra システムを利用でき るように、pICAsso として知られている Hydra へのアドオンを作成しまし た。そして Hydra はマルチユーザでもあります。Unbounded Technologies 社 には ``MultiConsole Personal Terminal'' があり、また Tektronix 社には 自社製のマルチユーザインターフェイスがありますが、現在は Hydra のサ ポートを表明しています。1997 年の雑誌記事では、Winterm のことを ``ダム 端末'' と呼んでいますが、実際はかなり賢いものです。そのような端末のこ とをよく ``シンクライアント (thin clients)'' と呼びますが、シンクライ アントの幾つかはもはや端末以上で、そこに送られた Java コードを実行する ことなどができます。 2.4. ネットワークコンピュータ (NC) これは本来の意味でのコンピュータでも端末でもなく、その中間に位置するも のです。あるタイプのネットワークコンピュータ (NC) は、(CPUはあっても) ハードディスクがないコンピュータです。NC はフルグラフィックス表示が可 能で、サーバコンピュータと接続して使用します。 NC 自身の CPU でプログ ラムを動かすことができるので、端末とは異なったものです。実行するための Java コードが送られるかもしれません。 IBM はこれを ``ネットワークス テーション'' と呼んでいます。それは IP ネットワーク上で動作するはずな ので、Linux が動くサーバの下でも動作するかもしれません。Wintel は上述 の端末とは異った ``NetPC'' を作りました。これはほとんど PC コンピュー タです。しかしリムーバブルディスクがないので、ユーザは自分のソフトウェ アのインストールや何かのコピーを手に入れることができません。Sun JavaStation NC で Linux を使うには 2000 年 4 月 24 日にリリースした JavaStation-HOWTO をご覧ください。 NC やウィンドウ端末関係を支持する人達は、数百万台の PC と置き換えよう と計画しましたが、まだ達成していません。大きな理由として、ここ数年来 PC 価格が下落したことで NC 等より安くなってしまったことが挙げられま す。結論として,まだテキスト端末が健在なのです。 2.5. PC 上でのエミュレーション PC は (端末として使えるように) スクリーンやキーボードを備えています が、さらに大きな処理能力があるので、PCの処理能力の一部を割り振るだけ で、テキスト端末の処理は簡単にできます。これは ``端末エミュレーショ ン'' と呼ばれています。普通、テキスト端末をエミュレートしま す。``Terminal Emulation''をご覧ください。 3. クイックインストール 端末とホストコンピュータの両方で ``Setup'' の手続きを踏まずに端末をイ ンストールするてっとりばやい手順です。端末がコンピュータとは互換性のな い状態でセットアップされるようなことになったら、おそらくまともに動かな いでしょう。幾つかのことを理解してなければさらなる情報を本書の他の個所 に求めなければなりません。 端末をインストールするため、とっかかりとして /etc/termcap か terminfo.src を最初に見てください (``Terminfo と Termcap (詳細)'') を ご覧ください)。そして、接続するシリアルポートは何か、tty の名称は何か (例えば ttyS1, ``デバイス名称''をご覧ください) について解決しておいて ください。root ユーザになって、/etc/inittab の getty コマンドの次行 に、別の新たな getty コマンドを追加してください。getty コマンドの形式 は使用する getty プログラムに依存します。agetty (Debian ディストリ ビューションでは getty と呼びます) は簡単です (設定ファイルがありませ ん)。``info'' か ``man'' 、または再度 ``getty'' をご覧ください。getty に関して、パラメータは terminfo (か termcap) での名称 (vt100 のような) を使用します。そして、端末がサポートするボーレートをタイプしてくださ い。でもあまり高いボーレートを設定するのなら、``フロー制御'' を使う必 要があるかもしれません。 それから、端末のメインシリアルポートとコンピュータ側で選択したシリアル ポートとをヌルモデムケーブルで物理的に接続して、端末の電源を入れてみて ください。ほとんどの既成ケーブルがハードウェアフロー制御用に正しく結線 されてると期待しないでくださいね。端末のボーレートが getty に与えたの と同じであることと、``データビット'' が 8 であることを確認してくださ い。そして、コンピュータコンソールで ``init q'' とタイプすることで inittab ファイルへの変更が反映されます。この時点で、端末でログインプロ ンプトを見ることができるはずですが、もし表示されなければ端末のリターン キーを叩いてみてください。動かないようなら本書をさらに読んで、``トラブ ルシューティング''もご覧ください。 4. なぜ端末を使うのでしょう? 4.1. イントロ 一台の PC で一度に数人の利用をサポートできるくらい最近の PC はとても強 力で、文書編集やデータ入力などの負荷の低い仕事ならなおさらそうです。こ れを行なう一つの方法は、一台の PC (または、他のホストコンピュータ) に モデムやケーブル直結で複数の端末を接続することです。こうするには、端末 で各ユーザが独自にコンピュータを利用できるように Linux のようなマルチ ユーザオペレーティングシステムを使うことがベストです。これを ``タイム シェアリング'' と呼びますが、今日では不適当な用語です。ネットワークに おける ``分散'' コンピューティングもタイムシェアリングの一種ですから。 ``集中型'' コンピューティングと呼ぶほうがいいのかも知れません。しかし 中央コンピュータは、端末のユーザが email を送ったり、``lynx'' ブラウザ でインターネットを閲覧する等により、ネットワークを介して世界の他のコン ピュータと接続するので、正確には "集中型" でもありません。 端末が PC でまれにしか使われなかったのは、PC に使われるポピュラーなオ ペレーティングシステム (Windows, DOS や Mac) が 1998 年までマルチユー ザではなかったので (MS Windows NT は可能)、以前はあまりうまく端末をサ ポートできなかったためです。今日、マルチオペレーティングシステムである Linux が PC で利用できるようになったので、PC と共に端末を使うことはよ り実現可能となりました。欠点は、テキスト端末が多くのユーザが期待するグ ラフィカルユーザインターフェイス (GUI) の類をサポートするほどには洗練 されていないことです。 4.2. 低価格のハードウェア ? コンピュータ (PC を含む) がかなり高価だった頃、ハードウェアが安かった ことが端末を使う上での重要な利点でした。PC が安くなった今日では節約効 果があるかどうか疑問です。これは PC がまだ高価だった頃に書いたもので す。今日でもまだ事実ですが重要性は低くなりました。 何人かの人が同じ時間に同じコンピュータを使うなら、同レベルのサービスを 得るために必要なハードウェアの量は減少します。節約の一つはコードを共有 することです。ハードディスク上のアプリケーションファイルが共有ライブラ リ (異なるプログラムを走らせても、コード中の同じファンクションを使う) と同様にメモリで共有されますから。別な節約の例はピーク時の負荷を減らす ことです。情報をゆっくりタイプしたり、考えたり、しゃべったり、席を立っ たりしている間、シングル PC のハードウェアはほとんどアイドル状態です。 同時に同じコンピュータを数人で使うことは、浪費されるアイドル時間をうま く利用できることになります。 これらの節約は実質的なものです。(統計理論を使って) 手粗く見積れば、9 人 (8 台の端末と 1 台のコンソール) で共有した PC は、各人に同レベルの サービスを与えるシングル PC と比べると 3 倍の容量 (メモリ、ディスク容 量、CPU パワー等) が必要です。したがって、このように共有されたシステム において、コンピュータのハードウェアにはユーザ一人当り 3 分の 1 の費用 で済みます。しかしながら、表示装置の費用 (CRT、キーボード、ビデオ装置 等)は、両者共ほぼ同額です。端末にはホストコンピュータとの接続のために シリアルポートの追加が必要なので、その分の費用を加えなくてはならないか らです。 PC と公平に比較するために、端末には PC モニタと同じ能力があるべきで す。残念ながら、Linux (X-Windows) 用の高速通信カラーグラフィック端末は 高価格なニッチ市場となっていますので、この場合、ハードウェア価格の節約 にはなりそうもありません。しかし、テキスト端末でしたら少しは節約になり ますし、端末を低価格で入手したならなおさらそうでしょう。 4.3. ソフトウェアの管理 集中型コンピューティングにおいて、ソフトウェア (と、ソフトウェアのアッ プデート) のインストールと設定は各所で行なう代りに、1 台のホストコン ピュータで行なうだけで済みます。このコンピュータの担当者が、インストー ルしてあるソフトウェアを管理や設定をするとします。仕事ができ、ユーザの ニーズと好みを知っているホストコンピュータを管理する担当者にとっては、 集中型は都合のよいものでしょう。ソフトウェアをインストールしないことに より (または、アクセス制限をかけることで)、ユーザがゲームをしたり、 ネットサーフィンをすることを禁止できるからです。集中型であろうとなかろ うと、状況に応じて対応することが望まれますが。 4.4. ハードウェアアップグレード 端末で、コンピュータハードウェアのアップグレードは全部ではなく 1 台の コンピュータでのみ行なわれます。これはインストール作業の労力を節約しま す。ホストコンピュータのアップグレードに要するハードウェア費用は 1 台 の PC のそれより割高になりますが (ホストは PC よりコンピュータパワーを 必要とするため)、端末の代わりに PC を使った場合ほどは高くはならないで しょう。 4.5. 端末のその他の利点 o コンピュータのそばに、端末を置かなくても良いので、コンピュータの ファンやディスクドライブの騒音に悩まされることはありません。 o 端末のユーザはデータやファイルを共有でき、互いに e-mail を送りあえ ます。ローカルネットワークと同様です。 4.6. 端末の主な難点 o テキスト端末には高速グラフィックスディスプレイ (または、高解像度グ ラフィックス) がないけれど、矩形描画などをグラフィックス文字セット で書くことができます。この方式の欠点は使用できるソフトウェアが限定 されることです。 o ホストコンピュータが落ちたら誰も端末を利用できなくなります (`` 待機 系'' のホストコンピュータがない場合)。 4.7. テキスト端末は時代遅れでしょうか ? テキスト端末は技術的に時代遅れです。(テキスト端末と同じ表示品質を持つ) ちょっとだけ高価なスマート (smart) 端末が作られるようになったからで す。 1980 年あたりでは、メモリが 1 メガバイト当り何千ドルもかかったの で、そうも言えませんでしたが、今日では低価格のメモリとプロセッサのため に、ハードウェア価格がほんの 10% か 20% アップするだけでテキスト端末を 洗練されたものにできます。 テキスト端末がまだ時代遅れでない理由を挙げます。 o 洗練されたグラフィック端末には満足できる標準のインターフェースがあ りません。MS Hydra システムは MS Windows NT のためにありますが、X- Windows にはそうあるべき効率性がありません (それに X-Windows 端末は あまりに高価ですし)。 o 多くの人はフルスクリーングラフィックスを必要としません。 o テキスト端末は低価格で、時代遅れになるには長い時間かかりますが、は るかに新しい (そして強力な) コンピュータへのアクセスができます。 o テキスト端末を走らせても、最近の PC のリソースをあまり消費しないの で (フルグラフィックス端末と比較して)、1 台の PC 上で多数の端末を効 率的に走らせることができるでしょう。 5. 端末動作についての概要 (Linux) ``端末の動作に関する詳細''もご覧ください。 5.1. デバイス名称 各端末はホストコンピュータ (PC であることも多い) のシリアルポートに接 続されます。ポート名は ttyS0, ttyS1, ttyS2 等です。これらは /dev (デバ イス) のスペシャルファイルです。/dev/ttyS0 は DOS や Windows の COM1 に相当します。ttyS1 は COM2 です。より詳しい情報や cua などの関連する ``デバイス'' に関しては ``端末スペシャルファイ ル''をご覧ください。 5.2. ログイン / ログアウト ホストコンピュータが立ち上がると、getty プログラムを実行します。getty プログラムはユーザをログインさせるために ``login'' プログラムを実行し ます。 ``Getty (in /etc/inittab)'' をご覧ください。``login:'' プロンプ トが画面に表われると、端末のユーザはログインし (パスワードを入力した 後)、コンピュータにアクセスすることができます。端末をシャットダウンす るときは、通常はログアウトして、端末の電源を切ります。ログインを制限す るには、 ``ログインの制限'' をご覧ください (端末にログインする root ユーザへの許可を含む)。 5.3. 半 / 全二重 誰かが端末でタイプしているのを見ると、タイプした文字が同時に画面表示さ れているように見えます。単純な人は、タイプした文字がコンピュータに送ら れて、そのコピーがコンピュータに送られていると考えるかもしれません (半 二重のように、次節を参照)。通常何が起っているかというと、キーボードか らタイプした文字がホストコンピュータだけに直接送られて、ホストコン ピュータは受信した文字を端末にエコーバックしているのです (全二重と呼び ます)。いくつかのケース (パスワードや簡易エディタのコマンド) では、タ イプした文字はエコーバックしません。 全二重とは一方向通信リンクが 2 本 (2 重に) あることを意味します。端末 では全二重が標準です。半二重とは二重の半分のことで、一方向通信リンクが 一本しかないことを意味します。このリンクは両方向の通信で共有されなけれ ばならず、一度に一方向だけが使用されます。この場合、コンピュータはタイ プした文字をエコーすること (と、送ること) ができないので、端末はタイプ した文字を画面に直接表示します。いくつかの端末には、めったに使用されな い半二重操作モードもあります。 5.4. 端末のメモリ CRT 上の画像は、ブラウン管の表面に電子ビームを照射して絶えず映像を繰り 返し描き続けていないと即座に消えてしまいます。画面に表示するためにテキ ストを端末に送ると、画像イメージは端末のメモリ素子に記憶され、イメージ を維持するために電子ビームが画面を繰り返しスキャン (たとえば、毎秒 60 回) します。詳しくは ``端末メモリの詳細''をご覧ください。 5.5. 端末へのコマンド 端末はコンピュータのコントロール下にあります。コンピュータは画面表示す るためにテキストを端末に送るばかりではなく、実行される端末コマンドをも 送ります。これは``制御コード'' (バイト) と``エスケープシーケンス''のこ とです。例えば、CR (キャリッジリターン) 制御コードはカーソルを画面の左 端に移動します。あるエスケープシーケンス (最初のバイトが ``エスケー プ'' 制御コードである数バイト) はエスケープシーケンスに含まれるパラ メータで指定した画面上の位置へカーソルを移動します。 ``初期の端末''ではそのようなコマンドは少しだけでしたが、最近の端末では 100 を越えます。ある範囲で、明るさ、光沢、下線、ブリンク、反転などの表 示上の外観を変更できます。端末のスピーカからは、キーが押されたときに ``クリック音'' を鳴らしたり、誤りが発生したらビープ音を鳴らしたりしま す。ファンクションキーには特別な意味をもたせることができます。複数の フォントだって有り得ます。表示のスクロールアップ、ダウンもできるでしょ う。画面の指定した部分を消したりもできます。端末が扱えきれないほど速く データが送られてきたときに、データの流れを止めるために様々なタイプのフ ロー制御が使われます。高度な端末のマニュアルかインターネットのリンク ``エスケープシーケン スリスト''から、より多くの情報を得ることができる でしょう。 5.6. Terminfo で解決した標準化の不足点 米国で作られた端末すべてが、アルファベット用に同じ ASCII コードを採用 していながら (EBCDIC を使用した IBM を除く)、残念なことに全てが同じエ スケープシーケンスを使いませんでした。このことは ANSI (と ISO) 規格が 制定された後も起こりました。これらの規格があまりすぐれたものではなかっ たからです。その上、新しい端末にある能力が古い端末にはたいていありませ ん。このことは問題を引き起こします。例えば、コンピュータが指定したサイ ズで 2 つのウィンドウに画面を分けるよう端末に指示する場合、それができ る能力が端末にあるかどうかわからないのです。 これらの問題を克服するために ``termcap'' (意味 ``端末の能力'') と呼ぶ データベースが作られました。termcap はのちに ``terminfo'' に取って代わ られました。このデータベースはコンピュータ上のあるファイルに記録されて いて、端末の各モデルに対応するセクション (時々はファイル全体) がありま す。各モデル用 (VT100 等の) に使用可能なエスケープシーケンスのリストを 含む能力リストが用意されています。例えば、blink=\E5m はブリンクの開始 を意味し、端末に Escape 5 m が送られることでしょう。詳しくは ``Termcap と Terminfo (詳細)''をご覧ください。アプリケーションプログラムはある C ライブラリの関数をコールすることで、このデータベースを活用することが できます。そのようなプログラムの大きなセット (200 を越える) は ``ncurses'' と呼び、 man ページの ``ncurses'' に載っています。 5.7. インターフェース 環境変数 TERM は、使用している端末のタイプを Linux が識別するためのも のです。幾つかのアプリケーションプログラムが端末データベースから能力を 探しだすのに使うので、TERM が正しく設定される必要があります。しかしそ こには、コンピュータが端末の能力について知る以上の正確なインターフェー スがあります。 コンピュータから端末へバイトを流すには、端末から送られるのと同じボー レート (bit / 秒) でバイトを受信するように端末を設定しなければなりませ ん。もし端末が 19,200 ボーで受信するよう設定されていて、コンピュータが 960 0 ボーで文字を送ったら、文字化けを起こすでしょう (あるいは何も表示 されません)。端末の ``セットアップ'' メニューで端末のボーレート (他の 多くの機能と同様に) を選択します。ほとんどの端末は ``セットアップ'' メ ニューに多くのオプションがあります ( ``端末セットアップ (設定) 詳細'' をご覧ください)。コンピュータのシリアルポートにもオプションがあり、こ のオプションは互換性のある方法でセットアップされなければなりません ( ``コンピュータセットアップ (設定) 詳細''をご覧ください)。 5.8. エミュレーション 今日のほとんどの端末には 1 つ以上のエミュレーション (``独自機能'' ない しは ``互換モード'') が用意されています。DEC (Digital Equipment Corpor ation (現 Compaq) が以前作っていた端末のモデル番号は VT で始まります (VT100 等)。VT100 以外の他の多くの端末は VT100 をエミュレートします。 Wyse は主要な端末製造メーカですが、ほとんどの端末は VT100 や VT220 の ような DEC の各種端末をエミュレートできます。ですから、たとえば VT320 端末を使う場合には、``本来'' のパーソナリティである VT320 そのものとし て使用するか、 VT320 をエミュレートできる他の端末 (VT100 や VT220 な ど) として使用するかの選択肢があります。``本来'' のパーソナリティは他 のものと同等か、普通は機能が豊富なので、特に理由がなければ ``本来'' の パーソナリティを使用するのがいいでしょう。 最も一般的なタイプのエミュレーションは、VT100 端末 (または、それに類す るもの)であるかのように PC を使うことです。PC のメモリにロードされるプ ログラムがこれを可能にします。Linux では (X-Windows を使ってなくて も)、 PC モニタ (コンソールと呼ぶ) として端末タイプ ``Linux'' (VT100 に似ています) をエミュレートします。 ``端末エミュレーション''をご覧く ださい。 5.9. コンソール PC でモニタは通常はコンソールになります。端末タイプ ``Linux'' をエミュ レートし、仮想端末としてログインします。``コ ンソール : /dev/tty?'' を ご覧ください。ブートやシャットダウンの進行状況をカーネルから受けとりま す。通常はコンソールへのメッセージが端末に出力するようにできます。こう するには手でカーネルにパッチを当てなければなりません。カーネル2.2 以上 を使用すれば ``make config'' オプションで指定できます。``端末をコン ソールにする''をご覧ください。 6. /dev/tty のような端末スペシャルファイル ``tty'' は ``テレタイプ (Teletype)'' の略語です。初期の端末はテレタイ プ (遠隔制御のタイプライタのようなもの) でした 。``テレタイプ''をご覧 ください。``Linux'' のデバイスリスト (/dev ディレクトリの中にあるもの) は、カーネルソースと共に含まれる ``Linux Allocated Devices'' で見つけ ることができるでしょう。そこには各デバイスの用途が一言か二言で ``記 述'' されていますが、使い方には触れていません。 6.1. シリアルポート端末 コンピュータは各シリアルポートを ``デバイス'' だと考えます。時々、端末 デバイスと呼んだりするのは、ひと頃、シリアルポートの一般的用途が端末 だったからです。そのようなシリアルポートのために、/dev (device) ディレ クトリにスペシャルファイルがあります。/dev/ttyS0 は、DOS/Windows で COM1 として知られるシリアルポート用のスペシャルファイルです。端末にテ キストを送るには、コマンドラインでのコマンドの標準出力を特定のスペシャ ルファイルにリダイレクトしてやればよいでしょう。例えば、コマンドプロン プトで ``echo test > /dev/ttyS1'' とタイプすれば、ttyS1 (COM2) につな がる端末に ``test'' が送られます。/dev/ttyS1 にライトパーミッションを 与えておきましょう。同様に、``cat my_file > /dev/ttyS0'' とタイプすれ ば、 my_file の内容が COM1 (ttyS0) に送られます。 ttyS0 (/dev/ttyS0), ttyS1, ttyS2 等 (``S'' はシリアルポートを表わす) に加えて、cua0, cua1, cua2等の ``cua'' シリーズがあります。cua0 は ttyS0 と同じポートです。 cua の ``cu'' は CalloUt を表します。ttyS シ リーズは Posix 準拠ですが、cua はモデム制御ラインがレディじゃなくても ポートのオープンを許しています。カーネルの 2.2 版の cua はすでに廃れか けていて、それを使おうとすると警告メッセージが発せられるでしょう (まだ 動きはしますが)。過去数年間、後ろ向きの互換性のためにのみ Linux に含ま れているのです。プログラマは ttyS が cua と同じように働くようアレンジ できるので、cua はまったく必要なくなりました。 6.2. 擬似端末 擬似端末はコンピュータと物理的に接続したものではありません。それはシリ アルポートをエミュレートするために使われます。IO アドレスも IRQ もあり ません。例えば、誰かがネットワーク越しに telnet で接続してきたなら、 /dev/ptyp2 (擬似端末) にたどり着くでしょう。X-Windows では、端末エミュ レータである xterm (か、rxvt) が擬似端末を使います。 Linux でのアマ チェア無線プログラムにもそれを使います。あるアプリケーションソフトウェ アを使っていて、物理的に同じシリアルポートに接続した 2 つ以上の擬似端 末を使うこともできます。 擬似端末は ttyp3 と ptyp3 のようなペアとなります。pty... はマスタもし くは端末の制御を行ない、tty... はスレーブとなります。ttyq5 も ttysc (c は 16 進の値) のような擬似端末です。より正確に言うと、擬似マスタ端末は /dev/pty[p-s]N で、対応するスレーブのほうは /dev/tty[p-s]N となり,N は 16 進で 0-f の値をとります。スレーブの /dev/ttyp はアプリケーションプ ログラムがそれに対して読み書きできるシリアルポートのように見えます。し かし、アプリケーションプログラムは、対応するマスタ /dev/pty に書いた り、読んだりするいかなるプログラムとも本当に通信しているのです。このよ うに、マスタとスレーブは実は同じポートなんですが、一つはアプリケーショ ンプログラムが使い、もう一つは、``ポート'' へデータを与えたり、ポート から取得したりするネットワークプログラム (あるいは、同等のもの) が使い ます。 Unix98 では上記のものを使用せず、代わりに /dev/ptmx と呼ぶ ``pty master'' を使います。要求に応じて pty を供給します。他のプログラムで擬 似端末を使うための詳細は、man ページに幾つかありますが、もっぱら Linux に必要なものが載っています。その他の unix ライクなシステムの man ペー ジには ``pty - 擬似端末ドライバ'' の名称で載っています。 6.3. 制御端末 /dev/tty /dev/tty はカレントプロセス (もしあれば) の制御端末です。どのプロセス がどの tty にアタッチしているかは、シェルプロンプト (コマンドライン) で ``ps -a'' を使えばわかります。``tty'' の列をご覧ください。ログイン しているシェルプロセスでは、/dev/tty が現在使用中の端末です。それが何 かを調べるには ``tty'' とタイプすればよいのです (man ページの tty(1) を参照してください)。/dev/tty は、C プログラマのために幾つかの特徴を併 せ持つ本当の端末デバイス名へのリンクのようなものです。man ページの tty(4) をご覧ください。 6.4. /dev/ttyIN ``端末'' N は 整数値です。Linux での使用例の一つに ISDN ドライバパッケージ isdn4linux があります。ttyIN は ttySN のようなものです。cuaN のような cuiN もあります。ttyI と cui はモデムをエミュレートし、モデムのコマン ドも与えられます。 6.5. コンソール /dev/ttyN Linux で PC モニタのことを普通はコンソールと呼び、tty0, tty1, tty2 等 に関連づけられた数種類のデバイススペシャルファイルがあります。ログイン したときは tty1 になります。tty2 (同じ画面上) から tty3 に移るのは、例 えば tty3 なら左側の Alt-F3 を押します。これら (tty1, tty2, tty3) を ` `仮想端末'' と呼んでいます。tty0 はカレント仮想端末のエイリアスで、シ ステムからメッセージが送られます。このように、システムメッセージは表示 中の仮想端末にかかわらず、コンソール (モニタ) で見ることができるでしょ う。 訳注:右側の ALT キーと Fn キーでは、仮想端末の切り替えはできません。 異なる仮想端末にログインし、コンピュータと異なるセッションを同時に張る ことができます。システムか root ユーザだけが、時に /dev/console として リンクされる /dev/tty0 に書きこみできるでしょう。コンソールに関するよ り多くの情報は``Linux コンソール''をご覧ください。 6.6. ``mknod'' でデバイスを作成する /dev ディレクトリは多くのデバイススペシャルファイルを供給します。もし 必要なものがそこになければ、``mknod'' コマンドで作成することができま す。シリアルポート用スペシャルファイル作成方法は man ページの ttys(4) をご覧ください。 mknod を使うにはメジャー及びマイナーデバイス番号につ いて知っていなければなりません。/dev ディレクトリで ``ls -l'' コマンド を使えば、必要な番号を推察できるかもしれません。それは既存のスペシャル ファイルのメジャー、マイナー番号を画面表示できるからです。 7. 端末の動作に関する詳細 端末について何も知らなければ、``はじめに''と``端末動作についての概要'' を最初に読むことをお勧めします。 7.1. 端末メモリの詳細 端末画面は、端末メモリ内に記憶しているイメージを毎秒およそ 60 回再表示 しています。PC では、モニタのイメージはコンピュータ内部のビデオカード に記憶されますが、端末ではビデオカードと同等なものは端末内部にありま す。テキスト端末でのイメージの記憶は少ないメモリですみます。スクリーン 上のすべての画素 (ピクセル)のメモリへの転送と、およそ 25 万画素を記憶 する代りに、より効率的な記憶方法がとられるからです。 画面一杯のテキストを、画面の各一文字毎に ASCII バイトで端末メモリに再 現していきます。全画面はおよそ 2K ASCII バイトですみます。これらの文字 を表示するために、端末は印字可能な約 100 個の ASCII キャラクタのビット マップ (外観) を知っていなければなりません。一文字のビットマップに15 バイトを使うので、全ての ASCII キャラクタ (フォント) には 1.5K だけメ モリが必要です。毎秒 60 回で画面に画像を出力するために、この ASCII テ キストとフォントメモリがスキャンされます。これは共有メモリ方式ですか ら、例えば、画面一杯に表示されている文字 e の全ては、ただ一つの文字 e のビットマップを共有することになります。必要なメモリ量が少なくてよいと いうことは、メモリ価格が今日の数千倍 (キロバイト当り数千ドル) した 1980 年代初期の頃は、モニタ製造コストの削減を意味しました。 7.2. 初期の端末 初期の頃の端末は、コンピュータから送られた一連の文字を ``表示 '' (紙に 印刷) するだけの遠隔操作型タイプライタみたいなものでした。最も初期のモ デルは``テレタイプ''と呼ばれました。``tty'' という名前は ``テレタイプ (Teletype)'' の略称です。初期の端末はタイプライタのように改行や復帰を 行なえ、またベルキャラクタを受信したときにはベルを鳴らすことができまし た。重要な能力が欠けていたために、初期型の端末は ``ダム (dumb)'' と呼 ばれました。このタイプの端末インターフェース (``ダム'' と呼ばれた端末 を使用したもの) は、通信相手がどのようなタイプの端末かわからないときに 今日でもたまに使われています。 7.3. エスケープシーケンスと制御コード (イントロ) 端末には多くの能力があり、そのうち幾つかはいつでも利用でき、いくつかの ものは変更したり、有効にするためにコンピュータからコマンドの送信が必要 です。これら全ての能力をコンピュータの管理下で使用するために、コン ピュータが端末に何をすべきかを伝える特別なコードが決められています。こ れには、エスケープシーケンスと制御コード (制御キャラクタ) という二つの 主要なコードがあります。制御コードより、エスケープシーケンスの方が、 ずっとたくさんあります。 7.3.1. 制御コード 制御コード (または制御文字) は ASCII アルファベットの初めの 32 バイト を占めます。それらは以下を含んでいます : 復帰 (カーソルを左端へ)、改行 (カーソルを次の行へ)、後退、エスケープ文字、タブそしてベル。通常、それ ら自体は画面に表示されません。端末が制御コードを受信したとき、画面表示 に影響を与えるコマンドが端末にはあります。それら (のコマンド) は、しば しば ``画面制御'' や ``モニタ(プログラム)'' と呼ばれます。もしユーザ が、 *手で* エスケープシーケンスを打ち込んだなら、ディスプレイは、その 実行されない ESC (エスケープ) ではじまる制御文字でぐちゃぐちゃになって しまうでしょう。カーソルの位置を移動するためのエスケープシーケンスはス クリーンに表示されますが、エスケープシーケンスが指示する位置へは動きま せん。 7.3.2. エスケープシーケンス 全てを制御コードで行なうには不十分なので (また、何らかの理由でそれらの 全てが使われるわけでない)、多くのエスケープシーケンスが使われていま す。エスケープシーケンスは ``エスケープ'' (ESC) 制御文字と普通の文字か らなります。エスケープ文字を受信すると、端末は次に続く文字を調べて、 シーケンスを解釈してコンピュータの意図に従って動作します。一旦シーケン スの終わりを認識すると、さらに受信した文字をスクリーンに表示します (そ れが制御コードやエスケープシーケンスでなければ)。幾つかのエスケープ シーケンスは、カーソルを移動させるスクリーン座標のように、パラメータ ( か、オプション) を取ります。パラメータはエスケープシーケンスの一部で す。幾つかの端末用の``エスケープシーケンスリスト'' はウェブ上にありま すが、説明は簡単なものです。 あなたの端末のエスケープシーケンスリストは、端末の ``プログラムマニュ アル '' に記載されているでしょう。かなり古い端末でなければ 200 か 300 のエスケープシーケンスがあるはずです。そのようなマニュアルをお持ちでな かったら、見つけ出すのは簡単ではありませんよ。エスケープシーケンスの幾 つかはインターネットでも見つけられます。リンクの一つは``エスケープシー ケンスリスト''です。あるエスケープシーケンス (ESC[5m のような) をイン ターネットで探せば、長いリストの中から偶然見つけられるかもしれません。 それらの幾つかを確定する別な方法は、terminfo エントリ (termcap) で端末 を探し、知的に読み解くことです。本書の ``Terminfo と Termcap (詳細)'' か、インターネットの ``Termcap マニュアル''をご覧ください。残念なが ら、端末の terminfo (termcap) には、使用可能なエスケープシーケンスがリ スト中に載っていないこともありますが、最も大事なことはたいていここにあ ります。 7.4. 表示属性とマジッククッキー 端末には文字の属性 (ボールド、反転、下線など) を設定する各種の方法があ ります。どのように設定するかということをユーザは心配する必要はありませ ん。一部の古い端末で問題が発生することを除けば、新しい端末ではセット アップメニューのオプションとなっているからです。 マジッククッキー方式は時代遅れです。それは属性を定義する最も簡単(で最 悪) な方法です。属性の最初には、あるバイトを使い、最後には別なものを使 います。例えば、``下線開始'' マジッククッキーは下線が引かれる最初の言 葉の前に置かれます。これらの余分なバイトはスクリーンページのメモリ内に 置かれます。ちょうど文字を表示するキャラクタバイトのように。しかし非印 字文字であるマジッククッキーと他の印字文字が混在するので、各行毎の数を 数えるのを難しくさせます。これは時々問題を起こします。 もっとよい方法としては、さらにメモリを使ってはしまうものの、各表示文字 ごとに、属性を記憶しておくために 1 バイト (あるいは半バイトずつなど) を割り当ててしまうものがあります。この方法は一般的な PC モニタ用の PC ビデオカード (テキスト用) で使われています。 8. 幾つかの端末に固有な特徴 8.1. カラー 一般のモノクローム端末がカラー端末じゃなかった頃は、白以外の緑や黄色な どの固定 ``カラー'' ディスプレイでした。全ての端末は黒を表示します (電 子ビームの照射を止めると輝度が 0 になる)。本物のカラー端末はテキストや 背景色をいろんな色に変えられますが、モノクローム端末は固定色の輝度を変 えられるだけなんです。 輝度などを変えるだけでもいろんなことができますよ。例えば、白黒 (モノク ローム) 端末は輝度を変えることで、白、黒、それに灰色を表現することがで きます。ある文字の色を黒で背景を明るい灰色にしながら、別な文字の色は黒 の強調表示で白地にできます。黒地に白文字や下線をつけたり点滅させること もできます。 色はコンピュータモニタか TV 画面の色に近い働きです。CRT には 3 色の ドットがあり、電子ビーム (3 つのビーム) で制御します。モノクロ端末 は、3 色のドットを塗り分ける必要がないので、原理的にカラー端末よりも解 像度を良くすることができます。テキスト端末でただ一つの色の使い方は、テ キストを区別することで、利点は解像度の悪さが常にその価値を下げるわけで はないということです。ですから、モノクロームはまたコストを下げるには良 い選択なのです。 8.2. マルチセッション 2 重のセッションのために、端末には同じ状態のシリアルポートが 2 つあり ます。各ポートを異なるコンピュータのシリアルポートへ接続します。こうす ることで、分割ウィンドウに表示される各セッションから各コンピュータにロ グインできるようになるのです。代りに、各セッションを ``ホット'' キー ( またはそれに類するもの) を使って切り変えながら、フルスクリーンで利用す ることができます。同じコンピュータの 2 つの異なるシリアルポートに接続 し、 2 度ログインすることも可能です (コンソールでの ``仮想端末'' に似 ています)。プログラム ``画面'' は、一つか二つの ``セッション'' が動く シングルコンピュータに接続した普通の端末 (シングルセッション) のように 見えるでしょう。 8.3. プリンタ / 補助ポート 多くの端末の背面には、そのようなポートのためのコネクタがあります。それ には ``Aux'' とか ``Printer'' などと名前がついているでしょう。あるプリ ンターポートはパラレルプリンタ用ですが、シリアルプリンタ用もあります。 プリンタがプリンタポートか補助ポートに接続されているなら、あるキーを押 せば画面を印刷できるでしょう。望むなら、画面に表示されてるすべてをもプ リンタに出力できますよ。もしポートが補助ポートなら、それを他のコン ピュータに接続して、上で述べたような 2 重セッションも行うことができる でしょう。でも端末内蔵のビデオメモリには両方のセッション内容が残ってな いので、他のセッションに切り替るときに画面をリフレッシュする必要があり ます。多分、ホットキーではできないでょうが、プログラム可能なファンク ションキーを使えばこのようなことをプログラムで行えるでしょう。そのよう なポートを制御するために、各種キーの組合せとエスケープシーケンスが存在 します。 ``Printer Esc'' をご覧ください。 端末に接続したプリンタに印刷するために、端末へプリントジョブ(テキスト のみ)を送るよう設計された vtprint と呼ぶプログラムがあります。ホーム ページは です。それは、 Debian/Linux ディストリビューションに含まれて います (1998 年現在)。 xprt (これも Debian/Linux) も似たようなものです が、X-Windows 専用のはずです ?? 8.4. ページ 多くの端末は、ビデオメモリ内に 1 ページ以上記憶する余地があります。時 には、ページサイズは画面と同サイズですが、時にはそれ以上になるので、ス クロールすればページの見えない部分が表れるでしょう。それで、画面を見る と、同じページの上か下の表示が隠れてるように思うかもしれません。2 ペー ジ以上にわたるなら、他のページのテキストは隠されているということを付け 加えておきます。ページの使い方の一つが、2 重のセッションをサポートする 端末です。各セッションにはそれ自身のページがあり、各セッション間で強制 的に切り替えを行なっているのです。 ページサイズが画面表示と同じ 1 ページの端末であっても、あなたがファイ ル (その他) 内のページを見ている間に、ホストは他のデータを端末に送りま す。端末メモリに記憶した追加ページを持つことの利点は、数秒の待ち時間も なく即座に表示したり、ホストから送信できることです。 複数ページは ncurses でサポートされています。それはまた ``Multiscreen'' と呼ぶ市販のプログラムでもサポートされていますが、 Linux ではおそらく利用できないでしょう ?? Multiscreen は SCO の一部で あるとのうわさで、Linux PC コンソールでの仮想端末と同じようなもので す。 Linux プログラム ``screen'' は多重ページであるかのように見せます が、それはコンピュータに記憶され、各々でプログラムを走らせることができ る 1 ページのウィンドウのようなものです。 8.5. 文字セット 文字セットは各文字がバイトコードに割り振られた文字リスト (または、表か 図) で表現されます。バイトコードは 0 から 255 ( 16 進数で 00 から FF) の範囲です。MS-DOS では文字セット表を ``コードページ'' と呼んでいま す。それになじみがなければ、その表を見といたほうがいいですよ。それはプ リンタや端末のマニュアルにたまに含まれていますが、インターネットからも 見つけることができるかもしれません。 ASCII はテキスト端末で使われる最も一般的な文字セットの一つです。7 ビッ トコードですが、最初のビット (最上位ビット) が常に 0 である 8 ビット コードも使えます。通常は他の文字セットも利用可能です (ASCII しか選択で きないかなり古い端末は除外)。文字セットの前半は従来の ASCII キャラクタ で、後半 (最上位ビットが 1) はさまざまな文字セットに属します。ISO 規格 のものが文字セットとしてよく使われます。特殊文字セットを端末に表示させ るために、端末メモリにその文字セットをダウンロードする必要があります。 ASCII 以外で他に一般的な文字セットは全て 8 ビットです。CP は IBM が 作ったコードページ文字セットで、CP-437 (DOS ECS), CP-850 (Multilingual Latin 1 -- ISO Latin-1と同じではない),ISO-8859-1 (Latin-1), ANSI (Latin-1 から派生) などがあります。MS Windows では ANSI を使用します が、インターネットではよく Latin-1 を使います。いくつかの ISO-8859 文 字セットが Latin-1 に加えられています。ギリシャ (-7)、アラビア (-6), 東欧 (-2), それに Latin-9 と呼ぶ Latin-1 (-15) の改変版などです。他に もたくさんあります。例えば、KOI8-R はロシアで IS0-8859-5 より一般的に 使われています。Unicode は膨大な文字セットで、各文字は 1 バイトの代り に 2 バイトで表わします。 さらに文字セットについての情報を挙げます。 o man ascii 及び man latin1 o 各言語の (その言語で書かれていそうな) HOWTO。 ロシア語なら ``キリー ル文字'' をご覧ください。 o 文字コー ドのチュートリアル として明確に書かれたものが 発行されています。 o 言語、国、そして文字セット o コンピュータ等で扱う世界の言語 o 世界中のリンク は長いリンクリスト (ロシアのサイトですが、ほとんど英語) です。 一度、興味のある文字セット (または英数の名称) を見付けたら、より詳しい 情報をインターネットから探すことができるでしょう。 8.6. フォント 1980 年半ば以降に製造されたほとんどの端末は、ソフトフォントをダウン ロード可能です。このことは、ソフトフォントにあるほとんどの文字セットを 表示できることを意味します。必要なソフトフォントが見つからなければ、あ なたは自分で作ることもできます。このようなフリーフォントエディタとして BitFontEdit (本書の著者が作成) があり、それは (1998現在で)、 ヨーロッパなら 、 北米なら からダウンロードできます。 8.7. キーボードと特殊キー 端末のキーボードには PC キーボードにはあまり見られない多くのキーがあり ます。わずかの (もしあるなら) 端末にはこれらのキーすべてがあり、そのほ とんどにはここで取り挙げていない追加キーがあります。幾つかのものには、 キャッシュレジスタ用端末のような特殊用途のためのキーも多数あります。こ こで示す以外の意味がより多くのキーにあると思いますが、これらのキーは他 のキー (シフトキーやコントロールキーなど) と共に使われた時に拡張した意 味を持ちます。 o BREAK は、300 から 700 ミリ秒の間ずっと、ホストにすごく長い 0 ビッ ト (スペース = +12V) を送ります。stty で brkint がセットされている か、 ignbrk がセットされていても無視するようセットされていたら、ホ ストはこれを割り込みと解釈します。 o NO SCROLL は ^S が押されたのと同じように、画面スクロールを止めま す。再び押されるとスクロールを再開します。フロー制御に使います。 o REPEAT は、例えオートリピートオプションがオフに設定されていても、他 のキーと共に押し続けられたら、その出力を強制的に繰り返します。 o LINE FEED は ラインフィードキャラクタである ^J をホストへ送ります。 まれにしか使われません。 o SET-UP は、メニューによって手作業で端末の設定を行なうものです。それ を押すことができないようにブロックすることで、わざわざ無効にするこ とがあります。シフトやコントロールキーなどの他のキーを同時に押さな ければならないときもあります。``セットアップ (設定) モードにする'' をご覧ください。 o LOCAL はホストと端末の接続を切ります。ローカルでは、タイプした文字 は直接画面に表示されますので、テストに使われます。 o RETURN は PC の ``Enter'' キーと同じです。ホストに復帰として送ら れ、通常はホスト側のデバイスドライバで改行文字に変換されます。ある 端末では他の何かを送る時にもつけられるでしょう。 o F1, F2, ... もしくは PF1, PF2, ... はファンクションキーで、普通はバ イト列 (文字列) を送るためにプログラムされています。``Function Keys'' をご覧ください。 9. 端末エミュレーション -- コンソール 9.1. イントロ PC は (端末として使えるように) スクリーンやキーボードを備えています が、さらに大きな処理能力があるので、PC の処理能力の一部を割り振るだけ で、テキスト端末の処理は簡単にできます。これは ``端末エミュレーショ ン'' と呼ばれています。端末エミュレータの別なタイプには、他のブランド / モデルをエミュレートするように設定できるものもあります。こうするに は、端末のセットアップメニューで希望のエミュレーションを選択します (Wyse jargon いわく ``パーソナリティ'')。本章ではエミュレーションの最 初のタイプである PC で端末をエミュレーションすることについて述べます。 エミュレーションソフトウェアは MS Windows で利用可能で、最近の MS Windows には附属してきます。ほとんどの Linux のフリーソフトウェアでは VT100, VT102 または VT100/ANSI をエミュレートします。もし他の種類をご 存知なら私に知らせてください。ほとんどの PC はカラーモニタですが、 VT100 や VT102 はモノクロモニタとして設計されているので、普通はエミュ レーションには色を表現する能力 (および色の選択) が加えられています。時 にエミュレーションは 100% 完全ではないけども、普通はささいな問題しか引 き起こしません。Mac コンピュータを端末エミュレータとして使う場合は、ミ ニ Howto の ``Mac 端末'' をご覧ください。 9.2. エミュレーション用に TERM を使わないで 環境変数 TERM をエミュレートしたい端末のタイプに設定すれば、Linux コン ソール (モニタ) でエミュレートできると考えるのは間違いで、うまく動かな いでしょう。TERM の値はアプリケーションプログラムに使用する端末の種類 を示すだけですから。このやり方だとあなたに対話的に質問しなくてもいいの です。PC モニタの前にいるなら、端末タイプは ``Linux'' で、これを変更で きません。ですから TERM を ``Linux'' に設定しなければなりません。 もし他の何かに設定したならアプリケーションプログラムにうそをついたこと になります。結果的に、コンソールからのエスケープシーケンスを正しく解釈 できないので、インターフェイスをめちゃくちゃにしてしまうでしょう。Linu x コンソールのほとんどは VT100 端末として動作しますので、間違って VT10 0 (または VT100 に似た他の端末) に設定してもほぼ問題なく動作するでしょ う。だいたいはうまく動くと思いますが、編集やそれに似たことをしたときに ミスを犯すかもしれせん。 9.3. 通信 (ダイアル) プログラム PPP コネクションを使ってインターネットへダイアルアップ接続するプログラ ムには、端末エミュレーションは通常含まれていません。しかし幾つかのモデ ムダイアルアッププログラム (minicom や seyon) はそれができます。それを 使うことで、(例えば) 公立図書館のカタログやインデックスを利用するため に (もしくは、雑誌記事を読むのにさえ) そこへダイアルアップ接続します。 それらはモデムをテストするのにも役立ちます。seyon は X-Windows 上での み使用し、Tektronix 4014 端末をエミュレーションします。 通信プログラム kermit は端末エミュレーションにはならず、それは単に、あ なたの端末と接続したリモートサイト間の半透過的なパイプにすぎません。 従って、kermit を Linux PC 上で使うなら、端末タイプは ``Linux'' になる はずです。あなたの PC に接続した Wyse60 があり、そこで kermit が走って いるなら、リモートコンピュータが Wyse60 として見えるでしょう。Minicom は VT102 をエミュレートし、それを Wyse60 端末で使うなら、データがモデ ムに送られる前に Wyse のエスケープシーケンスは VT102 エスケープシーケ ンスに変換されるでしょう。Kermit ではこれができないのです。 telix や procomm のように DOS で快適に動くエミュレータもあります。エ ミュレートするものには、古い VT100, VT102, または ANSI (VT100 のよう な) などの端末があります。 9.3.1. X-Windows でのエミュレーション xterm (もう時代遅れ ??) は VT102, VT220, や Tektronix 4014 をエミュ レートでき、X-Windows の下で走ります。それはまた xterm エミュレーショ ンでもあります (だけど ``xterm'' と呼ぶ物理的な端末ではありません)。 Tektronix 4014 エミュレーション (ベクターグラフィックス端末については ``グラフィックス端末''をご覧ください) が必要なければ eterm を使うとよ いでしょう。eterm の以前には rxvt や xvt がありました。eterm は画像 データをサポートします。 非ラテン文字用としては、kterm が漢字端末エミュレーション (あるいは他の 非ラテン文字用) で、xcin は中国語用です。9term エミュレーションもその 一つです。これは組込みエディタやスクロールバーなどがあるので、ただの端 末エミュレーション以上だと思います。AT&T の Unix ライクなオペレーティ ングシステムである Plan 9 用に設計されたものです。 9.3.2. 本当の端末のほうが良い 大きな画面で X-Windows を使っていなくても、本当の端末はエミュレーショ ンより使いよいです。普通は費用がかからなくて、テキストに適した解像度が あり、ディスクドライブがないので騒音も出しません。 9.4. テスト端末エミュレーション VT シリーズの端末用に、vt53, vt100,vt102, vt220, vt320, vt420 などの端 末がちゃんと動くかどうかの判定を手助けしてくれる vttest というテストプ ログラムがあります。ドキュメントこそありませんが、メニューがあるし、使 い方は簡単ですよ。コンパイルするには、設定スクリプトを実行して、 ``make'' とタイプします。 か らダウンロードできるでしょう。あるいは からもダウンロード可 能です。 9.5. Linux コンソール PC Linux システムのコンソールは通常はモニタで、端末タイプ ``Linux'' を エミュレートします。他の端末タイプをエミュレートするようにする方法は ( カーネルコードの書き直しに何週間も費したくないなら) ありません。環境変 数 TERM を ``Linux'' 以外の端末タイプに設定しても、他の端末のエミュ レートはしないでしょう。``端末'' が何か違ったタイプとして間違って (TERM 変数で) 宣言されたため 、誤ったインターフェースとなるだけです。 ``エミュレーション用に TERM を使 わないで'' をご覧ください。 ``Linux'' エミュレーションは柔軟で、エミュレートするよう意図した vt102 端末を越える特徴があります。カスタムフォントの使用や、簡単にキーボード のキー配置変更 (本当の端末用に必要なカーネルソースコードのパッチや、再 コンパイルなしで) などが可能です。このようなおまけの特徴はコンソールド ライバに内蔵されたものであり、エミュレーションソフトウェアのものではあ りませんが、結果的にエミュレーションの一部のように動作します。 このような付加的な特徴を利用するするために多くのコマンドがあります (Keyboard-and-Console-HOWTO をご覧ください)。(キー)スキャンコードも VGA カードも使用しない本当の端末では、残念ながらこれらの特徴のほとんど を使えません。通常はコンソールへ送られるメッセージを端末が受信するよう Linux を再コンパイルすればできるでしょう。``端末 をコンソールとして作 る'' をご覧ください。 9.6. エミュレーションソフトウェア エミュレータはうまく動かないかもしれないので、ソフトウェアの購入前にや りたいことをチェックすべきです。 9.6.1. Linux PC を端末にする 標準的な vt100 (あるいはそれに近いもの) をエミュレートしたい場合を除い て、Linux で利用できるフリーエミュレーションソフトウェアはあまり多くあ りません。フリープログラムの minicom や seyon (X-windows 専用) は vt100 (あるいはそれに近いもの) をエミュレートできます。seyon はまた Tektronix4014 端末もエミュレートします。 TERM (Century Sofware の非フリーソフト) は Wyse60,50; VT 220, 102, 100, 52: TV950, 925, 912; PCT ERM; ANSI; IBM3101;ADM-1l; WANG 2110 をエミュレートできます。IBM と Wyse の場合はブロックモードが使え ます。それは Linux PC で走ります。 9.6.2. 非 Linux PC を端末にする 非 Linux-PC で動くエミュレータもあります。それは Linux-PC へ接続する端 末として非 Linux-PC を使うことを可能にします。DOS 用として telix と procomm があります。Windows には ``HyperTerminal''(以前は Windows 3.x や DOS で単に``Terminal'' と呼ばれていた) があります。これに匹敵するも のが ``HyperTerminal Private Edition'' で、これは商用ソフトで す。vt-220 がエミュレートできます。Turbosoft(オーストラリア) の TTWin は Window s の下で 80 種類の端末をエミュ レートできます。 マッキントッシュの場合は、Carnation Software があります。 端末エミュレーション製品をチェックできる場所の一つに Shuford のサイト がありますが、古い製品 (まだ動きますが) がリストアップされてるようで す。実際、情報は古いものです。 をご覧ください。 10. フロー制御 (ハンドシェイク) フロー制御 (= ハンドシェイク = 歩調を合せること) とは、あまりに速いバ イトの流れにより端末、コンピュータ、モデムあるいは他の機器がオーバーラ ンするのを防ぐことです。オーバーランとは、機器が十分な余裕を持って受信 処理をできない時に、データの損失やその他の重大なエラーが生じることで す。フロー制御が何をするかと言うと、(例えば) 端末がデータ受信の準備が できるまでバイトの流れを止めておいたりします。フロー制御とは、バイトの 流れを止めたい機器とは逆側の機器に対してフロー停止信号を送ることです。 フロー制御は端末とコンピュータの両方で設定されねばなりません。 フロー制御にはハードウェアとソフトウェア (Xon/Xoff か DC1/DC3) の 2 つ のタイプがあります。ハードウェアフロー制御は RTS/CTS や DTR/DSR などの ような専用の信号線を使いますが、ソフトウェアフロー制御は、通常のデータ 線に DC1 や DC3 制御コードを送ります。ハードウェアフロー制御では、ケー ブルが正しく結線されていなければなりません。 2 つのシリアルポート間のデータの流れは 2 方向ですから、以下のような 2 つの異なるフロー (と結線) を考慮しなければなりません。 1. コンピュータから端末へのバイトの流れ 2. 端末のキーボードからコンピュータへのバイトの流れ 10.1. フロー制御がなぜ必要か ? 「なぜオーバランしない程度のそこそこのスピードで送らないの? そうすれ ばフロー制御なんて必要ないのに」と尋ねる人もいるでしょう。これは可能な んですが、フロー制御を使いながら高速で通信するより、はるかに低速になっ てしまうのです。一つの理由は、シリアルボーレートを 14,500 のようなお望 みのスピードに設定できなくて、飛び飛びの数の選択しかできないからです。 最善の選択は、機器が受信でき得るスピードより少しだけ速いレートを選択し ておき、それでもうまく動くようにフロー制御を使うことです。 フロー制御を使わないと決めたら、最悪のケースに備えてかなり遅いスピード に設定しなければなりません。端末では、複雑なやりとりをするためにエス ケープシーケンスを送ると通常より時間がかかります。モデムの場合 (データ 圧縮付きでフロー制御なし) は、、コンピュータから端末へのスピードが、電 話線で使用できるのと同じくらいゆっくりしたものでなければならないので、 最悪のケースではデータはランダムであり、圧縮できません。フロー制御に失 敗したら、そのスピード (データ圧縮オンの時の) は圧縮をまったくしない場 合より遅くなります。 バッファは、短い間だけなら最悪の状況を処理する助けとなります。一度に処 理しきれないほど速く飛びこんできたデータをバッファに格納し、後で処理す るために溜めておくのです。 10.2. パディング ``最悪の場合'' の状況 (フロー制御やバッファを使わない) を処理する別な 方法は、エスケープシーケンスにヌルの束 (値 0) を付け加えるというもので す。他にどんな機能も与えられてないなら、DEL が使われることがありま す。`` Del の認識''をご覧ください。 エスケープシーケンスは、端末が何かをするとき始まります。そして、端末が 作業中でビジーになったら、無視してよいヌルの束を端末から受け取ります。 最後のヌルを受け取ったとき、端末が作業を終えて次のコマンド待ちの状態と なっています。これをヌルパディングと呼びます。このようなヌルを正式に は、 ``フィルキャラクタ'' と呼びます。このヌルは単に時間を ``浪費'' す るだけに挿入されますが、全てを浪費しているわけではなく、端末が何かをす るためビジーとなったら相手はヌルを受信するのです。フロー制御がポピュ ラーになる前はよく使われました。効果的であるように適切な数のヌルが挿入 されるべきですが、長ったらしいものになります。端末のマニュアルにはこれ についての説明が少しだけか、あるいはまるでなかったので、試行錯誤するし かありませんでした。フロー制御がうまく働かないか、実装されていなけれ ば、パディングが解決策の一つとなるでしょう。stty コマンドのオプション にパディングがあります。 10.3. シリアルポートのオーバラン 19,200 bps (bit/sec) のようなスピードで送信データがセットされている送 受信シリアルポートで、オーバランはどのようにして起り得るのでしょう。理 由は、受信シリアルポートは電気的に入ってくるフローレートを取り扱えます が、シリアルポートからのバイト列を取り込み処理するハードウェア / ソフ トウェアが高速なフローレートに対処しきれなくなるからです。 原因の一つは、シリアルポートのハードウェアバッファがあまりにも小さいこ とです。古いシリアルポートのハードウェアバッファサイズは、たった 1 バ イト (UART チップ内) しかありません。もし受信バッファ内のバイトが次の バイトを受信する前に CPU 命令で取り除かれなければ (フェッチされなけれ ば)、それは消え失せます (バッファーオーバーラン)。16550 のような新しい UART には 16 byte のバッファ (1 byte バッファとしてもエミュレートでき ます) がありますので、オーバランしそうもありません。バッファに 1,4,8 または 14 バイトのデータが到着したら割り込みが発生します。他のコン ピュータチップ (普通は コンピュータのメイン CPU) が小さなハードウェア バッファから取り出して処理します (他のタスクの振舞いと同じ)。 ハードウェア受信バッファが、指定の制限 (古い UART は 1 byte) 一杯と なったら割り込みがかかります。コンピュータはしていたことを中断して、ソ フトウェアが何が起ったか見つけるためにチェックをします。最後に、シリア ルポートのバッファから 1byte (かそれ以上) を取り出そうと決めます。これ らのバイトを取り出し、カーネルがメインメモリ内に準備している大きなバッ ファ (シリアルポートバッファよりも大きい) に入れます。送信バッファで は、シリアルハードウェアはバッファが空っぽ (またはそれに近い状態) に なったら割り込みを発行し、送信データをもっとバッファに入れてよいことを CPU に伝えます。 端末にもコンピュータに似たシリアルポートやバッファがあります。端末への フローレートは、キーボードからホストコンピュータへの逆方向フローよりは るかに大きな値となるので、オーバーランが起りそうなのは端末側です。もち ろん、コンピュータを端末として使っているなら (エミュレーション)、同じ ようにオーバランが発生することがあるでしょう。 オーバーランが発生しそうな危険な状況は、1. 他のプロセスが割り込みを不 可にした場合 (コンピュータでの話) か、2. メイン (または、端末) メモリ のシリアルポートバッファがオバーフローした場合です。 10.4. 送信停止 洪水のように入ってくるデータを受信処理しきれなくなった時に、送信側に送 信停止の信号を送ります。これがフロー制御で、フロー制御信号は、コント ロールするデータの流れとは逆側に送ります (同じチャネルでも結線上でもあ りません)。この信号は、データ線に普通のデータとして送られる制御文字 (^S = DC3 = Xoff) か、DTR と CTS (あるいは他の) などの信号線とは別の専 用信号線の正から負への電圧変化として伝送されます。Xoff を使う方法は " ソフトウェアフロー制御" と呼び、専用信号線 (ケーブル内) を使った電圧変 位による方法はハードウェアフロー制御と呼びます。 10.5. キーボードロック 端末でもっともありふれた ``送信停止'' は、端末がこれ以上の文字を送り続 けられない場合で、PC に ``停止'' を送るケースです。別なケースは誰かが CTRL + S (訳注 CTRL キーと S キーを同時に押す) を押した場合です。一般 には稀ですが、PC がキーボードのタイプスピードについてゆけずに、端末に 停止を送ることがあります。端末はキーボードを ``ロック'' し、このことを メッセージかライトで知らせるはずです。キーボードロックがかかったら何を タイプしても無視されます。 端末の "ロック" は、コンピュータが端末へ送信停止を告げるときなどの一般 的な場合にもよく使われます。キーボードはロックされていないので、タイプ した文字はコンピュータに送られます。コンピュータが何も送りかえさなけれ ば、タイプした文字は表示されず、キーボードがロックしたように思うかもし れません。スクロールはロック (スクロールロック) しますが、キーボードは ロックしません。 10.6. 送信再開 受信側が処理に追いついて、データを受信できるようになったら送信側に信号 を送ります。ソフトウェアフロー制御でのこの信号は、正規のデータ線で送出 される制御文字 ^Q = DC1 = Xon です。ハードウェアフロー制御では、信号線 の電圧が負 (否定) から正 (肯定) に変ります。端末に送信再開を告げると、 キーボードのロックが解かれ使用可能となります。 10.7. ハードウェアフロー制御 (RTS/CTS 等) 古い端末の幾つかにはハードウェアフロー制御がありませんが、他の端末で は、シリアルポートの異なるピンを組み合わせてフロー制御を行ないます。様 々なピンとその名前のリストについては ``標準的なヌルモデムケーブルのピ ン配置''をご覧ください。かなりポピュラーに使われるピンに DTR ピン (ま たは、 DTR ピンと DSR ピンの両方) があります。 10.7.1. RTS/CTS, DTR そして DTR/DSR フロー制御 Linux PC は RTS/CTS フロー制御を使いますが、DTR/DSR フロー制御 (いくつ かの端末で使われる) も同じ働きです。DTR フロー制御では DTR/DSR フロー 制御の DTR 部分だけとなります。 RTS/CTS は、シリアルコネクタ (EIA-232) の RTS ピンと CTS ピンを使用し ます。 RTS は ``送信要求 (Request To Send)'' を意味します。受信側でピ ンの状態が肯定(正電圧) である時、「こっちに送ってもいいよ」という意味 です。もし RTS が否定 (負電圧) なら、それは ``送信要求 (Request To Send)'' を否定することであり、「こっちに送らないで (送信停止)」という 意味になります。受信側で受信準備可能となったら、送信再開を他方へ要求す るべく RTS を肯定 (正電圧) にします。コンピュータと端末で (両方共 DTE タイプの装置)、RTS ピンはケーブルの反対側の CTS ピン (Clear To Send) にフロー制御信号を送ります。すなわち、ケーブルの一方の RTS ピンはもう 一方の CTS ピンに接続されるのです。 モデム (DCE 装置) の場合は、RTS ピンが信号を受信し、CTS ピンは送信する ので、また違うやり方となります。これについて紛らわしく思われるかもしれ ませんが、ここでの議論の必要がないほど歴史的に正当な理由があるのです。 端末は普通、DTR か DTR/DSR のどちらかのフロー制御を使います。 DTR フ ロー制御は DTR/DSR フロー制御と同じですが、一方向のみで、DSR ピンは使 われません。端末での DTR/DSR フロー制御では、DTR 信号は RTS ピンから送 られる信号のようであり、DSR ピンは CTS ピンのような働きです。 10.7.2. DTR か DTR/DSR フロー制御で接続 端末の幾つかは DTR フロー制御だけを使います。これは、端末のオーバラン を防ぐ一方向のフロー制御にすぎません。誰かが、コンピュータが扱える以上 に速くタイプし過ぎると、コンピュータを守れなくなります。標準的なヌルモ デムケーブルでは、端末側の DTR ピンをコンピュータ側の DSR ピンに接続し ますが、Linux では DTR/DSR フロー制御はサポートしていません (マルチ ポートボードのドライバが DTR/DSR フロー制御をサポートしているかもしれ ません)。この問題の迂回策は、端末側の DTR ピンとコンピュータ側の CTS ピンとを接続して、 RTS/CTS フロー制御をセットする (stty crtscts) こと です。なんら影響を受けない唯一の方法をとれば、ホストは洪水のようなタイ プから免れるし、キーボードをロックするために RTS を落すような無駄な試 みもしなくてよいでしょう。``キーボードロック'' をご覧ください。DTR/DSR フロー制御 (端末が 2 方向のフロー制御をサポートしているなら) で上記の ようなことをするには、端末の DSR ピンをコンピュータの RTS ピンに接続し ます。 10.7.3. 古い RTS/CTS ハンドシェイクは異なる 混乱するのは、RTS のそもそもの使い方には上記で説明したのと反対の意味が あることです。オリジナルの意味は「送信要求」で、送信要求は、端末 (また は、コンピュータ) からモデムに送られます。要求を許可するなら、「送信要 求を確認しました (Cleared To Send)」との意味で CTS を肯定してコン ピュータ側の CTS ピンに送り返します。最近の RTS/CTS 双方向フローと比較 すると、コンピュータ (や、端末) からモデムへの単方向のフローに対する保 護でしかありません。 古い端末での RTS にはこんな意味があり、端末がデータを送信する時に正電 圧をかけます。上記の使い方がフロー制御の方式の一つですから、モデムがコ ンピュータに送信を停止してほしい場合は、CTS (コンピュータ側の CTS に接 続) 信号を落すと、コンピュータが送信を止めます。 10.7.4. リバースチャネル 古いハードコピー端末にはリバースチャネルピン (19番ピンのような) があ り、これは RTS/CTS フロー制御での RTS ピンのような働きです。この端子 は、紙やリボンがなくなった時にも否定になります。このピンはまた、ホスト コンピュータの CTS ピンとも接続したりします。信号極性を変えるディップ スイッチがあるかもしれません。 10.8. ハードウェアフロー制御はハード的になされるか? 一部の人は、ハードウェアフロー制御はハード的になされていると考えていま す (複数のポートを備えたインテリジェントシリアルカードを使ってない場 合)が、実際はオペレーティングシステムが行っているのです。UART チップと 関連のハードウェアは、ハードウェアフロー制御について何も知りませんか ら。ハードウェアフロー信号を受信すると、信号線の極性が変り、ハードウェ アは電気的な割り込みを CPU に与えます。しかし、ハードウェア自体は割り 込みの意味について関知しません。CPU は何をしていようが停止して、メイン メモリ内の割り込みテーブルのある場所へジャンプし、そこで割り込みプログ ラムの場所を知ります。このプログラムは、なにが起こり何をすればよいかを 知っています。 別な手段で実装されているのは、極性が変ったときに CPU に電気的な割り込 み信号を送る方法です。それが発生したら CPU は現在の作業を一時中断し、 シリアルドライバのサービスルーチンへ処理が移り、何が起ったかを知るため にシリアルハードウェアのレジスタを調べます。そのサービスルーチンの処理 が終了した後は、フローを再送出しないように指令します。こちらの方法のほ うがいくらか効率的ですが、Linux ではこのようにしていません。私は一時、 Linux ではそうしていると思っていました。 どちらの方法でもバイトの流れがほぼ即座に止ることに注意してください。し かし、シリアルポートのハードウェア送信バッファ内にすでにあるバイト (最 大 16 バイト) は送り続けられるでしょう。ソフトウェアフロー制御を使うな ら、受信データに ``オフ'' バイトがあるかチェックする必要があります。こ れらのバイトが 16 バイトの受信バッファを通ることで遅延が生じます。``オ フ'' バイトがこのバッファの最初にあっても、15 以上のバイトを受信してい る間ウエイトし、16 バイト全部を読んだら、``オフ'' バイトを見つけるで しょう。このような特殊な遅延はハドウェアフロー制御では起りません。 10.9. ETX/ACK や ENQ/ACK フロー制御はもはや廃れかけてる ?? これもソフトウェアフロー制御で、それができるデバイスドライバが必要で す。バイトはパケットとして送られ (非同期シリアルポートを経由して)、各 パケットの終端には ETX (End of Text) 制御コードがあります。端末が ETX を受信したら、次のパケットを受信する準備ができるまで待ち、それから ACK(Ack nowledge) を返します。コンピュータは ACK を受信すると、次のパ ケットを送ります。以上のことを繰り返します。これは Linux ではサポート されていないのでしょうか ?? HP の端末では ENQ の代りに ETX を使って同 じことをします。 11. 物理的な接続 マルチポートボードは、1 台の PC に沢山の端末 (や、モデム) を接続できま す。端末とホストコンピュータは、ケーブル直結かモデム経由、またはターミ ナルサーバ経由で接続されるでしょう。 11.1. マルチポート I/O カード 追加のシリアルカードは、沢山のシリアルポートを持つ ``マルチポートボー ド'' という名で購入できるかもしれません。本書ではこのようなボードにつ いて触れていませんが、Serial-HOWTO でかなり詳しく述べています。ある会 社の平均価格 (1998 年現在) は ByteRunner にあり ます。 11.2. ケーブルでの直接接続 端末とホストコンピュータを結ぶ最も簡単な方法は、ホストコンピュータのシ リアルポートへ直接接続することです。コンピュータと他の機器を (シリアア ルポートを経由して) 接続するなら、本章の情報を活用できます。ほとんどの PC にはシリアルポートが 2 つありますが、1 つはマウス用です。 EIA-232 ポート用として、送信と受信線がクロスしたヌルモデムケーブルが必要です。 ハードウェアフロー制御をしたいなら、おそらく DTR ピン (または、DTR ピ ンと DSR ピンの両方) を使うことになります。 訳注:現在の PC ではマウスポートは別にあり、2 つあるシリアルポートは両 方とも使用できるか、一方は内蔵のモデムボードが使用しています。 ケーブルの種類が正しいことを確認してください。お店で買ったヌルモデム ケーブルなら大丈夫でしょう (長さが十分ならば)。しかし、ハードウェアフ ロー制御はうまく働かないかもしれません。そんなケーブルはシリアルプリン ターケーブルなどとラベルが貼られてることでしょう。あなたご自身のケーブ ルを ``買うか作るか''は、ここを参考にして決めてください。オスの DB25 か DB9 のシリアルポートの PC への接続には注意してください。それと パラ レルポート (メスの DB25) に間違ってつながないように。 11.2.1. ヌルモデムケーブルのピン配置 (3,4,5 番端子) 下図の 3 つは本当のテキスト端末用ですが、RTS を DTR に、CTS を DSR に 置き換えれば 2 台の PC の接続にも使えます (PC と PC の接続に 4 線式を 使わないでください)。端末用として、DTR フロー制御だけを使うなら、 RTS と DSR 間を配線しないでください。2 組のツイステッドペア線なら、``ツイ ステッドペア線を使ったかしこいやり方 ''にあるように、2 つの線を信号グ ランドとして使ってください。 PC オス DB25 端末 DB25 TxD 送信データ 2 --> 3 RxD 受信データ RxD 受信データ 3 <-- 2 TxD 送信データ SG 信号グランド 7 --- 7 SG 信号グランド CTS 送信可 5 <--20 DTR 端末レディ RTS 送信要求 4 --> 6 DSR データレディ あなたの PC が DB9 コネクタなら以下を試してみてください。 PC DB9 端末 DB25 RxD 送信データ 2 --> 2 TxD 受信データ TxD 受信データ 3 <-- 3 RxD 送信データ SG 信号グランド 5 --- 7 SG 信号グランド CTS 送信可 8 <--20 DTR 端末レディ RTS 送信要求 7 --> 6 DSR データセットレディ あなたの PC と端末の両方共、DB9 コネクタなら以下のように接続します。 PC DB9 端末 DB9 RxD 送信データ 2 --> 3 TxD 受信データ TxD 受信データ 3 <-- 2 RxD 送信データ SG 信号グランド 5 --- 5 SG 信号グランド CTS 送信可 8 <-- 4 DTR 端末レディ RTS 送信要求 7 --> 6 DSR データセットレディ 上図の結線にはモデムコントロール線がありませんから、getty に ``local'' オプションが設定されていること (stty clocal と同じ) を確認しておいてく ださい。それとハードウェアフロー制御が必要なら、コンピュータ側でも可能 にしなければなりません (agetty の -h オプションを使って。 ``stty crtscts'' と同じです)。 11.2.2. 標準ヌルモデムケーブルのピン配置 (7 線式) 以下の 3 つの図は、フル ``スタンダード'' ヌルモデムケーブル用の結線図 です。購入したケーブルはこんな風に結線して接続します。これはコンピュー タ同士でも良好に接続できるでしょう。そして本当の端末でもソフトウェア (Xon/Xoff) フロー制御 (あるいはフロー制御無し) を使って接続できます。 しかし、端末でハードウェアフロー制御はうまく働かないでしょう。本物の端 末のほとんどは DTR か DTR/DSR フロー制御 (ハンドシェイク) をサポートし ていますが、Linux ではサポートされてないからです。 PC オス DB25 端末 DB25 TxD 送信データ 2 --> 3 RxD 受信データ RxD 受信データ 3 <-- 2 TxD 送信データ RTS 送信要求 4 --> 5 CTS 送信可 CTS 送信可 5 <-- 4 RTS 送信要求 DSR データセットレディ 6 | DCD キャリア検出 8 <-- 20 DTR 端末レディ SG 信号グランド 7 --- 7 SG 信号グランド 6 DSR データセットレディ | DTR 端末レディ 20 --> 8 DCD キャリア検出 代わりにフル DB9-DB25 ヌルモデムケーブルを使った場合です (端末でのハー ドウェアハンドシェイクはうまく働きません - 上記をご覧ください)。 PC DB9 端末 DB25 RxD 受信データ 2 <-- 2 TxD 送信データ TxD 送信データ 3 --> 3 RxD 受信データ 6 DSR データセットレディ | DTR 端末レディ 4 --> 8 DCD キャルア検出 GND 信号グランド 5 --- 7 GND 信号グランド DCD キャリア検出 1 | DSR データセットレディ 6 <-- 20 DTR 端末レディ RTS 送信要求 7 --> 5 CTS 送信可 CTS 送信可 8 <-- 4 RTS 送信要求 (RI リング表示 9 不要) (そう、DB9 コネクタ の 2 番、3 番ピンは DB25 コネクタとは逆の意味に なっています!) 2 つの DB9 コネクタをヌルモデムで接続する方法がこれです (でも DTR フ ロー制御はうまく働きません)。 PC DB9 DB9 RxD 受信データ 2 <-- 3 TxD 送信データ TxD 送信データ 3 --> 2 RxD 受信データ 6 DSR データセットレディ | DTR 端末レディ 4 --> 1 DCD キャリア検出 GND 信号グランド 5 --- 5 GND 信号グランド DCD キャリア検出 1 | DSR データセットレディ 6 <-- 4 DTR 端末レディ RTS 送信要求 7 --> 8 CTS 送信可 CTS 送信可 8 <-- 7 RTS 送信要求 RI リング表示 9 (未使用) 上記 2 つのコネクタを使うとフルモデムコントロール信号を備えているの で、 ``stty -clocal'' をセットすればそれができそうに思えます。getty 等 が通常の方法でポートをオープンする前に、端末の電源が入ってないといけま せん (DTR をアサートにする)。でも、最初に端末の電源を入れ損なうとトラ ブルの元です ( ``getty は即座に再起動する''をご覧ください)。そんな理由 で、``stty clocal'' はデフォルト (モデムコントロール線を無視する)で使 うべきで、これらのケーブルに追加した信号線はその目的を果たしてはいませ ん。 昔はモデムコントロール信号などを無視するのは簡単ではなかったので、次の ような ``トリック'' を行なっていました。それは、コンピュータ側のモデム コントロール線をつながずに、RTS と CTS を短絡したり、あるいは DSR と D CD と DTR を短絡したりするといったことです。この結果、コンピュータがあ るハンドシェイク信号を処理する必要がある時に、コンピュータ自身で (偽り の) 処理することになります。 11.2.3. 長さの制限 50 フィート (約 15 メートル) 以上のケーブルは高速ではうまく働かないか もしれません。この長さ以上でも大丈夫なのは、特に、低速で、低い静電容量 のケーブルを使い、受信端の電気的特性の感度が良好な場合です。9600 ボー で理想的は状態であれば、1000 フィート (約 300 メートル) でも通信できる とのことです。遠距離をカバーする一つの方法は、各シリアルポートの近くに 2 つのラインドライバを設置して、非平衡型から平衡型に変換 (および逆変 換) するとともに、ツイステッドペアケーブル線を使用することです。でもラ インドライバは高価ですが。 11.2.4. ハードウェアフロー制御ケーブル ハードウェアフロー制御 (ハンドシェイク) を望み通りに使いたいなら、自作 ケーブル (またはオーダーメイド品) を使う必要があります。もちろん使用中 のケーブルのコネクターが取り外せるなら、そうして配線し直してもかまいま せん。``DB コネクタのイン ストール''をご覧ください。DTR ピンを使うかど うか、使わないのならどのピン (ピン類) を使うのか決める必要があります。 セットアップメニューには DTR ピンの使用を意味する ``DTR ハンドシェイ ク'' があるので、これについての糸口になります。DSR ピンも使うかもしれ ません。詳説は``ハードウェアフロー制御''をご覧ください。古い端末には ハードウェアフロー制御が備わっていないものもあるでしょう。 11.2.5. ケーブルの両端 ノーマルな ``ストレートスルー'' ケーブルは、ヌルモデムケーブルかヌルモ デムアダプタと結合した延長ケーブルにしないとうまく働かないでしょう。 ケーブル端のコネクターがハードウェアのコネクタと合っていることを確認し てください。最低 4 芯 (ひょっとすると、ツイステッドペア) の電話線を使 う人がいるかもしれません。シールドしてあって、特別に低い静電容量のコン ピュータケーブルがベストです。 11.2.6. ツイステッドペア線を使った賢いやりかた EIA-232 信号は平衡型ではないので、ツイステッドペアケーブルの使用には注 意を要します。一つのペアは送信用で、もう一つは受信用です。こうするには 各 2 つのペアの 1 本の線を信号グランドに接続します。信号のグラウンド電 流だけが、(ツイステッドペアの一方をグラウンドに接続した)線を流れます が、これでも役に立つでしょう。「(グラウンドへ戻る別の回路に比べて) 目 的のツイステッドペア回路は低インダクタンスであるため、実際にこの回路を 経由する帰還 (グランド) 電流は、純抵抗成分 (直流抵抗) だけから計算した 場合よりも多くなります。周波数が高くなるほど、誘導インピーダンスが増加 するので、これは特に高周波領域で顕著に現れます。そしてシリアルポートの 矩形波には高調波が含まれてるんですよ。 訳注:著者の言いたいことは要はこういうことです。「ツイステッドペアの2 本の線は一方は信号に、他方はグラウンドに接続すべきです。このように接続 することで、線に流れる電流に依って生じる磁界が互いに打ち消し有って、外 部からのノイズの影響を受けにくくなりますし、線に流れる矩形波電流が含む 高調波を外部へまき散らすことも少なくなるからです。」 11.2.7. ケーブルの接地 1 番ピン (DB 25 の) はフレームグランド (接地でもある) ですが、安いシリ アルポートではどこにも接続さえしていません。9 ピンコネクタなどは接地用 の端子さえないのです。信号グランドは 7 番ピンで、普通はフレームグラン ドに接地されます。これは信号電流の一部が屋内配線の接地線に流れる (望ま しくない) ことを意味します。ケーブルのシールドは、ケーブルの片方のコネ クタだけで接地されることになっていますが、ケーブルのシールドを両方のコ ネクタに接地したほうが、屋内配線の接地線に電流が流れ込まないので、良い 方法かもしれません ?? 訳注:屋内配線に接地線がついている国でのお話です。日本では、特別な場合 を除いて接地線は配線されていません。 11.3. モデム接続 端末とモデムを組み合せて (コンピュータなしで) BBS に接続できます。いく つかの BBS (フリーネットのような)では、テキスト端末で動く lynx みたい なテキストブラウザを使ったアクセスを許しています。従って、古い端末と外 付けモデムでインターネットへも接続できます。アカウントのあるコンピュー タに接続したなら、ホストコンピュータ上での作業の保存 (や、ファイルのダ ウンロード) ができるでしょう。 11.3.1. 端末からの発信 ケーブルを使って端末 (あるいは端末をエミュレートするコンピュータ) とホ ストコンピュータを直結して接続する代りに、電話線 (あるいは専用線) とモ デムを使ってホストに接続できます。普通は端末 (またはコンピュータ) がホ ストコンピュータに電話を使って発信します。 ほとんどの人は発信に PC とモデムを使います。PC にはシリアルポート接続 した端末があって、端末を使う人が PC を使って発信できます。本物の端末は あまりインテリジェントではなく、ユーザにフィードバックすることもないの で、外付けのモデムを端末に接続するのは難しいことです。発信では、端末の 多くは 1 つ以上の電話番号を ``セットアップ'' しておけるメッセージとし て記憶しておき、あるファンクションキーを押したらモデムに送ります。多く のモデムもまた電話番号を記憶しておけます。モデムの初期化シーケンスは電 話番号に先立って行なわれなければなりません。電話回線の向こう側から応答 が返ってきたら、こっち側のモデムに繋がるホストコンピュータはログインで きるよう getty プログラムを動かします。 11.3.2. 端末は着信を受けつける Linux が動くコンピュータでは着信を受けるのはあたりまえのことで、呼び出 し側はログインプロンプトの表示後、ログインします。初めて見ると、ダム端 末 (どのコンピュータにも接続していない) がどうして着信を受けられるのか 奇妙に思うかもしれませんが、できるんですよ。このようなことをする理由の 一つは、料率が違う電話料金を節約することです。端末で ``着信'' の設定を し、端末側のモデムを自動着信 (レジスタ S0 に 2 をセットすると 2 回ベル が鳴ったら自動応答します) にするなど着信用の設定が必要です。着信前に端 末とモデムの電源を入れておいて、電話がかかってくると、ログインプロンプ トが表示されログインできます。 端末に電話をかけるホストコンピュータには、ちょっと普通じゃないことをす る必要があります。端末側のモデムが応答するとすぐに、ホストはログイン (login) を動かす必要があります。ホストは ``コールバック (callback)'' 時には ``cb'' と呼ぶ Linux プログラムを起動してこれを行います。コール バックとは、コンピュータ A がコンピュータ B に電話をかけ、コンピュータ B が一旦電話を切った後、コンピュータ A に電話をかけ直すことです。端末 をエミュレートするコンピュータ A を使っているならやりたいのではないで しょうか。コールバックプログラムの ``かけ直し'' の部分にしかホストを利 用できないので、本当の端末にとって複雑な作業となるはずです。コールバッ クのセットアップファイルはホスト側で正しく設定されなければなりません。 コールバックは端末に電話をかけさせ、そのポートで mgetty を動かします。 mgetty 自体 (1998年前半現在) は着信を受けることしかできなかったけど、 コールバック機能を組み込んで、発信もできるようになりました。1999年前半 の段階でこれができるとは思えませんでしたが。 11.4. ターミナルサーバとの接続 ターミナルサーバの使い方の一つは、ホストコンピュータが繋っている高速通 信ネットワークに沢山の端末 (や、モデム) を接続することです。もちろん、 ターミナルサーバには処理能力とネットワークプロトコルを話すソフトウェア が必要で、ある点でコンピュータに似ています。ターミナルサーバは、どんな コンピュータを接続するか等についてユーザと対話したり、あるいはそのよう なことをせずに接続できるものがあります。ターミナルサーバを経由してプリ ンターにジョブを送ったりもします。 今日の PC は、各シリアルポート自身にハードウェア割り込みが必要であるこ とを除けば、テキスト端末用のターミナルサーバとしての処理能力は十分にあ ります。PC をこの用途に使うには、割り込みが少なく、割り込みはハード的 に配線されていますので、ソフトウェア的に割り込みを増やすことも出来ませ ん。解決策はカード自体が割り込みシステムを持っている高機能マルチポート シリアルカードを使用することです (あるいは廉価版なら、PC の割り込みを 各ポートで共有するものがあります)。このようなカードについての詳しい情 報は Serial-HOWTO をご覧ください。Linux の下で、たくさんのシリアルポー トに対して getty が走る PC はターミナルサーバだと考えてもいいのです。 ネットワーク越しに他の PC と連携したり、主な役目がデータを通過させたり 14 バイト (か、それ以上) 毎にシリアルポートの割り込みを扱うのであれ ば、それは事実上ターミナルサーバと言えます。``redius'' と呼ぶソフト ウェアが時々使われます。 ターミナルサーバは端末だけでなく、それ以外にもサービスを提供するよう進 化しました。それは端末をエミュレートする PC にも役に立つし、時々は電話 線をつないだモデムプールにも接続されました。電話の着信にたいしてサービ スするデジタル接続を必要とする 56 K モデムの出現で、電話会社へのデジタ ルインターフェースが必要となりました。これは (そしてより以上のものが) 、ターミナルサーバをリプレースする ``リモートアクセスサーバ'' によって 今日供給されています。ターミナルサーバに接続されている多くの独立した電 話線の代りに、(多数あるうちにの) 各 1 本にたくさんのデジタル電話の着信 を受けられるので、少ないケーブルですみます。リモートアクセスサーバ上で はたくさんの電話番号や端末が必要な多数の接続者達はもはや存在せず、従っ てターミナルサーバの後継はたやすくテキスト端末をサービスできません。 11.5. コネクタとアダプタのタイプ コネクタは半永久的にケーブル端かハードウェアユニットに取り付けられま す。シリアル通信で使うコネクタには 2 つの基本的なタイプがあります。そ れは、 1. ピン付きの DBxx (DB25 のような) と、2. 電話線に使うモジュ ラー型のコネクタです。 アダプタはコネクタのように見えますが、両端についています。ケーブルのよ うなものですが、コネクタ以外の残りの部分はケーブルではなく、長くはあり ません。アダプタの両端はプラグになっています。それを使えば互換性のない コネクタ同士を接続することができます。アダプタは配線の変更にも使用しま す。アダプタの代用品として特別な (多分、自作の) ケーブルを使うこともあ ります。 11.5.1. コネクタ / アダプタの性別 コネクタ (あるいはアダプタの一端) は、オスかメスのどちらかです。ピンに なっているコネクタがオスで、ソケット (これもピンと呼ぶ場合があります) の方はメスです。モジュラーコネクタの場合、端子が露出している方がプラグ で、内側に端子があるもの (見えにくい) がジャックです。プラグがオスで、 ジャックがメスです。 11.5.2. アダプタのタイプ アダプタには、ヌルモデム、ジェンダチェンジャー、ポートアダプタの 3 つ の基本的なタイプがあります。幾つかのアダプタには、この 3 つの機能の内 1 つ以上があります。 o ヌルモデムアダプタ : 内部で配線を変える。ヌルモデムケーブルのような もの。 o ジェンダーチェンジャ : コネクタの性別 (オス、メス) を変換する。同じ 性別の 2 つのコネクタを互いに接続 (装着) できる。 o ポートアダプタ : コネクタのタイプを別なものに変換する (DB9 から DB 25 などのように)。 11.5.3. DB コネクタ (ケーブル端に DB コネクタを取り付けるには DB コネクタの取り付けをご覧 ください。) コネクタは 9 ピンか 25 ピンです。EIA-232 の規格上は 25 ピ ンですが、これらのピンのほとんどはシリアルポートでは普通は使われないの で、9 ピンで十分なのです。ピン配置については DB9-DB25をご覧ください。 普通、ピンには番号が振られていて、目を近づけるか、拡大鏡を使って見るこ とができます。 11.5.4. RJ モジュラーコネクタ 現代的な電話コネクタのような外見ですが、必ずしも電話コネクタとの互換性 はありません。``RJ コネクタの取り付け''をご覧ください。これには 6 個か 8 個または 10 個の端子がついています。 RJ11/14 は 4-6 端子付きの電話プ ラグで、外見は VT (または他の) 端末の後期モデルで使われている MMJ コネ クタ (6 端子) に似ています。MMJ にはオフセットタブがあり、 RJ11/14 と は互換性がありません。しかし幾つかのコネクタは、 MMJ か RJ11/14 の両方 と互換性があるように作られています。MMJ のピン配置は 1-DTR,2-TXD, 3-TXD GND, 4-RXD GND, 5-RXD, 6-DSR となります。 MMJ (または、RJ11/14) コネクタ付きのヌルモデムケーブルは、1 と 6、2 と 5 そして 3 と 4 を接続します。DTR/DSR フロー制御線を結んだケーブルを 使っても、Linux では (まだ) サポートされていないことに注意しておいてく ださい。何千万軒もの家庭で使われている壁から電話に配線された 4 端子の 電話線について理解しているなら、6 端子のヌルモデムケーブルを自作するの は簡単なことです。電話線もヌルモデムケーブルですから。それをよく見て、 同じ方法で結線すればよいのです。 平らな床面に (ねじれをつけないで) そのケーブル (もしくは端末のヌルモデ ムケーブル) を置いたら、ケーブルの両端のプラグには上向き (あるいは両方 共下向き) の金色の端子があるのに気がつくでしょう。ヌルモデムなのになぜ 左右対象になってるんだろうとちょっと考えるかもしれません。インラインカ プラを二三のケーブルと一緒に使うかもしれませんが、各インラインカプラも またヌルモデムアダプタなので、すべてうまく動くでしょう。2 つのヌルモデ ムデバイスを一列に繋ぐならストレートな接続にします。 RJ45 と RJ48 には通常 8 つの端子の電話プラグがあります。しかし、なかに は 10 端子のものがあって、10 端子のコネクタは幅が広いので、8 端子のコ ネクタには合わないでしょう。電話線のようなフラットケーブルや、丸いツイ ストペアケーブルの両方で使われています。コネクタのケーブル側は、丸ケー ブルとフラットケーブルで違っており、また RJ45 と RJ48 共に 8 か 10 端 子のものがあるので、間違えないよう気を付けてください。RJ48 には特殊な タブがあるので、RJ48 プラグは RJ45 ジャックには挿しこめないでしょう (R J45 プラグは RJ48 ジャックに合います)。それはマルチポートシリアルカー ドやネットワーク装置で使われます。8 端子のピン番号を示します。 プラグ ジャック (ケーブル端の外観) (壁面の穴の外観) .__________. .__________. | 87654321 | | 12345678 | |__. .__| |__. .__| |____| |____| 11.6. ケーブルを作るか、改造する 11.6.1. 買うか作るか ? 短かいヌルモデムケーブルを購入しようとする場合、それにはよくシリアルプ リンタケーブルとラベルが貼ってあります (でもシリアルプリンタは現在では あまりポピュラーではなく、ケーブルもそうです)。残念ながら、ハードウェ アフロー制御用にはおそらく使えないでしょう。ケーブル端のコネクターが、 あなたのコンピュータや端末のコネクタに合うかどうか確認してください。 端末を接続するのに長いケーブルが必要だったり、ハードウェアコントロール の必要がある時に、それに見当ったケーブルを得るにはどのようにすればよい のでしょう ? 正しい既成ケーブルを見つけるのは難しいことで (インター ネットで探せば見つかるかもしれません)、特に最小限の配線 (4 本) なら尚 さらです。選択肢の一つは注文製作品を使うことで、少し高価になりますが、 誰か作ってくれる人がいるなら既製品と比べてそんなに高くはなりません (私 はそうしました)。もう一つの選択肢は自分で作ることです。これには特別な ツールが必要です。それを見つけたら、使用済みのケーブルなんて安い買物で すが、おそらくコネクタ部分の配線を繋ぎ直す必要があります。短かいケーブ ルについているのは固定された成形コネクタで、再配線できないようになって いますが、注文生産品や自作のコネクタなら配線をやり直すことができます。 自作ケーブルの長所は、ケーブルが壊れた (あるいは調子が悪い) ときや、急 に他のケーブルを作る必要があるときにあなたの技量でもって作れることで す。 11.6.2. ピン番号 ピン番号はコネクタのプラスチック部に刻まれています。各ピンの近くにあっ て、見るには拡大鏡が必要になるでしょう。 11.6.3. ケーブル端に DB コネクタを取り付ける ``DB コネクタ''に簡潔な説明があります。残念ながら、最近のケーブルのほ とんどは成形コネクタなので、改造はできません。ネジを外して、線を付け替 えられるものもあります。ケーブルを作ったり、既存のものを作り直したりす るなら、ピンについて知っておかねばなりません。ピンには半田付けタイプと 裸線をかしめるタイプ の 2 つがあります。 かしめ式ピンは、かしめるための特別な工具と``挿入 / 引出し'' 工具も必要 です。これらのツールを一旦入手すれば、半田付けによる製作より早いでしょ う。2 本の線を 1 つのピンに挿すなら (接続済みのピンと他のピンをジャン パーする場合も)、半田付けのほうが早いでしょうけど。なぜなら、かしめ式 ピンは各 1 本の線にひとつだけしか付けられませんが、半田付けのほうは 1 つのピンに対して 1 本以上つけられるからです。 かしめ式ピンを挿入するには手か工具を使って挿し込みます。工具でピンを取 り外すには少しこつがいります。目の前に工具と線があれば、これからの指示 はすぐ理解できます。まず、ピンの後ろの線の周りに工具の先を押しつけ、コ ネクタの穴にとどくまで (およそ 1.5 cm) 挿入します。どれだけ挿入するか を示すマークがついている工具もあります。工具の先には先細りした切れ目が あるので、線より広い切れ目から始めて、工具の先を電線に押しつけます。工 具には先が 2 つあります。電線をはさみ込みにくい方は、電線をほぼ完全に 覆うので容易に電線を引き抜けます。 先端が適切に挿入された状態で、工具と電線をゆっくり引いてみてください。 出てこないなら、工具が正しく挿入されていないので、もうすこし押し込む か、違う位置にねじってみてください (あるいは両方とも試してみる)。もし かしたらピンを動かすのに違う種類の工具を使ってるのかもしれません。この 工具を使えば、ストレートケーブルをヌルモデムケーブルにしたりすることが できます。 ``挿入 / 引き抜き'' 工具の使用には問題があります。工具がピンの後部に挿 入できないなら、ピンが線をきちんとかしめておらず、工具の先が丸まってな くて角っぽくなってるからでしょう。ピンが出始めてもすべて引き抜けないな ら、ピンが曲ってるのかもしれません。拡大鏡で見てください。プライヤでピ ンをまっすぐにしようとすると、金めっきを傷めるかもしれません。たまに太 いスクリュードライバのブレードの先 (またはそれに似たもの) で押しつけた りしますが、あんまり強く押しつけるとプラスチックの穴を削ったり、ピンを 曲げてしまうかもしれません。 やり方を知らずに、あるいは説明書を読まずに半田付けをするのはやめましょ うね。 11.6.4. RJ コネクタの取り付け これはすごくありふれた電話で使われる電話用のモジュラージャックコネクタ です。しかし違うタイプのものもたくさんあります ( ``RJ モジュラー コネ クタ''をご覧ください)。 この種のタイプの再利用は簡単ではありません。線を引っ張り出して、金色の 端子を上げることができるくさび型のものを押し込めば、コネクタは再利用で きます。取り付けには特別な締め付け工具が各コネクタタイプ毎に必要です。 もし締めつけ工具がなくても、小さなドライバー (それとハンマー)を使えば 取り付けられます (ちょっと難しいけど)。ケーブルの電線をコネクタの中に 入れて、絶縁体の間と端子の間にピッタリ収まるように、各端子毎に小さなド ライバーで強く押しつけます。端子の幅とほぼ同じドライバーヘッドを使わな かったり、押しつけた時にドライバーが滑ったりすると失敗しますよ。小さな ハンマーでドライバーを強く叩いてもよいかもしれません (最初は手で押しま す)。 端子を押している時に、コネクタの取り外しレバーを傷つけないよう注意して ください。机にそれを乗せて、端子を押さないでください。代りに、レバーと ボディの間の裂け目にぴったり合う詰めもの (薄さ約 1 mm) を詰めて おいて ください。詰めものには、厚いボール紙か数枚の名刺、または板を使えばよい と思います。コネクタの底 (机の上に置いたときに) は平らじゃないので (取 り外しレバーがあるため) 、そんなコネクタを支えるような少し柔らかいもの (1 枚のボール紙のようなもの) を机上に乗せておくようにしてください。よ り良いのは、最初の 6 mm厚のコネクタの下に別な 1 mm 厚の詰めものを入れ て、端子を支えるようにすることです。表面が柔らかなテーブルでも傷めない でしょう。別な方法 (私は試したことありませんが) は、万力でコネクタを固 定しておくことですが、コネクタを壊さないように注意してください。 締めつけ工具を使うのと比べて上記の作業で取り付けると時間がかかり、誤り や失敗を犯しがちですが、1 つか 2 つのコネクタを取り付けるだけなら、特 別な工具を買うよりはるかに安上りで、得策です。 12. 一般的なセットアップ (設定) 12.1. イントロ 設定 (セットアップ) には、端末の不揮発性メモリに設定内容を記憶させるこ とと、コンピュータの電源が入った (あるいは、ランレベルが変った) 時に実 行するスタートアップファイル (ハードディスク上にある) にコマンドを記述 しておくことの 2 つがあります。本章では設定のあらましについてと、端末 とコンピュータの両方に不可欠な通信オプションについて説明します。続く 2 つの章において、端末の設定 ( ``端末セットアップ''をご覧ください) と、 コンピュータの設定 ( ``コンピュータセットアップ (設定)の詳細''をご覧く ださい) を詳細に説明します。 12.2. 端末のセットアップ (設定) の概要 端末を設置する場合は、電源投入直後の端末の設定を(端末の電源が切られて も、設定内容が消えない不揮発性メモリに) 記憶させ、物理的に端末の設定を する必要があります。正しく設定してある端末をお持ちなら幸運ですよ。あな たの環境に合った正しい設定を少しだけすればよいか、あるいはまったく必要 ないからです。 端末の設定には 2 つの基本的なやり方があります。一つは端末の前に座っ て、一連のセットアップメニューに従ってやっていく方法です。もう一つはホ ストコンピュータからエスケープシーケンスを送る方法です。端末に何かを ( エスケープシーケンスのような) 送る前に、``通信 インターフェイス'' のオ プションのボーレートオプションをコンピュータのそれと合うように設定して おかなければなりません。コンピュータと端末が互いに ``会話'' する前に通 信が正しく設定されてないといけないので、端末の前で設定を行ないます。詳 細は``端末のセッ トアップ'' をご覧ください。 12.3. コンピュータセットアップ (設定) の概要 また、コンピュータから端末に設定用のエスケープシーケンスを送ることがで きる場合、コンピュータだけで、端末を使えるように設定ができます。運が良 ければ /etc/inittab ファイルに ``getty'' コマンドを記述しておくこと で、必要なことが全てできますよ。コンピュータが起動した時に、``login:'' プロンプトを端末に対して送りますから。詳細は``Getty (/etc/inittab にあ る)'' をご覧ください。 コンピュータはデバイスドライバ (カーネルの一部) を使って端末と通信しま す。シリアルデバイスドライバにはデフォルトの設定があり、端末で ``login'' が動く前にそのうちの一部 (時には全部) が getty プログラムに より設定されます。しかし、追加の設定には ``stty'' と ``setserial'' と 呼ぶプログラムが必要になる時があります。コンピュータの電源を切る度にこ の設定が消えるので、これらのプログラムを (もし必要なら) 毎回動かさなけ ればなりません。``コンピュータセットアップ (設 定) の詳細''をご覧くだ さい。 12.4. 多くのオプション 選択可能なオプションはかなりたくさんあります。通信オプションが正しく設 定されていないと、端末はまったく動かないでしょう。別なオプションを間 違って設定しても、使われてない機能なら問題ありません。例えば、端末にプ リンタが接続されてなければ、プリンタの設定パラメータが端末内でどのよう に設定されようと違いはありません。最後の文は 100% 正しいわけではありま せん。端末にプリンタが接続されてないのに、コンピュータからプリンタに文 字 (データ) を全てリダイレクトするコマンドを送ったとしましょう。そうす ると画面にはなにも表示されず、端末が死んでしまいます。幾つかの端末に は、プリンタが接続されていないことを示す設定オプションがあります。この 場合 `` プリンタ'' への出力をリダイレクトするどんなコマンドも無視する ので、上記のような問題は起こりません。しかし、端末を本当に変にしてしま う誤ったコマンドが他に多くあるので、これはたいした助けにはならないで しょう。誤ってバイナリファイルを端末に送ったような状況に似ています。 いくつかの場合では、端末がある状態に設定されていると思っているまれなプ ログラムを動かさない限りは、誤った設定によるこの種の問題は起らないで しょう。表示上の外観のみを決める別なオプションがあり、間違った設定がな された場合、端末はうまく動くはずですが見た目がおかしくなります。 幾つかのオプションは端末にのみ影響するもので、コンピュータで設定する必 要はありません。例えば、明るい背景に黒字で表示したいですか ? 背景が黒 いより目に優しいですよね。押し続けられたキーを繰り返すようにしますか ? 行が画面の右端に来たら画面を折り返しますか ? キークリック音を鳴らしま すか ? 12.5. 通信インターフェイスのオプション 通信設定 (オプション) の幾つかは端末とコンピュータの両方にあり、通信速 度、パリティ、キャラクター長やフロー制御などは両者で正しく設定されなけ ればなりません。通信オプションには端末側でのみ設定されるものもあります (この組み合せでのみ通信するのに不可欠なものです)。物理ポート ttyS2 の ポートアドレスや割り込み番号 (IRQ) のようなオプションは、 ``setserial'' コマンドを使ってコンピュータ側でのみ設定されます。以上の 基本的なオプションが全て矛盾なく設定されるまで、端末とコンピュータの通 信は満足にできません (まったくできないのと同じ)。端末では、各端末毎に メニューを使って (もしくは各端末で特別なカートリッジを使って) 手作業で これらのオプションを設定しなければなりません。ホストコンピュータは、電 源投入のたび (もしくは誰かがログインした時) にコマンドを発行して設定を おこないます。ログインプロセスが動かす (/etc/inittab で指定した) getty プログラムがコンピュータの設定を行なうこともあります。``Getty (in /etc/inittab)'' をご覧ください。 コンピュータと端末の両方の設定です。 o ``通信速度 (ビット / 秒)'' o ``パリティ'' o ``キャラクタ長'' o ``フロー制御'' 端末だけの基本的な設定です。 o ``ポートの選択'' o 全 2 重通信の設定 (Wyse 端末では FDX) ``Getty (in /etc/inittab)'' が、あなたの望むようにコンピュータ側の設定 ができないなら、 Stty と Setserialコマンドの一つ (あるいは両方) を使う 必要があります。 12.5.1. 通信速度 端末とコンピュータの両方で同じ設定にしなければなりません。通信速度は ビット / 秒 (bps または ボーレート) で表します。エラーなしで高速通信す るにはフロー制御をしたほうがよいでしょう。端末側では送信 (Transmit) と 受信 (Receive) -- 時々 T,R と省略します -- の 2 つの速度が設定でき、普 通は両方が同じ速度に設定するので、Linux の stty ではまだ別々に設定でき るようになってないと思われます (``stty'' コマンドのオプションでこれが できますが、実際は両方とも同じ設定にします)。 共通の速度は 300, 600, 120 0, 2400, 4800, 9600, 19200, 38400 などがあり、低速 (600 のような) はプリンタやハードコピー端末用です。 12.5.2. パリティ、それを使うべきか ? パリティの定義については``パリティの説明''をご覧ください。たいていはパ リティ禁止がデフォルトです。パリティを許可するなら、端末とコンピュータ の両方で許可して、偶数パリティか奇数パリティのどちらかを選択します。偶 数、奇数のどちらを選んでも大差ありません。端末では時々、送信と受信のパ リティの両方を設定します。コンピュータでの stty は異なった設定を許さな いので両方とも同じ設定にすべきです。普通、 PC のシリアルポートは異なる パリティをサポートしません。幾つかの端末では受信パリティを設定できませ んから、受信パリティビットを単に無視します。1 文字を 8 bit として扱う 古い端末は、ハードウェア的にパリティビットの拡張ができないので、パリ ティチェックもできません。 パリティを使うべきでしょうか ? パリティは、必然性はないけどもあれば尚 良しといったところです。パリティがなければ不正な文字をあちこちで受信し て、存在しない文字のスペルミスを補正しようとするでしょう。しかし、パリ ティにはコストがかかります。第一に、デフォルトがパリティなしなので設定 が少々複雑です。第二に、1 バイト毎に 1 ビット以上のパリティビットが付 加されるので、通信ケーブルを通過するスピードが低下するでしょう。これに よって有効速度が低下するかどうかはわかりませんが。 例えば、ハードコピー端末は印刷処理で機械的に制限されます。コンピュータ (のUART チップ) が送る 1 秒当りのバイト量が増えると、機械的な印刷処理 に追いつくようにフロー制御の ``停止'' 信号が頻繁に送られることになるで しょう。フロー制御による待機があっても、効果的な速度を保つにはパリティ 以外にはありません。幾つかの端末でも状況は同じです。パリティを実装した 後で、1 秒当りのビット数 (平均) が少し増えたために、単位時間当りでは少 しはフロー制御によって待機することになります。しかし、追加したパリティ ビットのせいで 1 秒当りのバイト数 (平均) は同数となります。 一つのオプションはパリティなしで端末をインストールしてしまうことです。 パリティエラーに気付いた後で、それを設定するのです。パリティなしの時に 発生するエラーに目ぼしをつけるには、身に覚えのないスペルミスを探すこと です。そんなエラーに気づいたら、画面をリフレッシュ (コンピュータから再 送信する) してください。エラーがなくなったら、それはパリティエラーで す。そのようなエラーが多発したら (数百画面に 1 つ以上)、パリティを有り にしたり、通信速度を落したり、また、より短かく品質の良いケーブルを使用 するなどの適切な策をとる必要があります。パリティ有りにしてもエラーの数 は減りませんが、エラーがいつ発生したかはわかります。 まさに正反対の方針は、最初からパリティ有りにしておくことです。それで、 パリティエラー (CRT の文字化け) が発生しなければ (一ヶ月か二ヶ月の一定 期間)、パリティ無しにしても安全です。 12.5.3. キャラクター長 これは文字のサイズです (パリティビットを除く 1 文字当りのデータビット の数)。ASCII では 7 ビット、ISO 文字セットなら 8 ビットです。もし ASCI I キャラクタしか使わないのなら、8 ビット長より転送速度が早いので、 7 ビット長を選択しましょう。幾つかの古い端末は 7 ビット文字しか表示でき ません。 12.5.4. どのフロー制御にする (ハンドシェイク) ? フロー制御は、``ハードウェア''(例えば DTR/CTS) か、``ソフトウェア'' (X onn/Xoff) のどちらかの選択となります。(Adds の端末メニューでは、どちら のフロー制御にも ``Xon/Xoff'' と間違った使い方をしています)。(ケーブル に 1 本か 2 本の余分な線があって、端末がサポートするなら) ハードウェア フロー制御のほうが速く動作しますが、Xon/Xoff もそれ程悪くはありませ ん。何人かの人がハードウェアフロー制御に変えることで、気がかりな問題を 解決したこと (以下を見てください) を報告していますが、ソフトウェアフ ロー制御は別な設定で良好に動作します (私自身の場合ですが)。 もしソフトウェア (Xon/Xoff) フロー制御を使い、ユーザがそれについて何も 知らないなら、ホストにうっかり Xoff を送ったり、端末をロックしたりする と思います。端末がロックしている間、ユーザは端末をアンロックしようと無 駄な試みながら、大慌てでいろんなキーをタイプすることでしょう。そして通 信を回復するために Xon が送られた時、急いでタイプした全てが実行され て、恐らく予期せぬ結果が生じるのです。ハードウェアフロー制御ならこんな ことは起こりません。フロー制御の説明は``フロー 制御'' をご覧ください。 12.5.5. ポートの選択 ほとんどの端末には背面に 2 つ以上のコネクタがあるので、通常、1 つのコ ネクタをホストコンピュータとの接続用に、もう 1 つをプリンタとの接続用 に割り当てることができます。コネクタの近くには名前があって (調べてみて ください)、この名称 (Aux,Serial 2 あるいは Modem) はホストかプリンター のどちらかの接続 (あるいはそれに類するもの) に割り当てられます。 12.6. すぐに試してみるには 上記のことは全てひどく複雑に思えますが、端末を動作させるのはかなり簡単 なものですよ。 クイックインストールの章では、これを試す簡単な方法につ いて述べています。でもうまく動かなかったり、より良い表示にしたくなった り、あるいは性能を上げたければもっと深く読む必要があります。 13. 端末のセットアップ (設定) の詳細 ``端末へエスケープシーケンスを送る''という次の小節を除いて、本章では主 に、端末の前でメニューを使って手作業によるセットアップの詳細について述 べます。まだやったことがないのなら、``端末セットアップ (設定)の概要'' を読んでください。端末のマニュアルがあれば一番いいのですが、それさえも 設定する必要のある多くのオプションについての情報が載っているわけではあ りません。 ボーレートのような通信パラメータは、もし設定されなかったら端末との通信 がうまくいかないので、端末で常に設定されてなければなりません。一度通信 が確立したら、端末の設定を保存させるために 2 つの選択肢があります。端 末で手作業の設定を繰り返して端末の不揮発性メモリに書き込んでおくか、あ るいは端末の電源が入るたびに (あるいはそれに似た状態になると)、コン ピュータから端末へエスケープシーケンスを送るようにすることです。 もし、端末のセットアップと良好な設定を端末に保存する方法を知っているな ら、それが最善のやりかただと思います。その方法を知らないのなら、端末を 使う度に terminfo の初期化文字列を端末に送ることでしょう。多分何もしな くても端末は使いやすいものだと思いますよ。あなた (かアプリケーションプ ログラム) は、端末にあるエスケープシーケンスを送ることでいつでも設定を 変更することができます。 13.1. 端末へエスケープシーケンスを送る 一度通信インターフェースが確立すると、端末の設定はコンピュータから端末 へエスケープシーケンスを送ることで保存します。かなり多くの端末があるの なら、自動的に実行するシェルスクリプトを書く価値があると思います。それ は端末の不揮発性メモリに正しいセットアップを保存するように指示するコマ ンドなので (そうじゃないかもしれない)、次に端末の電源が入ったときに設 定が反映しているでしょう。 エスケープシーケンスを送るには簡単な方法と複雑な方法があります。簡単な 方法を使うと、terminfo データベースから適切なエスケープシーケンスを見 つけてきて自動的にコマンドを発行し、送信してくれるので、エスケープシー ケンスを探す必要はありません。残念ながら、送りたいエスケープシーケンス が全て terminfo データベースにあるとは限りません。従って、より複雑な ( でも、より良い) 方法はエスケープシーケンスを直接送ることです。 複雑な方法を使うには高度なマニュアルが必要になります。かつて古い端末の マニュアルにはエスケープシーケンスの詳細な表が含まれていましたが、新し いものには普通は記載されていません。それを見つけるために、端末には付い てこない ``プログラミングマニュアル'' (またはそれに類するもの) と呼ぶ 別なマニュアルを購入する必要があるかもしれません。幾つかの端末のために ``エスケープシーケンスリスト''がインターネットにありますが、簡潔なもの で、不備な点もあります。 マニュアルかそれに類するものがなくても、``tput'' と ``setterm'' プログ ラムを使って端末の設定をするためのコマンドを送ることができますよ。``端 末の設定の変更''をご覧ください。初期化文字が端末に対して希望の設定を行 なうなら、terminfo のエントリにある初期化文字を端末へ送るにちがいあり ません。``初期化 文字''をご覧ください。端末の電源が入る度にコンピュー タから端末にエスケープシーケンスを送るようにしなくても、端末の不揮発性 メモリにどうにかして保存しておけばよいのです。 13.2. より古い端末のセットアップ 古い端末の数字キーの最高列のすぐ上のラベルを見てください。もしあれば、 このラベルはセットアップモードで使用できます。幾つかの古い端末では、`` セットアップ'' メニューが一つだけかもしれません。なお古いものには物理 的なスイッチがついています。いくつかの場合では、全てのスイッチにラベル があるわけではないのですが、隠されてるかもしれません。もちろん、スイッ チで何かを設定したら、それは ``保存'' されており、不揮発性メモリなどに 設定を保存する必要はありません。 13.3. セットアップ (設定) モードの情報を得る 端末でオプション (設定) を選択するためには、最初に ``セットアップ'' モードにしなければならず、それから端末に記憶され画面に表示されたメ ニューを使ってオプション (すなわち設定) を選択します。設定時には、端末 はコンピュータに接続される必要はありません。いかにセットアップモードに するかについては端末のマニュアルに記載されていますが、ここで幾つかのヒ ントを挙げておきます。 ``セットアップ'' キーがあるなら押してみてください。そしてまたそのモー ドに移ってみてください。 o Wyse: 最初にシフトを押しながら ``select'' キーを押してください。そ れから上記の全てで Ctrl キーの代りにシフトキー押してください。 o VT,Dorio: F3 がセットアップキーだと思います。VT420 とその後継モデル では、F3 キーは他の機能に割付を変更されてるかもしれないので、一度電 源を切ってください。再び電源を投入して初期画面が表示された直後に F3 キーを押してください。 o IBM: 3151: Ctrl-ScrollLock を押します。3153 は Ctrl-テンキーのマイ ナス (または 3151 と同じ) を押します。 セットアップメニューで移動するには矢印キーを試してみてください。選択す るには リターンキー か スペースバー または特殊キー (古い端末なら ``tog gle'' キー) を使います。セットアップモードから抜けるにはメニューで終了 を選択します (あるいは古い端末なら再びセットアップキーを押します)。 13.4. 通信オプション 端末で完全に動くようにするには、通信速度、パリティ、データ長や通信モー ドが正しく設定されてないといけません。不正なフロー制御は、データの欠落 や画面で文字化けの原因となります。必須の通信オプションは他の章 (端末と コンピュータの両方共) で扱います 。``通信インターフェイス''のオプショ ンをご覧ください。以下のリストは他の章へのリンクであり、加えて付加的な 通信オプションは端末側でのみ設定します。 o ``通信速度 (ビット / 秒)'' (ボーレート) 9600、19200 など。 o ``パリティ''なし、偶数、奇数、マーク、スペース o ``キャラクタ長'' {Data}: 7 or 8 o ``フロー制御''またはハンドシェイク {Hndshk}: なし, Xon-Xoff または ハードウェア (DTR 等) o 受信ハンドシェイク {Rcv Hndshk} は、フロー制御信号をホストヘ送る ことで端末で受信されるデータを保護します。 o 送信ハンドシェイク {Xmt Hndshk} は端末から送信されるデータを保護 するものです。端末はフロー制御信号を受信 (そして、キーボードを ロック / アンロック) します。``Xon/Xoff の受信'' を含みます。 o ストップビットの数 : 1 か 2 。``バイト のための電圧シーケンス''をご 覧ください。 o フロー制御レベル {Rcv Hndshk Level} {{Xoff at ...}}: フロー制御は端 末の受信バッファのバイト数、この数と等しくなったら ``停止'' を送り ます。 o ``通信モード'' {Comm}: ``全二重 {FDX}, 半二重 {HDX}'' {{Local Echo}}, ``ローカルモード'' {{Online/Local}} o 転送率 (速度) の制限 {Xmt Lim}: いくら通信速度を上げても、送信は指 定した文字数以下に制限されます。 o ファンクションキーレートの制限: 上記のようなもので、ファンクション キーのメッセージを制限します。 o ``ポートの選択'': どのポートをホストとの通信に使用するか {Host Port} ? 13.5. セットアップの保存 セットアップした内容が次回端末の電源を入れたときに有効となるように、不 揮発性メモリに保存しておけなければなりません。もしセーブし損なったら、 端末の電源を落としたときに新しいセットアップの内容が消えてしまいます よ。端末のセットアップでトラブルを起こす前に、セットアップ内容の保存方 法を確認しておきましょう。最近の端末では、メニューを使って保存します。 古い端末には手作業で保存するのもがあります。ほとんどが Ctrl-S キーを押 して保存します。 13.6. オプションとパラメータのセットアップ 端末エミュレーションで使用するこれらのパラメータの多くは Teemworld の Set-Up を参照してく ださい。エミュレーションは本当の端末と少し違いがあります。 本章で続いて述べることは、多くの端末のセットアップメニューで設定可能な オプションについてです。オプションはパラメータや特性などとも呼びます。 多くのオプションは ``モード'' と呼ばれます。設定オプションは ``設定'' とも呼んでいます。多くのオプションは、端末へあるエスケープシーケンスを 送ることで設定できるでしょう。端末の型式やメーカの違いで様々なオプショ ンがありますが、同じオプションは異なる名称で呼ばれています (ここで全部 は示しません)。Wyse 端末の略称は {...} で囲み、ほとんどの VT 端末は { {...}} で囲みます。 13.7. エミュレーション {Personality} {{Terminal Modes}} 最近のほとんどの端末は各種の端末をエミュレートできます。端末は自分自身 もエミュレート出来ますが、エミュレートしないほう {native personality} が、多くのことができるでしょう。時々、同じ端末のモデルに対して 2 つの 異るエミュレーションがあります。例えば、VT220-7 は 7 ビットコードの VT 220 をエミュレートし、VT220-8 は 8 ビットコード (256 文字表現が可能) の VT220 をエミュレートします。 普通、端末の古い機種には新しい機種ほどの機能はありません。古い端末をエ ミュレートしたいが、最近の機種の高度な能力の一部も使いたいこともあるで しょう。これは (ある程度) 可能ですよ。この機能は {Enhance} (あるいは Enhanced ??) と呼んでいます。 13.8. 表示オプション 13.8.1. キャラクタセルのサイズ {Char Cell} 文字に適したセルのサイズのことです。単位はピクセル (= 小さなドット) で、ドットより解像度は良いです。10x16 は 幅 10 ドット、高さ 16 ドット (16 行 10 列) となります。行 (高さ) が最初にある行列の次元の表記と比べ ると、この表現は逆になってることに注意してください。また、文字サイズに は隣り合う文字間のスペースに割当てられた行と列のピクセルも含まれるの で、実際の文字境界を定義するセルサイズはもう少し小さくなります。 13.8.2. 列 / ライン 普通は 80 列で 24 か 25 ラインです。これは、画面上の 1 行 (ライン) 当 り 80 文字という意味です。多くの端末のオプションには 132 列があります {{Set 132 column mode}} が、大きな画面じゃないと小さな文字は読みにくい かもしれません。25 ラインにするなら、terminfo にあることを確認してくだ さい。それと、/etc/profile に ``export LINES=25'' を追加しなければなり ません。そうしなかったら、スクロールに問題が起きますよ ( ``端末でスク ロールしない''をご覧ください)。 13.8.3. カーソル カーソルは長方形 (= ブロック) で表示されます {Blk}。他のオプションで下 線 {Line} にしたり点滅させたりできます。非点滅の {Steady} ブロックモー ドを気にいってるのは、惑わせるような点滅がないために,すばやく見つけら れるからです。もし非表示 (幾つかのオプションにあります) の設定にする と、表示されませんが、非表示カーソル上でタイプした新たな文字は画面上に 表示します。 13.8.4. 表示属性 (マジッククッキー) ``表示属性''はマジッククッキーか各文字に割当てる属性バイトのどちらかに なります。マジッククッキーなら、影響範囲には限界があります。行の終わり までか、ページの終わりまでにしたいですか ? もっともいいのは、属性バイ ト (実際は 半バイト = ニブルになります) を使うことです。 13.8.5. 表示制御文字 {Monitor} ``表示制御'' のような名前で呼ばれたりもします。オフ (通常) なら、``制 御文字を解釈しなさい'' ということです。オンなら、ホストから送られたエ スケープシーケンス (普段は決して画面上で見ることはない) を表示します。 エスケープシーケンスは 1 行に並んで表示され、端末では実行 (解釈) され ません。改行を指示する CR LF シーケンスは除きます。``制御コード''をご 覧ください。 13.8.6. 2 倍の幅 / 高さ 幾つかの端末には 2 倍幅と、2 倍高さの文字があります。この特性はめった に必要ありませんが。1 行を 2 倍幅 (DW) に変えると、右半分 (RH) が画面 から押しだされて削除される (消える) のではとの疑問が浮かびます。``保 存'' は DW 行の RH をキープしておくことを意味します。2 倍高さモードで は、画面上で 2 倍高を表示するために、各行を 2 度 (2 度目は下の行) 送る 必要があります。 13.8.7. 反転表示 {Display} (背景の明 / 暗) 通常のビデオは、暗い (黒) 背景に明るい (白、緑、黄色) 文字 (前景)で す。反転は {Display Light} は、反対に明るい背景に黒字となります。これ は目に優しいと思います (部屋が暗くなければ)。 13.8.8. ステータス行 ステータス行は画面の先頭か最終行にあり、動いているアプリケーションプロ グラムの情報などを表示します。しばしば何らかの方法でハイライト表示され ます。ステータス行が有効な状態で、アプリケーションは、続くテキストをス テータス行に表示することを意味する特別なエスケープシーケンスを送ること ができます。しかし、多くのアプリケーションはステータス行の機能を使うか わりに、ステータス行が表示されている位置にカーソルを移動させて、文字を 表示させています。普通のユーザはその違いに気付きません。 13.8.9. 80/132 の切り替え : クリアするか残すか ? 桁数を 80 から 132 (あるいは逆) に切り換えるとき、前回の形式の表示デー タを消すべきか (クリアーする)、残すべきか ? {80/132 Clr} {{Screen Widt h Change}} どちらに設定しても違いのないようにすべきですが、アプリケー ションプログラムが 132 桁を使うなら、制御シーケンス経由で適切に設定す べきです。 13.9. ページに関連付いたオプション Wyse 端末が表示メモリの複数ページにアクセスできるように、{Multipage} をオンにしなければなりません。 13.9.1. ページサイズ 端末メモリはページ単位で分割されます。ページの説明は、``ページ''と`` ページ (定義)'' をご覧ください。選択した長さでページメモリを仕切ること もできます。現在のところ、 Linux アプリケーションはページを使わないと 思われますので、この設定をしてもあまり効果はありません。 13.9.2. 結合 (カーソルと表示の) カーソルが現在は表示されていない (他のページや、同じページの画面に現わ れていない個所) ビデオメモリに移ったとき、表示も新しいカーソルの位置へ 切り変えるべきでしょうか ? そうだとすればこれは``結合'' と呼ばれるもの です。同じページ内のカーソルの移動は、``垂直結合'' と ``水平結合'' で す。他のページへの移動は ``ページ結合'' です。 13.10. 報告と応答 端末はあるエスケープシーケンスに対して、それ自身とその状態を認識する か、あるいは事前に記録されたメッセージを送るでしょう。 13.10.1. 応答メッセージ (文字列) 端末の電源が入ったときや、ホストからの要求 (たぶん ENQ (要求) 制御文字 です) に応じてホストに送る短かいメッセージをセットアップで書いてもいい です。 13.10.2. 自動応答 設定したら、ホストが求めなくても電源投入で応答メッセージを送ります。あ る ``getty'' プロセスはこれを待ってるのでしょうか ?? 13.10.3. 応答キャンセル 設定したら、誰にも応答メッセージを見せません (もちろんホストコンピュー タを除いてですが)。変更が必要なら ``応答キャンセル'' を再度選択しま す。そうすると前の応答キャンセルメッセージは破棄されるので、新たなメッ セージを入力してもよいでしょう (でも、古いメッセージはもう見られません よ)。 13.10.4. 端末 ID {ANSI ID} 端末は識別情報の要求に答えてこの返事を送ります。 13.11. キーボードオプション 13.11.1. キークリック 設定したとき、キーを押せばクリック音が鳴ります (キーボードの小さなス ピーカから発する)。クリック音を聞いていらいらする人もいるので、私はオ フにしておく方が良いと思います。 13.11.2. キャップスロック {Keylock} Caps-Lock キーが押されたら、アルファベットキーだけに文字の入れ替えが起 るべきなのでしょうか ? もし {Caps} か大文字のみの設定なら、Caps-Lock がオンで数字キーが押されたときに数字がタイプされます。数字キーの上の記 号をタイプするにはシフトキーを押しながら数字キーを押します。もし {Shif t} が設定されていたら、全てのキーは Caps-Lock がオンの時にシフトを押し ながらタイプしたのと同じ文字になります (5 のキーを押したらシフトキーな しでも % をタイプします。他も同じ)。 13.11.3. オートリピート {Repeat} キーを押し続けるとそのキーを繰り返し *タイプ* します。これはページ境界 線を書くために同じ文字を繰り返しタイプする際に便利です。 13.11.4. マージンベル カーソルがディスプレイの右端から 8 列離れるとベルが鳴ります (古いタイ プライタのように)。ほとんどのエディタは必要に応じて自動で改行できる ( リターンキーを押す必要がない) ので、この機能はめったに必要ありません。 13.11.5. キーの再定義 キーが押されたときにホストに送られるコードは、通常は ASCII コードです (シフトキーやコントロールキーにもよりますが)。幾つかの端末では、キーが 押された時にお望みのコードをホストに送るようにすることができます。つま り、端末を設定することで、キーの再配置を行なうことができるのです。これ は、他国語やドボルザークのキーボードレイアウトをすばやく変更するのに便 利です。 13.11.6. コーナーキー (Wyse 専用) Wyse 端末には、左下隅の近くに様々なことをするために設定できるキーがあ ります。そのキーには ``Funct''、``Compose''、``Character''、``Alt''、 ``Hold''あるいは ``Scroll Lock'' などのラベルを貼っておけます。初期の モデルには次のオプションの全てがあるわけではありません。{Hold} が設定 されると端末へのデータの流れが止ります (フロー制御を使います)。キーを もう一度押すとデータフローを再開します。{Compose} が設定されると、制限 された数の事前に定義してある非ラテン文字を発生することを許します。メタ に設定されると、各バイトの上位ビットがセットされたメタシフトキーになり ます。{Funct} が設定されると (そして押せば)、どんな英数字キーもヘッ ダー (SOH) とトレイラー (CR) バイトが加った ASCII バイトコードのフレー ムとなります。{Kpd Compose} が設定されると (そして押せば)、数字キーで 10 進数を押したら 16 進数を送ります ?? 13.11.7. 数字キーパッドか、矢印キーを送る 数字キーパッド (キーボードの主部の右側にあるほとんが数字キーの長方形の 部分) は、あるアプリケーションプログラムで特別な役目をするために特別な コードを送るよう設定できます。矢印キーも同上。このように、キーキャップ に印刷してある文字 (または、矢印キーのためのノーマルコードシーケンス) を送る ``ノーマル'' モードと、特別なエスケープシーケンスを送る ``アプ リケーション'' モードがあります。いくつかの場合では、6 つの非数字キー が A から F の文字を送るのを除いて、ほぼノーマルな数字モードである ``16 進'' モードがあります。したがって、数字キーパッド上で、例えば ``B36F'' をタイプできるでしょう。 13.11.8. Shift + Delete や Shift + Backspace は何を送るか ? どのように設定されているかにもよりますが、Shift + Delete は制御文字 CAN を送り、Shift + Backspace は DEL を送ります。 13.11.9. PC 走査コード 新しい端末は、ASCII コードの代りに PC 走査コードを送ることで PC キー ボードをエミュレートできます (Keyboard-and-Console-HOWTO をご覧くださ い)。 Dos/Windows が走っている PC に直接接続した場合に使います。 {Keycode} を {Scan} に設定してください。DEC の ``PCTerm'' をエミュレー トするならこの設定をすべきです。Linux のシリアルポートは、このような走 査コードに対処できません。 13.11.10. 代替文字 キーのいくつかはそれを代替する文字があります。キーが ``タイプライ ター'' として設定されたら、タイプライタに送る文字を送ります。キーが他 の何かに設定されると、代替文字が送られます。 13.12. 受信した制御コードの意味 13.12.1. 自動ニューライン {Newline} この場合、``ニューライン'' は現在行の下の左マージンで新しい行を開始す ることを意味します。Linux と C 言語での ``ニューライン'' には別な意味 があり、ラインフィード制御文字 LF もまたニューラインとか NL と呼びま す。 Linux のテキストファイルでは、LF 文字は ``新しい行をここから開始 する'' という意味なので、NL ラベル付けしてあるのです。通常、LF (NL) は 1 行下へカーソルを飛ばすためだけに端末へ送られるもので、カーソルを `` 新しい行'' の先頭に移動させるものではありません。 自動ニューラインが設定されると、上述の ``ノーマル'' な状況は取り消され て、ホストから LF を受信することで画面に物理的なニューラインを生成しま す。これはまさに Linux で必要なものです。ただし、(自動ニューラインが設 定された時に) Return (か、Enter) キーがホストに CR LF シーケンスを送る ことを除いては (Wyse と VT100 ではそうなんですが、VT420 は違う ??)。 L inux はファイル内の ``ニューライン'' マーカとして LF を使うので、LF だ け (CR LF ではなくて) を送ってもらいたいのです。したがって、``ニューラ イン'' オプションはめったに使用されません。代りに、シリアルポートデバ イスドライバが、必要な変換をデフォルトで行います。まるで ``stty onlcr icrnl'' コマンドを実行したようです。しかし、デフォルトの動作なのでそん なことをする必要はありません。 13.12.2. 自動改行 {Rcv CR} これは ``自動ニューライン'' の別なタイプです。CR 文字 (復帰) を受信し たら、新しい行の表示の時に LF (改行) 動作を付加します。Linux では LF が行の終わりなので、このオプションは使われていません。 13.12.3. Del (Wyse だけ ??) または Null の認識 オフなら端末で DEL 文字を受信しても無視し、オンなら DEL は消去式のバッ クスペースとなります。NULL 文字はどんなケースでも普通は無視されます。D EL と NULL は両方共、パディング文字として時々使用されます。``パディン グ''をご覧ください。 13.13. 新しいテキストの挿入 13.13.1. 行のラップ ``オートラップ'' とも呼ばれています。画面の右端に行き着いて (80 桁目な ど)、ホストから改行文字 (かそれに類するもの) が送られなければ何が起る でしょうか ? 行ラップが設定されているなら、次の行に残りの文字を表示し ます。そうでなければ、行の残りは消えて画面では見えないでしょう。どんな 良いアプリケーションでも (行ラップがどう設定されているかを把握する terminfo が提供される) 状況を正確に捉えるべきです。従って、行ラップが 設定されてなくても、アプリケーションは長い行を折り返すか、(矢印キーな どを使って) 長い行のカットされた端を見せるような方法をとるべきです。し かし、生のコピーコマンド (及び別の状況) ではこのようなことは起らないの で、普通は行ラップを設定しておくのが良いでしょう。 80 桁の画面では、ホストからの 81 番目の文字がグラフィック (印字可能) 文字ならほとんどの端末はラップだけとなります。これはホストからの 81 番 目の文字が ``復帰'' か ``ニューライン'' である場合に許します。ニューラ インは、アプリケーションがラップすることができ、端末による介入が必要で ないことを意味します。 13.13.2. スクロール スクロール {Scrl} とは、画面の全ての行が上や下に動くことです。横方向の 移動も含むものは ``パン'' とも呼ばれます。普通のスクロールでは、行が画 面の最下行か先頭行をめくることで見えなくなり、ホストからの新しい行が反 対側の端 (先頭か最下行) に現れます。スクロールには、スムース、ジャンプ そしてバーストの 3 つのタイプがあります。バーストは、新しい画面で古い 画面を瞬時に塗り変えるので、本当のスクロールとは言えません (けれど新し い画面の数行は古い画面のものです)。ジャンプは一度に画像を新しい行に ジャンプします。スムース {Smth} はテキストを滑かなスピードで上下に移動 します。スムーススクロール率がとてもゆっくりなら、まだスクロールしてい る最中 (動作中) に新しい行を見ることができるでしょう。 遅い端末でのスムーススクロールは、画面がスクロール中でも読んでいられる のでかつては役に立つものでした。しかし、高速のボーレートではジャンプス クロールはすごく速いので、新しい表示に変るのに少しの時間しかかかりませ ん。スクロールしながらテキストを読むには、停止したテキストの場合より時 間がかかるので、スムーススクロールを選ぶと無駄な時間が増えるかもしれま せん。 もし (自動) スクロール {Autoscrl} が無効なら、ホストからの新しいテキス トは画面の先頭になるので、どこかへ行ってしまうにちがいありません。古い テキストが消えなければ、新しいテキストは古いものと (無意味に) 混在して しまいます。古いテキストが消えるなら、新しいテキストは内容から外れるの で (自動) スクロールを有効にしておきましょう。 13.13.3. 新しいページ ? ページの説明は``ページ''と``ページ (定義)'' をご覧ください。現在のペー ジが一杯 (最終行が終了した) なら、ページスクロールするか、新しいページ が生成されるべきです (端末の表示メモリ内に記憶された全ページは消え る)。もし {Autopage} が設定されていれば新しいページが生成されます。お そらくページを使わないので、これはオフにしておくべきです。 13.14. ファンクションキー F1 や F2 などとラベルのついたキーがあります。古い端末では、PF1 や PF2 などであり、P はプログラム可能ということです。幾つかのキーボードでは両 方あります。ユーザが定義した文字を送るようにプログラム (再定義) できま す。あるセットアップメニュー {FKey} を使えば簡単にプログラムできること が多いです。幾つかの端末でも、キーが押されたときに文字列を送るよう指定 できます。``ノーマル'' モードでキーを押すと、キーボードで文字をタイプ したように見えます。``ローカル'' モードでキーを押すと、端末に文字列を 送ります (端末がローカルモードであったかのように)。特別な方法で設定し て、端末にエスケープシーケンスを送るのに使います。``リモート'' モード では、文字列はシリアルポートからホストへいつも送られます (例え端末が ローカルモードであっても)。 13.15. ブロックモードオプション 幾つかのオプションは、``ブロックモード''の場合だけのものです。フォーム を供給したり、まとめて送信することでホストコンピュータの負荷を減らすの で、このオプションは強力です。しかし、セットアップはかなり複雑なので、 あまり使用されません。 13.15.1. フォーム表示 ブロックモードで、いくつかの画面の領域はフォームの文字のためにあり、こ の部分は書き込み禁止 ``Prot'' {WPRT} となっています。この領域の文字を 薄暗くしたり、反転したり {WPRT Rev} 、また下線をつけたり {WPRT Undrln} 等の見え方を設定するオプションがあります。{WPRT Intensity} はグレー表 示やノーマルあるいは黒 (非表示)に設定されるでしょう。 13.15.2. ブロック全体を送る ? 書きこみ禁止のテキスト (フォーム内のオリジナルテキスト) は、ブロック単 位でホストに送られ {Send All} 、あるいは書き込み禁止テキストはまた読み 込み禁止であるかもしれません {Send Erasable}。 13.15.3. 送る領域 スクリーン全体か、あるいはスクロール領域が送られるべきですか ?{Send Ar ea} 現在のカーソル位置に達したら送信は停止するべきですか ? {Xfer Term} がカーソルに設定されたら、カーソルのところ迄の画面データだけを送りま す。 13.15.4. ブロック / ページ の終端 ブロックデータに追加される終端記号は何でしょう ? {Blk End} か、ページ の終わりに終端コードを送ります {Send Term}。 13.16. ロック ロックには様々なタイプがあります。フロー制御のためのロックキーもその一 つです。``キーボードロック''をご覧ください。別なロック として {Feature Lock} は、ホストから端末にあるエスケープシーケンスを送ることで、端末設 定の変更を禁止します。端末が無視するようなエスケープシーケンスをアプリ ケーションプログラムが送ることで、そのようなロック状態にすると予期せぬ 結果となるでしょう。全ての設定パラメータがロックされるわけではありませ ん。正当な理由の無いかぎりは、ロックを有効にすべきではありません。 ファンクションキーロックは、プログラム可能なファンクションキーが何を送 るかをコンピュータが再定義することを禁止します。ファンクションキーに何 か重要な機能を持たせた場合に、この機能を使いたくなるでしょう。 13.17. スクリーンセーバ {Scrn Saver} ``CRT セーバ'' とも呼ばれます。これは端末がしばらく使用されなければ、 スクリーンの電源を落とす (あるいは薄暗くする) ことです。こうすることで スクリーンの寿命を長引かせ、節電できます。何かのキーを打つと、スクリー ンは復帰してそのキーを実行するので、シフトキーなどを押すのがベストで しょう。 13.18. プリンター Wyse 端末では、プリンタがなければ {Printer Attached} をオフに設定して ください。必ず必要なことでもありませんが、プリンタに対するどんなエス ケープシーケンスが送られても (端末の代りに)、無視するでしょう。 プリンタを設定するのは、主なポートの通信用の設定と同じようなものです ( 普通はもっと簡単)。プリンタには特定の一組のオプションがあります。プリ ンタはシリアルまたはパラレルのどちらですか ? もしパラレルなら設定でそ のことをセットして、端末のパラレルポート (もしあれば) に接続します。プ リントジョブの最後にプリンタに対して FF (フォームフィード) を送るので すか ? {Print Term} が FF にセットされているなら、そうなるでしょう。 14. コンピュータセットアップ (設定) の詳細 端末のためにコンピュータをセットアップするには各種ファイルを編集しま す。幸運な場合は、/etc/inittab を編集するだけですむでしょう。コンソー ル (または、作業用端末) で編集することになります。 14.1. Getty (/etc/inittab ファイル) コンピュータの起動時(あるいはランレベルを切り変えた時) に、シリアル ポート上でログインプロセスが走った状態にしておくには、/etc/inittab ファイル内に getty コマンドを書いておかなければいけません。getty は GET TT Y (端末) のことで、端末の状態を調べます。各端末には専用の getty コマンドが必要です。どんな /etc/inittab ファイルにも、コンソール用の getty コマンドが少なくとも 1 つはあります。これを見つけて、その隣りに 本当の端末用の getty コマンドを追加してください。このファイルにはコメ ントにされたテキスト端末用の getty のサンプル行があるので、そこをコメ ントではないようにして (先頭の # を消す)、2、3 の引数を変更する必要が あります。 使用可能な引数は、あなたが使う getty によります。 端末の直接接続に最適な getty を 2 つ挙げます。 1. agetty (時々 getty とだけ呼ばれる): かなりセットアップしやすくて、 設定ファイルもありません。``Agetty''をご覧ください。 2. ``getty (getty_ps の一部)''をご覧ください。 モデム用に最適な getty を 2 つ挙げます。 1. mgetty: モデムに最も的しています。 端末用としても動きますが、少し劣 ります。 2. uugetty: モデム専用で、getty_ps パッケージの一部です。 モニターがコンソールである場合にだけ使えるシンプルな getty です。テ キストインターフェースを使うほとんどの Linux ユーザは、これをセット アップして、本当のテキスト端末は使いません。 1. mingetty: モニターコンソール専用です。 使いたい getty を持っていない場合、他のディストリビューションを調べま す。もし、それが RPM や Debian の package ならば、alianプログラムを使 えば RPMにも、debにも、tar ballにも相互に変換できます。 (紹介した gett y たちの)ソースコードはSerial Software からダウンロードでき るでしょう。 モデムコントロール線を使わないのなら (例えば、最小限の 3 つの端子 -- 送信、受信、信号グランド -- を使うなら)、``ローカル'' フラグ を使って getty に認識させなさい。このフォーマットは使用する getty に依存しま す。 14.1.1. Agetty (多分 getty という名前でしょう) /etc/inittab のサンプル行です。 S1:23:respawn:/sbin/getty -L 19200 ttyS1 vt102 S1 は ttyS1 を示します。23 は、ランレベル 2 か 3 で getty を起動するこ とを意味します。respawn は、getty が kill されたら自動的に再起動すると いうことです。/sbin/getty はgetty コマンドファイルです。 -L は、ローカ ル (モデムコントロールを無視する) という意味です。-h (例にはありませ ん) は、ハードウェアフロー制御を有効にします (stty crtscts と同じ)。 19200 はボーレートです。ttyS1 は /dev/ttyS1 のことです (MS-DOS での COM2)。vt102 は端末タイプで、getty が環境変数 TERM をこの値にセットし ます。設定ファイルはありません。getty を編集した後で、コマンドラインで ``init q'' とタイプすれば、ログインプロンプトを見ることができます。 14.1.1.1. Agetty のパリティ検出 agetty プログラムは端末側でセットされたパリティを自動検出できます。た だし 8 ビットデータ + 1 パリティビットの設定を使うと、自動検出はうまく 働きません。``Agetty の 8 ビットデー タにお けるパリティ''をご覧くださ い。 stty を使ってパリティをセットしても、agetty はそれを解除してしま います。なぜなら agetty は到着してきたパリティビットを、データビットと 同じように処理しようとするからです。これはなぜかと言うと、 agetty がパ リティを自動検出するためには、あなたのログイン名入力の最終ビット (おそ らくパリティビット) を取得することが必要だからです。ですからパリティを 使う場合は、端末側だけで有効にし、agetty には自動検出させて、コン ピュータ側の設定も任せてしまいましょう。お使いの端末が受信パリティをサ ポートしている場合には、何か入力して getty がパリティを検知するまで、 当初ログインプロンプトは壊れたように見えるかもしれません。プロンプトが 壊れていると、訪問者等にログインの試行をやめさせる効果があるでしょう。 これは望ましい効果かもしれません。 パリティの自動検出には時々問題があります。最初にログイン名をタイプした 後で、あなたをログインし終えるように、agetty が login プログラムを起動 することで発生します。最初のログインの試みが失敗すると、 login はログ インするための全ての試み (ログイン名の入力を含む) を実行するために再び 起動します。問題は、login プログラムがパリティを検出しないのに、agetty だけがパリティを検出できることにあります。ある理由から login プログラ ムを終わらせて、正しいパリティがまだ検出できないなら、login はパリティ を検出できないので問題が起るでしょう。間違ったパリティなら、login プロ グラムはタイプした文字を正しく読めないのでログインできません。端末が受 信パリティをサポートするなら、誤った画面を見続けることになります。 様々な方法で、この ``ログイン'' ループに入るでしょう。一文字か二文字だ けのログイン名をタイプし、リターンキーを押したとしましょう。これらの文 字がパリティを検出するのに十分でないなら、パリティを検出する前にログイ ンが走るでしょう。端末に電源が入ってなくて、agetty が最初に走る時に接 続しなかったら、時々こういう問題が起ります。あなたがこのような ``ログ イン'' ループで立往生したら、解決は、agetty が ``タイムアウト'' で再度 走るまで 1 分程待つことです。 14.1.1.2. Agetty の 8 ビットデータにおけるパリティ 残念ながら agetty はデータ長が 8 ビットでのパリティを検出できません。 (1999 年後半現在) agetty にはパリティの自動検出を無効にするオプション がないために、間違った検出をしてしまうことがあります。結果として、ログ イン処理を間違って伝えたり、誤ったパリティをセットしてしまうのです。し たがって、8 ビットデータとパリティを一緒に使うことは不適切だと思いま す。 14.1.2. getty (getty_ps の一部) (Greg Hankins 著 Serial-HOWTO(の古い版) を参考にしています) getty 用の設定ファイル /etc/gettydefs に、あなたの端末を使うためのエン トリがなければ加えてください。 # 38400 bps ダム端末エントリ DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400 # 19200 bps ダム端末エントリ DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200 # 9600 bps ダム端末エントリ DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT 9600 望むなら、興味を引くようなものをログインバナーとして getty に表示させ ることができます。私の例ではシステムの名称とシリアルライン名を表示して います。以下のようなものを追加することができます。 @B 現在の (@B が評価された瞬間の) bps の値 @D 現在日付 MM/DD/YY 形式 @L getty がアタッチしているシリアルライン @S システム名称 @T 現在時刻 HH:MM:SS (24 時間制) 形式 @U 現在ログインしているユーザの数。これは非ヌル値の ut_name フィー ルドがある /etc/utmp ファイルのエントリー数です。 @V デフォルトファイルで与えられる VERSION の値 1 つの '@' 記号を表示するには、'\@' か '@@' のどちらかを使います。 /etc/gettydefs の編集が終ったら、構文が正しいことを次の方法で確かめら れます。 linux# getty -c /etc/gettydefs 端末に接続されるシリアルポートの getty か uugetty の設定ファイル ((/etc/default/{uu}getty.ttySN か /etc/conf.{uu}getty.ttySN) がないこ とを確認してください。おそらくこれがあると、端末で getty が動くのを じゃまするでしょうから、あれば削除しておいてください。 シリアルポートで getty が動くように、/etc/inittab を編集してください ( あなたの環境に合った正しい情報 -- ポート、通信速度、デフォルトの端末タ イプ -- に置き換えます)。 S1:23:respawn:/sbin/getty ttyS1 DT9600 vt100 init を再起動します。 linux# init q この時点で、端末にログインプロンプトが表示されるはずです。プロンプトを 表示させるのにリターンキーを叩かないといけないかもしれません。 14.1.3. mgetty ``m'' はモデムを表します。このプログラムは主にモデムのためであって、 1999 年半ばの時点ではテキスト端末とは相性が悪いようです。端末用のド キュメントは貧弱なもので、端末で使う方法を理解するのに、モデム用のド キュメントを苦労して読みながら設定する必要があるでしょう。端末用の設定 は、 /etc/mgetty/mgetty.config の最終行を見てください。mgetty に(多く の端末で使われる) ソフトウェアフロー制御(Xon/Xoff) をサポートさせるに は、 mgetty を再コンパイルしてください。将来は最初からサポートされるん じゃないでしょうか。端末でもモデムと同じ getty を使えるならいいのです が、 megetty は目的に合うように少しいじる必要があります。 14.2. Stty と Setserial シリアルポートを設定するために ``stty'' コマンドと、``setserial'' コマ ンド (の両方) があります。stty で設定する必要のある幾つか (あるいは全 て) は、 getty を通じて設定でき、setserial を使うこともないので、stty と setserial のどちらも使わなくていいかもしれません。2 つのコマンド (getty と setserial) は、違う個所を設定します。stty がほとんどやって、 setserial は割込みやポートアドレス等の低レベル部分を設定します。設定を ``保存'' するために、コンピュータが起動する度にこれらのコマンドを実行 するように、あるファイル (シェルスクリプト) に書いておかねばなりませ ん。 Linux のディストリビューションにはよく、setserial を実行するシェ ルスクリプトが準備されていますが、stty はあまり必要ないので、稀にしか 実行するようにはなっていません。 14.3. Setserial 本章は、モデム、シリアル、そしてテキスト端末の 3 つの HOWTO について書 いています。これらは、HOWTO の中にもあるように、少しマイナーな違いが幾 つかあります。 14.3.1. はじめに ラップトップ (PCMCIA) では setserial を使用しないでください。 setserial は、シリアルポートの I/O アドレスをデバイスドライバに教えた り、シリアルポートの割込み (IRQ) を設定したり、UART のタイプを調べたり するプログラムです。またドライバが現在どのような設定になっているかを示 します。加えて、ハードウェアを調べて UART のタイプや IRQ を決めること もできますが、これには厳しい制限があります。``検出''をご覧くださ い。PnP シリアルポートのハードウェアで、IRQ やポートアドレスの設定がで きないことに注意してください。 訳注:PCMCIAや、PCCardのシリアルポートカードの設定は pcmcia_cs で行い ます。setserial はラップトップ本体に組み込まれたシリアルポートには使え ます。 もし 1 つか 2 つの組み込みのシリアルポートしかないなら、setserial を使 わなくても正しく設定できます。そうでなければ (またはシリルポートで問題 があれば)、おそらく setserial を使うことになります。 setserial の man ページの他に、/usr/doc/setserial.../ か /usr/share/doc/setserial にあ る情報も調べておきましょう。あなたのディストリビューションで setserial をどのように扱うかわかる筈です。 Setserial は、ドライバに IRQ などを割当てる目的で、スタートアップの シェルスクリプトにより、たいていはブート時に自動的に実行されます。これ は、シリアルモジュールがロードされている時 (あるいは、同等機能がカーネ ルに組み込みでコンパイルされている場合) にのみ働きます。 (何かの理由 で) シリアルモジュールを後でアンロードしたら、カーネルは、先に変更した 内容を忘れてしまいます。それで、設定を回復するのに setserial を再度実 行しなければならなくなるのです。始動時のスクリプトから実行するのに加え て、 setserial と同様なものを、シリアルモジュールがロードされた時に早 い段階で実行します。したがって、画面上の起動メッセージを見ている時に 2 度実行したように見えますが、実際、2 度実行しているのです。 setserial は、ポートが閉じられた後に操作を持続する時間を設定できます ( メインメモリのバッファに残っているデータを出力するため)。これは 1200 以下のボーレートで必要です。そしてまた、``フロー制御'' による待ちが多 発するなら高速の通信においても必要になるでしょう。man ページの ``closing_wait'' をご覧ください。シリアルポートがプラグアンドプレイな ら、プラグアンドプレイやシリアルについての他の HOWTO 文書を参照すると 良いでしょう。 setserial は、シリアルポートハードウェア自体の IRQ と I/O アドレスのど ちらも設定しません。それはジャンパーかプラグアンドプレイで設定されま す。あなたは、ハードウェアで設定されているのと同じ値を setserial に教 えなければなりません。使えそうな値をでっちあげて、setserial に教えたら ダメですよ。でも I/O アドレスを知ってて IRQ を知らないなら、IRQ を決め るように setserial に指示はできます。 引数をつけずに setserial とタイプすれば、使用可能なコマンドリスト (1 文字ではなくトラブルシューティングの時に使う -v の冗長オプションを付け たように) 見ることができます。setserial は I/O アドレスを ``ポート'' と呼びます。以下のようにタイプしたら、 setserial -g /dev/ttyS* 指定のポートでデバイスドライバがどのように設定されているかの情報を表示 します。``UART: unknown'' と表示されたら、おそらく UART が存在しないと いうことです。言い換えると、指定のシリアルポートがなくて、ポートに関す る他の情報は無意味なので、無視すべきです。指定のシリアルポートが本当に あるなら、setserial がそれを認識していないので、修正する必要がありま す。 -g オプションに -a を追加すればさらに詳しい情報を表示しますが、小数の 人達がこれらの情報を処理 (あるいは理解) する必要があるので、デフォルト の設定にしておけばよいでしょう。普通の場合は、``setserial'' の報告する 通りにハードウェアを設定すればよいのですが、問題が起こったら、 ``setserial'' が誤作動することを知るよい機会です。実際、setserial に よってまったく架空の I/O アドレスや IRQ を割り付けたり、欲しいと思うよ うな UART の種類を設定したりできます。そして次に ``setserial ...'' と タイプすると、そのインチキな値を文句なしに表示するでしょう。あるポート でそのような設定を使ったとしても、もちろんシリアルポートドライバーはそ んなインチキな値でまともに動いたりしません。だから、``setserial'' にそ んなパラメータを与えたら何かが起ります。設定が不正であっても警告はな く、他と重なった IRQ や I/O ポートアドレスを作ったりした結果、悲惨なこ とが起こるでしょう。 setserial で設定した値は PC の電源を切ると失なわれますが、PC が再起動 した時に設定ファイルによって設定値 (あるいは前回の値) をリストアしま す。最新のバージョンでは、setserial による変更は自動的に設定ファイルに 保存されます。古いバージョンでは、設定ファイルは変更があったら手で編集 されるので、ブートからブートの間の設定は同じものが残されます。``設定ス クリプト / ファイル''をご覧ください。 14.3.2. 検出 適切なオプションでは setserial は (与えられた I/O アドレスで) シリアル ポートを検出できますが、あなたは I/O アドレスの見当をつけとかないとい けません。例えば、/dev/ttyS2 を検出しようとする場合、ttyS2 の I/O アド レスが 2F8 だと考えて、そこだけの検出をするでしょう。ttyS2 は違うアド レスだと setserial に教えてやれば、そのアドレスなどを使って検出するは ずです。 検出の目的は、UART がそこに存在するのか、もしあるなら IRQ の値はなにか を知ることです。検出を試みる早い方法として、モデムを検出する wvdialconf や、ごく早い段階でのブートメッセージ、あるいは pnpdump--dumpregs などがありますが、``setserial'' は主に最後の手段とし て使いなさい。物理的なアドレスを検出するには、 setserial に -v (冗長) と autoconfig オプションをつけて実行します。UART のタイプは 16550A な どと結果を表示すれば OK ですよ。代りに UART の種類が ``unknown'' と表 示したら、その I/O アドレスにはどんなシリアルポートもないんじゃないで しょうか。いくつかの安いシルアルポートはきちんと認識できないの で、unknown と表示されても、シリアルポートがある可能性はあります。 UART の種類を自動で調べる以外にも、setserial は IRQ を自動で検出できま すが、常に正しく動作するわけではありません。setserial 2.15 以降のバー ジョンのものは、テスト検出した最後の結果を保存しておいて、次に Linux が起動するとき使えるように /etc/serial.conf に書き込みます。ブートのと きに、シリアルモジュールがロードされて (または似た動きで)、 UART の検 出が自動で行われて、検出結果が画面に表示されます。でも IRQ は間違って 表示されるかもしれません。同様な 2 番目の報告はスクリプトによるもの で、普通は検出したものではないので、ハードウェアが実際にどのようにセッ トされたかに関する情報は不正確です。それは単に誰かがスクリプトに書いた 日付か、 /etc/serial.conf ファイルに保存されたデータを表示するだけなの です。 2 つのシリアルポートの両方共に、同じ IO アドレスがハードウェア上にセッ トされているかもしれません。もちろん、これは許されるものではありません が、時々起ります。実際にシリアルポートが 2 つあるのに 1 つだけ検出して しまいます。しかし、それぞれ違った IRQ が設定されているなら、IRQ の検 出では IRQ = 0 と表示されるかもしれません。筆者の場合、setserial を使 用したら架空の IRQ の値を検出しました。 14.3.3. ブート時の設定 カーネルがシリアルモジュールをロードした (あるいは ``モジュールと同等 のもの'' がカーネルに組み込まれた) 時に、ttyS{0-3} だけが自動で検出さ れ、ドライバは IRQ の 4 と 3 だけを使って (ハードウェアで実際にどの IR Q 値が使われているかに無頓着に) 設定します。これは setserial が走った ときのように、ブート時のメッセージとして確認できます。もし 3 つ以上の シリアルポートをお持ちなら、IRQ の衝突を招くかもしれません。 setserial に本当の IRQ (あるいは他の理由) を伝えることで、このような衝 突を避けるために、setserial を再起動するようなファイルがあるはずです。 これはプロセスがシリアルポートを使う前のブートの早い段階で処理されま す。実際に、あなたのお使いのディストリビューションでは、ブート時の起動 スクリプトファイルから setserial プログラムを自動起動するように設定さ れているはずです。特定のディストリビューションでこのようなことを取り扱 う方法についてのより詳しい情報は、``setserial...'' という名前のファイ ルか、 /usr/doc/ や /usr/share/doc ディレクトリから見つけることができ ると思います。 14.3.4. 設定スクリプト / ファイル あなたの目的は、ブート時に setserial を起動する /etc ツリーのスクリプ トファイルを修正 (または生成) することです。ほとんどのディストリビュー ションがそのようなファイル (でも 始めは /etc ツリーにないかもしれませ ん) を提供しています。さらに、setserial 2.15 以上では上記スクリプトが 使う /etc/serial.conf ファイルがよく用いられるので、setserial を起動す るスクリプトのディレクトリを編集する必要はありません。加えて、単にコマ ンドライン上で setserial を使うなら、この設定ファイルを最終的に変更す ることになります。 バージョン 2.15 以前では、やることは全てスクリプトの編集です。2.15 以 降では 3 つの内どれか 1 つをやる必要があります。1. スクリプトの編集。 2. /etc/serial.conf の編集。3. /etc/serial.conf を自動編集するために ``setserial'' を実行する。これら 3 つのどれを選択するかは、あなたの ディストリビューションに依存することで、またどのようにセットアップした かにもよります。 14.3.5. スクリプトの編集 (バージョン 2.15 以降 : 不正確です) ssetserial 2.15 (1999年現在) 以前では、setserial を設定するための /etc/serial.conf ファイルはまだなかった。それで、ブート時に ``setserial'' を起動するファイルを探して、編集する必要がありました。も しなかったら、作らなければなりません (あるいは、ブート時の早い段階で実 行するファイルにコマンドを書いておく)。そのようなファイルが現在でも使 われているなら、それは /etc ディレクトリツリーのどこかにあるはずです。 でも Redhat 6.0 以前では /usr/doc/setserial/ にありましたが、それを使 う前に /etc ツリーに移動しておく必要があります。そんなファイルを探すの に ``locate'' を使うことができます。例えば、locate "*serial*" とタイプ します。 スクリプト /etc/rc.d/rc.serial は以前は普通に使われていました。 Debian ディストリビューションでは /etc/rc.boot/0setserial が使われまし た。/etc/rc.d/rc.local が一度使われたことがありますが、あまり使い易く なかったので、ごく早い段階で使われなくなりました。 rc.local がシリアル 通信エラーを発する前に、他のプロセスがシリアルポートをオープンしようと していると報告されたりしました。 そんなファイルが提供されていたら、コメントアウトしたサンプル行を含んで いるはずです。これらの数行のコメントを外して、そしてまた編集すれば、正 確に設定できることでしょう。setserial へのパスと正確なデバイス名とがき ちんとセットされていることを確認してください。ちゃんと動くことを確認す るために、手動でこのファイルを実行してテストすることができます (スー パーユーザになって名前をタイプすればよい)。このようなテストをすること は、確認のためにリブートを繰り返すよりはるかに早い方法です。もちろんコ マンドライン上で単に setserial コマンドをタイプすることでもテストはで きます。 ttyS3 の UART や IRQ を setserial に自動的に決定させたいなら、このよう に追加します。 /sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig 自動的に実行したいポート毎にこの行を追加します。あなたのシステムに本当 にあるデバイス名を指定するよう注意してください。幾つかの場合では、ハー ドウェアの原因でうまくいかないでしょうから、IRQ や UART の種類を知って いるなら ``setserial'' に明示的に割当ててください。例えばこのように。 /sbin/setserial /dev/ttyS3 irq 5 uart 16550A skip_test バージョン 2.15 以上 (お使いのディストリビューションが対応済であるこ と) の場合、起動時に setserial を実行する /etc/init.d/setserial かその 類のスクリプトファイルがユーザによって編集されると思っていなかったの で、かなりやっかいです。``/etc/serial.conf を使った新しい設定方法'' を ご覧ください。 14.3.6. /etc/serial.conf を使った新しい設定方法 setserial 2.15 以前のバージョンでの設定方法は、起動時に setserial を実 行するシェルスクリプトを手で編集することでした。``スクリプトの編集 ( バージョン 2.15 以降 :不 正確です)''をご覧ください。setserial 2.15(1999年) になるとこのスクリプトファイルは編集されず、代りに /etc/serial.conf 設定ファイルからデータを得るようになりました。その 上、serial.conf さえも編集する必要がなくなっていて、なぜかというと、コ マンド行で ``setserial'' コマンドを使えば自動で serial.conf を適切に編 集してくれるからです。 これは、Linux がブートする毎に setserial がちゃんと動作するよう設定す るために、あなたがどんなファイルも編集しなくてすむようにするつもりだっ たのです。でもそこには重大な落し穴があって、なぜなら実際には ``setserial'' が serial.conf を編集していないからなのです。各ディスト リビューションがこのことを違って扱ったために混乱は増しています。加え て、あなたがそれを編集することでも違った動きとなっています。 これでなにが起きるかというと : PC をシャットダウンした時に、ブート時に ``setserial'' を実行するスクリプトが再び実行しますが、今度は ``stop'' ケースの部分だけを実行するのです。スクリプトは ``setserial'' の現在状 態を知るために ``setserial'' を実行し、serial.conf にその情報を書き込 むのです。従って、serial.conf ファイルを変更するために ``setserial'' を実行した時はすぐに変更されませんが、シャットダウンの場合だけは通常は 変更がすぐ反映されます。 今はあなたはどのような問題が起きるか多分推測できるでしょう。普通に シャットダウンしなかったとしたら (誰かが突然電源を切ったりして...)、変 更は保存されません。``setserial'' をいろいろ試していて、最後にオリジナ ルの設定に戻すのを忘れた (あるいはオリジナルを戻し間違った) とした ら、``試験的'' な設定が保存されてしまいます。 手で serial.conf を編集しても、シャットダウンの時に setserial の状態に 戻ってしまうので、変更は保存されませんよ。シャットダウンで serial.conf を変更しない方法は、serial.conf の最初の行にある ``###AUTOSAVE###'' あ るいはその類の行を削除することです。最近のディストリビューションのなか には、インストール直後の最初のシャットダウンの後に最初の行にある ``# ##AUTOSAVE###'' が削除されるものもあります。serial.conf ファイルには多 分参考になるコメントが含まれています。 ブート時に setserial を実行するもっとも一般的なファイル (設定ファイル に準拠したもの) は、現在のところ /etc/init.d/setserial(Debian) や /etc/init.d/serial (Redhat) などですが、通常は編集すべきではありませ ん。 Redhat 6.0 の setserial 2.15 には /usr/doc/setserial-2.15/rc.serial がついていますが、ブート時に実行する ようにしたいなら /etc/init.d/ に移さなければなりません。 ポートを無効にするなら setserial を使って、``uart none'' と設定しま す。 /etc/serial.conf のフォーマットは、各ポート毎に 1 行あるコマンド 行のうち、``setserial'' の後にあるパラメータと同じです。もし自動保存し ないなら、/etc/serial.conf を手で編集してください。 バグ : 1999 年 7 月現在、###AUTOSAVE### にしたとき、``setserial -Gg /dev/ttyS?'' で表示するパラメータだけが保存され、他のパラメータが保存 されないのはバグもしくは問題です。保存できないパラメータのデフォルト値 はほとんどの場合で問題がないので、少数のユーザにだけ影響するでしょう。 これはバグとして報告され、今頃修正されたかもしれません。 setserial で設定した現在の設定値を設定ファイル (serial.conf) に強制的 に保存するには、通常、シャットダウン時に行なわれているように、 /etc/init.d/{set}serial stop スクリプトファイルを実行します。 ``stop'' コマンドは現在の設定を保存しますが、シリアルポートはまだ良好に動き続け ています。 幾つかの場合では、古いのと新しい設定方法の両方がインストールされていま すが、たぶんそのうちの一つだけがブート時に実行されます。 Debian では、 古いファイルには ``...pre-2.15'' などの名前がついています。 14.3.7. IRQs デフォルトでは、ttyS0 と ttyS2 は IRQ 4 を共有し、ttyS1 と ttyS3 は IRQ 4 を共有します。しかし実際は、シリアル用の割込みの共有は以下の条件 以外では許されていません。1. バージョン 2.2 以降のカーネルを使っている こと。2. 共有をサポートするようカーネルを構築していること。3. シルアル ハードウェア自身がサポートしていること。Serial-HOWTO の割込みの共有と バージョン 2.2 以降のカーネルをご覧ください。 2 つのシリアルポート ttyS0 と ttyS1 だけなら、存在しないデバイスのため の IRQ の競合はありません。 ttyS0 と ttyS1 が使える環境で内蔵モデムを追加する場合、未使用の IRQ を 見つけて、共にシリアルポート (あるいはモデムカード) に設定して、 setserial を使ってデバイスドライバに割当てます。IRQ 5 が音源ボード用で 使用されてないなら、モデム用に使えますよ。ハードウェアで IRQ を設定す るには、isapnp ツールや、PnP BIOS、あるいは PnP をサポートするように Linux にパッチを当てる必要があります。空いてる IRQ のどれを使うかを決 めるには、``man setserial'' とタイプして、``IRQ 11'' を探すことです。 14.4. Stty 14.4.1. はじめに stty はたくさんのシリアルポートを設定しますが、アプリケーションプログ ラム (それと getty プログラム) でも設定できるので、あまり使うことはな いでしょう。問題が起った時や、ポートの設定方法を知りたい場合には便利な のですが。現在の設定が見たければ、端末 / コンソールから ``stty -a'' と タイプしてください。 標準の表示とは違った短い一覧表示にするには、 -a ( 全て) を外してタイプしてみてください。serial のグルになるわけじゃなけ れば、全ての設定を修得しなくてもよいです。ほとんどはデフォルトで大丈夫 だし、設定の幾つかは 1970 年代に作られた時代遅れの端末にのみ必要だから です。 setserial は本当のシリアルポートだけを扱いますが、stty はシリアルポー トと、PC モニタでの標準的な Linux テキストインターフェースのような仮想 端末の両方で使われます。PC モニタでは stty の設定の多くは無意味です。 ボーレートの変更などは実際に目に見えるものではないからです。 stty の設定項目を幾つか示します。通信速度 (bit/sec)、パリティ、データ 長、ストップビット数、8 ビット目を落すかどうか、モデム制御信号、フロー 制御、ブレーク信号、行末マーカ、文字ケースの変更、パディング、バッファ 溢れの際にビープ音を鳴らすかどうか、タイプした文字の画面へのエコー、 バックグランドタスクに端末への書き込みを許すかどうか ?、特殊 (制御) 文 字の定義 (どのキーを押すと割込みがかかる等) などです。詳しくは stty の オンラインマニュアルか info ファイルを見てください。termios のオンライ ンマニュアルを見てください。ここには stty で設定できるのと同じオプショ ンが説明されてますが、(1999 年半ばの時点では) stty のマニュアルが説明 できていない機能にも言及しています。 一部の getty の実装 (gety_ps パッケージ) では、stty に通常与えるコマン ドは、getty の設定ファイル (/etc/gettydefs) に含まれます。この設定ファ イルがなくても、getty のコマンドラインは stty を必要としないほど十分な 設定ができます。 stty の設定などを変更する C プログラムを書くこともできます。これに関す る文書をいくつか見れば、stty コマンドの使い方 (およびたくさんある使用 可能な引数) もよく理解できるでしょう。Serial-Programming-HOWTO も役に 立ちます。オンラインマニュアル termios には C 言語の構造体 (termios 型) の説明があります。この構造体は、stty の設定をコンピュータのメモリ に格納します。C 言語の構造体メンバーのフラグ名の多くは、stty コマンド の引数とほぼ同じです (そして同じ動作をします)。 14.4.2. ``よその'' 端末に対しての stty の使用 stty を使って、自分が現在使っている端末の調査や設定を行うのは簡単で す。これを別の (よその) 端末やシリアルポートに対して行うのは面倒です。 例えば、皆さんが PC のモニタ (tty1) の前にいて、そしてシリアルポート ttyS2 に対して stty を使いたいとします。2000 年以前なら、リダイレクト 演算子 < を使う必要がありました。2000 年以降は (setserial 1.17 と stty 2.0 をお持ちなら) -F オプションを使った変更方法があります。これは、リ ダイレクションという古い方法が失敗したときに使えます。最新版でさえも、 ttyS2 上に端末があり、そこでシェルが動作しているならば、表示される内容 はあてにならず、設定しようとしてもうまくいかないでしょう。 その理由 は``端末の 2 つのインタフェース''をご覧になれば理解できます。 新しい方法は ``stty -F /dev/ttyS2 ...'' (または F の代りに --file ) で す。... のところで -a としたら、stty の全ての設定を表示します。古いリ ダイレクションの方法 (最新版においても動作します) では、``stty ... を押しても、次のコマンドのプロン プトが出ない)。これは大抵ポートがつまってしまったためで、モデム制御線 のいずれかがアサート(肯定)になるのをポートがじっと待っている状態なので す。例えば、モデム制御線を無視するように ``clocal'' を設定していない場 合、 CD 信号がアサートにならなければポートはオープンできませんし、stty はポートに対して動作しません (新しい -F オプションを使ってもこうなりま す)。同様の状況は、ハードウェアフロー制御でも起こるようです。アサート にならないとまずい導線がポートにつないだケーブルになければ、ハングする のを防ぐ簡単な方法はありません。 上記のハングを防ぐ方法の一つは、新しい -F オプションを使って ``clocal'' と ``crtscts'' をセットすることです。もし -F オプションに対 応してなければ、たとえ制御線がオフであってもポートを強制的に動作させる プログラムを使うことです。 多分このプログラムは、これ以降ポートをオー プンするために制御線が不要であるようにポートを設定します : すなわち clocal または -crtscts を設定するのです。``minicom'' を使ってこれを行 うには、別の ttyS 等に合わせて minicom を再設定し、それから minicom の 終了と再実行を行わなければなりません。その後再び minicom を再設定しな ければならないので、単に PC を再起動するだけの方が簡単かもしれません。 古いリダイレクションの方法は、ttyS2 を stty への標準入力にします。これ によって、ttyS2 は stty への標準入力となります。すると、stty プログラ ムは ''ファイル'' である ttyS2 へのリンクを得ることによって、これを '' 読み取る'' ことができます。しかし、ttyS2 に送られたバイトデータを期待 される通り普通に読み取るのではなく、ポートの読み取りや変更が できるよ うに、このリンクを使ってポートの設定を見つけます。 ``stty ... > /dev/ttyS2'' を使って端末を設定しようとする人もいますが、これでは設定 できません。この場合は設定は行われずに、使っている端末 (例えば tty1) に対する stty コマンドで普通に表示されるメッセージが得られ、これが ttyS2 に送られます。しかし、ttyS2 の設定は全く変わりません。 14.4.3. 端末での 2 つのインタフェース コマンドライン編集機能を有効にしてシェル (bash など) を使うときには、 2 つの異なる端末インタフェース (stty -a を実行したときに表示されるも の) があります。コマンドラインで入力を行うときには、それぞれの文字を入 力するごとにコマンドラインエディタで読み込まれる一時的な ``raw'' イン タフェース (つまり ``raw'' モード)を使います。<リターン> キーを叩く と、コマンドラインエディタは終了し、端末インタフェースはその端末の通常 の ``cooked'' インタフェース (加工モード) に切り替わります。加工モード は次のプロンプトが端末に送られるまで続きます。加工モードでは何も入力し ませんが、raw モードで入力された文字は <リターン> キーが押されると加工 モードになります。 プロンプトが端末に送られると、端末は ``加工'' モードから ``raw'' モー ド に変わります (これはエディタを起動するときとちょうど同じように行わ れます。というのも、コマンドラインエディタを起動しようとしているからで す)。 ``raw'' モードの設定は、``加工'' モードから得た基本設定のみに基 づいて行われます。``raw'' モードはこれらの設定を保持しますが、他のいく つかの設定はモードを ``raw'' に変えるために変更します。前の ``raw'' モードで使われた設定には全く依存しません。したがって、stty を使って raw モードの設定を変えると、``設定された'' と思われる端末上で <リター ン> キーを叩いた途端にこのような設定は無くなってしまいます。 ここで、stty で端末インタフェースを見るときには、加工モードか raw モー ドのどちらかの状態を表示することができます。その時にどちらを見るのかを はっきりさせる必要があります。コマンドラインを表示している端末を扱うた めに別の端末から stty を使う場合には、raw モードでの表示になります。行 われた変更は raw モードにしか適用されず、``設定''しようとした端末上で 誰かが <リターン> を押すと消えてしまいます。しかし、自分のいる端末で ( リダイレクトの < を使わずに) stty コマンドを入力し、それから < リター ン>を押した場合は話が違ってきます。<リターン> キーにより端末は加工モー ドになるからです。行われた変更は保存され、端末が raw モードに戻ったと きにも残っています (もちろん raw モードで変更できない設定は除きます)。 この状況では問題が起こることがあります。例えば、端末インタフェースを腐 らせてしまい、これを戻すために別の端末に行って ``stty -F dev/ttyS1 sane'' (またはこれに類するコマンド) を実行したとしましょう。ところがこ の方法は使えません! もちろん腐ってしまった端末から ``stty sane ...'' の入力を試 みることはできますが、入力した文字を見ることはできません。 上記の現象はダム端末だけではなく、PC モニタ上で使う仮想端末や X 上の端 末ウィンドウにも当てはまります。言い換えれば、これは Linux を使ってい ると逃れられない問題なのです。幸運なことに、起動時に stty を実行する ファイルはシェルが動作していない端末 (あるいは端末がつながっていないシ リアルポート) を扱えるので問題はありません。 14.4.4. どこに stty コマンドを置くか ? コンピュータが起動する度に stty にシリアルインタフェースを設定させる必 要があるので、コンピュータが起動する (Linux が起動する) 度に実行する ファイルに stty コマンドを入れておくべきです。このファイルはシリアル ポートが使われる (ポートにおける getty の実行も含みます) 前に実行され なければなりません。これの置き場所はたくさんあります。複数の場所に置い たのに、そのうちの一つの場所しか知ってないなら (覚えていなければ) 衝突 が起きてしまうでしょう。したがって、設定したことはちゃんと記録しておき ましょう。 stty コマンドを置く場所の一つは、システムが起動するときに setserial を 実行するファイルと同じところです。この場所はディストリビューションや バージョンごとに異なります。低レベルの処理が先に行われるようにするた め、 setserial の後に置くのが良いでしょう。 置かれているファイルが起動 時に全て実行されるディレクトリ (System V Init) が、/etc ディレクトリツ リーの下にあれば、``stty'' という名前でファイルを作れば良いでしょう。 14.5. Terminfo と Termcap (簡易版) termcap の詳細については ``Terminfo と Termcap (詳細)''をご覧くださ い。あなたが使うアプリケーションプログラムの多くは terminfo (以前は termcap) データベースを使用します。これには端末の型式やタイプ (vt100 のような) のエントリ (またはファイル) があり、その端末でどんなことがで きるか、各種動作のために送るコードは何か、また初期化のコードなどについ て示してくれます。 多くの端末 (PC も同様) は他の端末をエミュレートでき、また各種の操作 `` モード'' があるので、指定した実際の端末を選択できるようにいくつかの端 末エントリがあります。それらは普通、似かよった名前になります。getty の 最後のパラメータ (agetty と getty_ps の両方のための) は使用している端 末 (もしくは端末エミュレータ) の terminfo に登録されている名前 (vt100 のような) にすべきです。 terminfo には、端末が実行可能な能力を指定したり、それらのことを実行さ せるために端末に送るコードを明らかにする以上の役割があります。文字色が 黒やその他の色なら、``ボールド'' の見かけ (反転表示や、高輝度表示など) やカーソルの形状がどのようになるかも指定します。PC の用語では、 ``初期 設定'' と呼んでいます。端末に初期化コードを送ったりもします (モデムに 初期化文字を送るのに似ています)。このような文字列は Linux が勝手に送っ たりしません。``初期化文字''をご覧ください。もし画面の表示や動きが気に いらなければ、terminfo (または termcap) ファイルを編集 (そしてアップ デートも) する必要があります。アップデートの方法は ``Terminfo コンパ イラ (tic)''をご覧ください。 14.6. TERM と TERMINFO の設定 端末用には TERM と TERMINFO の 2 つの環境変数がありますが、これについ ては何も知る必要ありません。TERM は使用する端末のタイプ (vt100 のよう な) を設定します。もしタイプ (名前) を知らなければ、``私の端末の terminfo の名前は何 ?''をご覧ください。TERMINFO は terminfo データベー スへのパスを含みますが、データベースがデフォルトの位置にあるなら (ある いは、あなたの Linux ディストリビューションに含まれるスクリプトファイ ルで TERMIFO を自動的に設定するなら) 必要ないかもしれません。``データ ベースの位置の翻訳 ''が参考になると思います。 幸い、プログラム getty はログインする前に TERM を設定するのが普通で す。単に getty のコマンドライン (/etc/inittab) で指定した端末タイプを 使います。これによりアプリケーションプログラムが端末の名前を見つけた り、 t erminfo データベースから端末の能力を探すことが可能になりま す。TERM の詳細については ``TERM 変数''をご覧ください。 terminfo データベースを見つからなければ、端末でそれに関するエラーメッ セージを探したほうがよいと思います。もしエラーが起っていたら terminfo が記録されている場所を調べて、必要なら TERMINFO を設定しましょう。 ``l ocate'' コマンドを使って、一般的な terminfo ファイルから ``vt100'' の ような語句を探すことで terminfo データベースがどこにあるか探すことがで きます。お使いの端末がこのデータベースにあるかどうか確認してみてくださ い。例えば TERMINFO の設定は export TERMINFO=/usr/share/terminfo とし ます (/etc/profile かそれに類するファイルに書いておきます)。もしデータ ベース内の端末データがお気に召さなければ、それを編集する必要がありま す。 ``Terminfo & Termcap (簡易版)''をご覧ください。 14.6.1. 私の端末の terminfo の名前は何 ? TERM 環境変数にセットしたり、getty に渡すために正しい名前が必要です。 同じ名前が termcap と terminfo データベースの両方で用いられているの で、一度だけ確認しておく必要があります。普通は端末にはエイリアスがあり ますが、二つ以上の名前がある場合は最初のものを使います。 見つけるには、/etc/termcap ファイル (もし存在するなら) で探してみてく ださい。もしなければ、terminfo ツリー ( `` データベースの位置の翻訳'' をご覧ください) か、terminfo ソースコードファイル (``ソー スコードデー タベースの位置''をご覧ください) のどちらかをご覧ください。 14.7. めったに必要ない /etc/ttytype ファイル 設定ファイル /etc/ttytype は、terminfo 毎の端末名称に /dev/ttySn を割 当てるために使います。tset が使っていますが、TERM 環境変数がすでに正し く設定されているならこのファイルは不要です。Linux の getty は各 tty 毎 に TERM を設定するので、このファイルは不要です。FreeBSD のような Unix ライクな他のシステムでの /etc/ttys ファイルは、適切な getty コマンド や、接続の種類 (``ダイアルアップ'' のような) などより多くの tty にマッ プします。Linux の ttytype のサンプル行 : vt220 ttyS1 14.8. ログインの制限 デフォルトでは、root ユーザは端末からはログインできません。これを許可 するには、man ページの ``securetty'' により /etc/securetty ファイルを 作成しなければなりません。しかしこれを使うには、Suse などは /etc/securetty を使わなかったりするので、ディストリビューションの仕様 によることになります。特定のユーザや端末からのログインを制限するには /etc/login.access (これは古い /etc/usertty ファイルを置き換えたもので す ??) を編集します。/etc/login.def は /etc/securetty が使われるかどう か、編集可能にするかどうかを決めます。つまり /etc/securetty を不要にす るか (あるいは使用しないようにするか) を決めるのです。 /etc/porttime はあるユーザと端末がコンピュータを使える時間を制限します。ユーザが試み たログインが何度も失敗したら、そのユーザは再びログインすることを禁じら れるでしょう。これを設定する方法は man ページ ``faillog'' をご覧くださ い。 14.9. TERM=my_term_type はコマンドだけを実行する 起動時に、特定のタイプの端末だけにコマンドを実行したいことがあります。 stty コマンドの場合は問題ありません。リダイレクション演算子 < を使っ て、コマンドの対象となる端末を指定できるからです。しかしシェルのエイリ アスや関数はどうしましょう ? 例えば ls 用の関数を作って、ディレクトリ 表示のカラー化を、カラー端末・コンソールだけで行いたいような場合もある かもしれません。モノクロの端末では、同じ名前の関数 (しかし実体は違う) で、カラー表示の代わりにシンボルを使うようにさせたいかもしれません。こ のような関数定義を、異なる端末に対して異なるように行うには、どこに置く のが良いのでしょうか ? ログオンする度に起動する /etc/profile の ``if'' 文の中にこれらを書いて おけば良いのです。条件式 ``if'' は端末が指定したタイプのときだけ特定の 関数などを定義します。 14.9.1. コマンド ls の例 この if 文が行なうことの多くは dircolors 用の設定ファイル内で実行され ます。以下は bash シェルの場合のサンプルです。 ______________________________________________________________________ if [ "$TERM" = linux ]; then eval `dircolors`; elif [ "$TERM" = vt220 ]; then ls () { command ls -F $* ; }# to export the function ls(): declare -xf ls else echo "From /etc/profile: Unknown terminal type $TERM" fi ______________________________________________________________________ 15. Terminfo と Termcap (詳細) 15.1. はじめに terminfo (以前は termcap) は端末の能力などについてのデータベースです。 端末の (ほぼ全ての) 型式に関して、端末にどんな能力があるかをアプリケー ションプログラムに示します。新しい位置へのカーソル移動、画面の一部の削 除、画面スクロール、モード変更、外観の変更 (色、明るさ、点滅、下線、反 転表示など) などのことをするために、端末へ送るエスケープシーケンスを教 えてくれます。1980 年頃から、多くの端末では 100 以上ものコマンド (一部 は数値パラメータをとります) をサポートするようになりました。 terminfo がアプリケーションプログラムに情報を与える一般的な方法は、 `` ncurses'' 関数を使うことで、プログラマは C プログラム内に書くことがで きます 。例えば、カーソルを 6 行 3 列 の位置へ移動するなら、単に move(3,6) と書けばよいのです。move() 関数 (ncurses の一部) は、あなた の端末でどう働けばよいかを知っています (terminfo データベースを読むか ら)。それで、ある端末向けの特定の動作をさせるために、適切なエスケープ シーケンスを送るのです。 通常、terminfo の略語は termcap のものより長めなので、その意味がわかり 易いです。terminfo の man ページにより詳しい説明があります (termcap の 略語も載っています)。また、termcap には terminfo にはないサイズ制限が あります。したがって、あまり termcap に依存してないのなら、terminfo の 使用をお勧めします。 15.2. Terminfo データベース 15.2.1. はじめに terminfo データベースはコンパイルすることにより、オリジナルな部分とコ ンパイル済の部分とに分かれます。昔の termcap データベースはオリジナル 部分だけですが、コマンドひとつで terminfo 形式への変換と、コンパイルが 実行されます。従って、termcap のソースファイルをコンパイル済 terminfo データベースに作り直せるので、terminfo のオリジナルファイルがなくても よいのです。お使いの端末用 (PC モニタを含む) のデータベースの内容を見 るには、``infocmp'' とタイプしてください。そうすれば、terminfo のソー ス ``ファイル''をご覧になれます。 お使いの端末 (vt100 としましょう) が terminfo データベースにあるかどう かを確認するには、``locate vt100'' とタイプします。端末名がわからなけ れば、コンパイル済データベース内のファイルリストを探しまわるか、``私の 端末の terminfo の名前は何 ?'' をご覧ください。 15.2.2. データベースの場所はどこ ? 15.2.2.1. コンパイル済データベースの場所 ``locate vt100'' とタイプすれば、/usr/lib/terminfo/v/vt100, /usr/share/terminfo/v/vt100, /home/you/.terminfo/v/vt100、あるいは /etc/terminfo/v/vt100 と表示されます。これらは全て、コンパイル済 terminfo ファイルを格納するのに適切な場所です。/etc/terminfo ディレク トリは標準的な格納場所ではありませんが、/usr ディレクトリへのアクセス ができない場合に便利です。例えば /usr ディレクトリが、マウントに失敗し た分割ディスクやパーティションにあった場合などに。上記の場所のどれか一 つにメインの terminfo データベースがあるなら、プログラムは探しあてるこ とができます。さもなければ、環境変数 TERMINFO にはこのデータベースへの パスをセットします。例えば、TERMINFO=/usr/share/terminfo のように。 コンパイル済 terminfo が二箇所以上にある場合、誰かが新しい terminfo ファイル を (新しくなったディストリビューションやネット上から、あるい は古いものを修正することなどで) 入手するまでは普通は問題ありません。新 しい terminfo は既存の場所にある全てのファイルと置き換える (あるいは、 余分な場所のは削除する) 必要があります。そうしなければ、アプリケーショ ンプログラムはそれを探しまわったり、``通常の'' 場所に残っている古い ( バグありの) terminfo データをあいかわらず使い続けることになります。(上 記の) 場所情報を最新のものにするための環境変数 TERMINFO の設定はこの問 題を防ぎます。 15.2.2.2. ソースコードデータベースの場所 あなたがお使いのソースコードは /etc/termcap か terminfo.src (別な名前 かも) にあるはずです。このソースファイルを生成 (または修正) するのに必 要なフォーマットは man ページの terminfo(5) か termcap(5) をご覧くださ い。terminfo.src ファイルはコンピュータ内のいろんな場所にあるか、ある いはお使いの Linux ディストリビューションには含まれてないかもしれませ ん。locate コマンドで探してみてください。このファイルは から (termtypes.ti の名前で) ダ ウンロードできます。 訳注 : 2000 年 2 月時点でダウンロードできませんでした。 15.2.3. Terminfo コンパイラ (tic) ソースファイルのデータは、termcap フォーマットから terminfo フォーマッ トに変換する ``tic'' プログラムを使ってコンパイルします。これで termcap のソースからコンパイル済の terminfo データベースを生成できるの です。おそらく、Linux をインストールするプログラムがコンパイル済ファイ ルをハードディスクにインストールしてあるでしょうから、/etc/termcap (も しくは terminfo.src) を変更しない限り、コンパイルする必要はありませ ん。 ``tic'' はコンパイル後に、アプリケーションプログラムが使うであろ う terminfo ディレクトリにコンパイル済ファイルを自動でインストールしま す。 15.2.4. Terminfo を見なさい ご使用の端末の terminfo エントリを調べて、コメント (もちろんソースコー ド内) を読むのもいい考えです。コメントに頼らない手っ取り早い方法は、 ``infocmp'' とタイプすることです。しかし、コメントには terminfo データ ベースが正しく働かない場合に、それを設定する方法などの端末に関する特別 な情報を教えてくれます。 15.2.5. 不要なデータの削除 ディスクスペースを節約するために、使用する端末タイプ (と将来必要かもし れないもの) 以外の全てのデータをデータベースから削除します。``Linux 端 末'' と X Windows System を使うなら xterm 関係 (訳注:日本版なら kter m) のエントリを termcaps から消してはいけません。端末タイプ ``dumb'' はアプリケーションプログラムが端末のタイプを特定できない時に必要です。 あなたがお持ちの端末だけをインストールプログラムでインストールしたり、 新しく追加した端末の termcap をインターネットから数秒で入手できる場合 もディスクの節約になります。 15.3. 既存の Terminfo ファイル (とハードウェア) 内のバグ 残念ながら terminfo と termcap ファイルにはバグが多くあります。さらに 定義の多くに不備があり、端末で利用できるはずの特徴を定義していません。 terminfo を変更せずになんとかやっていくことができますが、ある場合に は、 terminfo を変更したり、可能なら、良好な terminfo と一緒に別なエ ミュレーションを使う必要があります。 提供される terminfo ファイルがひどい状態なのは、いくつか理由があるので す。一つは、terminfo ファイルの多くが 1980 年代に (termcap フォーマッ トで) 書かれたもので、アプリケーションプログラムがその高度な機能を利用 しなかったためです。それで、そんな機能が termcap (または terminfo) ファイルになくても誰も文句を言いませんでした。現代では、vim のようなプ ログラムが ``文脈強調'' を使ったり、minicom などは端末のグラフィック キャラクターセットを使ったりします。このことは、古い termcap に加えら れるべき定義がもっと必要であることを意味します。これはすでに実行されて いるはずです (まだかもしれない)。 ほとんどの端末には (ファームウェアに起因する) ハードウェアバグがあっ て、時々は termcap を変更することでバグを ``修正'' しました。それか ら、メーカがこのバグを修正する交換用のチップを送ることがあります。端末 所有者の全員がチップの置き換えに悩むわけではありません。端末にはチップ のファームウェアに依存している 2 つ以上の terminfo があるからです。こ の状況は termcap ではほとんど考慮されておらず、Linux ではただ一つだけ 対応しています。これまでほとんど使われたことがない機能に関するハード ウェアバグは、けっして修正されませんでした。ハードウェアのバグがけっし て修正されなかったのは、当時はたいした問題ではなかったか、メーカのビジ ネス上の理由などによるとの報告もあります。 15.4. Terminfo ファイルの修正 こうするには、端末で使用できるエスケープシーケンスが載ったマニュアルが 必要です。1990 年代以降のマニュアルにはほとんど記載がありません。それ と、terminfo のマニュアル (か、それに類するもの) も必要です。例えば、 グラフィックスの能力を加えるには、ソースファイルを編集して、enacs、 rmacs、smacs などの terminfo 変数に値を割り付けなければなりません。そ れから ``tic'' でコンパイルします。``tic'' はコンパイル済の terminfo ファイルを予約された正しいディレクトリにコピーします。 ある端末用に準備された terminfo エントリより良いものを見つけたければ、 インターネットを検索してみてください (但し、さらに悪いものかもしれませ ん)。新しい terminfo エントリが古いものより安定してると思われる (しば らく使ってみて問題ない) なら、terminfo (または termcap) のソースファイ ルの最初のほうに書いてあるメンテナにコピーを送るべきです。 15.5. 初期化文字列 terminfo には、端末へ送られる初期化文字が含まれています。これは、画面 表示の変更、端末モードの変更、そしてまた端末エミュレーションを他の端末 への変更を行ないます。初期化文字は、初期化のために端末に自動的に送られ るわけではありません。getty プログラムがそうすればいいと思うかもしれま せんが、もしそうしたら、端末のセットアップした設定を変更したり、設定内 容を初期化文字が自動的に取り消してしまいます。コマンド行 (もしくは、 シェルスクリプト) から初期化文字を送るコマンドを使わなければなりませ ん。これには、 ``tset'', ``tput init'', あるいは ``setterm- initialize'' などのコマンドがあります。端末は電源が入ったときにそれ自 身で正しい設定を行なうこともあるので、そういった時は初期化文字を送る必 要はありません (このとき、設定して端末の不揮発メモリに保存されたオプ ション設定が用いられます)。 15.6. TERM 変数 環境変数 TERM には使用する端末の名称を設定すべきです。まだ設定していな くて、使ってる端末名を知らないなら`` 私の端末の terminfo の名前は何 ?''をご覧ください。通常は getty プログラムに渡す terminal_type パラ メータで設定します (/etc/inittab ファイルをご覧ください)。この名前は terminfo データベースにあるものにしてください。コマンド行で ``set'' と タイプすれば (あるいは tset -q)、 TERM に何が設定されているのかわかり ます。コンソール (モニタ) での TERM は ``linux'' で、これは架空の端末 タイプ ``linux'' をエミュレートする PC モニタです。``linux'' は vt100 や多くのテキスト端末にも似ているので、 ``linux'' の指定は、テキスト端 末として使う場合の一時的な手段です。 同じポート (/dev/tty...) に複数のタイプの端末が接続する (例えば、同じ シリアルポートで違うタイプの端末を切り換えたり、違ったタイプの端末を使 う人達が、モデムで接続したりする) なら、TERM は誰かが接続する度に設定 し直す必要があります。これは使用する端末名をコンピュータが問合せる方法 で行われます。別な方法は、ユーザに対して、彼か彼女が使用している端末の タイプを入力 (または選択) してもらうよう求めることです。これには tset を使ったり、短いシェルスクリプトを書く必要があります。 一つの方法は ``tset''(man ページをご覧ください) を使うことです。tset は使用する端末のタイプを決定しようとします。terminfo 内のデータを検索 し、初期化文字を端末に送ります。また、TERM 変数の値も設定できます。例 えば、ユーザがダイアルインしたり、ログインしたときなどに。.profile ロ グインスクリプトには eval `tset -s ?vt100` が含まれています。この結 果、彼または彼女が使っているのは vt100 かどうか尋ねることになります。 ユーザは yes と答えるか、実際に使っている端末名を入力することになりま す。それから tset は、端末に初期化文字を送ったり、端末名 (タイプ) を TERM に設定するのです。 15.7. Terminfo/Termcap 文書 o o man ページの terminfo(5) (最良) 、あるいは termcap(5)。 Richard M. Stallman による GNU マニュアル The Termcap Manual (2nd ed.) は、terminfo についての記載がないので少しばかり遅れてます。 o terminfo.src と /etc/termcap ファイルには、termcap ファイルの各種 バージョン、端末の便利な名称、それに、u6-up と呼ばれる特別な能力に ついての情報があります。お持ちでないなら、 から入手できます。 o ``Termcap and Terminfo '' が 1988 年に O'Reilly から 出版されまし た。 16. 端末の使用 16.1. はじめに 本章では端末インターフェースの制御に関することや、端末を使いながらセッ トアップを変更することなどについて述べます。端末のユーザによる画面制御 やインターフェースの検査方法、また、デバイスドライバが提供する各種コマ ンドの使い方について説明します (またはポインタを示します)。たくさんあ るアプリケーションプログラム、シェル、または豊富な Linux ユーティリ ティの使い方については触れません。端末で普通に使われる 2 つのコマンド を示します。 o clear (画面をクリアする) o reset (端末をリセットする) o setterm -reset (``reset'' にバグがある場合の選択) 16.2. 端末の起動 端末を動作させるには、もちろん電源を入れなければなりません。ログインプ ロンプトが現れなければ、何度か ``Return'' キーを叩いてみてください。そ れから、アカウント名をタイプして (そして Return か Enter を押す)、パス ワードプロンプトが現れたらパスワードを入力します (これもまた、Return か Enter を押す)。全て大文字でタイプしないようにしてください。そうする と、コンピュータは、端末が小文字を送れない古いタイプのものだと思って、 シリアルドライバは端末に大文字だけを送るように設定するでしょう。 何も起こらなければ、ホストコンピュータと端末が正常かどうかチェックして ください。ホストコンピュータがシャットダウン (電源オフ) していると、`` 電源オフ'' のコンピュータ側で文字をエコーするようにコンピュータの送受 信ピンが一緒に接続されている場合がありますので、端末のキーボードでタイ プした文字は画面上に現れるかもしれません。``トラブルシューティング''を ご覧ください。 16.3. 端末 (シリアル) デバイスドライバ コマンドライン上でタイプしたときに、シェル (Bash シェルのような) はタ イプした文字を読み、それに反応します。最初にタイプしたものは、オペレー ティングシステムの端末ドライバ部分へ送られます。ドライバは決った文字へ 変換します (例えば、Return キーで生成される ``Return'' 文字は、Linux ファイル内にある ``new-line'' 文字に置き換わる)。それはまたある制御 コードも認識します。プログラムの実行を中断するために、^C をキーボード でタイプしたような場合です。そして普通はタイプした文字をエコーバックし たりもします。``Stty'' は端末用のドライバの動作を設定する (機能の一部 や全部) を設定したり、無効にするために使います。 16.4. エディターの問題 いくつかの端末で emacs と vi の両方を使うには少々問題があります。 16.4.1. emacs と ^S, ^Q ソフトウェアフロー制御を行なっているなら、emacs で ^S コマンドを使うと 画面が固まるでしょう。^Q コマンドはそれを解除します。これを避ける方法 は、emacs の構成を変更して、このキーを他のキーに割り当て直すことです。 16.4.2. vi とカーソルキー vi はインサートモードから抜けるためのコマンドとしてエスケープキーを使 います。矢印キー (カーソルキー) を押せば、エスケープシーケンス (ESC で 初まる文字列) がホストに送られます。vi は ESC の 2 つの意味を区別しな ければいけません。利口な vi (このために設定された vim などの) は ESC と次のキーの時間間隔によって見分けることができます。もし間隔が短かけれ ばカーソルキーが押されたと判断します。さらに詳しいことを知りたければ、 vim で ``help cursor-keys'' を使ってください。 これは上記の問題を解決するまた別な方法です。VT 端末で左矢印キーは ESC [ D か ESC O D のどちらかを送ります。他の矢印キーは同じようなものです が、D の代りに A、B、C を使います。もし問題があれば、ESC [ D を選択し てください。というのは、他の手段で ``O'' は、vi で ``Open a line'' コ マンドとして解釈されるからです。``['' は、viでは矢印キーが押されたと解 釈されるはずです。ESC [ D は、``カーソルキー アプリケーションモード'' が設定されていないとき、送られるでしょう。ESC [ D は、通常はデフォルト なので、全てうまくいくはずです。多くの termcap に含まれる ``アプリケー ションモード'' を防止したい文字を除いては。エディターは起動時に端末に 対してこの文字列を送ります。それで問題が起こるのです。 この文字列は termcap コード ``ks'' (terminfo では smkx) があり、それは ファンクション (それと相対) キー (と矢印キーを含む) を有効にするという 意味です。アプリケーションはこれらのキーを有効にするために、``ks'' 文 字を端末へ送ります。誰かが termcap を書いたのは、アプリケーションがこ れらのキーを有効にしたいなら、``アプリケーションモード'' に移行すると いう理由からなんですが、これは ``アプリケーション'' の話であって、あな た望んでそうするわけではありません。 Linux コンソールには ``ks'' 文字がないので、コンソール上でこの落し穴に 引っかかることはありません。他の端末では、termcap (あるいは terminfo) の編集か、他の termcap エントリの使用が必要になるでしょう。``ks'' 文字 以外に、kd, kl, kr, ku などの送信する文字を termcap で宣言する必要があ ります。それから tic でインストールします。 vim (vi の改良版) で、ESC 0 D がうまく動くようにセットアップする方法 は、vim のヘルプ ``vt100-cursor-keys'' をご覧ください。``gitkeys'' と 使えば、カーソルキーを押したときに何が送られてるか確認できますが、エ ディタの中から実行したときは、違ったものを送るかもしれません。 16.5. ls での間違った色表示 ls がカラー機能をエミュレートしようとして端末をおかしくさせてるなら、 その機能をオフにしましょう。ls --color と ls--colour はどちらもカラー 機能を使います。インストールの種類によっては、ls がデフォルトでカラー を使うように設定してあります。ls のエイリアスがないかどうか /etc/profile などを調べてみてください。コンソールでのカラーの使い方 や、端末を白黒で使う方法については``コマンド ls の例''をご覧ください。 16.6. 固まった表示 (端末のハング) 端末がハングする徴候は、端末上でタイプしたものが見えない (あるいは、何 もしないのに文字が表示される) という点です。もしタイプしたものが見えな ければ (あるいは何もしなければ)、データフローを再開するために ^Q とタ イプしてください (フロー制御での停止の場合です)。端末がハングするの は、 ``端末へバイナリを送ること'' や、``プログラムが異常終了したこと''が原 因です。 どちらにも該当しないなら、あなたのプログラムにバグがあるか、端末との対 話が致命的に不正であるかのどちらかです。 実行中のプログラムを止めたいけど、普通の方法 (いくつかのプログラムは、 特別なキーを叩くと終了します) で止められないなら、他の端末から ``top'' か ``kill'' を使って終了させてみましょう。プロセスに終了するのを拒否さ れた場合、top から シグナル 9 を送信して強制終了させてみましょう。強制 終了のタイプ ``9'' は、おかしくなったインタフェースと同様にそこら辺に あるテンポラリファイルを放りっぱなしにします。ログインシェルを kill し ても、getty がまた起動して、新しいログインプロンプトが表示されるはずで す。 Linux を使い初めたばかりの人達は Ctrl-S (^S) (または ``スクロール停 止'' キーを無意識に押してしまい、謎の画面フリーズ騒ぎを起こします (け れども、ソフトウェアフロー制御を使うなら、このキーが何であるか推測でき ます)。まともに対話できる画面に戻すには、Ctrl-Q (^Q) を押します。従っ てフリーズしたときに、何でもキーをタイプすると、ファイルやなにかを壊す ことになるでしょう。ハードウェアフロー制御を使う理由のひとつが、このよ うな、画面フリーズを防止するためです。 16.7. おかしくなった端末インターフェース ここでは、前ページの ``端末のハング'' と ``画面のフリーズ'' が混在した ケースについての話です。 16.7.1. 徴候といくつかの修正 表示が正しく見えなくなる、タイプした文字が正しく表示されない (せいぜ い) 、あるいは、コマンドをタイプしても何も起こらないときに、端末イン ターフェースがおかしくなってるはずです。時々、再度ログインし直すことで 問題を解決できます。こうするには、端末で動いている shell プロセスを kill します (あるいは、getty が動いていたら kill する)。他の端末からこ れを行います。一度 kill したら、新しい getty プロセスが起動しなおし て、多分画面の乱れはおさまってるはず。端末の電源を入れ直す (あるいはリ セットする) ことでも直るかもしれません。 おかしくなる現象は、使用するプログラムのバグやハードウェアの故障 (通常 は使えているのに原因不明の故障)、あるいは間違った設定などです。もし順 調に動いていたのに突然不調になったのなら、あなたが何かしでかしたために インターフェースがおかしくなったのです。インターフェースをおかしくさせ る要因は 3 つあります。 o ``端末にバイナリキャラクタを送る'' o ``異常終了したプログラム'' o ``誤って ctrl-S をタイプする'' 16.7.2. 端末にバイナリキャラクタを送る あるエスケープシーケンスか制御文字が送られると、端末はその特性を変えま す。うっかりバイナリファイルを表示しようとして、その中に偶然そのような エスケープシーケンスが入っていたら、端末をおかしな操作モードにしてし まったり、使用不能にさえしてしまうかもしれません。このようなことが起こ らないよう設計されたプログラムを使っていつもバイナリファイルを見たり、 編集するようにしなさい。ほとんどのエディタやページャはバイナリを扱える ので、端末のインタフェースをおかしくさせることはないでしょう。いくつか のアプリケーションは「バイナリを編集できない」とあなたに伝えるメッセー ジを表示するかもしれません。でも、``cat ....'' や ``cp .... /dev/tty..'' (.... はバイナリファイル) を使うと、バイナリを端末に送る ことになり、おかしなことが起こるでしょう。 おかしなことは、通信プログラムを使ってリモートコンピュータがあなたの画 面にバイナリを送りつける時も起こり得ます。そのことに準備しておく多くの 方法があります。想定できる ASCII ファイルでさえ、求めていない制御コー ドを含んでいるかもしれません。 この問題を修復するには端末をリセットします。``reset'' (壊れているかも しれません) か ``setterm -reset'' (もちろん キーを押します) のどちらかをタイプすればよいのです。これはリセット文字を terminfo エン トリから端末に送ります。正しい設定が端末内に保存されていれば、その時に 特別なキーを (おそらく設定モードの時に) 押すことで設定が修復できるはず です。それから、端末を設定するのなら、初期化文字を送るために ``reset'' を使う必要がまだあるでしょう。 ``reset'' コマンドは、``clocal'' のセットが必要な端末を壊しているよう なので、``reset'' は ``clocal'' を未設定に変えてるように思えることに注 意してください。こういった場合、問題を修正するかわりに、 ``reset'' は 端末とホストコンピュータ間の通信を不可にすることで妥協しているだけで す。あなたはログインし直す必要があり、その時に getty が ``clocal'' を セットしてくれることを期待するはずです。幸運なら、問いかけなしでログイ ンできるでしょう。その他、ログインプロンプトの取得については``徴候とい くつかの修正''をご覧ください。``reset'' が必要なら事前に十分ためし、も し ``reset'' があなたをログアウトさせたり、うまく動かないようなら ``setterm -reset'' を使うべきです。私は 2000 年 3 月にバグレポートを提 出してあるので、今なら ``reset'' は修正されているはずです。 ``徴候といくつかの修正'' 16.7.3. 異常終了したプログラム 大きなアプリケーションプログラム (エディタなどのような) は起動した時に stty の設定を変えるために一時的に stty コマンドを使います。これにより デバイスドライバは ``raw'' モードに変わるので、タイプした全ての文字は アプリケーションプログラムに直接送られます。ドライバからのエコーは禁止 されるので、アプリケーションプログラムから直接送られるすべてが画面で見 られます。したがって、大くの制御コマンド (^C のような) はそんなアプリ ケーションではうまく働きません。 そのようなアプリケーションを終了させるときには、アプリケーションプログ ラムは最初に、起動する前の状態に stty の設定を戻します。もしプログラム が異常終了したら (タイプした文字がいつまでたっても表示しないとき、こう なったと推定できます)、コマンドライン上で ``raw モード'' のままでしょ う。 raw モードから抜けて、普通の stty の設定に戻すには ``stty sane'' とタ イプします。あなたは、``return'' の後にこうタイプして、 ``return'' で 終わらせなければなりません。しかし、``return'' キーは、 shell が待ちう けているような改行文字にもはや変換されないので、``return'' キーを叩い てもその役目を果たしません。そんな場合は、``return'' キーの代りに改行 コード (^J) をタイプしてみてください。``sane'' 端末インタフェースは、 正確には正常なものと同じものではありませんが、普通は働くでしょう。 ``stty sane'' はいろんな理由でおかしくなったインタフェースから抜け出す ためにも有効です。 16.8. 特殊 (制御) 文字 あなたがキーボードでタイプする多くの制御文字は端末ドライバで ``捉えら れ'' て、様々なタスクを実行します。このような制御コマンドを見るには、 stty -a とタイプして、2行目 から 4 行目を見てください。これらは stty の man ページで簡潔に説明されています。stty コマンドを使用して、異った 制御キャラクタに変えられたり、無効にしたりします。しかし、あなたの端末 での制御キャラクタは以下に記述されているものとは異なっているかもしれま せん。それらはコマンドライン編集や、割り込み、次のキャラクタを透過的に 通過させたりするのに使います。 16.8.1. コマンドラインでの編集 端末ドライバにはコマンドライン編集用の 2、3 のコマンドがありますが、 シェルにも組込みの本当のエディタ (``readline'' のような) があります。 そのようなエディタは通常はデフォルトで利用できるので、有効にするために 何かをする必要はありません。もし利用可能なら、以下のコマンドの多くを覚 える必要はありませんが、コマンドラインエディタはまだよく使われていま す。一番覚えておかなければいけないのは、^C (割込み), ^D それとスクロー ルを止める方法です。 o Delete キー (stty では ^?) は最後の文字を消去します。 o ^U は行を削除します。 o ^W は後方に単語を削除します。 o ^R は行を再表示します。主にハードコピー端末に便利 ?? 16.8.2. 割り込み (& Quit, Suspend, EOF, Flush) o ^C 割込み:プログラムを終了させて、コマンドラインプロンプトをユーザ に返す。 o ^/ クイット:割込み ^C と同じだが、少し弱い。``core'' ファイル (あ まり使わない) をワークディレクトリにダンプします。 o ^Z サスペンド : プログラムを停止して、バックグランドに置いておきま す。 fg とタイプすると再開します。 o ^D ファイルの最後 : コマンドラインプロンプトでタイプすると、シェル を抜けて、シェルを開始する前のところに行きます。 o ^O フラッシュ : Linux では実装されていません。/dev/null へ出力を送 ります。 16.8.3. スクロールの開始 / 停止 見たいものがスクリーンの下へスクロールして消えてしまいそうになったら、 (Xon-Xoff ``フロー制御''が有効になっている) ホストへ ``停止'' 信号 (^S か Xoff) を送って、これを防ぐことができます。再開するには ``開始'' 信 号 (^Q か Xon) を送ってください。いくつかの端末では、Xoff と Xon を交 互に送るか、あるいはハードウェアフロー制御信号を送ることができる (??) ``非スクロール'' キーがあります。以下は ctrl-S (^S) と ctrl-Q (^Q) が 何をするかです。 o ^S はスクロールを停止します (Xoff)。 o ^Q はスクロールを再開します (Xon)。 もしスクロールの停止とクイットの両方をしたければ、^C を使いなさい。他 に何かするためにスクロールを止めたいが、プログラムの出力をメモリに保存 しておいて、後でスクロールを再開したいなら、^Z でサスペンドしておきな さい。 スクロールの代替手段としては、more 、less や most などのページャにパイ プを使って出力を送る方法があります。しかし、出力は標準出力でないかもし れませんが、ページャが認識しないエラー出力かもしれません。これを解決す るには、ページャが良好に働くように、リダイレクション ``2>&1'' を使う必 要があるかもしれません。後方にスクロールする必要がなければ、単に ^S と ^Q を使います。 PC コンソール (端末をエミュレートする) では、Shift-PageUp キーを使って 後方にスクロールします。^S を使って止められないほど早くスクロールする 場合に、頻繁に必要になるでしょう。一度後方へスクロールしたら、再び前方 にスクロールするには、Shift-PageDown を使います。 16.8.4. 次のキャラクタを文字通りとりなさい ^V は,デバイスドライバ経由で直接タイプされた次のキャラクタ (普通は制御 キャラクタ) を、なんのアクションや割込みもなく送ります。エコーバックす ると ^C のように 2 つの ASCII キャラクタになります。 16.9. 7 ビット端末で Latin-1 のファイルを見る ``テキスト'' ファイルには 8 ビットの Latin1 で書かれたものがあります (``文字セット''をご覧下さい)。Latin1 を表示できない端末をお使いなら ( あるいは、Latin1 文字セットが選択肢がないなら)、リストの先頭につく小丸 は 7 ビットコードで表示されるでしょう。man ページ (それらは Latin1 で す) を見る時は、小丸に近い何かに 7 などの文字をちゃんと変換するため に、man にオプション -7 を付けます。 16.10. インタフェースを点検する これらのユーティリティプログラムは端末インタフェースについての情報を提 供します。 o gitkeys: 各キーがホストにどんなバイトを送るのかを表示します。 o tty: どのポートに接続しているかを表示します。 o set: TERM (terminfo のエントリ名) の値を表示します。 o stty -a: stty の全ての設定を表示します。 o setserial -g /dev/tty?? (?? に適切な番号を入れてください) は UART のタイプ、ポートアドレス、IRQ番号を表示します。 o infocmp: 現在の terminfo のエントリを表示します (少いコメントで)。 16.11. 端末の設定変更 端末の設定は、普通は端末マニュアルのセットアップ手順を使ったインストー ルを一度するだけでよいのです。しかし、いくつかの設定は端末の使用中にも 変更されます。端末を使っていて、端末のインタフェースがおかしくなった時 に、通常は、 ``setserial'' のどんな ``stty'' コマンドも使わないでしょ う。でも、インタフェースの整合性を壊さないで、端末画面の外観や振舞いを やりかえる変更があります。時々、これらの変更はアプリケーションプログラ ムが自動的に行うので、あなたがする必要はありません。 そのような変更を行う直接的な方法は、端末のセットアップキー (または類す るキー) を使うことで、メニューを使って変更を行います。こうするには、端 末のことをよく知ってる必要があります。 その他の 3 つの方法はコン ピュータから端末にエスケープシーケンスを送ることです。反転表示にするた めの 3 つの方法を以下に示します。 1. setterm -reverse 2. tput -rev 3. echo ^[[7m 16.11.1. setterm これは最も使いやすいコマンドです。長い名前のオプションを使います (しか し、その前には通常の -- は使いません)。どんなコードを送るか決めるのに terminfo データベースを調べます。色、明るさ、行ラップ、キーボードリ ピート、カーソルの形状などを変更できます。 16.11.2. tput ``tput'' コマンドは ``setterm'' に似ていますが、引数に普通の単語を使う 代りに、terminfo にある略称を使わなければなりません。多くの略称は簡単 すぎて、覚えにくいです。 16.11.3. echo 反転表示する ``echo ^[[7m'' の例では、^[ はエスケープキャラクタです。 それをタイプするには ^V^[ とタイプしてください (あるいは ^V に続いてエ スケープキーをタイプします)。この ``echo'' の方法を使うには、端末のマ ニュアルか、terminfo あるいは termcap から、どんなコードが使われている か確認しなければなりません。コマンドライン上でタイプするなら setterm や tput より簡単です。``echo ...'' は実行が早いので (なにも探さないか ら)、起動時に動くシェルスクリプトなどで使うのに適しています。 16.11.4. 変更の保存 端末の電源を切ったとき、それまでの変更は消えてしまいます (セットアップ モードで、端末の不揮発性メモリに保存してなければの話です)。同じコマン ドをタイプせずにもう一度同じ設定にしたいなら、シェルスクリプトに書く か、シェルファンクションを作ってください。そして変更したくなったら、そ れを動かすのです。半永久的に変更する 1 つの方法は、ログインした時か、 コンピュータが起動した時に、毎回そのスクリプトを動かすことです。 16.12. 端末をコンソールとして作る これは ``シリアルコンソール'' とも呼ばれています。システムからの多くの メッセージは通常はコンソール (PC モニタ) だけに送られます。起動時にコ ンソールに送られるメッセージのいくつかは、ブートが成功した後で、コマン ド dmesg をタイプすれば端末で見ることができます。ブートが失敗した場合 は、端末はオペレーティングシステムなしで動作できませんから、これは役に 立ちません。端末をコンソールとして、コンソールに関する Linux のメッ セージを受け取ることができるように Linux カーネルを再構築できます。残 念ながら、(PC が最初に起動した時にモニタに表示される) BIOS メッセージ は端末に表示できません (モニタには表示されますが)。 モニタやキーボードなしで PC を起動する人達がいます。通常 PC はキーボー ドやビデオカードなしでは起動しませんが、幾つかの BIOS なら可能です。`` コンソール リダイレクト'' 機能をサポートする BIOS を使用しているなら、 PC を起動する時に CMOS のメニューを使って BIOS のセットアップが必要で す。 16.12.1. カーネル 2.2 以降 シリアルコンソールを作るための説明は、ソースコードと一緒に含まれるファ イル serial-console.txt にあります。通常、デバイス /dev/console は tty0 (PC コンソール) にリンクします。シリアルコンソール用として、本当 のデバイス (他へのリンクではない) である新しい /dev/console を作りま す。そしてまた、/etc/lilo.conf にシルアルコンソールに関する文を書い て、 lilo を起動します。これは、カーネルがロードされる前に、あなたのコ ンソールをセットアップするために ``setserial'' と同じものを走らせる必 要があるためです。詳細は上記のドキュメントや man ページの lilo.conf を ご覧ください。 /etc/lilo.conf のサンプルです (ttyS0 用)。 prompt timeout=50 boot = /dev/sda vga = normal # 強制的に sane にする install = /boot/boot.b message = /boot/message image = /vmlinuz root = /dev/sda1 label = console serial = 0,9600n8 append = "console=ttyS0" 16.12.2. カーネル 2.2 以前 1997 年 4 月の Linux Journal 誌には、Linux カーネルのパッチに関する記 事がありました。src/linux/drivers/char/console.c の最初に一組の #define を加えること。 #define CONFIG_SERIAL_ECHO #define SERIAL_ECHO_PORT 0x2f8 /* シリアルポートアドレス */ 以下は Linux Journal 誌の記事にはありませんでした。カーネル 2.+ (それ と、それより前のバージョン ??) では、ボーレートの設定も必要です (9600 以外にしたければ)。これら 2 行を見てください。 serial_echo_outb(0x00, UART_DLM); /* 9600 ボー */ serial_echo_outb(0x0c, UART_DLL); (設定したいボーレートに依り) 上記の 0x0c を変更してください : 115200 ボー: 0x01 19200 ボー: 0x06 2400 ボー: 0x30 57600 ボー: 0x02 9600 ボー: 0x0c 1200 ボー: 0x60 38400 ボー: 0x03 4800 ボー: 0x18 今、ブートする OS を選択するためにコンソールを使っているけど、本当は端 末から選択したいなら、/etc/lilo.conf に 1 行追加する必要があります。 lilo.conf の man ページを見て、``serial='' でサーチしてください。 16.12.3. モニタ (PC コンソール) 無しで Linux を実行できますか ? はい、端末を使って、それを上記のコンソールのように働かせるこができま す。ほとんどの BIOS は PC の起動時にビデオカードから情報を取得している ので、ビデオカードは必要なんじゃないかと思えます。BIOS は起動時にキー ボードも必要としますが、あるいは、キーボードが不要なように設定できる BIOS のオプションがあるかもしれません。 16.13. マルチセッション ``screen'' パッケージは、コンソール上の仮想端末に似たマルチセッション をサポートします。``コンソール /dev/tty?'' をご覧ください。しかし、 ページのイメージは、``ページ'' として端末内ではなく、ホストコンピュー タ内に保存されますから、これは ``ページ'' ではありません (``ページ''を ご覧ください)。 16.14. ログアウト ログアウトするには、``logout'' か ``exit'' をタイプしてください。ある 状況ではログアウトの要求が拒否されますが、その理由を問うべきです。拒絶 された理由の一つは、ログインしたときと同じシェルを使っていなかったこと です。ログアウトの別な方法は ^D と押すことです。^D は他の目的にも使い ますから、ログアウトには使いたくないかもしれませんね。もし、bash シェ ルで IGNOREEOF が設定されていたら、^D はもはやログアウトには使えませ ん。 16.15. 端末間でのチャットやスパイ 同じホストコンピュータの端末からログインしている二人がお互いにチャット したいときは、``write'' か ``talk'' プログラムを使います。インターネッ トでは、チャットは ``lynx'' を使うかもしれません。 端末で他の誰かが何をしているかスパイするには、``ttysnoop'' プログラム を使います。``ttysnoop'' では二つの端末は同じ状態となり、各キーボード で何かをタイプすると両方の画面 (の同じ位置) に表示されます。それで、あ なたが本当にスパイをしていて、それを悟られたくなければ、何もタイプすべ きではない。 ttysnoop は、先生と生徒が各自の端末の前に並んで座ってるような場合の教 育用に使えます。先生は生徒が何をタイプしたか見て、生徒がミスタイプした 文字を正しくタイプすることで訂正できます。生徒は先生がタイプする文字を 見て、自分の端末で同じ文字をタイプします。それはあたかも二人の人間が同 時にキーボードに触れて一つの端末を使ってるようなものです。 ``ttysnoop'' には欠点が一つあって、それは端末が全て同じ種類 (vt100 な どのように) のもの (か同じエミュレートのもの) が必要であるということで す。``Linux'' はコンソール (モニタ) でエミュレーションされ、 ``minicom'' は vt100 に似たエミュレーションなので、ttysnoop を 2 つの PC で使うなら、1 つのほうでは端末エミュレータとして ``minicom'' を実行 します。 ``DoubleVision'' は非フリープログラムで、ttysnoopq のようなものです が、より高機能です。違った種類の端末を使用でき、端末のセッション情報を 覚えていて再現することができるので、前に何があったか監視することができ ます。 Web ページは です。 16.16. シリアルポートの共有 端末の電源が入ったときに同じシリアルポートに接続したい別なシリアルデバ イス (プリンタ、モデムなど) をお持ちなら、他の装置に接続する以上のこと が必要です。これは主として getty プログラムかシェルが、ポートを監視し ていて、getty や シェル (あるいはシリアルドライバ) がそのポートに数バ イトを送ろうとするからです。getty は kill されても再起動して、(他の装 置に接続されている) シリアルポートに対してログインプロンプトを送りつづ けるでしょう。この問題を解決する 1 つの方法はランレベルを変更すること で、getty プログラムやシェルはそのポートに対して動作しなくなります。し かし、外部機器への出力ポートとして使われているポートに対してのみ行なう と、他の人が (端末にするつもりで) シェルや getty を同時に動作させて 使ってるポートかもしれないので危険なことです。 ランレベルの調整については、そのポートで getty プログラムが動くことの ない他のランレベルを作るようにしましょう。それから新しいランレベルを 作って、他のものにシリアルポートを使わせるようにしましょう。こうするに は /etc/inittab を編集してチェックし、getty が動くランレベルに設定しま す。例えば、``S1:23:respawn:/sbin/getty ...'' 行は、 (ttyS1 で) getty がランレベル 2 と 3 で動くことを意味します。現在、 (``3'' を消して) ラ ンレベル 2 でのみ動作させるようにしていて、他のシルアルデバイスを使い たいなら、ランレベル 3 ヘ移行します。このように、他のものがシリアル ポートを使うようにするには、ランレベル 3 に移行するために、スーパー ユーザが ``init 3'' とタイプするのです。``init 2'' とタイプすれば、も とのランレベル 2 に戻ります。各ランレベルは初期化スクリプトにより違っ た設定になっていますが、お望みの時にランレベルの変更ができるので、各ラ ンレベルで同じスクリプトが動作することに注意してください。各 Linux ディストリビューションでのスクリプトやランレベルの動きはどのようなもの でしょう。 Debian では、説明が /usr/doc/sysvinit にあります が、/usr/share/doc でも見ることができます。 ポートについての stty の設定にも問題があります。ポートが端末用に使われ ているときにある設定になっていますが、ランレベルを変更するために ``ini t 3'' が実行され、そのポートで getty が実行不可になると、オリジナル ( ブートの時) の設定は復元されません。結局、``raw'' モードでポートを設定 することになります。これは、あなたが書いたスクリプトか、その次にその ポートで動くアプリケーションのどちらかで、stty を使って完全に設定し直 すことを意味します。シリアルポートから印刷するアプリケーションは完全に ポートの再設定を行なう能力はありません (/etc/printcap は一部の設定しか しないからです)。従って、あなたはスクリプトを書く必要があります。 stty による端末の設定は、シェルが動作するかどうか、``ログイン''プロンプトが 表われるかどうかなどによって違います。そういう訳で、ランレベルを切り替 えた後の stty の設定は異なるのです。 17. トラブルシューティング (ソフトウェア) もしハードウェアに問題がありそうなら、``修理と診断''の章をご覧くださ い。問題がシリアルポート絡みなら Serial-HOWTO をご覧ください。 これはありがちな問題のリストです。 o ``端末はだいじょうぶですか ?'' 端末に欠陥がないか疑いなさい。 o ``テキストを見逃すこと''、なにかの文字を飛ばす、あるいは、文字の表 示はだいじょうぶだけど、ハングする。 o ``getty を即座に再起動する'' (コンソールエラーメッセージ) o ``ログインのすぐ後に失敗する'' o ``ログインできないけど''、ログインプロンプトは表示されます。 o ``ログインプトンプトの誤表示'' o ``なんのログインプロンプトもでない'' 端末が調子悪くなるには 二つのケースがあります。一つは、ちょっと前まで は調子良かったのに、突然おかしくなるケースです。これについては次の章で お話しします。もう一つは、端末をインストールした直後からうまく動かない ケースです。このケースの場合は次の章を飛ばしてかまいません。 17.1. 端末は順調に動いていたのに 前はうまく動いていたのに、突然調子が悪くなったときは、問題を見つけ易い ものです。問題は、(ハードウェアに起因する故障を除き) あなたがやったこ と (または使っているソフトウェア) に原因があるはずだから。 問題は、端末の電源を入れたときに表示されるエラーメッセージからも明らか になります。奇妙なノイズによるものなら修理が必要です。``修理と診断''を ご覧ください。最初に、最近問題の原因となるような何かをしたか、何か変更 しなかったか考えてみてください。問題は新しいシステムソフトウェアをイン ストールした後や、設定を変更後に起りませんでしたか ? あなたがタイプしたことに端末が (まったく) 正しく反応しないなら、端末は ``おかしくなった端末インターフェース'' になっています。 17.2. 新しくインストールした端末 指示毎に端末をコンピュータに接続したのにうまく動かないなら、本章が役に 立ちます。端末が以前はうまく動いていたのに、今は動かないのなら``端末は 順調に動いていた''をご覧くさい。コンピュータのシリアルポートに欠陥の疑 いがあるなら、診断用のテストプログラムを実行してみてくさい。現在 (1998 年 6 月)のところ Linux ではそんな診断プログラムがないはずなので、MS DOS/Windows 上で実行してください。これらの診断プログラムは DTR,CTSなど の各種シリアルラインをモニタし、手助けしてくれます。``シリアルラインの モニタ / 診断''をご覧ください。 一つのアプローチとして、最も単純な状況を想定して、端末にファイルをコ ピーして (cp my_file /dev/ttyS?) うまくいくかどうかを最初に確かめるこ とです。これはモデム制御線が無効になっていて、速度を見る場合にフロー制 御が不要であることを意味します (ハードウェアフロー制御が無効になってい ることを確認してください)。もしコピーがうまくいけば、状況はやや複雑に なり、まだうまく動かないか等々を確認します。なにか変更した後にトラブル が生じたときは、おそらくその変更がトラブルの元でしょう。実際、単純の状 況から、最後の設定までに至る過程の、半分のところへ戻り、 (試験をして、 問題の有無を)調べれば、残された問題の半分を消去できます。次のテストで またこの方法を繰り返すのです。このようにすれば千個の原因の可能性があっ ても 10 回のテストで原因にたどりつけます。勘や手がかりに頼る方法から縁 を切るべきです。 17.3. 端末はだいじょうぶですか ? 良好な端末は画面にメッセージを表示しながら起動するのが普通です。これら のメッセージにエラーメッセージが含まれてないなら、おそらく端末は正常で す。電源を入れてもウンともスンともいわない (ライトもつかないなど) な ら、コンピュータの電源コードを両端共外してください。それで他に電源ケー ブルがあるなら取り換えて試してください。端末の電源が入るかどうかと、 ヒューズが切れてないかを確認してくさい。空白の (あるいは薄暗い) 画面は 時に、明るさとコントラストをノブかセットアップメニューでキーボードを 使って調節すれば映るようになるかもしれません。それでもうまくいかなけれ ば``修理と診断''に修理のコツがあります。 端末は正常に起動するけどまだ何かがおかしいと思うなら、端末がタイプライ ターのように働く ``ローカルモード'' にして、タイプしてみましょう。`` ローカルモード'' をご覧ください。 17.4. テキストを見逃すこと 端末上でいくつかのテキスト表示はだいじょうぶだけど、最後までいかずに ( 単語の途中で) 止ったり、テキストの塊が抜けたりするなら、おそらくフロー 制御に問題があります。何が起っているかをすぐに理解できないなら、通信速 度を落してみてください。これで解決すれば、やはりフロー制御の問題です よ。正しく設定していないかケーブルの結線がまずいために、フロー制御が まったく働かないにしがいありません。``フロー 制御''をご覧ください。 一つの文字が欠落するなら、たぶん、通信速度が速すぎてシリアルポートで オーバランが起ってるのでしょう。ボーレートを落してみてください。 1200 以下のボーレート (超低速、古いハードコピー端末やプリンタで使われ ている) を使っていて、テキストが切り詰められているなら、それはシリアル デバイスドライバの問題です。解決方法は Printing-HOWTO の``シリアルデバ イス'' の章をご覧ください。 17.5. l getty を即座に再起動する 17.5.1. シリアルモジュールがロードされていない シリアルモジュールがロードされているか確認するには ``lsmod'' コマンド を使ってください。 17.5.2. モデム制御電圧が出ていない モデム制御ピンの一つの正電圧が低いために getty がポートをオープンでき なかったり使えなければ、getty は死んでしまうかもしれません。それから、 inittab 内の命令に従って、getty は再起動して、ポートのオープンを試行 し、 kill されることを何度も繰りかえすのです ...。getty があまりに早く 再起動するので、一時的に無効になっていることをエラーメッセージから確認 できます。 getty の ``local' オプションを使うか、モデム制御の設定や電 圧を調べてみてください。 17.5.3. キーの短絡 getty が再起動する他の原因は、キーボードのキーが短絡したときに、キーが 押しつづけられたのと同じ結果となることです。オートリピートが有効なら、 ログインプロンプトに対して何千もの文字が送られることになります。そし て、同じ文字 (あるいは 2 つ以上の違った文字) がスクリーン全体を埋めて しまうのです。 17.6. ログイン直後の失敗 ログインはできても端末を使えなければ、ログインシェルが起動した時に ( 誤った設定で) 端末を再設定したのが原因だと思います。ログインして、シェ ルが起動したときに参照するファイルに、誰かが端末設定のコマンドを書いた のでしょう。/etc/profile や /.bashrc がそのファイルです。``stty'' や `` setserial'' で始まるコマンドを探して、正しいかどうかを確認してみて ください。ある初期化ファイルでは正しくても、あなたが気付いていない他の ファイルで誤って設定されてるかもしれません。システムを正しく修正する方 法は、他の端末やコンソールを使うか、レスキューディスクを使うか、それと も、起動ファイルを使わずにシングルユーザモードで立ち上るように lilo の プロンプトで ``linux single'' とタイプすることです。 17.7. ログインできない ログインしたのに何の応答もなければ (あるいは、多分間違った反応が帰って くるなら)、原因は端末からコンピュータへの通信がおかしいのです。ケーブ ルやコネクタの不良か接続ミスにちがいありません。まだ getty の ``local'' オプションを使ってないなら、それを使って、モデム制御ラインを 無効にしてみてください。``Getty (/etc/inittab ファイル)'' をご覧くださ い。もしハードウェアフロー制御が有効になっているなら、それも無効にして みてください。うまく動くようになったら、モデム制御ラインの配線の問題 か、設定ミスだったのでしょう。ある端末では送信と受信の設定を違う値に設 定できるので (ボーレードのように)、受信はできるけど送信できないことが あります。 設定が正しいか確認するには、``stty < /dev/ttyS1''(ttyS1を使っている場 合です) を (コンソール上で) 試すこともできます。-icanon や -echo など を付けると raw モード (本モードではおそらくだいじょうぶ) になります。 もし端末側で半 2 重 (HDX) に誤って設定されたら、タイプした時に表示され る文字は、端末自身が表示したものです。文字が 2 重に表示されたら、コン ピュータからのエコーが正常なので、これを直すために全 2 重に切り替えて てください。しかし、半 2 重で正常に ``エコー'' するように見えるなら、 コンピュータから送られてきていません。 ``login failed'' のようなメッセージが表示される場合、タイプミスやパス ワードに誤りがなければ、ログインが許可されていないなどの制限に引掛った ものと思います。残念ながら、このメッセージはログインできない理由を教え てくれません。``Login の制限''をご覧ください。 17.8. 誤ったログインプロンプト 間違った文字セットを使ったり、ボーレートが高すぎるための送信エラー、 ボーレートの不一致、パリティの不一致、あるいは 1 バイト当りのビット数 の違いなどの原因があります。いろんな種類の文字があるなら、間違った文字 セットを得たり、間違って高位ビットがセットされたりします。スペルミスが 発生するようなら、ボーレートを落してみてください。ボーレート、パリ ティ、あるいはデータ長の不一致により、同じ ``不正な文字'' をたくさん見 かけますが、これらはパリティやボーレートによるエラーのために正確に表示 できない本当の文字の代りなのです。 もし agetty (単に getty と命名されたりもする) をお使いなら、agetty プ ログラムはパリティやデータ長を検出し、設定するでしょう。なにかタイプし てみて、パリティやデータ長が変更されてないか確認してみてください。 17.9. ログインプロンプトがでない これは端末でなにも起こらない時のことですが、端末は正常だと思われる場合 のケースです。最初にすることの一つは、コンピュータと端末の両方でケーブ ルがきちんと正しいコネクタに接続されているか確認することです。他の原因 は、ハードウェアやケーブル (ヌルモデムが必要) の不良、getty が動いてい ない、端末で間違ったボーレートが設定されている、端末がローカルモードに なっている等です。このケースでは 2 つの異なるアプローチがあります (一 度に 1 つ以上追及できます)。 o ``コンソールから問題を診断しなさい'' o Measure Voltages ``電圧の測定'' 17.9.1. コンソールから問題を診断しなさい コンソール (あるいは他の端末) で、getty が正しいポートで動いていること を ``top'' か ``ps -al'' で確認してください。他のポートや仮想端末で動 く getty プログラムと間違わないように。getty が動いていてもログインプ ロントは表示されませんよ。 テストとして、小さなファイルを端末にコピーしてみてください (getty を設 定する前のインストールの最初の過程で、これを試すのもよい考えです)。cp file_name /dev/ttyS1 のような Linux のコピーコマンドを使います。うまく いかなければ、stty を使ってできるだけ単純となるよう全てを無効 (ハード ウェアフロー制御 : -crtscts、パリティ、モデム制御 : clocal) にしてみて ください。ボーレートとデータ長が同じであることを確認してください。何も 起こらなければ、次の章なるようにポートが生きてるかどうか電圧計で確かめ てください。 17.9.2. 電圧の測定 電圧計をお持ちなら、端末側のヌルモデムケーブルの 3 番ピン (受信) の負 電圧 (-4V から -15V) を測定してください。電圧計の正側は、適切なグラン ドにつないでおくべきです (ケーブル端の金属コネクタは信号グランドには不 適なことが多い)。負電圧が出ていなければ、コンピュータ側の送信ピン (Tx D) を調べてください (ピンの配置については ``DB9-DB25''をご覧くださ い)。コンピュータ側で電圧が出ていて、端末の受信ピン (RxD) で出ていなけ れば、ケーブルの不良です (接続がきちんとされていない、断線、あるいはヌ ルモデムじゃない)。もし電圧が足りなければ、コンピュータのシリアルポー トが死んでるのでしょう。診断プログラムでテストするか、取り換えてくださ い。 シリアルポートが生きているなら、ファイルを送って (モデム制御なしで)、 何か受信できるかどうか確認したいでしょう。アナログの電圧計で送信信号電 圧を調べて、ラインに何も出力してない時に針が -12v を指していることを確 認してください。それからファイルの送信 (あるいは getty) を始めてくださ い。電圧計の針は 0 を指したあと、(送信されたデータの) ビット列の短期平 均値の電圧を指示するため、0V を中心としてふらつくはずです。あなたの電 圧計に、AC スケールでは DC 電圧を遮断するようなコンデンサがついている なら、 AC スケールでも確認できます。そうしないと、-12v の DC 電圧は 誤った AC 電圧として読めてしまうでしょう。電圧計がなければ、他の適した 装置 (端末や外付けモデム) をシリアルポートに接続して、正常に動くか確認 してください。 17.10. 低速 : キャラクタとキャラクタの間で数秒の待ち 割り込みの設定を間違ったら、Serial-HOWTO の ``Slow'' で始まる章をご覧 ください。 17.11. 端末がスクロールしない 原因の一つは、terminfo の何かが間違っているためです。別な原因は、端末 のスクロール領域の外側にセットされているからです。幾つかのプログラム は、あなたの端末が 24 行だと推定して、terminfo から実際は何行あるかを 得ずにスクロール領域を (端末にエスケープシーケンスを送ることで) 24 行 に設定します。それで他のプログラムを使ったときに、25 行目のカーソルは 捨てられて、端末はスクロールしません。この問題を防ぐために、環境変数 ``exp ort LINES=25'' をセットしておいて、24 行だと勘違いするプログラム がそれに応じてスクロール領域を 25 行として使うようにします。問題解決の ためのかわるがわるの方法はコマンド ``stty rows 25'' を使うことです。 17.12. シリアルモニタリング / 診断 わずかな Linux プログラムはモデム制御線をモニタリングして、正 (1) か負 (0) かを表示します。 o statserial (Debian ディストリビューション) o serialmon (RTS, CTS, DSR をモニタしませんが、ログに残します) o modemstat (Linux PC コンソールでだけ動作します。コマンドライン上で 動作します) あなたはもうお持ちかもしれませんが、もしお持ちでないなら、Serial Software をご覧なさ い。これらを使って見たものがホストコンピュータのシリアルラインの状態だ ということを心に留めてください。端末での状況は違って、数本の線がケーブ ルから外れていたり交差したりします。 1998 年 7 月の時点では Linux のシ リアルポート診断プログラムを知りません。 17.13. ローカルモード ローカルモードでは、端末はコンピュータから切り離され、タイプライター ( 紙に印字せずに画面に表示するだけですが) のように働きます。コンピュータ へ再接続しオンラインモードへ戻ると、``local'' になる前の状態に回復する ことができます。これは端末のテストと教育用途の両方に向いています。幾つ かの端末では ``ローカルモード'' として ``ブロックモード'' を使います。 ローカルモードでは、エスケープシーケンス (ESC コードで始まる) を入力し 何が起きるか確認できます。端末がローカルモードでうまく動かなければ、コ ンピュータに接続しても正しく動く見込みはありません。エスケープシーケン スがどのように働くかちゃんと理解していないなら、ローカルモードで試す手 があります。また販売されている端末を十分試すにも用いることができます よ。ローカルモードにするには、まずセットアップモードにしたあとで、メ ニューから ``local'' を選択します (あるいは特定のキーを押す)。``セット アップ (設定) モードにする''をご覧ください。 17.14. シリアルの電気的なテスト装置 17.14.1. 引き出し工具 マルチメータ (電圧計として使用) はほんの少しの端末に必要な機能を全て備 えていますが、単純で特別なテスト道具がシリアルポートラインのテスト用と して作られています。幾つかのものは ``ブレークアウト ...'' と呼ばれ、ブ レークアウトはケーブルから導線を引っぱり出すという意味です。これらの道 具には一組のコネクターがあり、そこにシリアルケーブルを差し込むのです。 電圧計を接続するコネクタを備えているものもあります。他には LED があ り、モデム制御線のどれかが有効になると (電圧が生じると) 点灯します。ま たあるものにはジャンパー線があり、任意の線を接続できます。他にはスイッ チ付きのものもあります。 Radio Shack では TD, RD, CD, RTS, CTS, DTR, DSR をチェックするための ``RS-232 トラブルシュータ'' や ``RS-232 ラインテスタ'' を販売 (1998年 現在) しています。緑のライトは (+12V) で、赤は (-12V) を表します。``RS - 232 シリアルジャンパーボックス'' も販売しており、これはどのピンへも 接続できるものです。 17.14.2. 電圧の測定 どんな電圧計やマルチメータ -- $10 程度で売られてるものでさえ -- 良好に 測定できます。他の方法で電圧を測定するのはトリッキーなことです。電圧を 降圧するための直列抵抗がつながってないかぎりは LED を使ってはいけませ んよ。20 mA の LED には 470 オームの抵抗が使われます (でも全ての LED が 20 mA ではありません)。LED はある電気極性のときにだけ発光するので + か - の電圧をテストできるはずです。自動車の電子回路のチェック用にこん な道具を誰かが作ったんでしたっけ ?? ロジックプローブは 5V の TTL 用に 設計されているので、これを測定に使うとロジックプローブを損傷してしまい ますよ。 12 V の白熱灯を試すことはいいアイデアじゃありません。極性を示 さないし、 UART の出力電流制限のためにおそらく光らないと思います。 メスのコネクタの電圧を測定するなら、曲ったペーパークリップをお望みの穴 に挿しこめばよい。ペーパークリップの直径はピンより大きくないので、端子 を傷つけることがないのです。接続にはペーパークリップに鰐口クリップを挟 みこんでください。 18. 修理と診断 端末の修理は、モニタやキーボードを修理することとかなり共通点がありま す。端末に備わっている診断ソフトが悪い個所を画面に表示してくれたりしま す。診断ソフトがなければ、その時は徴候によって、キーボードや CRT の故 障、端末の電子回路の不良うちから問題を一つに絞りこむことができます。 サービスマニュアルがあれば一番いいのですが、お持ちでなくともだいたいの 端末は修理できますよ。 18.1. 修理についての参考書籍と Web サイト 18.1.1. 参考書籍 Bigelow, Stephen J.: Troubleshooting & Repairing Computer Monitors, 2n d edition, McGraw-Hill, 1997 年出版。文字型の装置やキーボードに関する 説明はありません。 18.1.2. Web サイト ニュースグループ http://www.repairfaq.org に FAQ があります。sci.electronics.repair は豊富で わかりやすいけれど、章毎に端末の説明がありません。 "Computer and Video Monitors" の章をご覧ください。ここの情報の多く、章でいえば "Testing Capacitors", "Testing Flyback Transformers" などは端末のことを適切に説 明しています。多分将来は、この HOWTO の修理についての ``情報'' は上記 FAQ (あるいはそれに類するもの) へのリンクが主として含まれるはずです。 端末の修理に関するニュースグループへの投稿 Shuford's repair archive もまた 情報源となります。 18.2. 安全性 カラー CRT には 3 万ボルト以上の高圧電流が流れています (白黒はもっと低 い)。たとえ電源が入っていなくても、カバーが外れていたら電圧に触れない よう注意してください。電流制限がかかっているので、おそらく触れても死ぬ ことはないはずですが、でもひどい火傷やショックなどを与えると思います。 高電圧はエアギャップを伝って絶縁破壊を起すので、手は十分安全な位置にあ るように気をつけてください。安全なように絶縁された高圧線がブラウン管の 端に接続されているのに気づくことでしょう。電源が切られていても、このブ ラウン管へのケーブル接続にはあなたにショックを与えるのに十分な残留電圧 があります。電源を切った後にこの残留電圧を放出するには,ジャンパー線付 きのブラウン管の接地線に接地した金属ブレードがついたドライバーを使いま す。 低圧 (数百ボルト程度) でさえも電流制限がかかってないのでより危険なので す。手が濡れていたり、金属製の腕時計、あるいはリングのようなものをして いるならさらに危険です。稀に死亡することもあるので注意すること。デジタ ル回路の数ボルト程度のより低電圧ではかなり安全ですが、本当に安全だと確 認できないかぎりはどれにも触ってはいけない。 訳注:非常に危険なことが書いてあります。高圧電流によって何千件もの死亡 例があります。CRT のカバーを *絶対に* 外してはいけません。 18.3. 外観 表示があまりに暗すぎるなら、ディスプレイの外側にあるつまみ (もしあるな ら) を使って輝度かコントラストを調整しましょう。幅、高さ、あるいはセン タリングが正確でなければ、それ用の調整つまみを使います。古い端末の幾つ かでは、セットアップモードにして矢印キー (かそれに類するもの) を押さな ければなりません。 古い端末では特にそうでしょうが、調整のためにカバーを取り外す必要があり ます。調整中に鏡にディスプレイが映るように、端末の前に鏡をおいておけば 調整をきちんとすることができます。調整用つまみはプリント基盤上にあるか もしれません。ドライバー (可能ならプラスねじ) は常に必要ですが、インダ クターには特別な TV 組み立て用ツール (プラスティックの六角レンチなど) が必要かもしれません。調整つまみの略称が基盤上に印刷されているはずで す。例えば、以下に示す略称があります。 o V-Size は垂直方向の高さ (サイズ) を調整します o H-Size は水平方向の幅 (サイズ) を調整します。それはインダクタかもし れません。 o V-Pos は垂直方向の位置を調整します。 o H-Pos は水平方向の位置を調整します。 o V-Lin は垂直方向の歪みを補正します (走査線の幅が画面の一番上と一番 下で異なるとき使います)。 o V-Hold は垂直同期を調整します (スクロールがおかしくなってるときに使 います)。 o Bright は輝度を調整します(外側にもつまみがあります)。 o Sub-Bright は輝度の落ち付き具合のモードを切り換えします (ノーマル モードではボールドやブライトモードよりぼんやりしています)。 歪み補正を変えるとサイズが変るので再調整が必要です。保存されているしば らくの間の端末には、大きな黒い境界線で囲まれた小さな長方形が表示される かもしれません。それで調整が難しければ、少し待っていれば使えるよう回復 するでしょう (黒い境界線は縮むから)。 18.4. 診断 18.4.1. 端末から異音が聞こえる場合 端末が故障する前 (あるいは故障後に電源を入れたとき) に異音を発したら、 それは故障箇所を特定する手がかりとなります。もしスパークしたような音を 聞いたり、煙を見たり匂ったりしたら、一層の損傷を防ぐためにすぐに電源を 切ってください。カバーを外しても悪い個所がどこか分らなければ、火花が見 えるよう部屋を暗くして、ちょっとだけ電源を入れてみてください。高電圧 ケーブル (フライバックトランスと真空管とを接続する) が、グランドへの アークで絶縁破壊しているかもしれません。高電圧の絶縁用のワニスか、1 万 ボルト用に設計された特殊なテープで補修しましょう。 フライバックトランス (高電圧) が壊れたら、かすかなクリック音か火花の音 がするかもしれません。電源を切ると音がしなくなったら、しばらく待ってか ら再度電源を入れてみてください。その音の出所をさぐるには、小さなゴム管 (自動車でよく使われる) を聴診器代りにして音を聞いてみてください。しか し異音を聞いている間も端末は損傷するので、すばやく見つけること (ただ し、あまりに急いで (感電による) ショックを受けるような危険を冒さないよ うに、くれぐれも注意のこと)。 電源部分の短絡により、ヒューズがポンと切れたかもしれません。切れた ヒューズの取り換えは問題の解決にはならないので、同じことがまた起きるで しょう。高熱で黒く焼けた部分を点検して、それらの部品をテストしてくださ い。パワートランジスタの短絡が、ヒューズ切断の原因かもしれません。トラ ンジスタチェッカか抵抗計でチェックしてください。抵抗計は、メータの供給 電圧が低くなるよう、小さなスケールのものを使ってください。これはテスト 電圧によって正常な装置を壊さないようにするためです。 端末が、湿った場所や料理の湯気が立ちこめている台所の近くのような湿気に さらされたなら、乾燥させなさい。ドライヤーで ``壊れた'' フライバックト ランスを数分間暖めたら回復するかもしれません。 18.4.2. 端末から異音がしない場合 画面に何も映ってないのは、輝度の調整が一番低いレベルになってるか、また は寿命がきたからです。次にすることは、ケーブルが緩んでるか接続部分が壊 れてないかを調べることです。電源が入ってないようなら、電源コンセントに ちゃんと``電気がきてる''ことを確認した上で、新しいケーブルに取り換えて みてください。 キーボードが疑わしいようなら、同型の端末と交換するか、正常なキーボード と交換してみましょう。また、キーボードケーブルの端やプラグをよじってみ てください。ケーブルの配線の、特にプラグ付近が断線しているのかもしれま せん。よじってみて (その動きに同期して、おかしくなったりまともに動いた りすることで) 断線だと判明したら、新しいケーブルに取り換えるか、ケーブ ルを切って切断部分を半田付けをするなどすればよい。 キーボードが動作するなら、最初にすることの一つは端末を``ローカルモー ド''にすることです。ローカルモードでちゃんと動いたら、ホストコンピュー タとの接続か、(インターフェースの不整合か) 端末の UART に問題がありそ うです。 慎重に回路を点検することで、問題の原因がよく見つかります。変色、ひびな どを探しなさい。断続して起きる問題は、ボールペン (もちろん金属製はダメ ですよ) で部品を叩くと時々見つけられたりします。プリント基板の導体の断 線は基板を曲げるとはっきり分ります。半田がとれたり、少量しか半田付けさ れていない個所があれば、半田付けをやり直す必要があります。半田付けは、 トランジスタ (や他の部品) を加熱して損傷を与えるので、できたら熱を逃が すための工具を使ってください。 ありふれたブランドの端末をお持ちなら、インターネットのニュースグループ に投稿された記事の中から、あなたと同じ端末でたびたび起きる問題や、多分 それを解決する方法を探すことができるでしょう。 電子回路がちゃんと動いてることを確認するには、壊れた端末で (正常なキー ボードを使って) タイプしてみることです。正常な端末 (またはコンソール) で、copy コマンドか minicom のような端末通信プログラムを使って試しなさ い。一行送るのに端末で改行キーを叩く必要があります。別の端末から壊れた 端末に識別子などを問合わせるかもしれません。これで双方向通信が働いてい るかどうかを確認できるでしょう。 18.5. 画面上のエラーメッセージ 幸運ならエラーメッセージが画面に表示されます。通常は最初に端末の電源を 入れた時に起こります。 18.5.1. キーボードエラー これは通常、キーボードが接続されてないか、接続が緩んでいるという意味で す。より重大な問題については``キーボード''をご覧ください。 18.5.2. NVR のチェックサムエラー NVR とは ``Non-Volatile RAM (不揮発性メモリ)'' のことです。これは設定 情報が保存されている NVR がおかしくなったことを示します。端末はそれで も動くはずですが、誰かが端末の設定をした時に最後に行ったものは失なわれ てしまいます。もう一度設定して、保存してみてください。多分動くはずで す。すごく古い端末 (1980 年の初頭) では、設定を保存するのにバッテリー バックアップの CMOS が使われているので、このケースでの問題はバッテリー が上ったためです。EEPROM (バッテリー不要) ではたまに保存のし過ぎでおか しくなります。これをつきとめるのは難しいですよ。修復できなければ、デ フォルト設定で固定するか、開始時に端末へ設定用エスケープシーケンスを送 るかのどちらかです。 18.6. コンデンサ 電解コンデンサは金属製の入れものに入っており、数年使わずにいたら効果が 弱まり動かなくなります。時々はただ端末の電源を入れてやるだけで、回復さ せるでしょう。できることなら、1,2 年に 1 回は端末の電源を入れることを 心掛けてください。 18.7. キーボード 18.7.1. キーボード 端末のキーボードは PC のものとは違います。違いはキーレイアウトばかりで はなく、キーを押した時に発生するコードも違います。そして、各種ブランド や端末の型式の違いでいつも互換性があるわけではありません。時々は ``非 互換'' のキーボードが端末で部分的に動くことがあります。全ての ASCII キーは大丈夫のはずですが、セットアップやブレークなどの特殊なキーはちゃ んと働かないでしょう。 18.7.2. どのように働くか ほとんどのキーボードは、キーを押すと 2 本の配線を単純に接触させるよう になっています。キーボードの IC チップ内の電子回路が、配線の接触をキー ボードの外部ケーブルへ送りだすコードに変換します。各キーから IC チップ につながる個別の配線のかわりに、以下の方式が採用されています。配線の番 号を 1-10 と A-Jと名付けます(合計 20 本)。 例えば、3 番の配線は複数の キーに接続されていて、B 番の配線も複数のキーに接続されています。しか し、3 番の配線と B 番の配線の両方に接続されているキーは一つだけです。 そのキーが押された時に、3 番の配線と B 番の配線の間に閉回路が作られま す。IC チップはこの短絡を検出して、どのキーが押されたか識別します。こ の方式は 必要な配線を減らすことが出来ます (したがって、IC チップのピン 数も減らせます)。この方式は (電話交換機の)``クロスバースイッチ''と同じ です。 18.7.3. 1 回押すと、2 つの違う文字が表示される もし、不具合により 3 と 4 の配線が短絡したら、3-B キーを押すと 4 と B もつながって、チップは 3-B と 4-B キーの両方が押されたように思うでしょ う。1 文字でよかったのに、2 つの異なる文字がタイプされたようになってし まいます。 訳注:ここでの 3,4 と B は「どのように働くか」で説明した方式の配線の番 号を意味しています。 18.7.4. 最近のキーボード vs 古いキーボード 最近のキーボードと古いものの外見は同じように見えますが、操作の仕組みは 異なります。古いほうはハードプラスティックケースの中にある各スイッチが キーキャップの下で独立しています。最近のものはキーボードの形をした大き くて柔らかいプラスティックシート (膜) を使います。穴のあいたプラス ティックシートは、プリント回路 (接点も含む) を含む 2 つのプラスティッ クシートに挟まれています。キーを押したら、2 つの ``プリント'' シートが ある接点で同時に押されて、その点にあるシート上のプリントされた接点をオ ンします。 18.7.5. キーボードがまったく動かない キーボードが動作しなくなったら、キーボードの問題かどうか確かめるため に、他のキーボード (もしお持ちなら) で試してください。ほとんどは端末へ の接続コード (ケーブル) 内の断線が原因です。断線個所はコードの端である ことが多いです。断続的にでも動くかどうか確かめるために、キーを押しなが らコードの端をゆすってみてください。悪い個所が特定できたら、慎重にコー ドのその部分をナイフで切って断線個所をつないでください。つなぐために半 田を使うこともあるでしょう。そして、電気テープ、接着剤あるいはコーキン グで封をします。 18.7.6. b を押すと bb などの表示になる (2 重化) 全部の文字が 2 重に見えるならキーボードはどこも悪くないです。それより も、端末で間違った半 2 重の設定 (HDX か ローカルエコーがオン) がされて いるために、タイプした文字全てが端末とホストコンピュータの両方からエ コーバックされているのです。2 つの文字が違う場合はキーボード内部の回路 が短絡しているのでしょう。``1 回押すと、2 つの違う文字が表示される''を ご覧ください。 18.7.7. キーボードが自分でタイプする もし 1 つのキーが短絡した時にオートリピートが有効になっていると、かな りの数の同じ文字がタイプされたようになります。1 つ以上のキーが短絡した ら、複数の文字がタイプされたようになるでしょう。ログインプロンプトを表 示している時に起ったら、getty をすごく早く再起動させる原因になるかもし れせん。``キーの短絡''をご覧ください。治す方法は、``キーボードの接点を 掃除する''ことです。 18.7.8. キーボードに液体をこぼした 水や、水のような液体をキーボードにこぼした (あるいは雨、ひどい霧、湿気 の中にさらした) ら、幾つかのキーはちゃんと動作しないかもしれません。湿 気はキーを短させる (キーを押しっぱなしの状態と同じ) 原因となり、オート リピートが有効なら画面いっぱいに文字が表示されることになるかもしれませ ん。濡らして、部分的 に(あるいは全部を) 乾かしても、接点の表面がこびり ついたものが原因であるキーはちゃんと動かないかもしれません。最近のキー では、プラスティックシートで隔離されていて、それらを乾かしたり掃除がで きます。古いやつは日なたか、オーブン (低い温度で)で乾かしましょう。乾 いても、以下で説明するようにキーの接点を掃除する必要があります。 18.7.9. キーボードの接点を掃除する 18.7.9.1. 薄膜つきキーボード 新しいキーボードには、点検や掃除をするのに取り外しやすいプラスティック 製のシート (薄膜) がついているものがあります。キーボードを分解してシー トを取り出すのに数本のネジを外すだけでよいのです。IBM の古いキーボード では、沢山あるツマミを折らない限りは取り外ずしできなくて、ツマミを元に 戻すには接着剤を使う必要があります (多分、直す価値はなくなってます)。 プラスティックシートを含む部品を曲げたり、ひねったり、また叩いたりなど の加工をすることで、そのようなキーボードが動くようにさせることもありま す。 18.7.9.2. 独立したスイッチを持ったキーボード 続いては、各キーのハードプラスティックスイッチが別々になっている古い キーボードについてです。電気接点の掃除にかかる前に、最初にキーボードを 逆さにして、おかしなキーを動かしてみてください。特にキーを強く押した り、振動させることで、ホコリを取り除きやすくなります。キー押して、左右 に揺するのも効果があるかもしてません。 小さなドライバをてこにして、あまり過度に傾むかないようにしながら、キー キャップをこじ開けて外すこともよくやります。キーキャッププラーなどとい う専用工具もありますが、別になくてもかまいません (警告 : 最近のキー ボードのキーキャップはこじ開けてはいけません)。キーキャップが緩くなっ てきたら少し傾いてぐらついてくるでしょう。キャップが床に飛んでくかもし れません。接点を掃除するには 2 つの方法があります。キースイッチにク リーナーを直接吹き付けるか、キースイッチを取り外して掃除するかのどちら かです。また別な方法として、キースイッチを新品か中古のものと取り換える 手もあります。 キースイッチの上からクリーナーか同等品 (電気店で売っています) を接点に 直接吹き付けるのが一番早い方法ですが、あまりうまくいかないでしょう。ス プレーする前に、スイッチの辺りを掃除しておきましょう。キーボードに電流 が流れている (または、抵抗計がキー接点に接続されている) 場合、キース イッチの内部に届くようにクリーナーを吹き付けるスプレーにチューブを使い なさい。キーの近くにクリーニング用の液体をたらしてはいけませんよ。ホコ リを集めて、隣りのキースイッチにまで漏れる (ほこと一緒に) ことになりま す。この間違いを犯すと、キーを掃除しながら隣のキーまで傷めることになり ます。もしやってしまったら、周りのキーがちゃんと動くかどうか確認するこ と。 キーボードを傾けることで、クリーニング液は接点に向って流れていきます。 CIT101e 端末の Alps キーボードでは、数字の列を天井の方へ傾けることを意 味します。あなたの手 (や手袋) に毒性のクリーニング液がつかないようにし ながら、ペンか小さなドライバーでキースイッチを上下に押してみてくださ い。キーボードをさかさまにして、残ったクリーニング液をきってみるのもい いかもしれません。私はあまりやりませんけど。過度にクリーナを吹き付ける とプラスティックを傷めたり、隣のキーを汚したりするので、適度な量となる ようよく考えて使いましょう。掃除が終った後に、キーがちゃんと動作するこ との確認のために、キーの反応をみたり、上下に少し動かして OK かどうか確 認し、 30 秒程して同じテストをしてみてください。 内部の接点がクリーニング液で濡れてる間はキーはまともです。しかし、数分 後に乾いたら、接点上で蒸発したクリーニング液の残りがこびりついて、接点 の正常な動きを妨げます。それでキーがおかしな動きになる場合があります。 クリーニング液が乾いてる間、キーを操作し続けることで防止する助けにはな ります。幾つかのスイッチには、接点クリーナーが接点に侵入しないように接 点を封印してありものがあります。接点を洗浄するクリーニング液は汚れも運 んでしまいます (これを最小限にとどめるには、クリーニングの前にキーの表 面をきれいにすることです)。 キースイッチを分解することになったら、まず組み立てと分解の方法について 確認してから始めること。たまにキーボードからスイッチを取り外さなくて も、スイッチカバーを外せることがあります。保管しておく必要のある薄いプ ラスティック製のつまみを外した後で、キースイッチのあたまの部分をこじ開 ける (または引っ張る) のです。あんまり強くこじ開けようとすると、薄いプ ラスティックを壊しますよ。できないようなら、それを取り外す (あるいは取 り換える) ためにスイッチの半田をとる必要があるかもしれません。スイッチ を取り外しても接点とスイッチが一緒にサンドイッチ (ほとんど接触してい る) されていたら、接点を見ることはできません。導体の表面に少し隙間を 作って、その隙間にクリーナーを吹き付けることで接点のクリーニングをしま す。接点の表面に固定用のクリップがある場合は、隙間を開ける前にこれを外 しておかなければいけません。クリーナーを接点につけて、やってください。 キーボードを傾むけたり、逆にすればやるやすいかもしれません。キースイッ チを分解している最中に小さな部品をどっかになくしてしまわないように気を つけましょう。 19. 付録 A: 一般 19.1. Linux 端末のコマンド一覧 19.1.1. 端末ヘ送るコマンド o ``setterm'': 長いオプション o ``tput'': 簡単なオプション o tset: 初期化専用 o clear: 画面クリア o setterm -reset: リセット文字送信 19.1.2. 端末デバイスドライバの設定 o ``Setserial'': o ``Stty'' 19.1.3. Terminfo o ``Terminfo Compiler (tic)'' terminfo コンパイラとトランスレータ o toe: terminfo ファイルにある端末リスト表示 o ``infocmp'' terminfo エントリの比較と表示 19.1.4. その他 o gitkeys: 各キーがホストへ送るコードの表示 o tty: 現在接続している tty ポートの表示 o set (または tset -q): TERM 環境変数や terminfo エントリ名の表示 o ``tset'': 対話形式で TERM の値をセットしたり初期化したりする 19.2. インターネットと書籍 19.2.1. インターネット上の端末情報 o テネシー大学の Shuford's Website は、テキスト端 末について有用な情報を提供してくれます。 o には VT 端末の情報や歴史があります。 o Boundless は DEC の VT や Dorio 端末の販売代理店です。ADDS, VT あるいは DORIO 端末の仕様を入手した いなら、``data sheet'' のリンクを選択して、そこで ``Go to Specs'' のリンクを選んでください。 o Wyse text-terminals kbase は大手の端 末製造メーカです。最新の機種は Wyse terminal にあります。Old Wyse terminal Specs もご覧くださ い。 o Escape Seqs.; N. America や Escape Seqs.; Europe は幾つかの端末 エミュレータ (VT 100, 300, 420 それと Wyse) のエスケープシーケンス (と制御コード) のリストです。 o comp.terminals は端末に関するニュースグループです。 19.2.2. 端末関連の書籍 o EIA-232 シリアルポートについては ``EIA-232 (RS-232) 関連書籍''をご 覧ください。 o 修理については ``修理関係の書籍と Web サイト'' にあります。 o Terminfo については``Termcap 関連の文書''をご覧ください。 19.2.3. 端末全般についての書籍 私の知る限り、テキスト端末について満足のいく本はありません (1970年代の アンティックな端末に興味あるかた以外は)。 o Duane E. Sharp 著 Handbook of Interactive Computer Terminals; Reston P ublishing Co. 1977. (ほとんど時代遅れです) o Roger K. deBry 著 Communicating with Display Terminals ; McGraw- Hill 1 985. (ほとんど IBM の同期端末について書かれています) ``HANDBOOK ... '' は 60 社以上の端末メーカが製造した 1970 年代初期の 1 00 種類以上の古い端末の簡単な仕様について書かれたものです。物理的にど のように動作するかについても説明していますが、電子ビームの静電偏向を 使った CRT に関する図に誤りがあります (p.36)。実際には端末は電磁偏向 (19 70 年代であっても) を使うのです。本書には ``ランダムスキャン'' や ``光の3原色による発色法(加色混合)'' のような先進的な技術コンセプトの説 明があります。 ``COMMUNICATING ... '' は、``Handbook ...''と違って端末の物理的な特徴 や電気的な面の詳細には触れていません。全章にわたって 2 進数での説明が なされています (端末についての本には必要ないので、この情報はどこか他の 分野で広く有用なのでしょう)。この本では IBM 端末 (主として 3270 端末) のブロックモードと同期モードでの操作について述べられているようです。今 日の Unix 系システムで共通に使われる ANSI 端末のために少しだけ使えそう です。それらについて少し述べられていますが、シリアルポートへのつなぎ方 などの配線の概要については示されていません。 19.2.4. 端末についての章がある本 これらの章では端末自身のことやその能力について何も触れていません。むし ろ、コンピュータ (と端末ドライバ) を端末として動作させる設定方法につい て書かれています。Unix 系のシステムにはそれぞれ違いがあるために、情報 の全てが Linux には当てはまりません。 o Jerry Peck 著 / O'Reilly 1998 年発行/ Unix Power Tools/ 5 章 端末の 設定、41 章 端末とシリアルラインの設定、42 章 端末での問題 o W. Richard Stevens 著 / Addison-Wesley 1993 年発行 / Advanced Programming in the Unix Environment/ 11章 端末の入出力、19 章 擬似 端末 o Aleen Frisch 著 第 2 版 / O'Reilly 1998 年発行 / Essential System Admi nistration / 11 章 端末とモデム ``UNIX POWER TOOLS'' にはテキスト端末に関する 3 つの短かい章がありま す。本 HOWTO よりも狭い範囲ですが、参考になる例は多いです。 ``ADVANCED PROGRAMMING ... '' の 11 章では、OS に含まれるデバイスドラ イバが端末を扱うことに関して書かれているだけです。端末を設定するために stty コマンドに与えるパラメータについて説明しています。 ``ESSENTIAL SYSTEM ...'' の章にはモデムより端末のことが多く触れられて います。よい本だと思います。 19.3. 非 Linux OS 非 Linux OS での端末に関するホストコンピュータ側の設定は、Linux と重大 な違いがあります。ここに Unix 系システムのオンラインマニュアルへのリン クを示します。 o SCO 社の OpenServer ハンドブック Adding Serial Terminals o Hewlett-Packard 社の HP-UXConfiguring Terminals and Modems 20. 付録 B: エスケープシーケンスのコマンド用語 これらは ``制御シーケンス'' とも呼ばれます。本章は不完全です (制御シー ケンスは沢山ありすぎてきっと永遠に完成しないでしょう)。この章はおそら く ``Text-Terminal-Programming-HOWTO'' と呼ばれるはずの文書の一部にな るか、それのリファレンスとなるはずです。 ANSI エスケープシーケンスの例をあげると、ESC [ 5B はカーソルを 5 行下 に移動する命令です。ESC はエスケープ文字を表します。シーケンスに含まれ る 5 はパラメータです。もしそれが 7 だったら 7 行下へ移動するでしょ う。 ``x 行下へ移動 : ESC [ xB'' のエスケープは理解しやすいものです。 でも ` `第 3 のデバイスの属性を要求する'' なんていう専門的なコマンドに なるとちょっとわかり難い。この章ではエスケープシーケンスのコマンドで使 用される不可解な 専門用語について説明してみましょう。完全なリスト (ANSI 標準のエスケープシーケンスコードを含む) は、``wish list'' プロ ジェクトに委ねます。 ``オプションとパラメータのセットアップ''を使って 端末を設定するときなどのように、多くのエスケープシーケンスは同じことを するので、ここではそのようなオプションは繰り返して説明しません。 20.1. エスケープシーケンスリスト 各種端末の沢山の (でも全部ではない) エスケープシーケンスのリストについ ては、 Escape Seqs.; N. America か Escape Seqs.; Europe をご覧なさい。これ らは端末エミュレーションで使用されますが、通信用リアルタイム端末に関し ては常に当てはまるものではありません。 VT のリスト (保守されてません) が Emulators FAQ にある ので、そこで ``VT'' を検索してください。 20.2. 8 ビット制御コード DEC の制御コード (16 進数) の表です。VT2xx 以降の端末で動作します。CSI はほぼ共通です。 ACRONYM FULL_NAME HEX REPLACES IND Index (down one line) 84 ESC D NEL Next Line 85 ESC E RI Reverse Index (one line up) 8D ESC M SS2 Single Shift 2 8E ESC N SS3 Single Shift 3 8F ESC O DCS Device Control String 90 ESC P CSI Control Sequence Introducer) 9B ESC [ ST String Terminator 9C ESC \ 短縮 説明 HEX 置換 IND Index (down one line) 84 ESC D NEL 次行 85 ESC E RI Reverse Index (one line up) 8D ESC M SS2 Single Shift 2 8E ESC N SS3 Single Shift 3 8F ESC O DCS デバイス制御文字 90 ESC P CSI 制御シーケンスの開始 9B ESC [ ST 終端文字 9C ESC \ 20.3. プリンタ Esc o 自動印刷 オン / オフ : オンなら、ホストからのデータは端末のプリンタ ポートへも送られます (端末のスクリーンにも表示されます)。 o プリンタ制御 オン / オフ : オンなら、ホストからのデータはプリンタに だけ送られます (端末の画面にはなにも表示されません)。 20.4. 報告 これらのシーケンスは端末からの報告を要求するためにホストから送られる要 求として普通は使用されます。端末は現在の状態をホストに示すためにある値 を埋め込んだ報告データ (実際は別なエスケープシーケンス) をホストに送り 返します。あるケースでは、要求しなくてもホストへ送られることがありま す。端末の設定が終了したような場合です。デフォルトでは端末からの自発的 な報告は送られません。 o 状態要求 (動作状態の報告): VT100 の場合は ``正常です'' か ``異常で す'' のどちらかとなります。 o デバイス属性要求 : ``デバイス'' とは普通はプリンタのことです。プリ ンタは接続されていますか ? 準備できてますか ? o 第 3 デバイス属性 (VT) 要求 : 応答として設定中であることを報告しま す。第 3 デバイスとは 3 番目に接続している機器のことです (プリンタ か補助ポートの機器 ??)。1 番目のデバイスとはホストコンピュータで、2 番目のデバイスは端末のことです。 o 端末パラメータの要求 : パリティ、通信速度、データ長などの設定値。こ れはあまり意味のないことのように思える。なぜなら、ホストがこれらの 値を知らなければ端末と通信できないし、返事も返せないからです。 20.5. カーソルの移動 カーソルはホストから次の文字を受信したら表示されます。ほとんどのカーソ ルの動きは説明不要でしょう。``インデックス カーソル'' とはカーソルをあ る行へ移動することです。カーソルの動きには、``4 文字文左へ移動'' のよ うに相対的な移動か、``3 行 4 列目に移動'' のように絶対的な移動がありま す。絶対的な移動は ``ダイレクト カーソル ポジショニング'' とか ``ダイ レクト カーソル アドレッシング'' と呼んでいます。 ホームポジションは 1 行 1 列 (インデックスは 1 から始まる) です。しか し物理画面上でのホームポジションは決して明確ではありません。``カーソル 原点モード'' が ``相対位置モード'' なら、ホームポジションは画面の左端 のスクロール領域の先頭 (画面の先頭である必要はない) になります。``絶対 位置モード'' が設定されていたら (上記 2 つのモードのどちらも設定されて ないのと同じ)、ホームポジションは画面の左上隅になります古い端末で は、`` カーソル原点モード'' が設定されていると、相対位置という解釈にな ります。 20.6. ページ (定義) ``ページの説明''をご覧ください。ページを処理する幾つかのエスケープシー ケンスがあります。テキストは、あるページから別なページへコピーされ、 カーソルをページからページへ移動します。ページは自動で切り替ったり、切 り替わらなかったりします。画面 (ページ 1) がいっぱいなったら、ホストか らのデータはページ 2 に移ります。カーソルは一度に 1 ページにのみあっ て、端末に送られてくる文字が次のページに移るのです。2 ページ目が画面表 示されていなかったら、端末が受信した新しいテキストはメモリに書き込まれ ますが、表示はされません (端末がそのページに切り替えるまでは)。 21. 付録 C: EIA-232 (RS-232) のシリアル通信 21.1. イントロ (本章の多くの部分は Serial-HOWTO に書かれています) Unix 系のシステム ( で PC 上で動作するもの) でのテキスト端末は、コンピュータの非同期 232 シルアル通信ポートに接続し、普通は RS-232-C, EIA-232-D, または EIA-23 2-E を使います。これら 3 つはほぼ同じものです。始めはプレフィクスとし て RS を使ってしましたが、 EIA (Electronics Industries Association) と なり、EIA と TIA (Telecommunications Industries Association) が統合さ れた後は EIA/TIA となりました。EIA-232 仕様は同期 (sync) 通信について も規定していますが、ほとんどの PC には同期通信をサポートするハードウェ アが装備されていません。RS はもはや古い名称ですが今だに使われていま す。本書では EIA を使用することにします。 コンピュータや端末の背面に一つ以上のシリアルポートがあります。それには 電子部品が組み込まれていて、EIA-232 仕様に準拠した信号を生成します。標 準的なコネクタは 25 ピンで、ほとんどのピンは未使用です。代りに 9 ピン だけのコネクタもあります。あるピンはデータの送信用として、別なピンは受 信のために使われます。他のピンは信号グランドです。それ以外の ``有用 な'' ピンは ``オフ'' を意味する安定した負電圧と ``オン'' を意味する安 定した正電圧により、主として信号処理の目的に使われます。 UART (Universal Asynchronous Receiver-Transmitter 汎用非同期送受信器) チップが通信のほとんどの仕事をこなします。今日、このチップの機能は他の チップに組み込まれています。 21.2. 電圧 21.2.1. ビット 1 つを表す電圧 EIA-232 準拠のシリアルポートでは、電圧は二極式 (接地電圧に対し正または 負) であり、その絶対値は 12V です (5V や 10V のものもあります)。送信ピ ンと受信ピンでは +12V が 0 を表すビット (``スペース'' と呼ばれることも あります) で、-12V が 1 を表すビットです (``マーク'' と呼ばれることも あります)。これは負論理として知られています。というのも、普通は 0 を表 すビットは偽かつ負であり、1 は真と正を表すからです。送信ピンと受信ピン は負論理ですが、他のピン (モデム制御線) は通常の論理を用いており、正の 電圧が真 (または ``オン'' または ``アサート'' ) であり。負の電圧が偽 ( または ``オフ''または ``否定'') を表します。電圧 0 は意味を持ちません (その機器の電源が切れているという意味だけは持ちます)。 電圧に範囲を持たせることもできます。仕様においては、送信される信号の絶 対値は 5V と 15V の間でなければならず、25V を越えてはなりません。3V 未 満の電圧は未定義です (ただし、デバイスによっては電圧が低くても有効であ るとして受け付けます)。電圧はたいてい 11-12V なのですが、「一般的に 5V (あるいは 3V) である」とする誤りをときどき見かけます。ただし、Mac コン ピュータの EIA-422 ポートを EIA-232 (特殊なケーブルが必要) や EIA-42 3 としてお使いならば、電圧はまさしくわずか 5V のはずです。ここでの説明で は 12V を使うものとします。インターネットで使う電圧はさらに混乱してい ます。 通常のコンピュータの論理回路は数 V (かつては 5V が標準だったこともあり ますが) しか使わないので、3-5V のコンピュータ回路 (TTL) の試験用に設計 されたテスト機器を 12V のシリアルポートに対して用いると、テスト機器が 壊れてしまうことがあります。 21.2.2. バイトデータを表す電圧シーケンス 送信ピン (TxD) は、何も送っていないアイドル状態の時には -12V (マーク状 態) を保持しています。バイトデータを送る際には、送信ピンはスタートビッ トを送るために +12V (スペース状態) となり、スタートビットを送る間 (期 間) は +12V を保ちます。次にバイトデータが下位ビットから順番に送られま す。もし、ビットが 0 の場合は、信号線はこのビット期間から次のビット期 間まで、+12V になります。もし、ビットが 1 の場合、信号線はこのビット期 間から次のビット期間まで、-12V になります。次のビット以降も同様に送ら れます (1 ならば -12V、0 ならば +12V)。最後のデータビットの後には、パ リティビットが送られるかもしれません。そして ストップビット -12V (マー ク) が送られます。その後は、次のスタートビットまでは送信ピンは -12V ( アイドル状態) のままです。0V が返ってくることがないことと、そのため同 じ極性を持つビットが 2 つ続く場合 (0 が続く、あるいは 1 が続く場合) に は、あるビットが終って次のビットが始まることを表す簡単な方法が (同期信 号以外には) ない点に注意してください。 2 番目の境界線のストップビットも -12V になります。これは最初のストップ ビットと同じです。これらのビット間の境界を示す信号が無いため、2 番目の ストップビットの影響は、送信ピンが続けている -12V のアイドル状態の長さ が 2 倍になっただけです。2 番目のストップビットとバイト間の長いアイド ル時間の区別を付ける方法は、受信側にはありません。したがって、うまく通 信できるのは、通信の片側がストップビットを 1 つ用い、その反対側がス トップビットを 2 つ用いた場合です。ただし、1 つしかストップビットを用 いない方が明らかに高速です。稀ですが、1 1/2 個のストップビットが使われ ることがあります。これは送信ピンが 1 1/2 区間の間 -12V を保つという意 味です (ストップビットの長さが通常の 5 割増しになったようになります)。 21.3. パリティ検査 文字は普通、7 ビットまたは 8 ビット (のデータ) で送信されます。これに パリティビットを追加すると (追加しないこともあります) 1 バイトの長さは 7,8,9 ビットのいずれかとなります。一部の端末エミュレータや古い端末で は、 9 ビットは使えません。ストップビットを 2 つ使うと 9 ビットが使え なくなる端末もあります (というのも、スタートビットを追加した後の合計 ビット数が 12 ビットと多くなりすぎるからです)。 パリティには 「奇数 (odd)」、「偶数(even)」、「なし(none)」のいずれか を設定します (一部の端末やシリアルデバイスではマーク (mark) パリティや スペース (space) パリティがオプションとして使えます)。奇数パリティを使 うと、バイトデータ中で値が 1 になっているビットの数が (パリティビット も含めて) 奇数となるようにパリティビットが決められます。ビットがひっく り返って、このようなバイトが壊れた場合、得られるデータは不正な偶数パリ ティのデータをなります。このエラーは検出されるので、これが端末が受け 取ったバイトデータであった場合には、文字化けを表す記号を画面に表示でき ます。偶数パリティの動作も同様であり、有効なバイトデータ中の 1 である ビット数が (パリティビットも含めて) 偶数となるようにします。設定時には 通常、文字当りのビット数はバイト当りのデータビットの数だけを意味します (正式な ASCII の場合には 7 ですし、各種 ISO 文字集合の場合には 8 で す)。 ``マーク'' は値が 1 であるビット (つまり論理値の 1) であり、``スペー ス'' は値が 0 であるビット (つまり論理値の 0) です。マークパリティの場 合には、パリティビットは常に値が 1 であるビットです。スペースパリティ の場合には、これは常に値が 0 であるビットです。マークパリティやシペー スパリティは単にバンド幅を無駄にするだけなので、できる限り使わないよう にすべきです。 ``パリティ無し'' はパリティを付加しないという意味で す。9 ビットからなるバイトデータを受け付けない端末を使う場合、8 ビット 文字集合を使うならば ``パリティ無し'' を選択しなければなりません。パリ ティビットを入れる空きが無いからです。 21.4. バイトデータの構成 (フレーム分割) EIA-232 ポートを使ったバイトデータのシリアル伝送では、常に下位ビットか ら先に送られます。PC のシリアルポートは非同期通信を行います。この非同 期通信では、スタートビットとストップビットがバイトデータの始めと終りを 示します。このような区切り方はフレーム分割ト呼ばれ、フレーム分割された アバイトデータはフレームと呼ばれることがあります。結果として、1 バイト ごとに 9 個あるいは 10,11 個 のビットデータが送られます。この中で最も 一般的なのは 10 個です。8-N-1 とは、データビット 8 個、パリティ無し、 ストップビット 1 個という意味です。スタートビットを数に入れると合計 10 ビットになります。ストップビットはほぼ例外なく使われます。110 ビット/ 秒 (300 ビット / 秒の時もあります) では、ストップビットが 2 つ使われて いたこともありましたが、現在は 2 つめのストップビットが使われるのは例 外的な場合 (あるいは、その設定でもうまく動作するために間違って使われて いるけれど、バンド幅を無駄に消費している) だけです。 21.5. EIA-232 の制限 21.5.1. 低速で短距離 EIA-232 シリアルポートの規定では、本来は低速で、かつ通信距離に厳密な制 限があります。ADS は ``高速''でリードしますが、それは通信距離がかなり 短かいケースに限られていて、コンピュータの近くのモデムとの通信などの場 合によります。全ての信号線は共通の信号グランドを使用するので、ハード ウェアを追加しなければツイステッドペア技術 (高速通信に必要) は使えませ ん。しかしいくつかのコンピュータにはより新しいインタフェースがありま す。 ``EIA-232 への継承'' をご覧ください。 1969 年に規定された RS-232 は、100 倍以上の速さで通信可能なツイステッ ドペア技術を使えないので少々痛ましいものであるといえます。ツイステッド ペアは 1800 年代後期より電話線で使われています。1888年 (今から 110年ほ ど前) の ``Cable Conference'' ではツイステッドペアのサポート (電話シス テム用として)と、その先進性が報告されています。しかし``Cable Conference'' での承認から 80 年以上もの間、RS-232 はこの利用を怠ったの です。RS-232 は元来、近くにある低速のモデムと端末を接続するために設計 されたものなので、高速や長距離通信の要求を明白に認めなかったのです。 21.5.2. EIA-232 への継承 ツイステッドペア (平衡型) 技術を使った高速で長距離通信のための EIA 規 格がいくつも規定されました。平衡型通信は、時に非平衡型 EIA-232 の 100 倍以上高速です。ある速度で比較すると、通信距離 (最大ケーブル長) はツイ ステッドペア線を使った場合に何倍も長くできます。PC はいまだに ``時代遅 れ'' の EIA-232 を装備していますが、低速の電話線やマウスとの接続には何 の問題もありません。 唯一の例外が Apple 社の Mac コンピュータで、送受信用にツイステッドペア (平衡型) が使える EIA-232/EIA-422 GeoPort を装備しています。小さくて丸 い `` ミニ DIN'' コネクタを使って接続します。Mac には 従来型の EIA-232 ポートもついています。5 ボルトでのみ動作しますが (これは EIA-232 では まだ規約通りです)。しかし、このために Mac は PC よりも高価で、ホストコ ンピュータの端末としても自由に使えます。いくつかの新しい端末には EIA-423 が使われていますが、これは非平衡型 EIA-232 のようなもの で、EIA-232 ポートに接続できます。この EIA-423 は 5 ボルトでのみ動作し ますが、スペックには EIA-232 より高速だとうたっています (非平衡インタ フェースによる長時間の動作に対しては無保証です)。 EIA-485 もまた平衡型であり、ethernet や USB などのような ``バス'' とし て使えます。EIA-485 に接続された機器がマスターとして、 ``スレーブ'' か らの入力をポーリングします。多くのコンピュータがツイステッドペアを共有 するので、``マルチドロップ'' と呼ばれています。別なツイステッドペアは マスタからスレーブへのトラフィックのために使われます。ピンの出力電圧は 3 つの状態を持たなければならず、回路を開いた 3 番目の状態は他のユニッ トが ``バス'' を使うことを許可します。マルチドロップのプロトコルが標準 化されてないと言われつづけています。そして悪いニュースがあります。 をご覧ください。 2 Mbits/s で動作する EIA-530-A (平衡型ですが、非平衡型としても使えま す) は EIA-232 のリプレースを意図したものでしたが、一部でしか使われま せんでした。EIA-232 と同じ 25 ピンコネクタで接続します。 高速のシリアル通信インタフェース (HSSI = EIA-612/613) は 50 ピンコネク タを使い、50 Mbits/s まで向上しますが、数メータの距離に限られます。ユ ニバーサル シリアルバス (USB) は PCI チップに埋めこまれていて、4 ピン のツイステッドペアにより 12 Mbits/s で通信しますが、距離は 5 メートル 以下の制限があります (設定にもよりますが)。 21.5.3. ラインドライバ テキスト端末では EIA-232 は十分高速なのですが、ケーブル長が短かすぎま す。平衡技術がこれを解決します。テキスト端末で平衡型通信を行う一般的な 方法は、平衡-非平衡変換 (逆変換も含む) を行う 2 つのラインドライバをイ ンストールすることです。それは特別な機器なので新しく購入すると高くつき ます。 21.6. 同調させることと同期 21.6.1. どのようにして ``非同期'' を同期させるか EIA-232 において、送信 (あるいは受信) には 2 つの状態、マーク (-12V) とスペース (+12V) があります。0V はどの状態でもありません。したがって 1 ビットのシーケンスは、ビットとビットの間を示すマーカがない定常的な - 12V だけを使って送られます。受信側で個々のビットを区別するためには、送 信側のクロックを同期しているクロック信号が必ず必要です。このクロックが 送信 (受信) される各ビットと同期している ``時間の刻み'' を生成するので す。 非同期の伝送においては、スタートビットとストップビットを使って各バイト をフレーム分割することによって同期を実現します (これはハードウェアが行 います)。受信側は信号線からスタートビットが届くのを待ち、これを検出す るとクロックを刻み始めます。受信側はこのクロック刻みを使って、次の 7, 8 または 9 個のビットを読み込むタイミングを計ります (実際にはもう少し 複雑です。というのも、普通は 1 ビットからサンプル点をいくつか取るの で、そのために別のタイミング刻みが必要になるからです)。そしてストップ ビットを読むと、受信側がクロックを止めて、次のスタートビットを待ちま す。このように、単独のバイトデータを受け取る際には、非同期伝送も実際に は同期伝送になりますが、複数のバイトデータ間での同期は行われません。 21.6.2. 同期に対する非同期の定義 非同期 (async) とは ``同期しない'' ことです。具体的には、非同期シリア ルポートが、非同期信号をスタートビットとストップビットで囲まれたバイト の塊として送信または受信することなのです。同期 (sync) はそれ以外のほと んど全てです。でも基本コンセプトはここでは解説しません。 理論的に同期とは、バイトがクロック信号の刻みに従って一定の単位で送出さ れることです。クロック信号のために、たいていは別な線かチャネルを使いま す。非同期のバイトは、送出されるバイト間の周期が不定です (誰かがキー ボードを叩いたときのように)。 同期か非同期かを区分けする必要のある境界的な状況があります。非同期シリ アルポートは、同期状態にさせる安定した流れの中でバイトを送出しますが、 スタート / ストップビット (不定期な送出を可能にする) が含まれているの で非同期と呼んでいます。別な場合では、データバイト (スタート / ストッ プビットのない) は不定期に送られるパケットに含まれますが、これは同期通 信と呼んでいます。各パケット内のバイトが同期して送られなければならない からです。 21.6.3. 同期通信 あなたはシリアルポートコネクタの 25 ピンの内、未使用のピンは何に使われ るのか考えたことはありますか ? ほとんどのピンは PC ではめったに実装さ れない同期通信のためにあります。同期リバースチャネルと同じように、同期 タイミング信号なのです。EIA-232 の仕様には、同期と非同期の両方がありま すが、PC が使う UART、例えば 16450, 16550A, あるいは 16650 は同期をサ ポートしていません。同期通信には USART チップか同等品が必要です。USART の ``S'' は同期 (Synchronous) の頭文字からとっています。同期通信の分野 はニッチーマーケットなので、製品はとても高価です。 EIA-232 の同期部分以外にも、EIA には同期に関する規定が各種あります。 E IA-232 の場合、コネクタの 3 番ピンはクロック (またはタイミング) 信号と して予約されています。時にはタイミング信号を生成するのはモデムの役割で あり、同期モデム (または``同期モデムエリミネータ'' と呼ぶタイミング信 号を作る機器) なしに同期通信に使うことは不可能です。 けれど少数のシリアルポートは同期通信をサポートしており、同期通信は V.42 エラー訂正機能付きのモデムを使った電話線を経由して行われます。ス タート / ストップビットを除いたデータを、電話線経由の同期操作に使用さ れるパケットに詰め込むのです。 21.7. ブロックモード 21.7.1. はじめに ブロックモードは linux では稀にしか使われません。ブロックモードでは、 端末でキーが叩かれたときにキーコードは端末内のメモリに保存され、すぐに はホストコンピュータに送られません。そのような端末にはよく組込みの編集 機能が備わっています。ユーザがあるキー (送信キーなどのような) を押した とき、端末内のメモリに保存されていたものがホストコンピュータに送られま す。今日 Linux のエディターである vi や emacs ではあるキーが押されたら すぐに反応します。従って上記のシチュエーションで、送信キーが押されても 何も起こらず、何も送られません。このような理由で、ブロックモード端末を 使うときには対話式のプログラムの使用を許していません。 IBM の古いメイ ンフレームではインタフェースにブロックモードが使われるので ( ``IBM 端 末''をご覧ください)、多くの IBM 端末はブロックモードだけをサポートし、 また同期通信を行います ( ``同調させることと同期''の章をご覧ください)。 21.7.2. ブロックモード、フォームの種類 ブロックモード自身には ``ページ'' (一度に 1 ページ) や ``ライン'' (一 度に 1 行) などのサブモードがあります。いくつかの端末にはブロックモー ドと従来のキャラクターモードの両方があり、あるモードから別なモードへ切 り替えることができます。ブロックモードを持つ非同期端末として HP2622A, VT130, VT131, VT330, VT340 それに Visual500 があります。後のモデルの多 くはブロックモードをエミュレートできます。ブロックモードは、ホストコン ピュータが端末に送るフォーム機能に対応します。ユーザがデータを入力した 後に送信キーを押せば、入力したデータだけがホストコンピュータに送られま す。フォーム自身 (データではない) はホストに送信されない保護された フィールドとして画面に表示されます。 21.7.3. 能力 ブロックモードはホストコンピュータの負荷を相当量減らします。特にホスト コンピュータのハードウェアがブロックモード対応として設計されている (IBM のメインフレームのように) なら尚更です。キャラクタモードではキー タイプされた全ての文字はすぐにシリアルポートに送られ、ホストコンピュー タに割込みを発生させます。バイトを受信したホストは何をしていようが中断 して、シリアルポートから文字を取り出さなければなりません。FIFO ハード ウェアバッファがある UART であっても、ハードウェアのタイムアウトは 3 バイトの送信時間分しかないので、各文字がタイプされたら即座に割り込みが 発生します。 本当のブロックモードでは、1 回の割り込みで長い文字ブロックを受信しま す。ブロックモードが従来の非同期 FIFO シリアルポートで使われたら、それ には 16 バイトのハードウェアバッファがあるので、割り込みは 14 バイト毎 にしか発生しません。ト毎に割込みが必要なので、16 バイトのハードウェア バッファがあります。このように多くの負荷や割り込みハンドラのオーバヘッ ドを軽減するので、コンピュータはブロックモードを使っているときは他の仕 事に時間を割くことができるのです。 端末がネットワーク経由でつながっているなら、ブロックモードにすると貴重 な節約ができます。ブロックモードでなければ、タイプされた全ての文字 (バ イト) は、余分なバイト (インターネットで使われる TCP/IP のパケットでは 40 バイト) を含んだパケットに包まれて送られることになります。ブロック モードでなら大量の文字は 1 つのパケットで送られます。 21.8. EIA-232 (RS-232) 関連書籍 (注 : 最初の本は EIA-232 より広範な分野をカバーしています) o Black, Uyless D.: Physical Layer Interfaces & Protocols, IEEE Computer Society Press, Los Alamitos, CA, 1996. o Campbell, Joe: The RS-232 Solution, 2nd ed., Sybex, 1982. o Putnam, Byron W.: RS-232 Simplified, Prentice Hall, 1987. o Seyer, Martin D.: RS-232 Made Easy, 2nd ed., Prentice Hall, 1991. 21.9. シリアルソフトウェア シリアルポートについての Linux 用のソウトウェアについてはSerial Software をご覧くださ い。getty やポートモニタなどが含まれています。 22. 付録 D: 端末メーカ名 この HOWTO のどこかで紹介した特定の端末の使用をブランド別に書きとめた ものです。ここに記載されてない端末について寄与できる情報をお持ちの方は 著者に報せてください。さまざまなモデルやブランドはしばしば共通したもの があるので、一箇所で書いておく必要があります。各モデルに関する文書 (エ スケープコードを含む) へのリンクを大量に揃えることは各端末のためにとて も凄いことです。端末にはたくさんの種類があるので、これはすごく大変なこ とです。私こと David Lawyer は、(1998 年現在) このようなことをする考え はありません。もし端末の製造メーカがマニュアルをネット上で利用可能にし てくれたら、これらの作業は不要なのですが。 22.1. CIT CIT 端末は CIE 端末用として 1980 年代の日本で製造され、1980 年代後半に 輸入されなくなりました。CIE 社は CItoh プリンタ (1997年) を製造してい ますが 、製造中止した部品はもうありません。カリフォルニアのアービンに ある Ernie (714) 453-9555 ではモデル 224,326 などの部品を扱っています が、80 と 101 についてはもうありません (あなが読んでいる文書は主に 101 e について書いています)。 セットアップモードで設定したパラメータを保存するには ?S を押します。 cit80: Contrast: 端末の背面のノブで調整します。 cit101e:Brightness: セットアップモードで上下矢印を操作します。 22.2. IBM 端末 IBM 端末と IBM PC モニタを混同してはいけません。多くの IBM 端末は ASCI I コードの代りに 8 ビットの EBCDIC コードを使います。EBCDICのビット送 信順序は上位ビットが先で、通常とは逆です。IBM メインフレーム通信規格は ブロックモード (大量の文字を 1 つのパケットで送る) の同期通信型です。 多くの端末は同軸ケーブル (RG62A/U) で接続しますが、単純な人は端末の `` BNC'' コネクタをイーサネット用だと勘違いするかもしれません (もちろん違 いますよ)。 実際このような IBM システムは Linux で通常使われているものより効率的で すが、IBM 規格に合う端末は現在のところ Linux では動きません。しかしい くつかの IBM 端末は非同期の ASCII 端末なので、PC で動く Linux 端末とし て使えます。317x と 319x を除く 31xx シリーズは ASCII 端末ではありませ ん。IBM 端末を使う前に、それが termcap (terminfo) に存在するかどうか確 認しておきましょう。もしなければ、Linux では動かない可能性が高いでしょ う。terminfo にあったとしても、動かないかもしれません。例えば、327x は terminfo にありますが、3270 は EBCDIC の同期端末なんです。 3270 シリーズは 3278 (1970 年後半) 、カラーグラフィック端末の 3279、 3 274 端末コントローラ (3174 のようなもの) を含みます。それらは BISYNC と SNA の両方で使用できます。3290 は画面分割 (4 分割) ができます。 同期型の IBM 端末は IBM のメインフレームに直接は接続できませんが、``端 末コントローラ'' (時には ``クラスターコントローラ'' とか ``コミュニ ケーションコントローラ'' と呼ばれます) ヘは接続できます。これらのコン トローラのいくつかは同期信号を非同期信号に変換するので、同期端末は間接 的に unix 系のホストコンピュータのシリアルポートに接続できます。しかし まだブロック伝送という大きな問題があります。``ブロック モード''をご覧 ください。 22.2.1. IBM 3153 補助ポートには DCE 機能が求められ、ストレートケーブルが必要です。 22.3. テレタイプ これは旧式で古い端末であることを意味します。遠隔操作のタイプライターの ようなものですが、大きくてうるさい。Teletype 社が製造していて、最初の モデルは 1920 年代に作られており、コンピュータより 30 年も先行していま す。初期のモデルは電子式ではなく電磁式のリレーと回転式リレーが用いられ ていました。Baudot コードは 1 文字 5 ビットで表現しています。ちなみに ASCII は 7 ビットですね。``Small Computer Systems Handbook'' by Sol Libes, Hayden books, 1978:ページ 138-141 (``Teletypes'')が参考になるで しょう。 22.4. VT (DEC) Digital Equipment Corporation は有名な VT 端末シリーズの製造メーカで、 端末には VT100 を共通にエミュレートする機能が含まれています。1995 年に Boundless Technologies と社名変更した SunRiveR に端末ビジネスを譲渡し ました。詳細な VT 端末の情報、マニュアル関係、歴史などは にあります。より詳しい情報は Shuford's Website にあります。現在の 製品については Boundless の Web サイトにあります。 ``Terminal Info on the Internet''をご覧ください。 VT220: いくつかのものにはビデオアウト用 (入力用ではありません) の BNC コネクタがあります。たまにこれを見てイーサネットへの接続用かと勘違いす る人がいます。 VT520: DTR/DSR フルコントロールをサポートします。 22.5. Wyse Wyse には 100 以下の数字の端末 (WY60 のような) についての FAQ がありま すを。 ご覧ください。最 近の端末のスペックについては をご覧くだ さい。 22.5.1. Wyse 60 表示調整 (カバーを外さなければなりません):輝度 VR202, 高さ VR302, 幅 V R101 (高さへの影響もあり) 訳注:VRxxxは内部にある、可変抵抗器の番号のこと。 22.5.2. Wyse 85 VT52/T100/VT200 をエミュレートできます。セットアップするには F3 キーを 押します。上下キーを押せばセットアップをスクロールできます。 22.5.3. Wyse 99-GT これは Wyse99GT (1980 年代後半) のセットアップメニューです。TERM は `` 終端'' (文字) という意味で ``端末'' ではありません。 カリフォルニア大学 (アービン) での WYSE 99-GT 端末セッ トアップメニュー David Lawyer、1990 年 4 月 F1 DISP: COLUMNS=80 LINES=24 CELL SIZE=10 X 13 STATUS LINE=STANDARD BACKGROUND=DARK SCROLL SPEED=JUMP SCREEN SAVER=OFF CURSOR=BLINK BLOCK DISPLAY CURSOR=ON ATTRIBUTE=CHAR END OF LINE WRAP=ON AUTO SCROLL=ON ---------------------------------------------------------------------------- F2 GENERAL: PERSONALITY=VT 100 ENHANCE=ON FONT LOAD=OFF COMM MODE=FULL DUPLEX RCVD CR=CR SEND ACK=ON RESTORE TABS=ON ANSWERBACK MODE=OFF ANSWERBACK CONCEAL=OFF WIDTH CHANGE CLEAR=OFF MONITOR=OFF TEST=OFF ---------------------------------------------------------------------------- F3 KEYBRD: KEYCLICK=OFF KEYLOCK=CAPS KEY REPEAT=ON RETURN=CR ENTER=CR FUNCT KEY=HOLD XMT LIMIT=NONE FKEY XMT LIMIT=NONE BREAK=170MS LANGUAGE=US MARGIN BELL=OFF PRINTER RCV=OFF ---------------------------------------------------------------------------- F4 COMM: DATA/PRINTER=AUX/MODEM MDM RCV BAUD RATE=9600 MDM XMT BAUD RATE=9600 MDM DATA/STOP BITS=8/1 MDM RCV HNDSHAKE=NONE MDM XMT HNDSHAKE=NONE MDM PARITY=NONE AUX BAUD RATE=9600 AUX DATA/STOP BITS=8/1 AUX RCV HNDSHAKE=NONE AUX XMT HNDSHAKE=NONE AUX PARITY=NONE (There is a main port (Modem=MDM) and an Auxiliary Port (AUX) ---------------------------------------------------------------------------- F5 MISC 1: WARNING BELL=ON FKEY LOCK=OFF FEATURE LOCK=ON KEYPAD=NUMERIC DEL=DEL/CAN XFER TERM=EOS CURSOR KEYS=NORMAL MARGIN CTRL=0 DEL FOR LOW Y=ON GIN TERM=CR CHAR MODE=MULTINATIONAL ---------------------------------------------------------------------------- F6 MISC 2: LOCAL=OFF SEND=ALL PRINT=NATIONAL PORT=EIA DATA SEND AREA=SCREEN PRINT AREA=SCREEN DISCONNECT=60 MSEC SEND TERM=NONE PRINT TERM=NONE PRINT MODE=NORMAL VT100 ID=VT100 POUND=US ---------------------------------------------------------------------------- F7 TABS:8 つのスペース分離れた ``T'' を数個見ることでしょう。もしそう ならないなら、バックスペースを打ってみてください。 F8 F/KEYS:通常はファンクションキーに何の割り当てもしてないでしょう (誰 かがセットして保存してなければ)。普通はデフォルトの設定が使われること を意味します (ここでは表示しません)。 は F5 キー等の``ユーザ 定義宣言'' を表示します。 F9 A/BACK:通常は定義されていません: ANSWERBACK = F10 EXIT: ``DEFAULT ALL'' を選択すると工場出荷時の設定になります。 WY-99GT ユーザズガイドを使う上でのヒント:このガイドに見当たらなければ WY-99GT プログラマーズ ガイドにあるかもしれません。 VT100 エミュレー ション (パーナリティ) は ANSI(キーボード配列)として知られています。 ページ A-10 以降に ANSI キーコードが使われるのですが、説明に使われてい るキーボードは ASCII配列です。ページ A-13 ``ASCII キーボード'' の小見 出しも VT100 (の ASNI キーボード配列) に属します。なぜなら ``ANSI KEY ..'' の大見出しが 少し前にあるからです。しかし全ての ASCII キーボード の見出しが VT100 に属するわけではないので、非 ANSI の大見出しが少し前 のページから抜けています。付録 H は ``ANSI コマンドガイド'' です が、VT52 (ANSIです) が含まれていません。 VT52 は付録 G にあります。 訳注:VT100には ANSIキーボードとASCIIキーボードがあります。少しだけ キー配列が違います。 22.5.4. Wyse 150 F12 を使ってセットアップを終了させるとき、セットアップを保存するならス ペースを叩いて、``no'' から ``yes'' に変更します。この no/yes の左にあ る文はだいたい ``縦に整列'' していて、セットアップを保存するための no/ yes で何をするのかわかりません (間違いやすいデザインだ)。 以上で Text-Terminal-HOWTO を終ります。