如果核心没有支持该网络卡的话,那么可以透过重新编译核心或者编译网络卡驱动模块 ( Modules ),并且加载该模块,只有手动安装网络卡驱动程序了.

可以用命令:


# dmesg | grep eth

  来查看系统启动信息,显示出 eth0 或者 eth1 的信息,如果eth1没找到正确的信息,那就表示 Linux 无法找到该硬件,

  eth0是8139的,已经显示正常,例如:

[root@cserver /]# dmesg | grep eth
 eth0: VIA Rhine III at 0xff510000, 00:13:46:e2:4b:e9, IRQ 66.
 eth0: MII PHY found at address 1, status 0x7869 advertising 05e1 Link 41e1.
 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1



一、查看系统内核版本


[root@cserver /]# uname -r
 2.6.18-92.1.1.el5

二、检查编译环境:

(1)、内核源码包确认安装:


[root@qs /]# rpm -qa | grep kernel
 kernel-headers-2.6.18-53.el5
 kernel-devel-2.6.18-53.el5
 
kernel-2.6.18-53.el5

(2)、gcc 编译环境:

[root@cserver /]# rpm -qa  | grep gcc
 gcc-c++-4.1.2-42.el5
 libgcc-4.1.2-42.el5
 
gcc-4.1.2-42.el5




三、 下载驱动并编译:

[root@qs src]# cd r8168-8.006.00/
 [root@qs r8168-8.006.00]# make
 make -C src/ clean
 make[1]: Entering directory `/usr/src/r8168-8.006.00/src'
 rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers rset
 make[1]: Leaving directory `/usr/src/r8168-8.006.00/src'
 make -C src/ modules
 make[1]: Entering directory `/usr/src/r8168-8.006.00/src'
 make -C /lib/modules/2.6.18-53.el5/build SUBDIRS=/usr/src/r8168-8.006.00/src modules
 make[2]: Entering directory `/usr/src/kernels/2.6.18-53.el5-i686'
   CC [M]  /usr/src/r8168-8.006.00/src/r8168_n.o
 /usr/src/r8168-8.006.00/src/r8168_n.c:2266: warning: 'rtl8168_phy_power_down' defined but not used
   LD [M]  /usr/src/r8168-8.006.00/src/r8168.o
   Building modules, stage 2.
   MODPOST
   CC      /usr/src/r8168-8.006.00/src/r8168.mod.o
   LD [M]  /usr/src/r8168-8.006.00/src/r8168.ko
 make[2]: Leaving directory `/usr/src/kernels/2.6.18-53.el5-i686'
 strip --strip-debug r8168.ko
 make[1]: Leaving directory `/usr/src/r8168-8.006.00/src'
 make -C src/ install
 make[1]: Entering directory `/usr/src/r8168-8.006.00/src'
 install -m 744 -c r8168.ko /lib/modules/2.6.18-53.el5/kernel/drivers/net/
 
make[1]: Leaving directory `/usr/src/r8168-8.006.00/src'



进入 ./src 目录

[root@qs r8168-8.006.00]# cd src/
 [root@qs src]# ls
 Makefile           r8168.h      r8168.mod.o  r8168_n.o
 Makefile_linux24x  r8168.ko     r8168.o      rtl_ioctl.c
 Module.symvers     r8168.mod.c  r8168_n.c    rtl_ioctl.h


  r8168.ko  就是编译出的模块

(注:编译产生两个文件,一个r8168.ko,一个r8168.o,网上有些资料说的r8168.o是模块文件,其实不然,自己亲自试过,只有r8168.ko是所需模块文件,r8168.o只是个二进制文件,不要被网上资料误导)



然后加载模块:

[root@qs r8168-8.006.00]#cp r8168.ko  /lib/modules/2.6.18-53.el5/kernel/drivers/net/

加载模块:

#insmod r8168.ko

卸载:

#rmmod r8168.ko

查看:

[root@qs net]# lsmod | grep r8168
 r8168                  34708  0



 让它开机时加载

[root@kindgeorge dlkfet-4.24]# vi /etc/modules.conf

在后面加上一行: alias eth1 r8168


然后ok!!!



查看 linux 网卡驱动:


root@wapdbrac1 ~]# kudzu --probe --class=network

产看网卡型号:

# lspci -v
 06:00.0 Ethernet controller: VIA Technologies, Inc. VT6105 [Rhine-III] (rev 86)
         Subsystem: D-Link System Inc DFE-530TX rev C
         Flags: bus master, medium devsel, latency 32, IRQ 66
         I/O ports at b800 [size=256]
         Memory at ff510000 (32-bit, non-prefetchable) [size=256]
         Expansion ROM at cfa00000 [disabled] [size=64K]
         Capabilities: [40] Power Management version 2

调整网卡工作模式

  现在的网卡大多是自适应工作模式,在配置网卡参数时我们很少考虑它的工作模式,有时发现一些网卡模块已经加载,但是在某些模式工作不稳定。如笔者使用的一块XXX品牌的杂牌RTL-8139C芯片10/100自适应网卡在100兆全双工状态下极其不稳定(在Qcheck的TCP和UDP的测试过程中,数据包遗失率9.12%。)。在Linux环境下,我们可以使用系统自带的工具mii-tool命令来配置网卡工作模式。显示Linux服务器网卡支持的所有以太网卡类型,使用命令:

# mii-tool -v
   eth0: negotiated 100baseTx-FD, link ok
   product info: vendor 00:00:00, model 0 rev 0
   basic mode: autonegotiation enabled
   basic status: autonegotiation complete, link ok
   capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
   advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
   link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD

  从以上信息中可以看出,这块网卡工作在100全双工自适应模式下,“100aseTx-FD”意为100M Full Duplex。这里可以强制网卡工作在100M半工模式下,输入命令:

#mii-tool –F 100baseTx-HD eth0

  以后恢复网卡的自适应工作模式,输入命令:

 

#mii-tool –r eth0

  另外路由器、交换机、代理服务器等通信量比较大的关键设备上,应该为它指定正确的工作模式,这样可以提高通信效率。