31.3 トラブルシューティング

以下は、PCMCIAで発生する可能性がある問題で最も顕著なものです。これらの問題の詳細については、PCMCIA README (/usr/share/doc/packages/pcmciautils/README.SuSE)を参照してください。

31.3.1 PCMCIAによるマシンのクラッシュ

ブート時にPCMCIAが起動する際、マシンがクラッシュする。マシンのクラッシュの原因を見つけるには、以下で説明しているように手動でセットアップを行います。PCMCIAを慎重に手動でセットアップすることで、マシンをクラッシュさせたステップまたはコマンドを明確に識別できます。原因を識別したら、この問題を発生させたステップまたはコンポーネントを避けることができます。

PCMCIAを手動でセットアップするには、以下の手順に従います。

  1. システムのブート時にPCMCIAが起動しないようにし、ブートのプロンプトで以下のオプションを追加して、SysRqを有効化し、簡単にデバッグできるようにします。

    init=3 pcmcia=off sysrq=1

    SysRqの詳細については、/usr/src/linux/Documentation/sysrq.txtを参照してください。

  2. システムをテキストベースの環境になるようにブートし、rootでログインします。

  3. 適切なPCMCIAモジュールをカーネルに追加します。

    /sbin/modprobe yenta_socket
    /sbin/modprobe pcmcia
    
  4. PCMCIAソケットを起動します。

    /sbin/pcmcia-socket-startup N

    Nをソケットの数と置き換えます。各ソケットについて、このステップを繰り返します。

  5. 前のステップでマシンがクラッシュした場合、/etc/pcmcia/config.optsで指定されているメモリ範囲またはIOが間違っている可能性があります。この問題を防ぐには、次のいずれかを行います。

    • /ect/pcmcia/config.optsの範囲を除外し、ソケットのセットアップを再試行します。

    • 以下に説明しているように、手動で範囲を追加します。

      適切な範囲を手動で追加した後、/etc/pcmcia/config.optsに含め、永久的な設定になるようにします。

  6. ソケットのセットアップが完了した後、31.2.2項 「カードの初期化」および31.2.3項 「インタフェースのセットアップ」で説明しているように、カードの初期化とインタフェースのセットアップが行われます。

手動でI/O範囲を追加するには、以下の手順に従います(ソケットごと)。

  1. 範囲設定が保管されるディレクトリに移動します(この場合は、pcmcia_socket0。他のソケット数を適用)。

    cd /sys/class/pcmcia_socket/pcmcia_socket0
  2. 次のコマンドを実行します。

    echo begin - end > available_resources_io

    beginおよびendを新しい範囲の開始および終了アドレスと置き換えます。さまざまな値で試行して、適切な値を決定します。

手動で以下の範囲を追加します。

echo 0x800 - 0x8ff > available_resources_io
echo 0xc00 - 0xcff > available_resources_io

/etc/pcmcia/config.optsからの以下の行と等しくなります。

include port 0x800-0x8ff, port 0xc00 0xcff

available_resources_memのメモリ範囲にも同じ手順を行います。

[Important]誤りのあるデフォルト設定の識別

この製品に同梱されているデフォルト設定ファイル(/etc/pcmcia/config.opts)内で範囲に誤りが見つかった場合は、http://bugzilla.novell.comにバグを報告してください。開発者がこの問題について調査します。

31.3.2 一般的なPCMCIAのサスペンド問題

システムがサスペンドする場合は(ディスクのサスペンド、RAMのサスペンド、またはスタンバイ)、システムのサスペンドモード中、いずれのハードウェアアイテムも接続したり取り外したりしないでください。接続したり取り外したりすると、システムが適切に再起動しない場合があります。

サスペンド時にPCMCIAカードが自動的に取り出されるようにするには、以下の手順に従います。

  1. rootでログインします。

  2. /etc/powersave/sleepファイルを開きます。

  3. 以下の変数を設定します。

    SUSPEND2DISK_EJECT_PCMCIA="yes"
    SUSPEND2RAM_EJECT_PCMCIA="yes"
    STANDBY_EJECT_PCMCIA="yes"
    
  4. ファイルを保存し、設定を適用します。

サスペンド時にその他のモジュールを取り出す必要がある場合は、上記の手順に従い、以下の変数にそのモジュール名を追加します。

UNLOAD_MODULES_BEFORE_SUSPEND2DISK=""
UNLOAD_MODULES_BEFORE_SUSPEND2RAM=""
UNLOAD_MODULES_BEFORE_STANDBY=""

powersaveデーモンの詳細については、33.5項 「powersaveパッケージ」を参照してください。

31.3.3 関連情報

PCMCIAに関する最新情報については、/usr/share/doc/packages/pcmciautils/README.SuSEを参照してください。PCMCIAハードウェアの包括的な概要およびその使用方法については、PCMCIAの公式Webサイト(http://www.pcmcia.org/pccard.htm)を参照してください。特定のカードまたはデバイスがLinuxでサポートされているかどうか確認するには、http://tuxmobil.org/pcmcia_linux.htmlの『Linux PCMCIA/CF/CardBus Card Survey』を参照してください。