前几天装了个fedora9实体机,无奈网卡一直不能用,今天终于搞定了,这里记录下。

下载驱动源码:下载地址

安装完对应的kernel-devel后,解压tg3压缩包,按照README.txt中描述安装,其中介绍了2种方法,我采用的是下面这中rpm的方式:

 

 
  
  1. The following are general guidelines for installing the driver. 
  2.  
  3. 1. Install the source RPM package: 
  4.  
  5.    rpm -ivh tg3-<version>.src.rpm 
  6.  
  7. 2. CD to the RPM path and build the binary driver for your kernel: 
  8.  
  9.    cd /usr/src/{redhat,OpenLinux,turbo,packages,rpm ..} 
  10.  
  11.    rpm -bb SPECS/tg3.spec 
  12.  
  13. or 
  14.  
  15.    rpmbuild -bb SPECS/tg3.spec (for RPM version 4.x.x) 
  16.  
  17. Note that the RPM path is different for different Linux distributions. 
  18.  
  19. The driver will be compiled for the running kernel by default. To build 
  20. the driver for a kernel different than the running one, specify the 
  21. kernel by defining it in KVER: 
  22.  
  23.    rpmbuild -bb SPECS/tg3.spec --define "KVER <kernel version>
  24.  
  25. where <kernel version> in the form of 2.x.y-z is the version of another 
  26. kernel that is installed on the system. 
  27.  
  28. 3. Install the newly built package (driver and man page): 
  29.  
  30.    rpm -ivh RPMS/<arch>/tg3-<version>.<arch>.rpm 
  31.  
  32. <arch> is the architecture of the machine, e.g. i386: 
  33.  
  34.    rpm -ivh RPMS/i386/tg3-<version>.i386.rpm 

但是在进行到第2步

 
  
  1. rpmbuild -bb SPECS/tg3.spec 

的时候出错了,提示如下错误

 

 
  
  1. make -C /lib/modules/2.6.25-14.fc9.i686/build SUBDIRS=/usr/src/redhat/BUILD/tg3-3.116j modules 
  2. make[1]: Entering directory `/usr/src/kernels/2.6.25-14.fc9.i686' 
  3.   CC [M]  /usr/src/redhat/BUILD/tg3-3.116j/tg3.o 
  4. /usr/src/redhat/BUILD/tg3-3.116j/tg3.c: In function 'tg3_napi_fini': 
  5. /usr/src/redhat/BUILD/tg3-3.116j/tg3.c:5821: error: implicit declaration of function 'netif_napi_del' 
  6. make[2]: *** [/usr/src/redhat/BUILD/tg3-3.116j/tg3.o] Error 1 
  7. make[1]: *** [_module_/usr/src/redhat/BUILD/tg3-3.116j] Error 2 
  8. make[1]: Leaving directory `/usr/src/kernels/2.6.25-14.fc9.i686' 
  9. make: *** [default] Error 2 
  10. error: Bad exit status from /var/tmp/rpm-tmp.81225 (%build) 

解决方法如下:

打开/usr/src/kernels/2.6.25-14.fc9.i686/include/linux/netdevice.h 文件,在netif_napi_add函数下添加

 

 
  
  1. static inline void netif_napi_del(struct napi_struct *napi) 
  2. #ifdef CONFIG_NETPOLL 
  3.         list_del(&napi->dev_list); 
  4. #endif 
  5. }  

保存后重新运行

 
  
  1. rpmbuild -bb SPECS/tg3.spec  

没有错误,搞定。。。

这时候你会在/usr/src/redhat/RPMS/i386目录下看到刚生成的tg3-3.116j-1.i386.rpm文件,用rpm安装即可。