Linux服务器网卡驱动的安装与故障排除法(2)

  如果没有检测到硬件,用硬件检测程序kuduz检测网卡,它和Windows中添加新硬件差不多。kudzu程序是通过查看/usr/share/hwdata/目录下的文件识别各种硬件设备的。如果核心支持该硬件,并且有该驱动程序就可自动装载。首先说明的是Linux下对网卡的支持往往是只对芯片的,所以对某些不是很著名的网卡,往往需要知道它的芯片型号以配置Linux.比如我的Top link网卡,就不存在Linux的驱动,但是因为它是NE2000兼容,所以把它当NE2000就可以在Linux下用了.所以当你有一块网卡不能用,在找Linux的驱动程序之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如3c509,ne2000等。这样的型号一般都在网卡上最大的一快芯片上印着,抄下来就是了。对于ISA接口的NE2000卡,先要作的一件事情,是将网卡设定为Jumpless模式.很多现在的网卡缺省 都是PnP模式,这在Windows下的确能减少很多麻烦,但是Linux不支持,所以Linux下必须是Jumpless模式.一般所有网卡都有带的驱动盘和DOS下可执行的一个设定程序,用该程序将网卡设为 Jumpless。对于PCI网卡,可以使用命令来查看:lspci。在显示的列表中找到“Ethernet Controller”,记下厂商和型号。然后使用modprobe尝试加载正确的模块,比如modprobe 3c509。如果出现错误,说明该模块不存在。这时候你应该找到正确的模块并且重新编译。问题一般即可解决。
  如果很不幸的,您使用的是比较罕见的一些网卡,或者是 Linux 核心支持不够的网卡,以致于在安装 Linux 时,并无法检测到网卡,那也不用担心,我们可以使用较为简单的核心模块编译来支持这张网卡。下面以笔者的3Com的3CR990-TX-97 网卡为例(一款具有安全特性网卡)看看如何进行模块编译。首先在其网站 下载合适你使用内核版本的相关驱动程序,这里以2.4内核为例。
  #wegt
  另外在开始编译核心模块之前,因为驱动程序需要配合核心来编译,所以会使用到 kernel source 或者是 kernel header 的数据,此外,也需要编译器 ( compiler ) 的帮助,因此,先确定您的 Linux 系统当中已经下列软件的存在 :kernel-source 、kernel 、gcc 、make。
  #tar zxvf 3c990-1.0.0a.tar.gz
  #make
  此时会产生3c990.o 驱动模块。然后使用命令拷贝到相应地方然后查看加载是否正常。
  #modprobe 3c990
  #cp 3c990.o /lib/modules/2.4.20-8/kernel/drivers/net
  # depmod -a
  然后使用lsmod 命令检查加载情况,如果一切正常的话。可以让系统启动时自动加载该模块:
  #echo “alias eth0 3c990”>;>; /etc/modules.conf
 
3.为新网卡设定IP地址
  在Linux 网络设备在配置时被赋予别名,该别名由一个描述性的缩略词和一个编号组成。某种类型的第一个设备的编号为 0,其他设备依次被编号为 1、2、3,等。但是网卡并不是最为裸设备出现在/dev目录下,而是存在内存中。eth0, eth1是以太网卡接口。它们用于大多数的以太网卡,包括许多并行端口以太网卡。本文主要讨论这类网卡。 为Linux以太网卡设定IP地址的方式非常灵活,你可以选择适合你工作情况的方法:
  (1) 使用ip或ifconfig命令
  ifconfig命令是最重要的Linux网络命令,最主要的用途是设定、修改网卡的IP地址,修改网卡ip地址:
  #ifconfig eth0 192.168.0.2 netmask 255.255.255.0
  默认情况下, ifconfig 显示活动的网络设备。给这个命令添加一个 -a 开关就能看到所有设备。但是ifconfig命令设置网络设备的ip地址系统重新启动后设置会自动失效。所以它主要用于网卡状态调试。假设您要建立一个临时的网络配置以供测试。您可以使用发行版本中的工具来编辑配置,但是需要注意在完成测试之后,将所有设置恢复回去。通过使用 ifconfig ,我们无需影响已保存的设置,就能够快速地配置网卡。
  Ip命令是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具。例如:ifconfig、route等。 现在,绝大多数 Linux 发行版和绝大多数 UNIX都使用古老的arp, ifconfig和route命令。虽然这些工具能够工作,但它们在Linux2.2和更高版本的内核上显得有一些落伍。使用iproute2前你应该确认已经安装了这个工具。这个包的名字在RedHat Linux 9.0叫作“iproute2”,也可以在:ftp://ftp.inr.ac.ru/ip-routing/ 下载源代码安装。
  如果希望在以太网接口eth0上增加一个地址10.0.0.1,掩码长度为24位,标准广播地址,标签为eth0:Alias:
  #ip addr add 10.0.0.1/24 brd + dev eth0 label eth0:Alias
  netconfig命令可以设置网络设备的ip地址,netconfig命令可以永久保存设置。
  使用方法是:“netconfig ethX”。使用命令“netconfig eth0”后会在命令行下弹出一个对话框,这时即可进行设定。
  设定结束后用“tab”键选择“OK”即可保存设置并且退出。然后使用命令:“service network restart “激活即可生效。
  使用neat命令需要配置好X window系统,在命令行下运行“neat”命令后添加IP地址和其他相关参数后保存设置,从新启动网络和网络服务或计算机。
  另外neat命令还有一个同价命令:“redhat-config-network”,二者完全相同。Neat和redhat-config-config命令可以永久保存设置。
  除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。网卡相关的TCP/IP网络配置文件是:/etc/sysconfig/network-scripts/ifcfg-ethx。其中x从0开始,第一个以太网配置文件即:/etc/sysconfig/network-scripts/ifcfg-eth0。使用vi编辑器修改这个文件,也可以修改网卡IP地址。
  #vi /etc/sysconfig/network-scripts/ifcfg-eth0
  DEVICE=eth0        #设定网卡的名称,要跟文件名称对应 #
  ONBOOT=yes        #是否在开机的的时候启动网卡#
  BOOTPROTO=static      #启动的时候的 IP 取得的协议,这里是固定的,
           如果是动态主机的话,要改成 dhcp 才行#
  IPADDR=192.168.1.2     #IP 地址#
  NETMASK=255.255.255.0   #子网掩吗#
  NETWORK=192.168.1.0    #该网段的第一个 IP#
  BROADCAST=192.168.1.255  #最后一个同网段的广播地址#
  GATEWAY=192.168.1.2    #网关地址#
  #GATEWAYDEV=eth0      
  存盘后使用命令:“service network restart “激活即可生效。这个方法同样可以永久保存设置。
  (5) 为网卡添加IPV6地址
  和Windows系统相比Linux对Ipv6的支持更好,最早的支持Ipv6的Linux内核是 2.2.xxx。 一般Linux基于2.4内核的Linux发行版本都可以直接使用Ipv6,使用前要看系统IPv6模块是否被加载,如果没有的话可以使用命令手工加载,这需要超级用户的权限。然后使用命令检测,如果显示IPv6地址(inet6 addr:fe80::200:e8ff:fea0:2586/64)证明IPv6已经加载。
  # modprobe IPv6;#ifconfig -a
  如果希望Linux系统启动时自动加载Ipv6模块,可以在配置文件:/etc/modules.conf中加入一行:
  alias net?pf?10 ipv6 # automatically load IPv6 module on demand
4.调整网卡工作模式
  现在的网卡大多是自适应工作模式,在配置网卡参数时我们很少考虑它的工作模式,有时发现一些网卡模块已经加载,但是在某些模式工作不稳定。如笔者使用的一块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
  另外路由器、交换机、代理服务器等通信量比较大的关键设备上,应该为它指定正确的工作模式,这样可以提高通信效率。
  5.DHCP客户端网卡设定
  如果希望使用DHCP是动态主机配置协议,这个协议用于向计算机自动提供IP地址,子网掩码和路由信息。当设备接入这个局域网时,它们会向 DHCP 服务器请求一个 IP 地址。然后 DHCP 服务器为每个请求的设备分配一个地址,直到分配完该范围内的所有 IP 地址为止。已经分配的 IP 地址必须定时地延长借用期。这个延期的过程称作 leasing,确保了当客户机设备在正常地释放 IP 地址之前突然从网络断开时被分配的地址可以归还给服务器。Linux下配置DHCP客户端有两种方法:图形界面和手工配置。使用图形界面可以使用neat命令界面。选中“自动获得IP地址设置使用DHCP”即可。
  通常笔者更喜欢使用选择手工配置 DHCP 客户,需要修改 /etc/sysconfig/network 文件来启用联网;并修改 /etc/sysconfig/network-scripts 目录中每个网络设备的配置文件。在该目录中,每个设备都有一个叫做 ifcfg-ethX 的配置文件,ethX是网络设备的名称。 如eth0等。如果你想在引导时启动联网,NETWORKING 变量必须 被设为 yes。 除了此处之外/etc/sysconfig/network 文件应该包含以下行:
  NETWORKING=yes
  DEVICE=eth0
  BOOTPROTO=dhcp
  ONBOOT=yes

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwwzww.html