Last modified: Aug 30th, 2001
起動時に PCMCIA サービス起動のところで固まる, という話を何度か聞いたことがあります. この問題を確認するために私も数台のパソコンに
Red Hat Linux 6.2 をインストールして実際試してみたところ, 確かに固まります. こうなった場合は PC カードを抜き出すしかありません.
しかしこの現象は, あらゆる環境で発生するわけではなく, 私が試したところ一部のパソコンのみで発生するようです.
RedHat Linux 7 や HOLON Linux 2.0 ではこのような問題は発生しませんし, pcmcia-cs パッケージのバージョンを上げても同じですのでカーネルの問題ではないかと思っていたのですがようやく原因がわかりました.
当初はカーネルの問題か, モジュールに組み込んでいる ide-scsi, sg が絡んでいるのかと思っていましたが /etc/pcmcia/config.opts を編集することであっさり解決してしまいました. 以下にその解決方法をご紹介します.
ちなみに場合によっては以下の方法で解決する場合もあるかも知れません.
pcmcia の設定ファイル (Redhat 系は /etc/sysconfig/pcmcia,
Debian では /etc/pcmcia.conf) を以下のように編集します.
| PCMCIA=yes PCIC=i82365 # Kernel-2.4 系では yenta_socket PCIC_OPTS= CORE_OPTS="unreset_delay=300" |
上記のようにするか,
| PCMCIA=yes PCIC=i82365 PCIC_OPTS="irq_list=10,11" CORE_OPTS= |
これで解決することもあるかも知れません.
しかし今回私が試してみて有効だったのが /etc/pcmcia/config.opts の port の設定を編集することです. これは空いているポートを探しているときに, pcmcia 起動時にハングアップするディストリビューションとハングアップしないディストリビューションのこのファイルの違いを見比べてみたら違っていたので試したらうまくいったわけですが, ここではその方法をご紹介します.
まず, ランレベル1のシングルユーザーモードで起動します. 電源投入後の LILO の boot プロンプトで,
と入力します.
ログインしたら /etc/pcmcia/config.opts を以下のように編集します.
| # include port 0x100-0x4ff,port 0x1000-0x17ff
--> 先頭に # を付けてコメントにする include port 0x100-0x4ff,port 0x800-0x8ff,port 0xc00-0xcff --> この行を追加 |
または,
| # include port 0x100-0x4ff,port 0x1000-0x17ff
--> 先頭に # を付けてコメントにする include port 0x100-0x4ff, port 0x1000-0x13ff --> この行を追加 |
編集が終われば以下のようにランレベル 3 または 5 になって pcmcia を起動します.
PC カードの認識状況は以下のコマンドで確認できます.
これでハングアップせずにうまくいくはずです. ただしこれですべてうまくいくかと言うとそうではありません. ここに書いている方法はあくまで pcmcia-cs でサポートされているカードでの話です. しかも SCSI で Cardbus での場合だと解決出来ないかも知れません. SCSI カードの場合, サポートされているチップも限られていますし, また Cardbus の場合は pcmcia-cs でサポートされているカードであっても必ずしも正常に認識出来るとは限らないので注意が必要です. そういった場合はやはり, 上記のように何かと競合している IRQ を明示的に外したり, port を外してみるといった作業が必要になるでしょう. IRQ は /etc/pcmcia/config.opts で設定できます. port は上記の include 行の, 例えば 0x100-0x4ff の間が競合している場合, port 0x100-0x21f, port 0x230-0x4ff などとしてみるわけです. このように試行錯誤しなくては動かないこともあるということです.