cardbus の NIC
現在, わしの仕事場はこうなっておりまして, この組み合せでのミソは,ということで, 三つのマシンに作業を効率良く振り分けられていると 思います. 仕事上, 仕方なく Windows を使わなければいけない人でよくある パターンは, 一台のマシンに VMWare を突っ込んで, というものでしょうが, その場合は X Window System は同じマシン上で動いているわけですから 速度的なストレスは感じないでしょう. しかし今回の組み合せの場合, 1 号機と 2 号機の間の通信が律速になります.
- キーボード, マウス, モニタは 1 号機のみを使用.
- 実質的なデスクトップ環境は 2 号機の debian. これは 2 号機の X クライアントと 1 号機の X サーバという組み合せで実現.
- Windows 環境の必要なものは 1 号機をネイティブに使用. 計算機シミュレーションは 3 号機の SuSE.
で, これまでわしは corega Ether PCC-TD を使っていたのですが, これは価格が 2000 円くらいと安く, 「Linux 対応」などというシールも貼ってあるものですから, 安心して?使っておりました. しかし, こいつは 10 Base なので, 遅い. とくに, 2 号機の Mozilla をぶん回したりすると, Mozilla の せいではないのに, とろく感じてしまう. 因みに, ファイルの転送や ssh を使う分には 10 Base で十分だと 思うのは気のせいでしょうか. 問題は X なんすよ.
それはともかく, 先日秋葉原で corega FastEtherII CB-TX が 2000 円で売っていたので, 買ってしまいました. こいつは 100 Base です.
ところが, CB-TX は Cardbus であることと, バリエーションが多く決定打がどれか良くわからない tulip ドライバ を使わなければならないため, Linux で使うのには一工夫が必要です. 因みに, corega 社の PC-UNIX 対応表 によると kernel 2.2 ではメーカー側が対応してくれているようですが, 2.4 の記述はありません.
kernel 2.4 では, pcmcia_cs がカーネル本体に取り込まれており, これまで使っていた PCC-TD はそのドライバで動いておりました. 因みに, potato で kernel 2.4 に上げるためのページ Packages to run kernel 2.4.x on Debian potato. kernel 2.4 では, cardbus の pcmcia カードは hotplug という仕組みで pcmcia_cs を経由せずに認識されるようです. kernel の make config 時に hotplug を有効にすること (CONFIG_HOTPLUG 周辺), それから hotplug というパッケージ ( ここに .deb あり) を入れて /sbin/hotplug を使う, あるいは murasaki (another HotPlug) を使う必要があります.
で, そのときの dmesg
Jul 16 15:44:04 was2 kernel: cs: cb_alloc(bus 2): vendor 0x1011, device 0x0019 Jul 16 15:44:04 was2 kernel: PCI: Enabling device 02:00.0 (0000 -> 0003) Jul 16 15:44:04 was2 kernel: Linux Tulip driver version 0.9.15-pre9 (Nov 6, 2001 ) Jul 16 15:44:04 was2 kernel: PCI: Setting latency timer of device 02:00.0 to 64 Jul 16 15:44:04 was2 kernel: tulip0: EEPROM default media type Autosense. Jul 16 15:44:04 was2 kernel: tulip0: Index #0 - Media MII (#11) described by a 21142 MII PHY (3) block. Jul 16 15:44:04 was2 kernel: tulip0: Index #1 - Media AUI (#2) described by a 2 1143 reset method (5) block. Jul 16 15:44:04 was2 kernel: tulip0: Index #2 - Media MII 100baseT4 (#15) descr ibed by a(6) block. Jul 16 15:44:04 was2 kernel: tulip0: ***WARNING***: No MII transceiver found! Jul 16 15:44:04 was2 kernel: eth0: Digital DS21143 Tulip rev 65 at 0x4000, 00:00 :F4:62:39:4B, IRQ 9. Jul 16 15:44:04 was2 cardmgr[227]: socket 0: CardBus hotplug device Jul 16 15:44:04 was2 /etc/hotplug/pci.agent: ... no modules for PCI slot 02:00.0 Jul 16 15:44:04 was2 /etc/hotplug/net.agent: invoke ifup eth0
なんだか, 「No MII transceiver found!」と怒られています. ifconfig でも eth0 にネットワークに接続されていないことが判ります. どうやら, kernel 2.4 に含まれる tulip ドライバではこのカードは 動かないようです. こちらに, Linux Ethercard Status, Diagnostic and Setup Utilities tulip-diag.c というデバッグ用のツールがあります. pcmcia-cs: tulip_cb driver にも情報が.
結局, kernel 2.4 に pcmcia_cs を別個につけることで, 解決しました. pcmcia-source 3.1.33-5.bunk のソース中の tulip_cb.c に tulip_cb.c.diff のパッチをあてます.
/etc/pcmcia/config.opts は
card "Corega PCC-TD Ethernet" version "corega K.K.", "corega Ether PCC-TD" bind "pcnet_cs" card "Corega FastEther CB-TX Ethernet Card" manfid 0xc00f, 0x0000 bind "tulip_cb"
potato の pcmcia_cs パッケージをそのまま使っていると,
cs: warning: no high memory space available!
と怒られますから, PCMCIA-HOWTO を読んで, /etc/pcmcia/config.opts の
# High port numbers do not always work... include port 0x1000-0x17ff
の部分のコメントをはずし有効にします. すると, こんな感じで syslog
cs: cb_alloc(bus 2): vendor 0x1011, device 0x0019 PCI: Found IRQ 9 for device 00:09.0 cs: cb_config(bus 2) cs: IO port probe 0x0100-0x04ff: excluding 0x170-0x177 0x370-0x377 0x3c0-0x3e7 cs: IO port probe 0x0178-0x036f: clean. cs: IO port probe 0x0378-0x03bf: clean. cs: IO port probe 0x03e8-0x04ff: clean. cs: IO port probe 0x0800-0x08ff: clean. cs: IO port probe 0x0a00-0x0aff: clean. cs: IO port probe 0x0c00-0x0cff: clean. cs: IO port probe 0x1000-0x17ff: clean. fn 0 bar 1: io 0x200-0x27f fn 0 bar 2: mem 0x600c0000-0x600c03ff fn 0 rom: mem 0x60080000-0x600bffff irq 9 cs: cb_enable(bus 2) bridge io map 0 (flags 0x21): 0x200-0x27f bridge mem map 0 (flags 0x1): 0x60080000-0x600c0fff tulip_attach(device 02:00.0) tulip.c:v0.91g-ppc 7/16/99 becker@scyld.com (modified by danilo@cs.uni-magdeburg.de for XIRCOM CBE, fixed by Doug Ledford) eth0: Digital DS21143 Tulip rev 65 at 0x200, 00:00:F4:62:39:4B, IRQ 9. eth0: EEPROM default media type Autosense. eth0: Index #0 - Media MII (#11) described by a 21142 MII PHY (3) block. eth0: Index #1 - Media (no media) (#16) described by a 21143 reset method (5) block. eth0: Index #2 - Media (no media) (#16) described by a 21143 shutdown method (6) block. eth0: MII transceiver #1 config 3000 status 7809 advertising 01e1. eth0: Setting full-duplex based on MII#1 link partner capability of 45e1.
MII transceiver なるものも動いているようです. ifconfig の出力も正常です.
% ifconfig eth0 リンク方法:イーサーネット ハードウェアアドレス **:**:**:**:**:** inetアドレス:***.***.***.*** ブロードキャスト:***.***.***.*** マスク:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RXパケット:1299435 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:616592 エラー:3 損失:0 オーバラン:0 キャリア:3 衝突(Collisions):0
適当なファイルを ftp してみました.
> get OOo_1.0.0_Win32Intel_install_ja.zip Receiving file: OOo_1.0.0_Win32Intel_install_ja.zip 100% 0 ==========================================> 51292909 bytes. ETA: 0:00 OOo_1.0.0_Win32Intel_install_ja.zip: 51292909 bytes received in 4.63 seconds, 10.56 MB/s. Receiving file: OOo_1.0.0_Win32Intel_install_ja.zip 100% 0 ==========================================> 51292909 bytes. ETA: 0:00 OOo_1.0.0_Win32Intel_install_ja.zip: 51292909 bytes received in 55.05 seconds, 909.97 kB/s.
上が CB-TX で, 下が PCC-TD です. 約 10 倍の速さになっており, こんなものでしょうか. xengine 値は, 2400 rpm (Reflection-X, Canopus Spectra F11, モニタは A902M の CRT), 1900 rpm (Reflection-X, ATI All in wonder Radeon, モニタは AS4311U の液晶) くらい出まして, ノート本体 (Vaio SR1G) の液晶ディスプレイでの値 1800 rpm (XFree86) よりも速いくらいです.
今回も, なんとか無駄なハードを出さずに済んだ. ということで.