悪名高きVT6102チップに挑む

最近の NIC は新品でもかなり安いものがあります。以前は秋葉原に行ってしまうとつい、ワゴンの中の訳のわからないヤツを買ってしまったりしまったものです。そんなとき目印となるのは通称「カニチップ」といわれる、カニの絵の書いてあるヤツでした。

ところが、いつぞやから新品でも恐ろしく安い 100BASE のが見られるようになりました。気にはなってもなかなか手を出せませんでしたが、ある時思い切って買ってみました。ホントはよく調べてからにすればいいものを箱についていた「Linux OK !」というのにふらふらっといってしまったのです。コレガの FEther PCI-TXL なんと2000円しない、安い!しかし、これに搭載されている VIA VT6102 というチップが曲者だったのです。さて、以下は Laser5 6.4 でのお話

とりあえず自動認識に任せてみました.....ダメ、ま、そんなもんでしょ。というわけでコレガのホームページへ。モジュールは via-rhine.o の最新バージョンか。ふむ、via-rhine.o は組み込まれているけど、どーせ最新でないでしょ。じゃ、 /etc/modules.conf 書いてもダメだなと思って、ネットをサマヨッた結果、Scyldで以下を入手(このページにこれら全部必要なんだもんね、と書いてある)、それまでに VT6102 で苦労する人々の叫びに多数出会ったので、ちょっと不安。

pci-scan.h
pci-scan.c
kern_compat.h
via-rhine.c

こいつらを /usr/src/via-rhine というディレクトリを作ってそこに置いて、移動後、説明どーりに

gcc -DMODULE -D__KERNEL__ -Wall -Wstrict-prototypes -O6 -c via-rhine.c -I/usr/include
gcc -DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -Wall -Wstrict-prototypes -O6 -c pci-scan.c -I/usr/include

でコンパイルして via-rhine.o, pci-scan.o を作成しました。多少警告が出たけど、見なかったことにする。

※ちなみに「 -O6 」の 'O'はアルファベットの"おー"です。"ゼロ"ではありません。プログラマ以外の方は gcc というコンパイラにはあまり縁がないかもしれませんので、一応説明しますと、ハイフン直後の1文字は必ずアルファベットになります。この1文字が大文字の場合、これでコンパイルオプションの種類を指示し、それ以降でその内容を指示していることがほとんどです(全部かも)。

で、こいつらを /lib/modules/`uname -r`/net/ へ投げ込みました。ここまでは順調。

しかーし、

depmod -a で依存解決しようとすると

Unresolved symbol.....

やられた.....カーネル再構築かなあ.....ちなみに、カーネルは 2.2.16 でした。他に何も浮かびませんでしたので、おとなしくカーネル再構築することにしました。

で、再構築した新しいカーネルで起動しましたが、自動認識はしない。そーだった、んもー!ということで、

/etc/modules.conf に

alias eth0 via-rhine

を追加( .o は書きません)。

さらに

/etc/rc.d/rc.modules

が無かったのでモード 755 で作成し、それに

#!/bin/sh
modprobe pci-scan.o

と書いて、ネットワーク再起動でもいいが気前良くリブート!

はあ、動いた。動きもしないヒトも多いようだから、まあよし、と言いたいところだが、とんだ「Linux OK!」でした(^^;)。

◆追記(2001/06/05)

Plamo Linux 2.1 でもやってみました。自分の場合カーネルのコンフィグレーションを多少いじりました(via-rhineをとりこむように)が、同様の方法で成功です。ちなみに /etc/rc.d/rc.modules はすでにありました(Plamo では無いと困りますからね)。


トップページ