Realtek RTL8139C(8139too)カード導入 |
[root@ryocho /tmp]# lspci 〜省略〜 02:00.0 Ethernet controller: Planex Communications, Inc: Unknown device ab07 (rev 10) |
[root@ryocho /tmp]# insmod 8139too Using /lib/modules/2.4.18-5/kernel/drivers/net/8139too.o /lib/modules/2.4.18-5/kernel/drivers/net/8139too.o: init_module: No such device Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters. You may find more information in syslog or the output from dmesg |
[root@ryocho /tmp]# tar zxvf 8139too-0.9.26.tar.gz [root@ryocho /tmp]# cd 8139too-0.9.26 makeする前にMakefileを一部訂正します。 #INCLUDES=/usr/src/linux/include KINCLUDES=/spare/cvs/linux_2_3/include ↓ /usr/src/linux/includeの方を有効にします。 KINCLUDES=/usr/src/linux/include #KINCLUDES=/spare/cvs/linux_2_3/include [root@ryocho 8139too-0.9.26]# make gcc -O2 -fomit-frame-pointer -D__KERNEL__ -I/usr/src/linux/include -DCPU=586 -march=i586 -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -DMODULE -c 8139too.c 8139too.c: In function `netdev_ethtool_ioctl': 8139too.c:2407: `ETHTOOL_GSTATS' undeclared (first use in this function) 8139too.c:2407: (Each undeclared identifier is reported only once 8139too.c:2407: for each function it appears in.) 8139too.c:2408: variable `estats' has initializer but incomplete type 8139too.c:2408: warning: excess elements in struct initializer 8139too.c:2408: warning: (near initialization for `estats') 8139too.c:2408: storage size of `estats' isn't known 8139too.c:2408: warning: unused variable `estats' make: *** [8139too.o] Error 1 |
typedef enum { RTL8139 = 0, RTL8139_CB, 〜省略〜 RTL8129, FNW3800TX, <-- この1行を追加します。(任意の文字列でよいですが、赤色の2カ所は同じ値を指定します。) } board_t; /* indexed by board_t, above */ static struct { const char *name; u32 hw_flags; } board_info[] __devinitdata = { { "RealTek RTL8139 Fast Ethernet", RTL8139_CAPS }, 〜省略〜 { "RealTek RTL8129", RTL8129_CAPS }, { "Planex FNW-3800-TX 10/100 CardBus", RTL8139_CAPS }, <-- この1行を追加します。(青色で指定した箇所は任意の文字列です。) }; static struct pci_device_id rtl8139_pci_tbl[] __devinitdata = { {0x10ec, 0x8139, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 }, 〜省略〜 {0x1259, 0xa117, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ALLIED8139 }, {0x14ea, 0xab07, PCI_ANY_ID, PCI_ANY_ID, 0, 0, FNW3800TX }, <-- この1行を追加します。(赤色は先と同じ値、緑色はlspci -nで取得できる値) 〜省略〜 }; |
余談になりますが、ここで重要なのはベンダーを表す0x14eaとデバイスIDの0xab07です。(pci_deveice_id構造体の1,2番目) これは、lspci -nとすることで知ることが出来ます。
|
ソースファイルのコピー [root@ryocho 8139too-0.9.26]# cp /usr/src/linux/drivers/net/8139too.c . 8139too.cに上記の修正を加えます。 makeします。 [root@ryocho 8139too-0.9.26]# make 作成されたモジュールを所定のディレクトリへコピーします。 [root@ryocho 8139too-0.9.26]# cp 8139too.o /lib/modules/2.4.18/kernel/drivers/net/8139too.o モジュールの依存関係を解決します。 [root@ryocho 8139too-0.9.26]# depmod -a depmod: *** Unresolved symbols in /lib/modules/2.4.18-5/kernel/drivers/net/8139too.o |
[root@ryocho 8139too-0.9.26]# insmod mii [root@ryocho 8139too-0.9.26]# insmod 8139too |
[root@ryocho 8139too-0.9.26]# insmod 8139too Using /lib/modules/2.4.18-5/kernel/drivers/net/8139too.o olved symbol mii_ethtool_sset /lib/modules/2.4.18-5/kernel/drivers/net/8139too.o: unresolved symbol mii_link_ok /lib/modules/2.4.18-5/kernel/drivers/net/8139too.o: unresolved symbol mii_ethtool_gset /lib/modules/2.4.18-5/kernel/drivers/net/8139too.o: unresolved symbol mii_nway_restart |
[root@ryocho root]# lsmod Module Size Used by Not tainted 8139too 14528 1 mii 1200 0 [8139too] 〜省略〜 |
[root@ryocho root]# ifup eth0 Determining IP information for eth0... done. |
gcc -D__KERNEL__ -I/usr/src/linux-2.4.18/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=k6 -DMODULE -DMODVERSIONS -include /usr/src/linux-2.4.18/include/linux/modversions.h -nostdinc -I /usr/lib/gcc-lib/i586-pc-linux/2.96/include -DKBUILD_BASENAME=8139too -c -o 8139too.o 8139too.c |
KERNFLAGS= \ -D__KERNEL__ -I$(KINCLUDES) $(CPUFLAGS) $(SMPFLAGS) \ -Wall -Wstrict-prototypes \ -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe \ -DMODULE \<--追加 -include /usr/src/linux/include/linux/modversions.h <--追加 |
[root root]# cd /usr/src/linux 今までに一度もmakeした事がないのならばmake menuconfigでメニューを立ち上げ、 何もせずExitする。この時の、保存確認はYesを選択すること [root linux]# make menuconfig 依存関係の構築。この時modversions.hが作成されるようです。 [root linux]# make dep これで、modversions.hが作成されています。 |
card "FNW-3800-TX" <-- 名前は適当です。 pci 0x14ea, 0xab07 <-- ドライバ改修でも使用したベンダーIDとデバイスIDです。 bind "8139too" <-- ドライバです。 |
[root@ryocho rc3.d]# ls S02kparam@ S09pcmcia@ S20random@ S40atd@ S75keytable@ S99local@ S08murasaki@ S10network@ S30syslog@ S50xinetd@ S90crond@ |
お問い合わせはwebmaster@ryouto.jpまで。
Copyright (C)2003 ryouto.jp. All Rights Reserved.