5. pcmcia-cs & corega FEther PCC-TXD(やっと成功)

MobileMultiCARDじゃラチがあかないし・・・

いつまでも,3章の使えもしない Panasonic MobileMultiCARD TO-PDL9610 に手間取ってるわけにいかない.ドライバを自力作成できるわけじゃないし・・・

とゆーわけで, Linux でちゃんと使えるスナオな PC カードを買ってくることにする.といっても,我が家はとってもイナカにあるので, PC カードを売っているような電気屋さんまで出向くのがまた一苦労なのだが.

電気屋さんに出向いたら出向いたで,こんどは PC カードがいっぱいありすぎてどれがいいのかわからなくなる・・・

いろいろと見比べた挙句,「 Linux OK ! 」というペンギンマークのついた,

corega FEther PCC-TXD

というのを購入した.

何はともあれ, Linux を起動してカードを入れてみることにする.

「ブーッ」

あうう・・・

cardctl コマンドを実行してみると,

# /sbin/cardctl ident

Socket 0 :
no product info available
Socket 1 :
product info : "corega K.K.", "corega FEther PCC-TXD", "",""
manfid : 0x1234, 0x5678
function : 6 (network)

# /sbin/cardctl status

Socket 0 :
no card
Socket 1 :
5V 16-bit PC Card
function 0 : [ready]

だそーだ.

といっても,前の使えなかった Panasonic のカードでも,このくらいの情報はちゃんと出てたんだよな.

/etc/pcmcia/config を見てみると, "corega FastEther PCC-TX" とか, "FEther PCC-TXF" とか,なんか似たようなのは入っているけど,そのものずばりの "corega FEther PCC-TXD" ってのは入ってない.こりゃーまた失敗したかも・・・

ま,いちおう "corega FEther PCC-TXD" のエントリを追加してみるか.

/var/log/messages によると・・・

localhost cardmgr[357]: initializing socket 1
localhost cardmgr[357]: unsupported card in socket 1
localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
localhost cardmgr[357]: product info: "corega K.K.", "corega FEther PCC-TXD", "", ""
localhost cardmgr[357]: manfid: 0x1234, 0x5678 function: 6(network)

なんか, manfid の数字の並びが,てきとーに割り当ててみましたって感じでとっても気になるんですけど・・・

card "corega FEther PCC-TXD"
version "corega K.K.", "corega FEther PCC-TXD"
bind "pcnet_cs"

/etc/pcmcia/config に以上 3 行のエントリを追加した上で, pcmcia をリスタート.

# /etc/rc.d/init.d/pcmcia restart
Shutting down PCMCIA services: cardmgr modules.
Starting PCMCIA services: modules cardmgr.

どきどきしながら,カードを挿してみる・・・.

「ピー・ピー」

うわっ! 「ブー」じゃないっ!

つーことは・・・認識したのねっ! こんな簡単なものだったなんて!

/var/log/messages を見てみると,

localhost cardmgr[1096]: initializing socket 1
localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
localhost cardmgr[1096]: socket 1: corega FEther PCC-TXD
localhost cardmgr[1096]: executing: 'modprobe 8390'
localhost cardmgr[1096]: executing: 'modprobe pcnet_cs'
localhost kernel: cs: IO port probe 0x0410-0x047f: clean.
localhost kernel: cs: IO port probe 0x0490-0x04ff: clean.
localhost kernel: cs: IO port probe 0x0800-0x08ff: clean.
localhost kernel: cs: IO port probe 0x0a00-0x0aff: clean.
localhost kernel: cs: IO port probe 0x0c00-0x0cff: excluding 0xc00-0xc07
localhost kernel: eth0: NE2000 Compatible: io 0x320, irq 11, hw_addr 00:90:99:2A:F0:94
localhost cardmgr[1096]: executing: './network start eth0'

す・・・すばらし〜〜〜っ!

クロスケーブルで接続

メビウスくん (VineLinux) に挿した corega の PC カードとエンデバーくん(MS-Windows98)に内蔵の Realtek をクロスケーブルでつなぐ.いまどきハブを使わないでクロスケーブルでピアツーピアをするような人も少ないんじゃないだろうか.

ストレートケーブルは 1 〜 8 の端子全部,ストレートにつながっているだけだけれど,クロスケーブルはそれぞれ, 1 が 3 と, 2 が 6 とつながってクロスしている.それぞれの端子がどういう意味を持つのか知らないのが悲しいところだけれど.そーいやこの端子,全部使ってるわけじゃなくて最低 4 本つながってれば用は足りるって話どっかで聞いたことがあるよーな・・・

MS-Windows と Linux をつなぐのはいろいろめんどーくさいことが必要だと思うけれど,すくなくとも ping くらいはすぐできるんじゃないだろーか.できればいいなあ.

さて, ping を打つためには IP アドレスの設定は最低限しておかなければならないはず・・・というわけで,「 Linux 各種設定×活用徹底ガイド」を見ると,こんなふうに書いてある.

PCMCIA-CS には,スキーマ (scheme) という概念があります.スキーマは,簡単にいうと「いくつかの識別子を持った設定ファイル上の見出し」であり, PC カードのジャンル別に用意されている設定ファイル (*.opts)上で定義します.

・・・???

・・・簡単すぎて全然わからないっ!!

よくわからないけど,とにかく, NIC の場合は "network.opts" というファイルに IP アドレスなんかを書くらしい.で,この network.opts の設定によっては,複数の IP アドレスを使い分けたりってのができるんだそうだ.

そこで,本を参考に,自分の network.opts を作ってみる.

case "$ADDRESS" in
myhome,*,*,* | default,*,*,*)
BOOTP="n"
IPADDR="192.168.0.1"
NETMASK="255.255.255.0"
NETWORK="192.168.0.0"
BROADCAST="192.168.0.255"
DOMAIN="myhome.or.jp"
;;
esac

ちなみに, network.opts を書きつつも,「 BOOTP って何?」という根本的な疑問があったりして・・・まあいいや.

"myhome" ってのがスキーマ名で,スキーマ名から ";;" の部分をいろいろ書いてスキーマを使い分ける.まあわたしの場合,ネットワークはひとつしかないんだから, "myhome" とかって書く必要は本当はないんだけど.

# /sbin/cardctl scheme myhome

で,スキーマの切り替え. eth0 をチェックし,スキーマを 'myhome' に切り替えるって言うメッセージが表示される.

続いては, MS-Windows のネットワーク設定.これはマウスクリック一発で,簡単でよろしい. TCP/IP のプロパティで設定するだけ.

IP アドレス: 192.168.0.2
サブネットマスク: 255.255.255.0

さあ ping だ!

さっそく,メビウスくんからエンデバーくんめがけ, ping を打ってみる.

# ping 192.168.0.2

PING 192.168.0.2 (192.168.0.2): 56 data bytes
ping: sendto: ネットワークに届きません
ping: wrote 192.168.0.2 64 chars, ret=-1

・・・あれ?

# ifconfig

で見てみても,肝心の eth0 がなく, lo しか出てない・・・?

エンデバーくんからメビウスくんめがけて ping してみてももちろん駄目.タイムアウト発生である.

と,いうわけで・・・

困ったときは,あの MS-Windows の必殺ワザを使ってみよう.そう,すなわち・・・

「とりあえず再起動」

再起動後,メビウスくんの Linux からエンデバーくんの MS-Windows めがけて・・・

# ping 192.168.0.2

PING 192.168.0.2 (192.168.0.2): 56 data bytes
64バイト応答 送信元 192.168.0.2: ICMP_Seq=0 TTL=128 時間=1.0ミリ秒

やたっ!

# ifconfig

の結果にも,ちゃんと eth0 入ってるし・・・つーか,もしかしたら,再起動なんかしなくても,単に

# ifconfig eth0 up

やればよかったんじゃ,という気も・・・

念のため,逆の, MS-Windows から Linux めがけても試みる.

>ping 192.168.0.1

Reply from 192.168.0.1: bytes=32 time<10ms TTL=255

もちろん成功.

telnet & ftp ...?

・・・といっても,ぢつは, telnet と ftp については何もする必要がなかった.どちらのサーバも,入れた覚えもないのに勝手に動いてくれていたのである. MS-Windows から, telnet とか ftp とか入れただけでつながってしまった・・・.

>telnet 192.168.0.1

Vine Linux 2.0 (Sociando-Mallet)
Kernel 2.2.14-1vl6 on an i586
login:
...

>ftp 192.168.0.1

Connected to 192.168.0.1
220 Mebius FTP server (Version wu-2.6.0(1) Thu Oct 21 12:27:00 EDT 1999) ready.
User (192.168.0.1:(none)):
...

    5

To HOME