-PR-
解決済み

linuxでNICのドライバ組み込みについて

  • 困ってます
  • 質問No.61773
  • 閲覧数242
  • ありがとう数3
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 25% (4/16)

先日AMDのサイトからネットワークカードのlinux用ドライバをDLしました。
とりあえずPCNET32.CコンパイルしてPCNET.oを作成し/lib/modules/2.2.17-0vl10/netにインストールすればいいらしいのですが、うまくコンパイルができずドライバをインストールすることができません。ちなみにインターネットでしらべて
#gcc -D_KERNEL_-DMODULE -Wall -Wstrict-protptypes -O6 -m486 -c PCNET32.c

と打てばいいのらしいですが、そのファイル名は見つかりませんとでます。
ちなみにPCNET.Cは/lib/modules/のところにおいて、cd/lib/modlulesに移動して上記のコマンドをうっています。なぜコンパイルできないのでしょう?
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル11

ベストアンサー率 40% (104/257)

□ええと、とりあえず内容を解説すると、

DEVICE:
使うインターフェース名この場合 eth0でOK
BROADCAST:
ブロードキャストアドレスと言う奴で同じサブネットのマシンに一斉に
情報を送る時に使います。

IPADDR
このマシンのIPアドレス

NETMASK
このネットワークのネットマスク 255.255.255.240と言う事は下位4ビット分が
ホストでつかわれます。

NETWORK
上位28ビット分の数字を同じサブネットとして扱います。

ONBOOT
起動時に有効にするかどうかの指定です。

BOOTPRTO
DHCPプロトコルで自動的に設定を割り当てるかどうかの指定です。

□ 今回のように、DHCPで自動的にアドレスを割り当てる場合は、
ifcfg-eth0の内容は

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

の三行だけで十分です。あとはDHCPサーバから自動的に情報を取ってきます。
( rpm -q dhcp とかしてdhcpのクライアントがインストールされてる事は
一応確認してみてください)

□pingの表示については、自分自身をpingした場合は以下のように成ればOKです。
(この場合、自IPは192.168.0.2 netmask 255.255.255.0)

$ ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 送信元 192.168.0.2 : 56(84) bytes of data.
64 バイト応答 送信元 192.168.0.2: icmp_seq=0 ttl=255 時間=89 マイクロ秒
64 バイト応答 送信元 192.168.0.2: icmp_seq=1 ttl=255 時間=50 マイクロ秒
64 バイト応答 送信元 192.168.0.2: icmp_seq=2 ttl=255 時間=49 マイクロ秒
64 バイト応答 送信元 192.168.0.2: icmp_seq=3 ttl=255 時間=49 マイクロ秒
64 バイト応答 送信元 192.168.0.2: icmp_seq=4 ttl=255 時間=51 マイクロ秒
64 バイト応答 送信元 192.168.0.2: icmp_seq=5 ttl=255 時間=49 マイクロ秒

--- 192.168.0.2 ping 統計 ---
送信パケット数 6, 受信パケット数 6, パケット損失 0%
Round-Trip 最小/平均/最大/mdev = 0.049/0.056/0.089/0.015ミリ秒
$

上記のような表示でもインターネットに接続できないなら、default routeを
設定してみてください。GUI上からはどこから設定するかはちょっと判らないの
ですが、ifcfg-eth0は多分以下のような感じになるとおもいます。

DEVICE=eth0
IPADDR=192.168.1.10
NETMASK=255.255.255.240
BROADCAST=192.168.1.15
NETWORK=192.168.1.0
MTU=1500
GATEWAY=192.168.1.1
ONBOOT=yes

□あと他に確認する点としては、

・ルータにpingをしたとき同様に返事が返ってくるか?
% ping 192.168.1.1 ← ここはルータのアドレスを指定。

・/sbin/lsmod としたときにどうなるか?

$ /sbin/lsmod
Module Size Used by
pcnet32 37120 1
sound 60544 0 (unused)

などとなればOKなはず。(モジュールのサイズは違うとおもいます)。

・/sbin/netstat -rn の実行結果以下のような感じになるとおもいます。

$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 * 255.255.255.240 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default router 0.0.0.0 UG 0 0 0 eth0

・ifconfigの表示結果はどうなるか?多分以下のような風になるはずです。

$ /sbin/ifconfig eth0
eth0 リンク方法:イーサーネット ハードウェアアドレス 6A:79:26:4B:10:00
inetアドレス:192.168.1.10 ブロードキャスト:192.168.1.15
マスク:255.255.255.240
UP BROADCAST RUNNING MTU:1500 Metric:1
RXパケット:28513 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:22126 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:100
割り込み:17 ベースアドレス:0xd000
お礼コメント
katupon

お礼率 25% (4/16)

ありがとうございます。どうにかできました。なにからなにまでありがとうございます。
投稿日時 - 2001-04-14 22:32:39

その他の回答 (全4件)

  • 回答No.2
レベル11

ベストアンサー率 40% (104/257)

ええと、

・PCNET32.cではなくて、 pcnet32.c (全部小文字)
・場所てきには、/libでなくて /tmpとか~/tmpで大丈夫です。
・readmeによるとコマンドとしては、以下のようです。
gcc -D__KERNEL__ -DMODVERSIONS -DMODULE -I/usr/src/linux/net/inet -w -Wstrict-prototypes -O6 -m486 -c pcnet32.c

といったところでしょうか...あと、2.2.17ならpcnet32汎用のドライバが最初から
入っているので運が良ければそれでとりあえず動くかとおもいます。


  • 回答No.3
レベル11

ベストアンサー率 40% (104/257)

下の捕捉です。運試しに、/etc/conf.modulesに

alias eth0 pcnet32

のように、etherの0番はpcnet32というモジュールを使いますという
記述を付け加え、rootになり

# /sbin/depmod -a (←モジュールの依存関係を再構築してね。)
# /etc/rc.d/init.d/network restart (← ネットワークを再起動してね。)

とかいう感じでコマンドを実行すると幸せになれるかも。

だめだったら、AMDのソースをコンパイルしなおしてpcnet32.oを
/lib/modules/2.2.17-0vl10/netにコピーし上記手順を
再度行ってみるとよいです。
お礼コメント
katupon

お礼率 25% (4/16)

いつもありがとうございます。とりあえずconf.modulesに追加してネットワーク再起動そしてifcfg-eth0ファイルを書き換えましたが結果不幸せでした‥
次にコンパイルしてpcnet32.oを/lib/modules/2.2.17-0vl10/netコピーして
上記の手順で行いましたが同じでした。ちなみにifcfg-eth0の内容は
DIVICE=eth0
BRADCAST=192.168.1.255←よくわからないのでこのまま
IPADDR=192.168.1.10←winipcfgででていました。
NETMASK=255.255.255.240←winのwinのwinipcfgででていました。
NETWARK=192.168.1.0←よくわからないのでこのまま
ONBOOT=yes←よくわからないのでこのまま
BOOTPRTO=dhcp←ルータでLAN上のIP振り分けているらしいです。
にして
上書き保存ネットワークリスタートして
#ping 192.168.1.10とうちました。
しばらくして
64 bytes from 192.168.1.10‥‥
     ・
      ・
延々このメッセージが続いて終わりません
もちろんインターネットもつながりません。
とりあえずここまでいったということはNICは認識されているのでしょうか?ifcfg-eth0の内容がおかしいのでしょうか?
投稿日時 - 2001-04-10 19:00:47
  • 回答No.1
レベル8

ベストアンサー率 40% (15/37)

そもそも gcc がインストールされているでしょうか。

rpm -qa|grep gcc で確認できます。
  • 回答No.4

ネットワークの構成がわかんないので、"変だな?"って思ったところだけ指摘します。

> DIVICE=eth0
↑DEVICE = eth0の間違いですよね?
> IPADDR=192.168.1.10←winipcfgででていました。
> 略
> BOOTPRTO=dhcp←ルータでLAN上のIP振り分けているらしいです。

IPアドレスを指定した上にdhcpを指定してるのは、"へんだな?" って思います。
それとも、普通そういうものなのでしょうか?(って言うか、ルータでIPを振り分けていると
書いておきながら、IPも書いているのはやっぱりおかしいと思う。)

あと、
# ifconfig
ってうつと、どういう結果が出るでしょう?
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


専門家があなたの悩みに回答!

ピックアップ

ページ先頭へ