当前位置:Linux教程 - Linux综合 - 配置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里面去。

(出处:http://www.sheup.com)