cyber205の日記: へへへっ、4本とも認識できたぜい。
カーネル再構築して、PCMCIAサポートを外したカーネルを作って
再挑戦してみたのですが、何とか4本とも認識されました。
まずは結果のコピペから。(MACアドレスは一部伏せてます)
root@v30:~# ifconfig -a
ne2: flags=8863 mtu 1500
address: 00:40:XX:XX:XX:XX
media: Ethernet manual
inet 192.168.0.3 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::2XX:XXff:feXX:XXXX%ne2 prefixlen 64 scopeid 0x1
ne3: flags=8822 mtu 1500
address: 00:40:XX:XX:XX:XX
media: Ethernet manual
ne4: flags=8822 mtu 1500
address: 00:40:XX:XX:XX:XX
media: Ethernet manual
ne5: flags=8822 mtu 1500
address: 00:40:XX:XX:XX:XX
media: Ethernet manual
…以下略。
なんと、NetBSDにNE2000を複数挿すと、ただのNE2000がいつのまにか、
NE3000、NE4000、NE5000という謎の高性能LANカードに化けます(嘘
まぁ、今回も最初はトラブって正しく認識できないカードがあったのですが、
その原因は、1枚ほどPnP設定していない、「裏切り者」のせいであることが判明しました。
# IRQ4がコンフリクトしてうまく認識されなかったっぽ。
こいつを交換してやったら、うまくIRQもバラけて認識されたようです。
全員PnPを切れば、それはそれでまた問題ないんでしょうけど、
とりあえず、こいつのBIOSでもちゃんとPnPのオート認識が可能でした。(結果All right!)
1枚認識したら後は捨てる…というLinuxみたいなアルゴリズムを使わない所が凄い。
見付かったデバイスにはきっちりとリソースを割り振って、
すべて自動認識させようとするあたりが無駄に偉いぞNetBSD(^^;;;
# Linuxも追加設定すれば使えるので、実質的にはあまり変わらん。
認識の順番は製品の製造番号か何かで決まるようなので、
これまで使っていたカードのポートはne2ではなくなったため、
差し替えが必要でした。これ、何も考えずにやっちゃうと、
sshみたいにMACアドレスを認識して認証するシステムの場合、
接続できずに警告が出て、パニクるかもですねぃ…。
Linuxと違ってBSD系の場合、割り込みの概念はユーザ側から隠蔽されるようで、
Linuxならifconfigで普通に、IRQの何番を使っているか出るのに、NetBSDでは出ません。
そこで、カーネル起動部分で吐くメッセージをdmesgで抜き出してみませう。
root@v30:/etc# dmesg
:
isapnp0: read port 0x203
ne2 at isapnp0 port 0x240/32 irq 3
ne2: NE2000 Ethernet
ne2: Ethernet address 00:40:XX:XX:XX:XX
ne3 at isapnp0 port 0x260/32 irq 4
ne3: NE2000 Ethernet
ne3: Ethernet address 00:40:XX:XX:XX:XX
ne4 at isapnp0 port 0x280/32 irq 5
ne4: NE2000 Ethernet
ne4: Ethernet address 00:40:XX:XX:XX:XX
ne5 at isapnp0 port 0x2a0/32 irq 10
ne5: NE2000 Ethernet
ne5: Ethernet address 00:40:XX:XX:XX:XX
:
殺してあるシリアルポートのIRQをきっちり使ってくれてます。
I/Oポートの配分もきっちり0x20ごとのスパンで無駄がありません。
# つか、32バイトもの広大なI/O空間を要求するNE2000ってワガママ過ぎ…。
0x220を使わないのは、これとIRQ7の組合せでSoundBlasterが付くからでしょう。
実質、自由に使えるIRQで残っているのは、たったの1本(IRQ11)か…。
P.S
今回もIRQ確保のために、まっ先に殺したわけですが、
シリアルポートって、最近、無くなっているPCが増えましたね。
まだ、パラレルポートのほうが利用価値があるからと、残っている場合が多い。
# 注)ノートパソコンの話です。
ブロードバンド接続が普及して、シリアルポートよりも
Ethernetポートの需要が増え、さらにシリアルポートよりもはるかに高速な
USBなんていうシリアルバスが出てしまった現在、
外部コミュニケーションポートとしてのシリアルポートは
その役目を終えつつあるのかもしれません。
基本的に、USBとIEEE1394が最近のノートパソコンではトレンドらしいし。
あ、もちろん、Ethernetを積んでいるものも多いですが。
気になるのは、自分のIDをきちんと取得しているデバイス以外は、
PCに接続することができない世の中になりつつあるということなんですよね。
ISAでは自作ボードを作っても、IRQとポートを設定すれば使えたのですが、
PCIでは(有償で)ベンダIDを取得して、製品ID、クラスコード等を
きっちり宣言するデバイスでないと認識されない。
Ethernetも48ビットあるMACアドレスの上位はベンダIDですし、
USBも然り。
デバイスドライバにとっては認識がやりやすいのかもしれませんが、
自作マニアにとっては住みにくい世の中になったものです。
実験用に、IPv4にあるようなプライベートなネームスペース、
アドレス空間が欲しいところですね。
[追伸]
ちょっと揺すったらまた認識しなくなった…。
誤動作がひどいので、ISAのLANカードにある端子をすべて、
コンタクトZの互換品で処理して、何とか安定動作に成功した模様。
さすが、高性能接点復活剤「コンタクトZ」の効き目は素晴らしいね。
せまい所でもきっちり塗れるし、品種を選べば、塗布しすぎた所を削るのも簡単だし。
カーボンコンポジット材だから、若干の研磨能力まで備えている所がいい。
100円SHOPでワンコイン出せば、10本ぐらい軽く買えるのも魅力だし。
ナノカーボンなんて高価なものは要らないね(笑)
あ、でもこの状態でもPCI側に何か挿すと、やっぱり認識をミスるようです。
やはり組合せに問題あるのか、PCI側も接触不良なのか…。
いろいろやっていると、0x300あたりをベースアドレスにした場合、
ne1として認識されるらしいというのも確認できました。
NE2000だからne2からスタートするのかと思ったけど、違うらしい。
へへへっ、4本とも認識できたぜい。 More ログイン