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

3. 使い方と機能

3.1 ちゃんと動いているかを確認するには?

cardmgr デーモンは、通常、カードが挿入された時にビープ音を鳴らし、 そのビープ音の音色によって新しく挿入されたカードの識別状態を示します。 高いビープ音が 2 回した時(「ピー、ピー」って感じです)は、カードはきち んと識別され、正しく設定されたことを示します。高いビープ音と低いビープ 音の場合(「ピー、ブー」って感じ)は、カードは識別されたものの何らかの理 由で設定に失敗したことを示します。低いビープ音が一度しかしなかった場合 (「ブー」だけ)はカードの識別に失敗しています。

もし X を使っているのなら、きれいなグラフィック画面で全てのPCMCIA ソケッ トの状態を表示する cardinfo プログラムも使えます。

全てのモジュールが正しくロードされれば、lsmod のコマンドは以下の ようになります。ただし、これはカードが装着されていない場合です。

Module:        #pages:  Used by:
ds                 2
i82365             2
pcmcia_core        6    [ds i82365]

PCMCIA のモジュールと cardmgr デーモンはカードの抜き差しをシステ ムのログファイルに記録します。通常、このファイルは /var/log/messages/usr/adm/messages になっています。 もし何かトラブルが起きれば、最初にこのファイルをチェックしましょう。バ グレポートの際にもこのファイルの内容を忘れずに送ってください。 cardmgr は各ソケット毎のデバイスの状態を /var/run/stab にも 記録しています。例えば、/var/run/stab はこんな風になります。

[訳注:2.8.15 以前では/etc/stabに記録されていました。]

Socket 0: Adaptec APA-1460 SlimSCSI
0       scsi    aha152x_cs      0       sda     8       0
0       scsi    aha152x_cs      1       scd0    11      0
Socket 1: Serial or Modem Card
1       serial  serial_cs       0       cua1    5       65

デバイスの状態を示している行の最初の欄がソケット番号、2 つ目がデバイス クラス、3 つめがドライバ名、4 つめがそのドライバが関係しているデバイス の数、5 つ目はデバイス名、最後の 2 つはそのデバイスのデバイス番号のメ ジャー、マイナー値です。

3.2 PCMCIA 設定スクリプトの概要

PCMCIA デバイスはどのように設定され機能するかについていくつかの``クラ ス''に分類できます。クラスは/etc/pcmcia/configのデバイスドラ イバと対応しています。現時点では IO デバイスに 5 つのクラス(network, SCSI, cdrom, fixed disk serial)が、メモリデバイスにも 3 つのクラス (FTL, memory, pcmem)があります。それぞれのクラスごとに 2 つのスクリプ トが /etc/pcmcia/config に用意されています:一つが設定用のス クリプト(例えば SCSI デバイス用なら /etc/pcmcia/scsi)で、もう 一つは設定オプションを指定するスクリプト (/etc/pcmcia/scsi.opts)です。デバイスを設定するスクリプトはカー ドが挿入された時にデバイスを設定するために起動され、カードが抜かれた時 にはデバイスを閉じるために起動されます。複数のデバイスに対応しているカー ドが挿入された場合、デバイスごとにスクリプトが起動されます。

設定用のスクリプトはデバイスについての情報を /var/run/stab から取 りだします。スクリプトはそれぞれ ADDRESS という変数に設定すべ きデバイスを一意に記述した ``デバイスアドレス'' を利用します。この `` デバイスアドレス'' をそれぞれのデバイスごとに用意されている *.opts スクリプトに渡し、*.optsスクリプトは、そのデ バイスがどのように設定されるべきかの情報を返します。いくつかのデバイ スでは、デバイスアドレスは単なるソケット番号ですが、その他のデバイスで は設定の仕方を決めるのに役立つ情報を含んだものになっています。例えば、 ネットワーク用のデバイスはハードウェアイーサネットアドレスをデバイスア ドレスの一部として network.opts スクリプトに渡すので、ハード ウェアアドレスによって異なる設定を行うことも可能です。

デバイスアドレスの最初の部分は、PCMCIA の現在の ``スキーマ(scheme)'' を示します。このパラメータを使って、一つの外部ユーザー変数によって複数 のデバイス設定を切り替えることが可能です。スキーマのつかい方のひとつは、 ``home'' スキーマと ``work'' スキーマの 2 種を用意して、ネットワークの 設定パラメータを違うものにするです。今使っているスキーマは cardctl コマンドで変更できます。特にスキーマを設定しない場合、 ``default'' スキーマが利用されます。

一般論として、ラップトップ機の Linux の場合、PCMCIA デバイスは PCMCIA デバイス用のスクリプトでのみ設定すべきで、常設のデバイスと同じように (/etc/rc.d/rc.inet* などで)設定してはいけません。

3.3 PCMCIA イーサネットカードの使い方は?

Linux ではイーサネットタイプのネットワークインタフェースは eth0, eth1 といった名前になっています。トークンリングのアダプタも同様で すが、インターフェイスはtr0,tr1 となります。ネットワー クインタフェースの状態をチェックしたり変更するには ifconfig コマ ンドを使います。ネットワークインタフェースが /dev の下に対応 するデバイスを持っていないのが Linux の特徴の一つですので、それらが見 つからなくても心配しないでください。

PCMCIA イーサネットカードが挿されれば、自動的に空いている最初のインター フェースの名前、多分 eth0 でしょう、 に割りあてられます。 cardmgr が自動的に /etc/pcmcia/network スクリプトを実行 してインターフェースに関する設定を行いますので、使おうとするネットワー クに関する設定はこの /etc/pcmcia/network で行う必要があります。

PCMCIA イーサネットカードに関する設定を /etc/rc.d/rc.inet1 で 行ってはいけません。というのも、/etc/rc.d/rc.inet1 は起動時に 実行されるので、その時点でカードが挿入されているかどうかは分からないか らです。rc.inet1 のコマンドは loopback を定義している部分以外は全 てコメントアウトしておき、代りに /etc/pcmcia/network.opts ス クリプトでネットワーク関係の設定を行ないます。この /etc/pcmcia/network.opts スクリプトはカードが装着された時にの み実行されます。

network.opts に渡されるデバイスアドレスは 3 つのコンマで区切 られた 4 つのフィールドから成っています。4 つのフィールドは、スキーマ、 ソケット番号、デバイスインスタンス、カードのハードウェアアドレス、です。 デバイスインスタンスは複数のネットワークインタフェースを持つようなカー ドの(付加的な)デバイス数なので、通常は 0 です。もし複数のネットワーク カードを持っていて、異なる目的に使うなら、ソケット番号によって設定オプ ションを変えることが可能で、その場合の network.opts は以下のようになり ます。

case "$ADDRESS" in
*,0,*,*)
    # definitions for network card in socket 0
    ;;
*,1,*,*)
    # definitions for network card in socket 1
    ;;
esac

あるいは、それぞれのカードのハードウェアアドレスを使って、以下のように することもできます。

case "$ADDRESS" in
*,*,*,00:80:C8:76:00:B1)
    # definitions for a D-Link card
    ;;
*,*,*,08:00:5A:44:80:01)
    # definitions for an IBM card
esac

NFS ファイルシステムを自動的にマウント/アンマウトしたい場合、まずマウ ントしたいファイルシステムを /etc/fstab に設定し、オプション に noauto を指定しておきます。network.opts では MOUNTS 変数にファイルシステムのマウントポイントを指定します。 NFS をこのような形で設定する場合、ネットワーク接続を終了する際には cardctlcardinfo を使うことが重要になります。警告 なしにネットワークカードが抜かれた場合、NFS ファイルシステムを明確にア ンマウントする方法はありません。

3.4 PCMCIA モデムカードの使い方は?

Linux のシリアルデバイスは /dev/cua*/dev/ttyS*と いう特別のデバイスファイルを経由してアクセスされます。ttyS*デ バイスは入力用で、直結されたターミナルなどが利用します。cua*デバイ スは出力用で、モデム等に利用します。シリアルデバイスの設定は、 setserialコマンドを使って確認、変更することができます。

シリアルカード、あるいはモデムカードが挿されたことを検出すれば、自動的 に最初の空いているシリアルデバイスに割りつけます。通常、これはあらかじ め用意されているシリアルポートの数によって /dev/cua1/dev/cua2 になります。シリアルデバイスが装着された時に実行さ れるデフォルトのスクリプトは /etc/pcmcia/serial で、このスク リプトが適切なデバイス(/dev/cua1 とか /dev/cua2)から /dev/modem にシンボリック・リンクを張ります。

PCMCIA モデムカードを設定するのに /etc/rc.d/rc.serial を使っ てはいけません。このスクリプトは抜き挿しをしないシリアルデバイスを設定 するためのものです。モデムに対して何か設定をしたい場合は /etc/rc.d/rc.serial ではなく、/etc/pcmcia/serial.opt で設定してください。

serial.opts に渡されるデバイスアドレスはコンマで区切られた 3 つのフィールドから構成されています。一つめのフィールドはスキーマで、二 つ目がソケット番号、三つめがデバイスインスタンスです。デバイスインスタ ンスは複数のシリアルポートをサポートしているようなカードのためのもので、 通常のシリアルカードでは 0 になっています。もし複数の PCMCIA モデムカー ドを使っているなら、挿入するソケットによって設定を変えることが可能です。

case "$ADDRESS" in
*,0,*)
    # Options for modem in socket 0
    ;;
*,1,*)
    # Options for modem in socket 1
    ;;
esac

起動時に PCMCIA モデムカードが装着されていると、通常のシリアルポートと 誤認される可能性があります。実害はありませんが、PCMCIA ドライバがモデ ムを制御する場合、異なるデバイスに割り当てられる可能性があるので、アプ リケーション側では PCMCIA モデムが常に同じデバイス(/dev/cua* ) に割り当てられると仮定せず、/var/run/stab をチェックするかシンボ リックリンクされた /dev/modem を使うのがいいでしょう。

シリアルポートドライバをモジュールとしてコンパイルした場合、 /etc/pcmcia/config を修正してシリアルポートドライバをまずロー ドするようにします。/etc/pcmcia/configのシリアルデバイスのエ ントリを以下のように修正してください。


device "serial_cs"
  class "serial" module "misc/serial", "serial_cs"

3.5 PCMCIA SCSI カードの使い方は?

現時点までにサポートされている PCMCIA SCSI カードは Qlogic, Adaptex AHA-152X, Future Domain TMC-16x0 といった ISA バス用のカードと同様に機 能します。れらのカード用の PCMCIA ドライバモジュールは PCMCIA 独自のコー ド(qlogic_cs.c,toaster_cs.c,fdomain_cs.c)と 通常の SCSI ドライバをリンクして作成されています。

新たに SCSI カードが挿されたことを検出すると、そのカードに接続されてい るデバイスをSCSI ドライバが検出しに行きます。 /usr/adm/messages をチェックして、使っているデバイスが正しく 検出されているか確認してください。検出された SCSI デバイスは自動的に SCSI デバイスファイルに割りあてられます。すなわち、最初に見つかった SCSI ディスクは /dev/sda 、最初の SCSI テープは /dev/st0 、 最初のCDROM は /dev/scd0 、などとなりま す。

Linux 1.3.X のカーネルでは、PCMCIA の core ドライバはどのような SCSI デバイスがカードに接続しているかをカーネルから知ることができます。それ らの情報は /var/run/stab に記載されており、SCSI の設定スクリ プト /etc/pcmcia/scsi が接続されているデバイスごとに呼ばれ、 そのデバイスを設定するか終了するかします。デフォルトのスクリプトでは SCSI デバイスの設定用には特別の処理をせず、カードが抜かれた時にSCSI デ バイス上のファイルシステムを正しくアンマウトする処理のみをしています。

1.2.X カーネルでは、どのような SCSI アダプタが接続されているのかは PCMCIA ドライバにはわかりません。その代わり、使用する SCSI デバイス用 の設定を /etc/pcmcai/scsi.opts ファイルに記述することができま す。例えば、SCSI ディスクと CD-ROM を使うような場合、

# For 1.2 kernels: list of attached devices
SCSI_DEVICES="sda scd0"

と設定します。

SCSI の場合、接続されるデバイスは様々なので、scsi.opts に渡さ れるデバイスアドレスはかなり複雑です。フィールドはコンマで区切られた 6 つか 7 つのフィールドからできています:それぞれのフィールドは、スキー マ、デバイスタイプ、ソケット番号、SCSI チャンネル、ID、 論理ユニット番 号、オプションとしてパーティション番号も渡されることがあります。

デバイスの種類は ``sd'' がディスク、``st'' がテープ、``sr'' が CD-ROM で ``sg'' がジェネリック SCSI デバイスです。ほとんどの設定では SCSI チャ ンネルと論理ユニット番号は 0 です。複数のパーティションを持つディスク デバイスについては、 まず 5 つのフィールドを持つデバイスアドレスを使っ て scsi.opts がデバイス全体に対して呼ばれ、scsi.opts はパーティションのリストを PARTS 変数に返します。次に、それぞ れのパーティションごとに、7 つのフィールドを持つデバイスアドレスを使っ て scsi.opts スクリプトが起動されます。例えば、SCSI ID 3 でパー ティションを 2 つ持つ SCSI ディスクと SCSI ID 6 の CD-ROM の場合、 scsi.opts は以下のようになります。

case "$ADDRESS" in
*,sd,*,0,3,0)
    # This device has two partitions...
    PARTS="1 2"
    ;;
*,sd,*,0,3,0,1)
    # Options for partition 1:
    #  update /etc/fstab, and mount an ext2 fs on /usr1
    DO_FSTAB="y" ; DO_MOUNT="y"
    FSTYPE="ext2"
    OPTS=""
    MOUNTPT="/usr1"
    ;;
*,sd,*,0,3,0,2)
    # Options for partition 2:
    #  update /etc/fstab, and mount an MS-DOS fs on /usr2
    DO_FSTAB="y" ; DO_MOUNT="y"
    FSTYPE="msdos"
    OPTS=""
    MOUNTPT="/usr2"
    ;;
*,sr,*,0,6,0)
    # Options for CD-ROM at SCSI ID 6
    PARTS=""
    DO_FSTAB="y" ; DO_MOUNT="y"
    FSTYPE="iso9660"
    OPTS="ro"
    MOUNTPT="/cdrom"
    ;;
esac

お使いのカーネルに、それぞれの SCSI デバイスに対応したディスクやテープ を利用するためのドライバが組みこまれていない場合、PCMCIA ドライバから それらのデバイスを設定することはできません。その副作用として、 /var/run/stab に残されるデバイス名は "sd#nnnn" のような形になります。ここで "nnnn"は4桁の16進数です。これは、cardmgr が SCSI デバイス ID を Linux の対応するデバイス名に変換できなかった際 に生じます。

トップレベルの SCSI ドライバ(SCSI ディスク用ドライバ、、SCSI テープ用 ドライバなど)をモジュール化して、PCMCIA SCSI アダプタが挿入された時に のみ必要なモジュールをロードするように設定することも可能です。そのため には、/etc/pcmcia/configを修正して、PCMCIA SCSI アダプタが設 定された時に必要なモジュールをロードするようにします。例えば、


device "aha152x_cs"
  class "scsi" module "scsi/scsi_mod", "scsi/sd_mod", "aha152x_cs"

とすれば、核となる SCSI モジュールと SCSI ディスクドライバ用のモジュー ルが通常の PCMCIA ドライバモジュールより先にロードされます。

ラップトップ機に電源を入れる前、あるいはアダプタカードを挿入する前に、 接続される全ての SCSI デバイスの電源を入れておき、アダプタが設定される 時にはきちんと SCSI バスがターミネート(終端)されているようにすることを 忘れないように。また、アダプタカードを抜く前には全ての SCSI デバイスが アンマウントされてきちんと閉じていることを忘れないように。一番確実な方 法はカードを抜く前に cardctlcardinfo を使って card removalのリクエストを送ることです。現状では、SCSI アダプ タが挿入される前に接続されている全ての SCSI デバイスの電源を入れておき、 アダプタカードを抜くか laptop 機の電源を落とすまでは電源を切ってはいけ ません。

PCMCIA SCSI カードを使う場合、通常の ISA バスに接続するタイプのアダプ タでは生じない問題が生じることもあります。たいてい、パッシブ型の SCSI ターミネーターを正しく作動させるためには、 SCSI バスにターミネーター用 の電流を流す必要がありますが、PCMCIA タイプの SCSI アダプタはターミネー ター用の電流を供給しないので、もしターミネーターに電流が必要となる場合、 接続されている外部デバイスが代りの電源にならねばなりません。SCSI デバ イスの中にはターミネーター用の電流を供給するように設定できるものもあり ますし、Zip Drive のようにアクティブ型のターミネーターを使っているため、 ターミネーター用電流の有無には影響されないものもあります。時には、APS SCSI Sentry 2 のように外部から電流を供給するタイプの特別なターミネーター を使う必要があるかも知れません。SCSI デバイスを連続して接続する場合、 ターミネーター用の電流を必要とする/供給できるデバイスがあるかどうか注 意してください。

Adaptec APA-460 SlimSCSI アダプタはサポートされていません。このカード は元々 Trantor 社から発売されていたものですが、Adaptec 社が Trantor 社 を合併してからは Adaptec のラベルを付けて売っています。APA-460 はどの Linux 用のドライバとも互換性がありません。ドライバを書くのがどれくらい 難しいかはわかりませんが、Adaptec からこのカードについての技術情報を入 手することが可能だとは思えません。

サポートされていない Trantor 製の SlimSCSI は以下のような製品名になっ ており、SCSIworks! がソフトウェアとして附属しています。

Trantor / Adaptec APA-460 SlimSCSI
FCC ID: IE8T460
Shipped with SCSIworks! driver software

(PCMCIA カードサービスがサポートしている) Adaptec の SlimSCSI は以下の ようになっているので間違えないでください。

Adaptec APA-1460 SlimSCSI
FCC ID: FGT1460
P/N: 900100
Shipped with EZ-SCSI driver software

3.6 PCMCIA メモリカードの使い方は?

デフォルトで起動されるメモリカード用の設定スクリプトは、カードの最初の 共通メモリ(common memory)領域と属性メモリ(attribute memory)領域にアク セスするために、ブロックデバイスとキャラクタデバイスを作ります。メモリ カード用のドライバには 古いバージョンの pcmem_csドライバと新 しい memory_cs ドライバがあります。pcmem_cs ドライバ は static RAM カードで動作します。新しい memory_cs ドライバは フラッシュメモリカードに直接アクセスできます。デバイス名の付け方の詳細 についてはマニュアルを参照してもらうことにして、ここではごく簡単に説明 しておきます。メモリカード用のデバイスはブロックデバイスとキャラクタデ バイスの 2 つが作られ、ブロックデバイスはディスクのように使え(ファイル システムを作ってマウントする)、キャラクタデバイスは "raw" デバイスとし て、メモリカード上の任意の部分を読み書きできます。

フラッシュメモリカードを通常のディスクのようなブロックデバイスとして利 用するためには、まずフラッシュメモリ変換層(``flash translation layer'') を ftl_format コマンドを使って作らなければなりません。

ftl_format -i /dev/mem0c0c

このコマンドはメモリカードの ``raw''インタフェースを使ってカードにアク セスすることに注意してください。いったんフォーマットしてしまえば、カー ドは普通のブロックデバイスとして ftl_cs ドライバ経由で使えま す。例えば:

mke2fs /dev/ftl0
mount -t ext2 /dev/ftl0 /mnt

のようにして普通のディスクと同様にフォーマット、マウントできます。

FTL と ``新しい'' メモリドライバを使えば、ftl.optsmemory.opts にソケット番号とパーティション数の 2 つのフィール ドを持つデバイスアドレスが渡されます。共有メモリ用のパーティションの方 が属性メモリ用のパーティションよりは小さな番号が付きます。通常、興味の あるパーティションは パーティション 0 (データが保存される共通メモリパー ティション)だけでしょう。以下に示すものは、挿入されるソケットによって 自動的にフラッシュメモリカードをマウントするようなスクリプトの例です。

case "$ADDRESS" in
*,0,0)
    # Mount filesystem, but don't update /etc/fstab
    DO_FSTAB="n" ; DO_MOUNT="y"
    FSTYPE="ext2" ; OPTS=""
    MOUNTPT="/ftl0"
    ;;
*,1,0)
    # Mount filesystem, but don't update /etc/fstab
    DO_FSTAB="n" ; DO_MOUNT="y"
    FSTYPE="ext2" ; OPTS=""
    MOUNTPT="/ftl1"
    ;;
esac

flash memory カードには 2 種のフォーマットがあります:``flash translation layer(FTL)'' スタイルとマイクロソフトフラッシュファイルシ ステム(FFS)スタイルです。FTL フォーマットの方が柔軟で、通常の(ext2, ms-dos といった)ファイルシステムを作って、普通のディスクデバイスのよう にフラシュメモリカードを利用できます。FFS は全く新しいファイルシステム で、現状では Linux から FFS 用にフォーマットされたカードを利用すること はできません。

3.7 ATA/IDE カードドライブの使い方

現時点でATA/IDE ドライブを使うには、1.3.72 以上のカーネルが必要です。 PCMCIA 独自のドライバの部分は fixed_cs になっています。現在の ドライバはカードが抜かれたことを自動的に検出するようにはなっていないの で、ATA/IDE カードを抜く前には cardctlcardinfo コマンドで ATA/IDE カードがきちんとアンマウントされていることを確認し てください。

fixed.opts スクリプトに渡されるデバイスアドレスは、使っている スキーマとソケット番号、オプションとしてパーティション数から成る 2 つ、 あるいは 3 つのフィールドから構成されています。SCSI デバイス同様、 fixed.opts スクリプトは、まずデバイス全体に対して起動されます。 fixed.opts がパーティションのリストを PARTS 変数で返 した場合、それぞれのパーティションごとにfixed.opts コマンドが 実行されることになります。

挿入された ATA/IDE カードの最初のパーティションを /mnt にマウ ントするような fixed.opts は以下のようになります。

case "$ADDRESS" in
*,*)
    PARTS="1"
    ;;
*,*,1)
    DO_FSTAB="y" ; DO_MOUNT="y"
    FSTYPE="msdos"
    OPTS=""
    MOUNTPT="/mnt"
    ;;
esac

3.8 新しいカードを 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 にはそのエントリーも含めたいと思います。

3.9 デバイスが利用する割り込みやポートをコントロールするには?

理論的には、2 つのデバイスが同じ IRQ を使わない限り、どの IRQ がどのデ バイスに割りあてられても問題にはならないはずです。 /etc/pcmcia/config ファイルの最初には PCMCIA 以外のデバイスが 利用するIRQ を PCMCIA では使わないようにする設定する部分があります。

注意して欲しいのですが、カードの抜き差しを検出するために利用するIRQ は、 cardmgr/etc/pcmcia/config ファイルを読み込む前に、 ハードウェアレベルのソケットドライバモジュール(i82365tcic )が選んでいるので、/etc/pcmcia/config ファイル では設定できません。この IRQ を設定するには /etc/rc.d/rc.pcmcia が実行され、ソケットドライバがロードされ る際にirq_maskcs_irq オプションを使います。

全てのカードドライバには irq_mask と呼ばれるパラメータが用意 されており、割りあてる IRQ を特定することが可能です。irq_mask の各ビットはそれぞれ一本の割り込み線に対応しています(訳注: 0 が mask, 1 が unmask です): bit 0は irq 0 、bit 1 は irq 1、以下同様に対 応しています。ですから、0x1200 というマスクは IRQ の 9 と 12 を意味し ます。ドライバの利用する IRQ を特定したい場合、irq_mask オプションで 1 ビットだけ設定するようにします。これらのドライバ用のオプションは /etc/pcmcia/config ファイルで設定します。例えば:

device "serial_cs"
  module "serial_cs" opts "irq_mask=0x1100"
  ...

のように指定します。この場合、シリアルドライバは irq 8 と irq 12 のみ を使うようになります。カードサービス・システムでは、既に他のデバイスが 使っている IRQ は使いませんし、/etc/pcmcia/config ファイルで 除外された IRQ は(irq_mask で指定しても)利用できないことに注 意してください。

ある PCMCIA カードが特定の I/O アドレスを使うように直接指定する方法は ありません。/etc/pcmcia/config ファイルでは全ての PCMCIA デバイスで利 用可能なポートの範囲を指定します。/etc/pcmcia/config ファイルを変更し たら、``kill -HUP '' コマンドで cardmgr を再起動します。

3.10 PCMCIA カードを抜くのに安全なタイミングは?

理論的には、PCMCIA カードはいつでも抜くことが可能です。しかし、アプリ ケーションプログラムがそのカードを使っている時には抜かない方が無難です。 1.1.77 以前のカーネルでは、serial/modem カードが抜かれた時にハングアッ プしてしまうことがありましたが、現在では修正されています。

3.11 PCMCIA ドライバをアンロードする方法は?

PCMCIA 全体をアンロードするには、rc.pcmcia スクリプトを

/etc/rc.d/rc.pcmcia stop

として起動します。全てのクライアント・ドライバに対して正常にシャットダ ウンするだけの余裕をあたえるため、このスクリプトの実行にはしばらく時間 がかかります。もしその時点で使用中の PCMCIA ドライバがあると、シャット ダウンは失敗します。

3.12 カードサービス・システムはどのように suspend/resume を扱うの?

APM(Advanced Power Management)をシステムに組みこんでいれば、カードサー ビスと組みあわせて使うことができます。APM は 1.3.46 以降のカーネルには 標準で組みこまれています。APM は現在 Rick Faith<faith@cs.unc.edu>がメンテナンスしています。APM 用 のツールは ftp.cs.unc.edu/pub/users/faith/linux から入手できます。利用可能なバージョンの APM が組みこまれていれば、カー ドサービスのコンパイル時に自動的に APM 用の設定が行われます。

APM を使わない場合、PCMCIA カードを正しくシャットダウンして再起動する には、ラップトップ機をサスペンドする前に ``cardctl suspend'' し、 レジュームした後 ``cardctl resume'' します。ただし、モデムカード ではこのようにしてもサスペンド前の設定を復旧することはできません。なぜ なら、シリアルドライバはモデムを操作するパラメータをセーブしたりリスト アしたりできないからです。

APM を使うと不安定になるシステムもいくつか報告されています。もし APM とPCMCIA に関してトラブルが出た場合、バグを報告する前に、問題がどちら のパッケージに由来するものか確認してみてください。

3.13 PCMCIA カードを抜かずにカードの電源を切るには?

cardctlcardinfo コマンドを使ってください。 ``cardctl suspend #'' (# はソケットの番号)で、そのソケッ トをサスペンドして電源を切ります。同様に ``cardctl resume #'' コマンドで以前の状態に復帰することができます。

3.14 会社と自宅で異なる設定を使いたいのですが?

PCMCIA の「スキーマ」を使えば簡単です。例えば ``home'' と ``work'' と いう 2 つのスキーマの設定を考えてみましょう。スキーマを反映した network.opts スクリプトのサンプルは以下のようになります。

case "$ADDRESS" in
work,*,*,*)
    # definitions for network card in work scheme
    ;;
home,*,*,* | default,*,*,*)
    # definitions for network card in home scheme
    ;;
esac

PCMCIA デバイスアドレスの最初の部分は常にスキーマの設定に対応していま す。この例では 2 つめの ``case'' の部分が ``home'' と ``default'' のス キーマになっており、スキーマが設定されていない場合は ``home'' の設定で 起動されることになります。

2 つの設定を切りかえるには、

cardctl scheme home
or
cardctl scheme work

とします。

cardctl コマンドは利用中の全てのカードを終了させて再起動しま す。このコマンドはPCMCIA システムがロードされているか否かにはかかわら ず実行できますが、他の PCMCIA デバイスを使っている時(その設定がスキー マの設定に関係なくとも)には実行に失敗することもあります。

現在利用中のスキーマを知るには、

cardctl scheme

とします。


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