cardmgr デーモンは、通常、カードが挿入された時にビープ音を鳴らし
ます。そのビープ音の音色によって新しく挿入されたカードの状態を示します。
高いビープ音が 2 回した時は、カードはきちんと識別され、正しく設定され
たことを示します。高いビープ音と低いビープ音の場合は、カードは識別され
たものの何らかの理由で設定に失敗したことを示します。低いビープ音が一度
しかしなかった場合はカードの識別に失敗しています。
もし X を使っているのなら、きれいなグラフィック画面を使って 全ての
PCMCIA ソケットの状態を表示する cardinfo プログラムも使えます。
全てのモジュールが正しくロードされれば、lsmd のコマンドは以下のよ
うになります。ただし、これはカードが装着されていない場合です。
Module: #pages: Used by:
ds 2
i82365 2
pcmcia_core 6 [ds i82365]
PCMCIA のモジュールと cardmgr デーモンは状態の変化をシステムのロ
グファイルに記録します。通常、このファイルは
/usr/adm/messages になっています。もし問題が起きれば、最初に
このファイルをチェックしましょう。バグレポートの際にもこのファイルの内
容を忘れずに含めてください。cardmgr は各ソケット毎のデバイスの現状を
/etc/stab にも記録しています。
イーサネットカードが挿されたことを検出すれば、自動的に空いている最初の
インターフェースの名前、多分 ``eth0''、 に割りあてます。イーサネットカー
ドが装着されれば、cardmgr は自動的に /etc/pcmcia/network
スクリプトを実行してインターフェースを設定しますので、あなたのローカル
なネットワークの設定はこの /etc/pcmcia/network で行う必要があ
ります。
PCMCIA イーサネットを /etc/rc.d/rc.inet1 で設定してはいけませ
ん。というのも、このスクリプトが実行される時にカードがささっているかど
うかは分からないからです。rc.inet1 のコマンドは loopback を定義し
ている部分以外は全てコメントアウトします。代りに
/etc/pcmcia/network スクリプトにネットワーク関係の設定を行な
います。この/etc/pcmcia/network スクリプトはカードが装着され
た時にのみ実行されます。
シリアル、あるいはモデムカードが挿されたことを検出すれば、自動的に最初
の空いているシリアルデバイススロットに割りつけます。通常、これは
/dev/cua1 か /dev/cua2 ですが、あらかじめ用意されて
いるシリアルポートの数によって変ります。シリアルデバイスが装着された時
に実行されるデフォルトのスクリプトは/etc/pcmcia/serial で、こ
のスクリプトが適切なデバイス(/dev/cua1 とか
/dev/cua2)から/dev/modem にリンクを張ります。
もし一つ以上の PCMCIA モデムを使っているならば、/etc/stab か
cardinfo をチェックしてどのデバイスがモデムと対応しているか確認し
てください。
PCMCIA モデムカードを設定するのに /etc/rc.d/rc.serial を使っ
てはいけません。このスクリプトは抜き挿しをしないデバイスを設定するため
にのみ使うものです。モデムに対して何か設定をしたい場合は
/etc/rc.d/rc.serial ではなく、/etc/pcmcia/serial で
設定してください。
ラップトップ機の電源を入れる前、あるいはアダプタカードを挿しこむ前に、 SCSI デバイスの電源を入れておき、アダプタカードが設定される時に は SCSI バスが正しくターミネートされるようにしておいてください。
新たに SCSI ホストアダプタが検出された時、SCSI ドライバがデバイスを検
出しに行きます。/usr/adm/messages をチェックして、使っている
デバイスが正しく検出されているか確認してください。検出された SCSI デバ
イスは自動的に SCSI デバイスファイルに割りあてられます。すなわち、最初
に見つかった SCSI ディスクは /dev/sda、最初の SCSI テープは
/dev/st0、 最初の CDROM は /dev/scd0、などとなります。
SCSI アダプタを抜く時は注意してください。カードを抜くまえに、全ての SCSI デバイスがクローズされ、アンマウントされていることを確認してくだ さい。現在のところ、全ての SCSI デバイスは SCSI アダプタが挿入される前 に電源オンになっており、アダプタを抜く、あるいは/また、ラップトップ機 の電源を落すまでは継がったままにしておく必要があります。
さらに、Roger Pao (rpao@paonet.org) によると、
デバイス側と PCMCIA SCSI カード側の双方のターミネーターに充分な電流を 供給するだけの余裕を持つデバイスが接続されていることを確認してください。 ほとんどの PCMCIA SCSI カードは SCSI バスのターミネーターにも自分自身 のターミネーターにも電流を供給しないので、カードの代りにターミネーター に電流を供給する機器が接続されていることが重要です。また、カード以外か ら電流を供給すればラップトップ機のバッテリーも助かるし、ラップトップ機 を SCSI バスから遮断するにも役立ちます。
[訳注:以下は日本では無意味でしょう。]
お薦めは、APS SCSI Sentry 2($100) という外付けのセントロニクス タイプのアクティブターミネーターブロックです(一端がオス、他端がメスになっ ています)。このターミネーターは外部から電流の供給を受けて(115/230VAC) 自身と PCMCIA SCSI カードのターミネーター(アクティブでもパッシブでも) に電流を供給します(5VDC 2.0A)。より詳しくは 800-334-7550 に電話して、 APS のテクニカルサポートに聞いてください。
デフォルトのメモリカード起動用のスクリプトは、カードの最初の共通メモリ
(common memory)と属性メモリ(attribute memory)領域にアクセスするために、
ブロックデバイスとキャラクタデバイスを作ります。詳しくはマニュアルを見
てほしいんですが、多分使うであろうデバイスは /dev/mem0c(キャ
ラクタデバイス)か/dev/mem0b(ブロックデバイス)になるはずです。
ブロックデバイスはディスクのように(ファイルシステムを作ったりマウント
したり)使えます。キャラクタデバイスは "raw" モードでメモリの好きな場所
を読み書きできます。
フラッシュメモリカードを通常のディスクのようなブロックデバイスとして利
用するためには、まずフラッシュメモリ変換層(``flash translation
layer'') をftl_format コマンドで作らなければなりません。
ftl_format -i /dev/mem0c
このコマンドはメモリカードの ``raw''インタフェースを使ってカードにアク
セスすることに注意してください。いったんフォーマットしてしまえば、カー
ドは普通のブロックデバイスとして ftl_cs ドライバ経由で使えます。
例えば:
mke2fs /dev/ftl0
mount -t ext2 /dev/ftl0 /mnt
のようにして普通のディスクと同様にフォーマット、マウントできます。
cardmgr に認識させれる方法は? もし使おうとしているカードが既存のドライバでサポートされているものなら
ば、必要なことは /etc/pcmcia/config に必要なエントリ
を加えて cardmgr がカードを識別し、必要なドライバをリンクできるよ
うにしてやるだけです。
config ファイルのフォーマットの詳細については
pcmcia の man ページをチェックしてください。未知のカードを装
着すると、cardmgr は識別に必要な情報を /usr/adm/messages
に記録するので、それを手がかりに必要なエントリーを作ることができるでしょ
う。
サポートされていないカードを装着した場合、cardmgr は
/usr/adm/messages にこんな記録を残します。
cardmgr[460]: unsupported card in socket 1
cardmgr[460]: version info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
このカードのための /etc/pcmcia/config のエントリーはこのよう
なものになります。
card "Megahertz XJ2288 V.34 Fax Modem"
version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
bind "serial_cs"
文字列のうち、バージョンナンバーのように正確にマッチしなくてもいい部分 には ``*'' を使うこともできます。config に新しいエントリーを追加する時 は、文字列を正しくコピーするように注意してください。大文字と小文字や空 白も正しくコピーしてください。また、config ファイルのエントリーには log ファイルに残されたものと同じ数の文字列があることを確認してください。
/etc/pcmcia/config を修正した後、以下のコマンドで
cardmgr に HUP シグナルを送り、config ファイルを再ロードさせます。
kill -HUP `cat /var/run/cardmgr.pid`
新しいカードのエントリーを作った時には、ぜひそのコピーを私に送ってくだ
さい。次の sample.config にはそのエントリーも含めたいと思います。
理論的には、2 つのデバイスが同じ割り込みを使わない限り、どの割り込みが
どのデバイスに割りあてられても問題にはならないはずです。
/etc/pcmcia/config ファイルの最初には PCMCIA 以外のデバイスが
利用する割り込みを PCMCIA では使わないようにする項があります。
ibmcc_cs, de650_cs, 3c589_cs, serial_cs ドライバに
は irq_mask と呼ばれるパラメータがあり、どの割り込みを利用するか
をコントロールすることができます。iqr_mask の各ビットはそれぞれ一本の
割り込み線に対応しています(訳注: 0 が mask, 1 が unmask です): bit 0
は irq 0 、bit 1 は irq 1、以下同様に対応しています。
例えば 0x1100 というマスクは irq8 と irq12 を利用可能にします。ある特
定の割り込みのみを使うようにしたい場合、irq_mask には対応する1 ビットの
み 1 を立てた値をセットします。これらのオプションは
/etc/pcmcia/config ファイルで設定するのがいいでしょう。例えば、
device "serial_cs"
module "serial_cs" opts "irq_mask=0x1100"
...
と設定すれば、シリアルドライバは irq 8 と irq 12 のみを使うようになり ます。カードサービス・システムでは、既に他のデバイスが使っている割り込 みは使いませんし、config ファイルで除外された割り込みは使わないことに 注意してください。
特定の PCMCIA カードが特定の I/O アドレスを使うように直接指定する方法
はありません。/etc/pcmcia/config ファイルでは全ての PCMCIA デ
バイスで利用可能なポートの範囲を指定します。
/etc/pcmcia/config を修正した後、``kill -HUP'' を使って
cardmgr を再起動してください。
理論的には、PCMCIA カードはいつでも着脱可能です。しかし、アプリケー ションプログラムがそのカードを使っている時には抜かない方が無難です。 1.1.77 以前のカーネルでは、serial/modem カードが抜かれた時にハングアッ プしてしまうことがありましたが、現在では修正されています。
PCMCIA 全体をアンロードするには、rc.pcmcia スクリプトを
/etc/rc.d/rc.pcmcia stop
として起動します。このスクリプトの実行には数秒間かかります。これは、 このスクリプトが、全てのクライアント・ドライバに対して正常にシャット ダウンするだけの余裕をあたえるからです。もしその時点で使用中の PCMCIA ドライバがあると、シャットダウンは失敗します。
APM(Advanced Power Management)パッケージをインストールしておけば、カー ドサービス・システムも APM を利用することができます。Stephen Rothwell 作のAPM パッケージはバージョン 0.5 が最新です。0.4 とは異なり、0.5では PCMCIA で使うための特別なパッチは必要ありません。利用可能なバージョン の APM パッケージが見つかれば自動的に APM を使うように設定されます。
APM を使わない場合、PCMCIA カードを正しくシャットダウンして再起動する
には、ラップトップ機をサスペンドする前に ``cardctl suspend'' し、
レジュームした後 ``cardctl resume'' します。ただし、PCMCIA モデム
カードではこのようにしてもレジューム前の設定を復旧することはできません。
なぜなら、シリアルドライバはモデム操作用のパラメータをセーブしたりリス
トアしたりできないからです。
APM が不安定になるシステムもいくつか報告されています。もし APM と PCMCIA に関してトラブルが出た場合、バグを報告する前に、問題がどちらの パッケージに由来するものか確認してみてください。
cardctl か cardinfo コマンドを使ってください。
``cardctl suspend #'' (# はソケットの番号を表す整数
値)で、そのソケットをサスペンドして電源を切ります。同様に resume
# コマンドで以前の状態に復帰することができます。