首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 操作系统 > Linux > 正文
  • 配置Linux网卡简介
      2007-2-25  来源:网络资源  编辑:Jsbulo  热度:

    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兼容网卡)需要显式给出一些配置参数,例如,要激活ne2000兼容网卡,需要给出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/modprobe 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里面去。
    相关链接