当前位置:操作系统 > Unix/Linux >>

安装配置Linux网卡

Linux对网卡的支持需要通过内核,早期,许多人使用编译时直接加入网卡支持的办法

  ,不过随着网卡种类的增加,已经很少有人使用这种吃力不讨好的办法了。现在,大部

  分人都采用加入网卡模块的方法来驱动网卡。

  为了加入网卡,首先必须知道网卡的类型,Linux对那些破破烂烂的“NE 2000兼容”

  的网卡的支持倒确实是不错的,但是对于百兆的网卡就不太好说了,反正你总可以通过

  实验选出合适的产品。

  首先得一条是了解网卡的芯片型号,由于硬件厂商通常不会提供网卡的Linux驱动程序

  ,你必须自己为网卡选择正确的驱动程序。许多人喜欢说“啊,就是D-Link的”,这种

  说法大概是在Linux中你能听到的最令人愤怒的说法了,跟那个著名的“在空中”的回答

  差不多,绝对正确而绝对毫无意义。

  你可以首先看看你的网卡属于哪一个类型,如果是3COM 3C系列的“骨灰级”产品,你

  根本不需要进一步了解型号,Linux中肯定会有对应的驱动程序。到/lib/modules/x.x.

  xx/net 下(x.x.xx是里Linux内核的版本号)看一看,确定一下到底应该使用那一个驱动

  程序。例如,3C509的驱动程序就是3c509.o

  如果是ne2000 兼容型,那么一般来说只要使用ne2000的驱动程序就可以了,这个驱动

  程序的名字是ne.o,另外还有许多10兆的PCI网卡属于"NE2000-PCI"兼容类型,对应的驱

  动程序名字是ne2k-pci.o。

  如果都不是,那么你就需要猜测一种合适的网卡型号了,网卡的主控芯片(通常是最

  大的一块)上面会标出芯片的型号,然后到/lib/modules/2.2.14/net(我使用2.2.14的

  内核,你的内核版本可能会不一样)下看一看,找到合适的驱动程序名字。

  下一步是对网卡进行测试,例如,我的网卡驱动程序是rtl8139.o,是一块PCI的100M

  网卡,因此执行

  /sbin/modprobe rtl8139

  路径名/lib/modules/2.2.14/net和扩展名.o可以省略。

  在我们这个情况下,这个命令直接返回,不产生任何输出,表示这个模块已经正确地

  装入内核存储区。如果你想确定一下,你可以用dmesg命令看一下内核输出,会有这样的

  内容:

  rtl8139.c:v1.07 5/6/99 Donald Becker http://cesdis.gsfc.nasa.gov/linux/dri

  vers/r

  tl8139.html

  eth0: RealTek RTL8139 Fast Ethernet at 0xd800, IRQ 19, 00:50:ba:d0:8d:ec.

  

  这表示网卡已经被激活了。

  有些ISA网卡(特别是ne2000兼容网卡)需要显式给出一些配置参数,例如,要激活n

  e2000兼容网卡,需要给出I/O地址,可以使用这样的形式:

  /sbin/modprobe ne io=0x300

  这里假定ne2000兼容网卡位于I/O地址0x300处。IRQ不需要指定,Linux会给出正确的

  值。

  对于特定的网卡,具体的参数格式可以参考驱动程序的源代码。

  假如网卡驱动程序不对或者参数有问题,就会显示出错信息:

  [openlab]# /sbin/modprobe 3c509

  /lib/modules/2.2.14/net/3c509.o: init_module: Device or resource busy

  在某些系统中,使用/etc/conf.modules文件来设置网卡的缺省参数,例如:

  $cat conf.modules

  alias eth0 ne

  options ne io=0x300

  options 命令为模块提供缺省参数。以后只要执行/sbin/modprobe ne或者/sbin/mod

  probe eth0就可以自动使用参数了。

  假设你通过上面的过程已经确定了网卡驱动程序,测试也正确,那么你就应该把它放

  到系统启动脚本中去。前面我们已经提到过,对于RedHat或者Slackware,用户自选的模

  块文件通常可以放在/etc/rc.d/rc.modules中,内容就是简单的写上上面用来加载模块

  的命令,例如,我的系统中有两片网卡,分别使用rtl8139和ne2000驱动程序,ne2000兼

  容网卡的I/O地址是0x300,那么,rc.modules的内容就是

  [openlab]# cat /etc/rc.d/rc.modules

  /sbin/modprobe rtl8139

  /sbin/modprobe ne io=0x300

  不要忘了设置这个脚本的可执行属性。当系统重新启动时,它会自动执行这个脚本,

  你可以在系统启动之后用dmesg看看执行是否正确。如果你的Linux启动脚本并不使用rc

  .modules,你总可以把它放到rc.sysinit或者rcS里面去。
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,