« Gentoo - 「emerge --update」すると書き換えられてしまう設定ファイル | トップページ | [Gentoo Tips] カーネルをアップしたら module-rebuild! これは便利 »

2006年1月25日 (水)

[Tips] Buffalo LPC-CB-CLX & Sugoi Card SGC-X2ULを blacklistを編集せずに使う

  今まで FMV-BIBLO 5100NC/Sに 16bit 10Base-T、ThinkPad240に 16bit 100Base-Tの NICを使っていた。が、それぞれもちっと早くしようと考え、ThinkPad240には CardBus 100Base-Tを、5100NC/Sには ThinkPad240で使っていた 16bit 100Base-Tをあてがう事にした。

  手持ちの CardBus 100Base-Tは三つ。

1. Fujitsu FMV-J184 (DEC 21142/43)
2. Buffalo LPC-CB-CLX (Realtek RTL-8139/8139C/8139C+)
3. Sugoi Card SGC-X2UL [LAN+USB2.0複合カード] (Realtek RTL-8139/8139C/8139C+)

FMV-J184は /etc/pcmcia/configに、

card "Fujitsu FMV-J184 Fast Ethernet"
  version "FUJITSU", "LAN Card(100BASE-TX)(FMV-J184)"
  bind "tulip_cb"

とあるから何にもしなくても動く。Sugoi Card SGC-X2ULは先々のお楽しみ。

  FMV-J184はカードにアダプターケーブルを付けるタイプで昔の言う所の「豚のしっぽ」付き。この手のはカードのコネクタ部分を破損しやすい。
  一方、本題の Buffalo LPC-CB-CLXは最近中古ショップで \1,000-で買った物。出っ張りが気になるものの、カードに直接 Ethernetケーブルを接続出来て事故に対して少々安心感。買ってから一度も使ってないこともあり、これを試してみた。

  ネットで検索すると色々情報が出てくるが、LPC-CB-CLXは一年前まで動かすのに苦労したカードの模様…。かつ、その解決策は「8139cpがロードされない様に /etc/hotplug/blacklistに登録して…」との事。さて、どうなるか…。
  …っとやったら別方法(と言うほど大袈裟でもないが)でスッキリ簡単だったので、以下メモ。

インストール
  まずはカードを挿してみてそのままでは動かないことを確認(笑)。次に使われているチップを調べる為に lspciを実行。

# lspci
  :
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL-8139/8139C/8139C+ (rev 10)

なるほど、話しの通り Realtek RTL-8139の様だ。

  次に Sugoi Card SGC-X2ULは、

01:00.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 61)
01:00.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 61)
01:00.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 62)
01:00.3 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL-8139/8139C/8139C+ (rev 10)

同じ Realtekだった。
  ちなみに、CardBusのカードの中に二つのチップを搭載する場合、規格上ブリッジチップを入れないといけないのだが、バス番号が #01だから入ってない!?。
  いや…、直結で作ればデバイス番号で別れる筈だが、これはファンクション番号で別れている。っと言うことは何らかの制御チップが入っていて、それが別チップを一つのデバイスに見せているのだろう。
  ふむ、だからこのカードのレスポンスは遅いのか…。

  次に「pcmcia-csでサポートされているのか?」と /etc/pcmcia/configを grepするが引っかからず。となると、カーネル内のドライバーを使うしかない。
  よって、make menuconfig。尚、カーネルは Gentoo Linuxの linux-2.6.15-gentoo-r1

[*] Network device support
   Ethernet (10 or 100Mbit)  --->

    [*] EISA, VLB, PCI and on board controllers
    < > RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)
    
<M> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support
    [*]  Use PIO instead of
MMIO
    [ ]  Support for uncommon RTL-8139 rev. K (automatic channel equalization)
    [ ]  Support for older RTL-8129/8130 boards
    [ ]  Use older RX-reset method

見ての通り、RTL-8139には二つのドライバーが選択出来る。

  最初の、「EXPERIMENTAL」と書かれているのはその通り実験的なドライバー。8139cpはこれをチェックするとビルドされる。
  二番目の「RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support」とあるのが 8139tooドライバー。

  勿論、必要なのは 8139tooであるから、最初の 8139cpはチェックせずに、8139tooのみモジュール指定。ちなみにその下の「MMIO」とは Memory mapped I/Oで、指定した方が速くなる。その次の「automatic channel equalization」ってのは…(?_?)。珍しいって書いてあるから、多分該当しないだろうと判断。
  残り二つはさらに古いチップ用なのでチェックしない。

  後はカーネルをビルドするだけで、Buffalo LPC-CB-CLXと Sugoi Card SGC-X2ULはあっさり動いた。そう、/etc/hotplug/blacklistを編集必要もなく…。推察するに、過去事例は実験的ドライバーも一緒にビルドしたためのトラブったのではないか?。

まとめ
  多分、FedoraCoreやら Debian等のディストリビューションが提供するバイナリカーネルは 8139cpも有効でビルドされているのだろう。悪いことに、8139tooが無効なままビルドされているのかもしれない。
  「動かない」方は最初に、

# find /lib/* -name 8139*
  /lib/modules/2.6.15-gentoo-r1/kernel/drivers/net/8139too.ko
  /lib/modules/2.6.9-gentoo-r9/kernel/drivers/net/8139too.ko
  /lib/modules/2.6.9-gentoo-r9/kernel/drivers/net/8139cp.ko

と、現在使っているカーネルが 8139tooドライバーを持っているか確認されては如何だろうか?

  後は、カーネルを再ビルドする事を苦にしない方なら前述の手順で再ビルドすればいいだろう。が、8139tooドライバーがあり、不慣れでカーネルを再ビルドしたくないのなら相変わらず /etc/hotplug/blacklistを編集する必要があるだろう。勿論、編集する方が簡単だが…。
  その場合、

# nano -w /etc/hotplug/blacklist
        :
    # 8139cp.o is listed only once in modules.pcimap. And for exactly this device
    # there is also an entry with 8139too. I have one bugreport that 8139cp does
    # not work for this card, therefore i add it to the blacklist.
    8139cp

これの出典は http://wptl12.physik.uni-wuppertal.de/zaurus/blacklist
  このコメントを読むと、この手が使えるのは /lib/modules/2.6.15-gentoo-r1/modules.pcimapに 8139cpが一つだけの場合の模様。複数あった場合、modules.pcimapの編集が必要かもしれない。

  他、blacklistを使う場合の情報源。

■2 NICの認識 (3)

[pc][linux]Melco LPC-CB-CLX on Debian Sarge

■3 NICの認識

/etc/hotplug/blacklistは廃止!?
  その blacklistファイルだが、2.6.13以降のカーネルでは使えないのかもしれない(私は使ってないので判らない)。検索していたら以下の気になるニュースを見つけた。

Debian ウィークリーニュース - 2005年10月11日
hotplug の blacklist が廃止に。
  Marco d'Itri さんが、udev に統合された新しい hotplug および coldplug サブシステムは、それ自身による module の blacklist を持ってはいますが、
以前の module の blacklist は扱えなくなった、と報告しました。後に彼は、/etc/hotplug/blacklist.d/ にあるユーザが用意した blacklist ファイルのサポートを modprobe に実装したと付け加えました。

  従来は devfsが使われていた。が、2.6.13から devfsは廃止され、udevに以降した。結果、blacklistは /etc/hotplug/blacklistから /etc/hotplug/blacklist.d/*に変更されたと言うのだが、一体どんなファイルをおけばいいのだろう…(?_?)。

  とにかく blacklistを使いたくて、2.6.13以降のカーネルで、動かない人は、

# cp /etc/hotplug/blacklist /etc/hotplug/blacklist.d/blacklist

とするといいのかもしれない(憶測・推測)。

|

« Gentoo - 「emerge --update」すると書き換えられてしまう設定ファイル | トップページ | [Gentoo Tips] カーネルをアップしたら module-rebuild! これは便利 »

コメント

非常に参考になる記事でした。
もう自暴自棄になっていたもので・・・
なんか他にも色々面白そうな記事がありますね。
お気に入りに追加して読んでみようと思います。

今回のKernelビルド・・・これはGentoo Linuxを使っていないと無理という事でしょうか・・・。
まぁ、うちのDebianがLPC-CB-CLXを使えなかった理由は他にあったんですけどね。

IRQの競合問題に引っかかっていました。
# cat /proc/interruputs
で、IRQ10をNIC,PCMCIAカードスロットx2で占有していまして・・・
dmesgには「another device locked irq 10 ? 」みたいなメッセージが。

投稿: 獅堂 光 | 2006年1月27日 (金) 02時18分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/55683/8334156

この記事へのトラックバック一覧です: [Tips] Buffalo LPC-CB-CLX & Sugoi Card SGC-X2ULを blacklistを編集せずに使う:

« Gentoo - 「emerge --update」すると書き換えられてしまう設定ファイル | トップページ | [Gentoo Tips] カーネルをアップしたら module-rebuild! これは便利 »