次のページ 前のページ 目次へ

17. トラブルシューティング (ソフトウェア)

もしハードウェアに問題がありそうなら、 修理と診断の章をご覧ください。 問題がシリアルポート絡みなら Serial-HOWTO をご覧ください。

これはありがちな問題のリストです。

端末が調子悪くなるには 二つのケースがあります。一つは、ちょっと前まで は調子良かったのに、突然おかしくなるケースです。これについては次の章で お話しします。もう一つは、端末をインストールした直後からうまく動かない ケースです。このケースの場合は次の章を飛ばしてかまいません。

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 を即座に再起動する

シリアルモジュールがロードされていない

シリアルモジュールがロードされているか確認するには ``lsmod'' コマンド を使ってください。

モデム制御電圧が出ていない

モデム制御ピンの一つの正電圧が低いために getty がポートをオープンでき なかったり使えなければ、getty は死んでしまうかもしれません。それから、 inittab 内の命令に従って、getty は再起動して、ポートのオープンを試行 し、 kill されることを何度も繰りかえすのです ...。getty があまりに早く 再起動するので、一時的に無効になっていることをエラーメッセージから確認 できます。 getty の ``local' オプションを使うか、モデム制御の設定や電 圧を調べてみてください。

キーの短絡

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 つ以上追及できます)。

コンソールから問題を診断しなさい

コンソール (あるいは他の端末) で、getty が正しいポートで動いていること を ``top'' か ``ps -al'' で確認してください。他のポートや仮想端末で動 く getty プログラムと間違わないように。getty が動いていてもログインプ ロントは表示されませんよ。

テストとして、小さなファイルを端末にコピーしてみてください (getty を設 定する前のインストールの最初の過程で、これを試すのもよい考えです)。cp file_name /dev/ttyS1 のような Linux のコピーコマンドを使います。うまく いかなければ、stty を使ってできるだけ単純となるよう全てを無効 (ハード ウェアフロー制御 : -crtscts、パリティ、モデム制御 : clocal) にしてみて ください。ボーレートとデータ長が同じであることを確認してください。何も 起こらなければ、次の章なるようにポートが生きてるかどうか電圧計で確かめ てください。

電圧の測定

電圧計をお持ちなら、端末側のヌルモデムケーブルの 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) かを表示します。

あなたはもうお持ちかもしれませんが、もしお持ちでないなら、 Serial Software をご覧なさい。これらを使って見たものがホストコ ンピュータのシリアルラインの状態だということを心に留めてください。端末 での状況は違って、数本の線がケーブルから外れていたり交差したりします。 1998 年 7 月の時点では Linux のシリアルポート診断プログラムを知りません。

17.13 ローカルモード

ローカルモードでは、端末はコンピュータから切り離され、タイプライター (紙に印字せずに画面に表示するだけですが) のように働きます。コンピュー タへ再接続しオンラインモードへ戻ると、``local'' になる前の状態に回復す ることができます。これは端末のテストと教育用途の両方に向いています。幾 つかの端末では ``ローカルモード'' として ``ブロックモード'' を使います。

ローカルモードでは、エスケープシーケンス (ESC コードで始まる) を入力し 何が起きるか確認できます。端末がローカルモードでうまく動かなければ、コ ンピュータに接続しても正しく動く見込みはありません。エスケープシーケン スがどのように働くかちゃんと理解していないなら、ローカルモードで試す手 があります。また販売されている端末を十分試すにも用いることができますよ。 ローカルモードにするには、まずセットアップモードにしたあとで、メニュー から ``local'' を選択します (あるいは特定のキーを押す)。 セットアップ (設定) モードにするをご覧ください。

17.14 シリアルの電気的なテスト装置

引き出し工具

マルチメータ (電圧計として使用) はほんの少しの端末に必要な機能を全て備 えていますが、単純で特別なテスト道具がシリアルポートラインのテスト用と して作られています。幾つかのものは ``ブレークアウト ...'' と呼ばれ、ブ レークアウトはケーブルから導線を引っぱり出すという意味です。これらの道 具には一組のコネクターがあり、そこにシリアルケーブルを差し込むのです。 電圧計を接続するコネクタを備えているものもあります。他には LED があり、 モデム制御線のどれかが有効になると (電圧が生じると) 点灯します。またあ るものにはジャンパー線があり、任意の線を接続できます。他にはスイッチ付 きのものもあります。

Radio Shack では TD, RD, CD, RTS, CTS, DTR, DSR をチェックするための ``RS-232 トラブルシュータ'' や ``RS-232 ラインテスタ'' を販売 (1998年 現在) しています。緑のライトは (+12V) で、赤は (-12V) を表します。``RS - 232 シリアルジャンパーボックス'' も販売しており、これはどのピンへも接 続できるものです。

電圧の測定

どんな電圧計やマルチメータ -- $10 程度で売られてるものでさえ -- 良好に 測定できます。他の方法で電圧を測定するのはトリッキーなことです。電圧を 降圧するための直列抵抗がつながってないかぎりは LED を使ってはいけませ んよ。20 mA の LED には 470 オームの抵抗が使われます (でも全ての LED が 20 mA ではありません)。LED はある電気極性のときにだけ発光するので + か - の電圧をテストできるはずです。自動車の電子回路のチェック用にこん な道具を誰かが作ったんでしたっけ ?? ロジック回路の検査にこれを使うと回 路を損傷してしまいますよ。TTL の電圧はわずか 5 V で設計されていますか ら。12 V の白熱灯を試すことはいいアイデアじゃありません。極性を示さな いし、 UART の出力電流制限のためにおそらく光らないと思います。

メスのコネクタの電圧を測定するなら、曲ったペーパークリップをお望みの穴 に挿しこめばよい。ペーパークリップの直径はピンより大きくないので、端子 を傷つけることがないのです。接続にはペーパークリップに鰐口クリップを挟 みこんでください。


次のページ 前のページ 目次へ