操作系统:CentOS release 5.10 (Final)
[root@blog.hexu.org ~]$ cat /etc/redhat-releaseCentOS release 5.10 (Final)
故障现象:网卡无故自动down掉,使用service network restart 重启后没多久又会自动down , 连接数大概在200个左右,没有arp攻击;
网卡信息:
[root@blog.hexu.org ~]$ cat /var/log/dmesg |grep eth0eth0: Broadcom NetXtreme II BCM5716 1000Base-T (C0) PCI Express found at mem da000000, IRQ 82, node addr 782bcb4b61f8[root@blog.hexu.org ~]$ lspci |grep -i eth01:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5716 Gigabit Ethernet (rev 20)01:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5716 Gigabit Ethernet (rev 20)
当前网卡驱动:
[root@blog.hexu.org ~]$ ethtool -i eth0driver: bnx2version: 2.0.2firmware-version: 5.2.3 NCSI 2.0.10bus-info: 0000:01:00.0
下载最新网卡驱动:
http://www.broadcom.com/support/ethernet_nic/netxtremeii.php
LinuxiSCSI HBA only supported on RHEL 5.4, SUSE SLES 11 SP1 or newer versions of these distributions
我下载的是当前最新的版本linux-7.8.56.zip
安装更新驱动:
[root@blog.hexu.org ~]$ unzip linux-7.8.56.zip Archive: linux-7.8.56.zipcreating: Server/Linux/Driver/inflating: Server/Linux/Driver/INSTALL.TXT inflating: Server/Linux/Driver/netxtreme2-7.8.56-1.src.rpm inflating: Server/Linux/Driver/netxtreme2-7.8.56.tar.gz inflating: Server/Linux/Driver/netxtreme2_sup-7.8.56-1.ISO.tar.gz inflating: Server/Linux/Driver/README.bnx2.TXT inflating: Server/Linux/Driver/README.bnx2fc.TXT inflating: Server/Linux/Driver/README.bnx2i.TXT inflating: Server/Linux/Driver/README.bnx2x.TXT inflating: Server/Linux/Driver/RELEASE.bnx2.TXT inflating: Server/Linux/Driver/RELEASE.bnx2fc.TXT inflating: Server/Linux/Driver/RELEASE.bnx2i.TXT inflating: Server/Linux/Driver/RELEASE.bnx2x.TXT inflating: Server/Linux/Driver/RELEASE.fclibs.TXT [root@blog.hexu.org ~]$ cd Server/Linux/Driver/[root@blog.hexu.org Driver]$ rpm -ivh netxtreme2-7.8.56-1.src.rpm
重建对应系统的rpm包:
[root@blog.hexu.org Driver]$ cd /usr/src/RedHat/SPECS/[root@blog.hexu.org SPECS]$ rpmbuild -bb netxtreme2.spec
安装新的rmp包:
[root@blog.hexu.org SPECS]$ cd /usr/src/redhat/RPMS/x86_64 [root@blog.hexu.org x86_64]$ rpm -ivh netxtreme2-7.8.56-1.x86_64.rpm
切换网卡驱动:
[root@blog.hexu.org ~]$ cat change_driver.sh rmmod bnx2 rmmod bnx2x modprobe bnx2modprobe bnx2x [root@blog.hexu.org ~]$ chmod u+x change_driver.sh
后台执行脚本:
[root@blog.hexu.org ~]$ ./change_driver.sh &
注意:有时候可能需要重启服务器使服务器系统重新完全加载新的驱动:
查看新的网卡驱动信息:
[root@dbapp101 x86_64]$ ethtool -i eth0driver: bnx2version: 2.1.11firmware-version: 6.2.12 bc 5.2.3bus-info: 0000:01:00.0
目前已没有出现自动down的情况。
注意:安装前请仔细看INSTALL.TXT如下:
[root@blog.hexu.org Driver]$ cat INSTALL.TXT Installation Notes Broadcom NetXtremeII Linux Drivers 09/26/2011 Broadcom Corporation 5300 California Avenue, Irvine, CA 92617 Copyright (c) 2004 - 2011 Broadcom Corporation All rights reservedTable of Contents================= Introduction Limitations Packaging Installing Source RPM Package Building Driver From TAR File Unloading and Removing DriverIntroduction============This file describes the installation procedures for the followingBroadcom Linux drivers:- bnx2 driver for the Broadcom NetXtreme II BCM5706/BCM5708/5709/5716 10/100/1000/2500/10000 Mbps PCIX/PCIE Ethernet Network Controller.- bnx2x driver for the Broadcom NetXtremeII BCM57710/BCM57711/BCM57711E/BCM57712 10/100/1000/2500/10000 Mbps PCIE Ethernet Network Controller.- cnic driver that supports additional features required by the bnx2i iSCSI offload driver, and bnx2fc FCoE offload driver.Limitations===========The current versions of the drivers have been tested on 2.4.x kernels startingfrom 2.4.24 and all 2.6.x kernels. The driver may not compile on kernelsolder than 2.4.24. Testing is concentrated on i386 and x86_64 architectures.Only limited testing has been done on some other architectures.Minor changes to some source files and Makefile may be needed on somekernels.Additionally, the Makefile will not compile the cnic driver on kernelsolder than 2.6.16. iSCSI offload is only supported on 2.6.16 and newerkernels. FCoE offload is only supported on 2.6.32 and newer kernels.Packaging=========The driver is released in two packaging formats: source RPM and compressed tarformats. The file name for the source RPM is:netxtreme2-.src.rpmThe file name for the tar archive is:netxtreme2-.tar.gz.Identical source files to build the drivers are included in both packages.Following is a list of files included - a) netxtreme2-.src.rpm - NetXtreme II L2/cnic/bnx2fc/libfc/libfcoedriver source RPMb) netxtreme2-.tar.gz - tar zipped NetXtreme IIL2/cnic/bnx2fc/libfc/libfcoe driver sourcec) INSTALL.TXT - This filed) README..TXT - driver specific readme instructions, where driver is bnx2, bnx2x, bnx2i, bnx2fc.e) RELEASE..TXT - release information text providing list of bug fixesand enhancement for each driver.Installing Source RPM Package=============================The following are general guidelines for installing the driver.1. Install the source RPM package: rpm -ivh netxtreme2-.src.rpm2. CD to the RPM path and build the binary driver for your kernel: cd /usr/src/{redhat,OpenLinux,turbo,packages,rpm ..}(For RHEL 6.0 and above, cd ~/rpmbuild ) rpm -bb SPECS/netxtreme2.specor rpmbuild -bb SPECS/netxtreme2.spec (for RPM version 4.x.x)Note that the RPM path is different for different Linux distributions.The driver will be compiled for the running kernel by default. To buildthe driver for a kernel different than the running one, specify thekernel by defining it in KVER: rpmbuild -bb SPECS/netxtreme2.spec --define "KVER "where in the form of 2.x.y-z is the version of anotherkernel that is installed on the system.3. Install the newly built package (driver and man page): rpm -ivh RPMS//netxtreme2-..rpmwhere is the machine architecture such as i386: rpm -ivh RPMS/i386/netxtreme2-.i386.rpmNote that the --force option may be needed on some Linux distributionsif conflicts are reported.The drivers will be installed in the following path:2.4.x kernels: /lib/modules//kernel/drivers/net/bnx2.o /lib/modules//kernel/drivers/net/bnx2x.o2.6.0 kernels: /lib/modules//kernel/drivers/net/bnx2.ko /lib/modules//kernel/drivers/net/bnx2x.ko2.6.16 and newer kernels: /lib/modules//kernel/drivers/net/bnx2.ko /lib/modules//kernel/drivers/net/bnx2x.ko /lib/modules//kernel/drivers/net/cnic.koNewer RHEL and SLES distros: /lib/modules//updates/bnx2.ko /lib/modules//updates/cnic.ko /lib/modules//updates/bnx2x.ko /lib/modules//updates/bnx2i.ko /lib/modules//updates/bnx2fc.ko4. Unload existing driver if necessary: rmmod bnx2 rmmod bnx2xIf the cnic driver is loaded, it should also be unloaded along with dependentdrivers: rmmod bnx2fc rmmod bnx2i rmmod cnic5. Load the bnx2 driver for the BCM5706/BCM5708/5709/5716 devices: insmod bnx2.oor insmod bnx2.ko (on 2.6.x kernels)or modprobe bnx2To load the bnx2x driver for the BCM57710/BCM57711/BCM57711E/BCM57712 devices: insmod bnx2x.oor insmod bnx2x.ko (on 2.6.x kernels)or modprobe bnx2xTo load the cnic driver: insmod cnic.koor modprobe cnicTo load the bnx2i driver: insmod bnx2i.koor modprobe bnx2i service iscsid restart (Please refer REDAME.bnx2i.txt for more details about iSCSI operation)To load the bnx2fc driver for BCM57712 device: insmod bnx2fc.koor modprobe bnx2fc service fcoe start (Please refer README.bnx2fc.txt for more details about FCoE operation)Note that the inbox kernel may have an older version of bnx2, bnx2x and cnicdriver. It is important for FCoE offload user to unload these inbox versionsbefore attempting to load bnx2fc driver. There are 2 options to reach thedesired goal, a) Reboot the server OR b) If already loaded, unload inbox bnx2, bnx2x, cnic drivers and load newly installed version from netxtreme2-foce package using 'modprobe 'NOTE: Driver upgrade (rpm -Uvh) is not supported.NOTE: On SLES 11, change "allow_unsupported_modules" parameter value of /etc/modprobe.d/unsupport-modules' from 0 to 1, until bnx2fc driver is inbox. Failing to do so will not load bnx2fc.6. To configure network protocol and address, refer to various Linuxdocumentations.Building Driver From TAR File=============================The following are general guidelines for installing the driver.1. Create a directory and extract the files: tar xvzf netxtreme2-.tar.gz2. Build the drivers as a loadable module for the running kernel: makeThe driver will be compiled for the running kernel by default. To buildthe driver for a kernel different than the running one, specify thekernel by defining it in KVER: make KVER=where in the form of 2.x.y-z is the version of anotherkernel that is installed on the system.3. Test the driver by loading it (Same procedures as described in the Source RPM section above).4. Install the driver and man page: make installSee RPM instructions above for the location of the installed driver.5. To configure network protocol and address, refer to various Linuxdocumentations.Unloading and Removing Driver=============================If the driver was installed using rpm, do the following to remove it:rpm -e nextreme2Note - this will remove libfc2, libfcoe2, bnx2, bnx2x and cnic modules as wellIf the driver was installed using make install from the tar file, the drivershave to be manually deleted from the system. Refer to the section"Installing Source RPM Package" for the location of the installed driver.1. rmmod 2. delete .ko from location given in section "Installing Source RPM Package" 3. depmod -a**The kernel will now be back to original state prior to instalation from tar file. You may now reload previous module versions if necessary.
参考:
http://blog.sina.com.cn/s/blog_af9a0ae40101bhi3.html
http://www.sqlparty.com/dell-r610%E7%BD%91%E5%8D%A1%E9%A9%B1%E5%8A%A8%E6%9B%B4%E6%96%B0/
http://blog.hexu.org/Linux/2013-07/87301.htm
原文地址:CentOS 5.10 更新网卡驱动 bnx2 version: 2.0.2–>2.1.11, 感谢原作者分享。 只有这样才不会被“不可能”束缚,才能不断超越自我。