2 コンパイル、インストール、設定

この章の目次へ

2.1 準備とカーネルの設定

カードサービス・システムの最新バージョンを使うには 1.2.8 以上のカーネ ルが必要です。PCMCIA 使うためにカーネルにパッチをあてる必要はありませ ん。モジュール・ユーティリティも新しいものが必要ですが、お手持ちの insmod のマニュアルページに、[symbol=value ...] という文法に ついての説明があれば、十分新しい insmod です。

PCMCIA パッケージにはカーネルのソースを参照している部分があるので、コ ンパイルする際にはコンパイル済のカーネルイメージだけでなく、カーネルの ソースツリーそのものが必要です。

最新のカーネルのソースとパッチは、sunsite.unc.edu/pub/Linux/kernel/v1.2tsx-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.2 インストール

バージョン 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 ディレクトリにインストールされます。cardmgrcardctl プロ グラムは/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 を手動でインストールする必要があります。

2.3 各マシンごとの設定オプション

カードサービス・システムは他の標準的なデバイスが既に使っている IO ポー トと割り込みは自動的に回避しようとします。この機能は、Linux 用のドライ バが存在する全てのデバイス --シリアルポートやパラレルポート、IDE ドラ イブ、サウンドカードなど -- で働くはずです。もし Linux でサポートされ ていないデバイスの場合、そのデバイスが利用している IO ポートなどは /etc/pcmcia/config で、明示的に使わないように設定する必要があ るかも知れません。

ある種の PCMCIA コントローラーは、特定のシステムでしか使えない、あるい は特定のシステムでは使えないような、特殊な機能を持っている場合がありま す。この種の機能が使えるか否かは、ソケットドライバには検知することがで きません。使っているドライバの man ページをチェックして、どのようなオ プション機能が利用できるか調べてみてください。

低レベルのソケットドライバ、tcici82365 はバスタイミング を設定するためのパラメータを多数持っており、特に高速なプロセッサを使っ たシステムではそれらを調整する必要があるかも知れません。タイミングが原 因となる問題としては、カードが認識されない、負荷が高いとハングアップす る、エラーがよく起きる、パフォーマンスがあがらない、などがあります。詳 細については関連のマニュアルを見てもらうこととして、ここでは簡単な説明 にとどめます。

これら全てのオプションは /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 シリーズなど)を使ってる高速なシステムでも利用できます。

2.4 PCMCIA ネットワークカードを使い NFS 経由で Linux をインストールできるでしょうか?

Slackware 2.2 をベースに、PCMCIA をサポートした 1.44MB のブート FD と ルート FD を作りました。pcboot14.gzpcroot14.gzというファ イル名でcb-iris.stanford.edusunsite.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 はあまり頻繁にバージョンアップしていませんし、重要な機能をいくつか欠い ています。

2.5 なぜ私のシステムはカードの装着に反応しないんでしょう?

たいてい、ソケットドライバ(i822365tcic) はカードの状態変 化を検出するために必要な割り込みを自動的に見つけます。しかし、いくつか のインテル互換のコントローラー(例えば IBM ThinkPad が使っているCirrus のチップ)ではこの機能がうまく働きません。このような場合、i82365 ドライバは他のデバイスが既に使っている割り込みを選択してしまうことがあ ります。

i82365 ドライバでは irq_mask オプションを使って、検出対象と する割り込みを制限することができます。このオプションでマスクした割り込 みは PCMCIA カードが選ぶ割り込みの対象からも、カードの状態変化のモニタ リングの対象からも外れます。tcic ドライバでは cs_irq オプショ ンを使ってカードの脱着を監視する割り込みを明示的に指定できます。

もし使える割り込みが見つからなければ、呼出し(poll)モードで使うこともで きます。i82365tcicpoll_interval=100 オプション を受けつけ、1 秒に 1 度呼出しをかける設定にできます。

次の章へ , 前の章へ

この章の目次へ, この文書の目次へ

この文書の最初へ , この章の最初へ