●●●●●●●警告●●●●●●●警告●●●●●●●警告●●●●●●●
本ソフトウェアはOSに組み込むドライバのため、一般的なソフトウェアと異
なり、本ソフトをインストールするとOSが起動しなくなったり、動作中にOS
が突然パニックするなどの可能性があります。このような事態の発生に対し
て、 当方は一切の責任を負いませんのでご理解ください。発生した損害(フ
ァイルシステムの破壊によるデータ消失など)やシステム復旧の責も負いま
せん。
本ソフトを使用するか否かは、ご自分の責任で判断してください。

トラブルへの対処方法は文中に簡単にまとめてあります。
                                                        村山正之
●●●●●●●警告●●●●●●●警告●●●●●●●警告●●●●●●●

PCIカード編

1. 概要

本ソフトは、NE2000互換チップを使用したネットワークインタフェースカード
をSolarisで使用するためのドライバです。ライセンス条件はGNU LGPLです。
市販のネットワークカードのどれにでも使えるという訳ではありませんので、
まず、ご使用になるネットワークカードが本ソフトが対象にしているチップ
を使用しているか（つまりNE2000互換か？）確認していただく必要があります。
つぎに、ご使用になるカードのSolarisが認識したノード名 (pcixxxx,yyyy形式)
を確認する必要があります。（私が動作確認したチップのデフォルト値はイン
ストールスクリプトで対処しています）
そのほかの一般的なネットワーク設定については、Solarisの通常のネットワ
ーク設定が必要になりますが、ここでは言及しません。

2. ネットワークカードが使用するNICチップの確認
一口にNE2000互換のネットワークインタフェースカードといっても、使用して
いるNIC(Network Interface Controler)チップには数種類あるようです。私が
動作確認したのは以下の２つです。方法はチップ表面の印刷で目視確認ですが、
Windowsのデバイスマネージャでも確認できる場合があります。

  (1) VIA社 82C926 Amazonチップ -- VとAがくっついたロゴと型番 
     通常、Solarisではノード名 pci1106,926 として認識される。

  (2) Realtek社 8029チップ -- 蟹のロゴと8029という印刷が目印
     通常、Solarisではノード名 pci10ec,8029 として認識される。


3. Solarisが認識したノード名の確認

次に、ご使用のネットワークカードのノード名の確認を行います。ノード名と
は、Solarisが認識したデバイスツリーでの当該ネットワークカードのノードの
名前です。
デバイスツリーは、prtconf -pvコマンドで出力できます。ここに上述のノード
名が表れていればOKです。

使用しているチップが上述のものであるにもかかわらず、prtconf -pv コマン
ドでノード名が確認できない場合は、カードメーカーにより subsystem-vendor-id,
subsystem-idが変更されています。この場合には、prtconf -pv で表示されたデ
バイスツリーのうちpciノード下のClass: Ethernet Controllerと表示のあるノー
ドにで、vendor-id, device-idが、上述の pciXXXX,YYYYYのxxxxとyyyyに等しい
ものがあるかどうか探して下さい。それが見つかればOKです。

見つからない場合には、Class: Ethernet Controller と表示のあるノードの
名前を /etc/driver_aliasesに追加することになります。

現在日本で販売されている10M Ethernetカードは、まず大抵NE2000互換のNIC
チップを使用していますので、試してみる価値はあると思います。

4. 外部仕様と動作条件

デバイスドライバのファイル名は以下のようになります。
	/kernel/drv/ni
	/kernel/drv/dp8390	(niとともに自動的にロードされる）

デバイス名は以下のようになります。
	/dev/niN (Nはユニット番号です）

たとえば ifconfig コマンドでデバイスを指定する場合には、 ifconfig ni0 
のようになります。

対応しているOSバージョンはIntel Solaris 8です。SPARC solaris には対応し
ていません。
動作確認は Intel Solaris 8 10/00とSolaris9 12/02で行っています。HWは
Intel PentiumII + MotherBoard AOpen AX6B (440BXチップセット使用）です。

5. 動作環境の設定

(1) PCIカードをインストールしてSolarisを立ち上げて下さい。

(2) ソースとバイナリを以下のようにコピーして下さい。
        # gunzip -cd ni-x.x.x.tar.gz | tar xf -

(3) ネットワークカードのIPアドレスを/etc/hostsファイルに追加して下さい。

6. テスト
        # cd /.../ni-x.x.x
        # /usr/ccs/bin/make install
        # ./addni.sh
	# rm /kernel/drv/ni

    必要に応じてご使用になるネットワークカードのノード名(pcixxxx,yyyy)
    をエディタで/etc/driver_aliasesファイルに以下のように追加します
	ni "pcixxxx,yyyyy"

        # modload i386/ni
        # devfsadm -i ni
        # ifconfig niN plumb
        # ifconfig -a        (niNという行が表示されると思います。MAC ア
			     ドレスなどが正しいことを確認して下さい）
        # ifconfig niN HOSTNAME
        # ifconfig niN      ( IPアドレスが正しいことを確認して下さい)
        # ifconfig niN up   ( この後、ping, telnet, ftpなどでテストができます。)

7. インストール

テストで動作を確認にした場合に限り、インストールしてください。

(1) ドライバを /kernel/drv ディレクトリにコピーします。
        # cd /.../ni-x.x.x
        # /usr/ccs/bin/make install

    テストを実施していない場合には、ここで以下を実行して下さい。
            # ./addni.sh
            # devfsadm -i ni

(2) 各インタフェースカードに対してネットワーク設定をします。以下のファ
    イルにSolarisとしてのネットワーク設定をしてください。
        # /etc/hostname.niN
                        (Nは数字、たとえば、 /etc/hostname.ni0)

(3)OSをリブートします。
        # init 6

6.トラブルシューティング
Q Boot中にpanicし、システムが立ち上がらない

A make install/make install時に自動的に本ドライバを無視する設定のsystemファ
  イルを作成します。これを使ってOSをブートします。
　SolarisをSecondary Bootから起動する時に、手で b -aとタイプして起動する
  と、使用するsysytemファイルのパスを訪ねてきますので、
     /etc/system.noni
　と入力してください。それ以外の項目はデフォルト([]の中に表示される)で良
  いので単にリターンを入力してください。

　OSがブートした後、OSへのドライバの登録を抹消してください。

  どうしてもOSがブートしないときには、いったんネットワークインタフェース
  カードを抜いてOSをブート後、OSへのドライバの登録を抹消してください。

  SolarisのインストールCDから立ち上げて、ドライバ設定を削除する手もあり
  ますが、ちとややこしいのでここでは説明しません。間違えてOSのインストー
  ルが始まってしまってもいけないので、できる人だけやってください。

 OSへのドライバ登録の抹消は以下の手順で行えます。
     rem_drv ni
     rem_drv pcni

QリブートしてOSは立ち上がるが、ネットワークインタフェースが動作しない
A
・デバイスは認識されているか？
  ifconfig -aを実行してください。 niNが表示されますか？
  表示されている場合は、ドライバは正しく認識されていますので、IPアドレス
  などのネットワーク設定に問題がある可能性があります。

・ケーブルの接続に問題ないか？
  ifconfig で niNが見えるのに通信できない場合ば、ケーブルの接続などに問
  題がある可能性もあります。
  この場合は、snoop -P -d /dev/niN で snoopコマンドを起動し、ネットワー
  クにつながれた他のホストから何かパケットを当該ホスト宛に流してください。
  (ping で可）。snoopがログを正常に出力すれば、ケーブルはつながっています。
  少なくとも受信側はokです。

  送信ができているかどうかは、ほかのホストで同様のことをして、当該ホスト
  から送信したパケットが受信できているかどうか確認してください。
  ここまでの動作が確認できても、まだIP的につながらないというのは、十中八
  九、IP関連のネットワーク設定の問題です。

=================================================================

PCMCIA篇

１．概要

基本的にはPCIの場合と同じです。PCMCIAカードの場合はカードを分解できない
ためどんなチップを使っているのか目視で確認ができません。また、PCI とは
違い、OS側のデバイスの識別結果でも使用しているチップの種類はわかりませ
んので、PCMCIAカードとしての製品毎の動作確認となります。

私が確認したのは以下のものです。
   プラネットコミュニケーションズ社FNW3600-T
      ノードのcompatibleプロパティはpccard149,c1ab
   プラネットコミュニケーションズ社FNW3503-T
      ノードのcompatibleプロパティはpccard149,c1ab
   IBM Credit Card Adapter EThernet II
      ノードのcompatibleプロパティはpccarda4,2

その他にLEVEL ONE社の10M ether cardで動作したという報告があります。

2. ご使用のネットワークカードが使用するNICチップの確認
上述のとおり、使用しているチップを確認する手段はありません。したがって
動作確認した製品以外は基本的にNGです。が、最近の世の中の10M ethernet
カードはほぼ全部NE2000互換と思いますので、prtconf -v （ここではpオプシ
ョンはつけない）でSolarisが認識したノードのcompatibleプロパティにリスト
された名前の一つ（pccardxxxx,yyyy形式のものがいい、xxxx, yyyyは１６進数）
をdriver_aliasesファイルに追加してpcniドライバで動くかどうかやって
みる価値はあると思います。


３．外部仕様と動作条件
デバイスドライバは以下のようになります。
	/kernel/drv/pcni	(NE2000互換カード汎用ドライバ）
	/kernel/drv/dp8390	(pcniとともに自動的にロードされる）

デバイス名は以下のようになります。
	/dev/pcniN  (Nはスロット番号、通常０もしくは１です)

ifconfig コマンドで指定する場合には、 ifconfig pcni0 のようになります。

対応しているOSバージョンはIntel Solaris 8です。SPARC solaris には対応して
いません。
動作確認は Intel Solaris 8 10/00で行いました。HWは東芝Dynabook SS3380 です。

4. 動作確認

(1) PCMCIAカードをインストールしてSolarisを立ち上げて下さい。

(2) ソースとバイナリを以下のようにコピーして下さい。
        # gunzip -cd ni-x.x.x.tar.gz | tar xf -

(3) ネットワークカードのIPアドレスを/etc/hostsファイルに追加して下さい。

(4) pcni.confファイルを作成し、イーサネットアドレスを定義して下さい

    以下の1行を含む/kernel/drv/pcni.conf ファイルを作成し、対象となるカード
　　のイーサネットアドレスを定義して下さい。これはpcniドライバがnicカード
　　から工場ethernt設定アドレスを読み出すことができなかったときに使用されま
    す。

    pcniN-mac-addr="XX:XX:XX:XX:XX:XX";

    N はこのNICカードのソケットの番号です。0か1です。
    XX:XX:XX:XX:XXは 00:01:12:23:34:ab という様なイーサネットアドレスです。
    もしネットワークカードのイーサネットアドレスがわからない場合には
    "00:00:00:00:00:00"を使用して下さい。この場合には一時的なイーサネット
    アドレスを自動的に生成します。このアドレスは正式なものではありません
　　から長い間は使用しないで下さい。イーサネットアドレスは、PCMCIAカードに
　　シールで貼ってあることがあります。windows98などの winipcfgコマンドも
　　でも知ることができます。

(5) テスト環境を作成します

        # cd ni-x.x.x
        # /usr/ccs/bin/make install
        # ./addpcni.sh
	# rm /kernel/drv/pcni

    必要に応じてご使用になるネットワークカードのノード名(pccardxxxx,yyyy)
    をエディタで/etc/driver_aliasesファイルに以下のように追加します
	pcni "pccardxxxx,yyyyy"

        # modload i386/pcni
        # devfsadm -i pcni
        # ifconfig pcniN plumb (Nはスロット番号, 0オリジンです）

        # ifconfig -a        (niNという行が表示されると思います。ethernet
			アドレスなどが正しいことを確認して下さい）
        # ifconfig pcniN HOSTNAME
        # ifconfig pcniN      ( IPアドレスが正しいことを確認して下さい)
        # ifconfig pcniN up   ( この後、ping, telnet, ftpなどでテストができます。)
5. インストール手順

テストで動作を確認にした場合に限り、インストールしてください。

(1) ドライバを /kernel/drv ディレクトリにコピーします。
        # cd /.../ni-x.x.x
        # /usr/ccs/bin/make install

    テストを実施していない場合はここで以下を実行して下さい。
            # ./addpcni.sh
            # devfsadm -i pcni

(2) 各インタフェースカードに対してネットワーク設定をします。以下のファ
    イルにSolarisとしてのネットワーク設定をしてください。
        # /etc/hostname.pcniN

(3)OSをリブートします。
        # init 6

以上
