カードサービス・システムの最新バージョンを使うには 1.2.8 以上のカーネ
ルが必要です。PCMCIA 使うためにカーネルにパッチをあてる必要はありませ
ん。モジュール・ユーティリティも新しいものが必要ですが、お手持ちの
insmod のマニュアルページに、[symbol=value ...] という文法に
ついての説明があれば、十分新しい insmod です。
PCMCIA パッケージにはカーネルのソースを参照している部分があるので、コ ンパイルする際にはコンパイル済のカーネルイメージだけでなく、カーネルの ソースツリーそのものが必要です。
最新のカーネルのソースとパッチは、sunsite.unc.edu の
/pub/Linux/kernel/v1.2 か tsx-11.mit.edu の
/pub/linux/sources/system/v1.2 にあります。最新のモジュールユー
ティリテイも同じところにあり、modules.1.1.87.tgz というファイル名
になっています。
カーネルを設定する際、PCMCIA のイーサネットカードを使うつもりなら、
``networking support'' という問を [Y] にして、``pocket and
portable adapters'' を含む一般の Linux 用のネットワークカードドライバは
全て使わないように設定します。PCMCIA ネットワークカードは必要なときに
ロードされるモジュールとして提供されています。3Com の 3c589 ドライバ以
外の全ての PCMCIAネットワークカードドライバは Linux カーネルの一部であ
る8390.o ドライバモジュールを利用しています。
SLIP や PPP, PLIP を使う場合、これらを使うようにカーネルを設定するか、 これらのドライバの実行時ロードモジュールを使う必要があります。残念なが らカーネルの設定プロセスに問題があり、実行時ロードモジュール用の細かな 設定(例えば SLIP の圧縮)ができません。そのため、必要ならば SLIP を(モ ジュールではなく)カーネルに組みこんでしまう方がいいでしょう。
もし PCMCIA SCSI アダプタを使うなら、カーネルの設定時に CONFIG_SCSI を 設定します。使うつもりの SCSI デバイス(SCSI ディスク、テープ、cdrom、 generic)用のドライバも設定します。特定のホストアダプタ用の低レベルドラ イバ(AHA152x, futuredomain 等)は使わないように設定します。
PCMCIA モジュールをコンパイルする際には、カーネルのバージョンを記録し
たファイル versions.h が必要です。このファイルはカーネルの構築時
に最初に作られ、最後に削除されます。``make modules'' すれば、
version.h は再度作られますが、Linux のソースツリーの一番上で
``make include/linux/version.h'' を実行して明示的に作ることも
可能です。
バージョン 2.4.8 からは X-Window System 上で動く cardinfo という PCMCIA
カードの状態表示用プログラムが附属しています。cardinfo は Forms
Library と呼ばれるパブリックドメインのユーザーインターフェース・ツール
キットを使っているので、cardinfo をインストールするためには Forms
Library が必要になります。Forms Library のバイナリは
cb-iris.stanford.edu の
/pub/pcmcia/extras/bxform-0.61.tgz です。このパッケージの
Makefile には小さなバグがあり、``ln -s'' で始まっている行の最後に
は ``; fi'' を付け加える必要があります。
pcmcia-cs-2.6.2.tgz を /usr/src などの適切なディレク
トリで展開します。
make.options にある設定があなたのマシンの設定にあっているか確認し
ます。``make prereq'' とすれば、システムの設定がカードサービス・
システムをインストールするのに適切かどうかチェックをします。
``make all''、引き続いて ``make install'' を実行すれば、カー
ネルモジュールとユーティリティプログラムがコンパイル、インストールされ
ます。カーネルモジュールは/lib/modules/<version>/pcmcia
ディレクトリにインストールされます。cardmgr と cardctl プロ
グラムは/sbin/ にインストールされます。cardinfo は
/usr/bin/X11 にインストールされます。
設定ファイルは /etc/pcmcia ディレクトリに保存されます:
もし、以前のバージョンをインストールしていれば、新しい設定ファイルは
``.N'' の拡張子が付いたファイルとしてインストールされます。自分
で設定ファイルを置きかえるなり書きかえるなりしてください。
もしどのような PCMCIA コントローラー・チップが使われているかわからなければ、
cardmgr/ サブディレクトリにあるprobe コマンドで調べるこ
とができます。コントローラーには大きく Databook TCIC-2 と Intel i82365SL
互換チップの2 つのタイプがあります。
cardmgr というユーザーレベルのデーモンがカードの着脱を管理してい
ます。このプログラムは、機能的には初期の PCMCIA リリースに入っていた
Barry Jaspan 作のpcmciad とよく似ています。cardmgr は
/etc/pcmcia/configから既知のPCMCIA カードの設定について読みこ
みます。このファイルには PCMCIA デバイスを使うために割りあてるリソース
についても記述するので、あなたのシステムにあわせて変更する必要があるか
も知れません。このファイルについての詳細はpcmcia の man ページを
ご覧ください。
/etc/rc.d ディレクトリにインストールされる rc.pcmcia というスクリプト
は PCMCIA システムの起動と終了を管理します。``make install-etc''
を実行すれば、probe コマンドを使ってあなたのコンピュータが使って
いるコントローラーの種類を識別し、rc.pcmcia を適切に修正します。
/etc/rc.d/rc.pcmcia を起動するために、システムのスタートアッ
プファイルである /etc/rc.d/rc.M に以下の 1 行を加えて下さい:
/etc/rc.d/rc.pcmcia start
ごくまれに probe コマンドで自動的にコントローラーを設定できないこ
とがあります。Tadpole P1000 を始めとするいくつかの PCI ベースのラップ
トップ機は Cirrus の特殊な PCI-PCMCIA ブリッジチップを使っているため、
probe コマンドで検出できません。もし、この種のシステムを利用され
ているならば、rc.pcmcia を手動でインストールする必要があります。
カードサービス・システムは他の標準的なデバイスが既に使っている IO ポー
トと割り込みは自動的に回避しようとします。この機能は、Linux 用のドライ
バが存在する全てのデバイス --シリアルポートやパラレルポート、IDE ドラ
イブ、サウンドカードなど -- で働くはずです。もし Linux でサポートされ
ていないデバイスの場合、そのデバイスが利用している IO ポートなどは
/etc/pcmcia/config で、明示的に使わないように設定する必要があ
るかも知れません。
ある種の PCMCIA コントローラーは、特定のシステムでしか使えない、あるい は特定のシステムでは使えないような、特殊な機能を持っている場合がありま す。この種の機能が使えるか否かは、ソケットドライバには検知することがで きません。使っているドライバの man ページをチェックして、どのようなオ プション機能が利用できるか調べてみてください。
低レベルのソケットドライバ、tcic と i82365 はバスタイミング
を設定するためのパラメータを多数持っており、特に高速なプロセッサを使っ
たシステムではそれらを調整する必要があるかも知れません。タイミングが原
因となる問題としては、カードが認識されない、負荷が高いとハングアップす
る、エラーがよく起きる、パフォーマンスがあがらない、などがあります。詳
細については関連のマニュアルを見てもらうこととして、ここでは簡単な説明
にとどめます。
freq_bypass フラグで、
このフラグを設定することで、PCMCIA のバスクロックを全てのオペレーショ
ンについて何分の一かに減速させます。
fast_pci というフラグがあり
ます。もし PCI バスのスピードが 25MHz 以上の場合、このフラグをセットす
る必要があります。
async_clock フラグがあり、PCMCIA のバスとホストのバスのサイクルの
相対的なクロック周波数を変更します。このフラグをセットすれば、いくつか
のオペレーションについて余分のウエイトサイクルが入ります。
pcmcia_core モジュールには cis_speed パラメータがあり、
PCMCIA カードのカード情報領域(CIS:Card Information Structure)にアクセ
スするスピードを変化させます。バスクロックの速いシステムではこのパラメー
タを多くする(すなわち、カードへのアクセス速度を遅くする)といいかも知れ
ません。これら全てのオプションは /etc/rc.d/rc.pcmcia ファイルを修正す
ることで設定できます。例えば、
# i82365 または tcic の場合
PCIC=i82365
# ソケットドライバのタイミングに関するパラメータ
OPTS="async_clock=1"
NEC Versa M など、Cirrus 製のコントローラーを使っているシステムでは、
BIOS が起動時にPCMCIA コントローラーを特別のサスペンドモードに設定して
します。そのため、probe コマンドが PCMCIA コントローラーを検出で
きなくなります。このような場合、/etc/rc.d/rc.pcmcia を手で以
下のように修正します。
# i82365 か tcic の場合
PCIC=i82365
# ソケットドライバのタイミングに関するパラメータ
OPTS="wakeup=1"
ARM Pentium-90 か Midwest Micro Soundbook Plus 製のラップトップを使っ
ているなら、``freq_bypass=1 cmd_time=8'' として、PCMCIA のバスサ
イクルを遅くします。この設定は他の PCI 対応でない Cirrus チップ(PD672x
シリーズなど)を使ってる高速なシステムでも利用できます。
Slackware 2.2 をベースに、PCMCIA をサポートした 1.44MB のブート FD と
ルート FD を作りました。pcboot14.gz と pcroot14.gzというファ
イル名でcb-iris.stanford.edu と sunsite.unc.eduにあります
(
1.3
節を参照してください)。root FD には
cardmgr, 基本的な PCMCIA モジュール、全てのネットワークドライバが
入っています。これらを使うには Slackware のインストールに慣れているほ
うがいいでしょう。PCMCIAドライバは自動的にロードされ、インストールの手
順は、PCMCIA でないネットワークカードを用いた場合と同じです。ただし、
Slackware のルート FDにはネットワークで使うユーザー用のプログラム
(ftp, telnet等)が一切入っていないことに注意してください。こ
の FD に入っているネットワーク用のコマンドはNFS マウントするのに必要な
ものだけです。
もしこれらの FD を IBM Thinkpad で使う場合、pcboot FD から起 動する際、lilo に ``floppy=thinkpad'' というオプションを指定します。
インストールが終了すると、PCMCIA を使わない設定の root ディスク [
訳注 root partition のこと] ができあがります。ブート FD とルート
FD から必要なプログラムをハードディスクにコピーして、ネットワークを使
えるようにすることも不可能ではありませんが、手動で全てを正しい場所に置
くことは少々トリッキーな手段が必要です。新しくインストールした Linux
をハードディスクから起動して、Slackware のブート FD を /mnt
にマウントし、
cp /mnt/vmlinuz /vmlinuz
rootflags /vmlinuz 1
lilo
とします。次に Slackware のルート FD を /mnt にマウントして、
cp /mnt/sbin/cardmgr /sbin
(cd /mnt ; tar cf - etc/pcmcia lib/modules) | (cd / ; tar xf -)
とし、/etc/pcmcia/config を修正して、ネットワーク用カードドラ
イバに対する ``start'' と ``stop'' コマンドのコメントを外します。
/etc/pcmcia/ntwork.sample を /etc/pcmcia/network に 名前
を変えて、あなたのシステムの設定に合うように修正します。Slackware のルー
ト FD にある /etc/rc.local のように、/etc/rc.d/rc.M
を手で修正して、PCMCIA の起動ファイルを自動的に実行するようにしておき
ましょう。
インストール元に新しいソースファイル一式があるなら、NFS マウントし ている間に最新のカーネルと pcmcia のソース、モジュール・ユーティリティ などを手元のハードディスクにコピーしておく手もあります。リブート後、新 しいカーネルをコンパイルして PCMCIA を通常の方法でインストールします。
Slackware の boot/root FD は多くのシステムで利用できるように設定されて
いますが、全ての状況に対応できるわけではありません。もし、これらの FD
の PCMCIA の設定が問題を起したら、あらかじめ用意されているツールが皆無
なので解決は難しいでしょう。cardmgr が動いていると
/etc/stab に使用中のカードが記録されています。起動時に PCMCIA
モジュールから出力されるメッセージは、あっという間にスクロールしてしま
うので読みとることは難しいでしょう。その場合、手で
``/etc/rc.d/rc.pcmcia restart'' とやれば、有益な情報が得られ
るかも知れません。
pcboot/pcroot に用意した PCMCIA は、Slackware をインストールするためだ けのものです;これらを使って PCMCIA 全体をソースからコンパイルしないで 済まそう、というのは賛成できません。pcboot/pcroot に入っている PCMCIA はあまり頻繁にバージョンアップしていませんし、重要な機能をいくつか欠い ています。
たいてい、ソケットドライバ(i822365 か tcic) はカードの状態変
化を検出するために必要な割り込みを自動的に見つけます。しかし、いくつか
のインテル互換のコントローラー(例えば IBM ThinkPad が使っているCirrus
のチップ)ではこの機能がうまく働きません。このような場合、i82365
ドライバは他のデバイスが既に使っている割り込みを選択してしまうことがあ
ります。
i82365 ドライバでは irq_mask オプションを使って、検出対象と
する割り込みを制限することができます。このオプションでマスクした割り込
みは PCMCIA カードが選ぶ割り込みの対象からも、カードの状態変化のモニタ
リングの対象からも外れます。tcic ドライバでは cs_irq オプショ
ンを使ってカードの脱着を監視する割り込みを明示的に指定できます。
もし使える割り込みが見つからなければ、呼出し(poll)モードで使うこともで
きます。i82365 も tcic も poll_interval=100 オプション
を受けつけ、1 秒に 1 度呼出しをかける設定にできます。