当前位置:Linux教程 - Linux - 网卡的安装思路

网卡的安装思路



        
    Dracula

    在LINUX网络服务器配置中,网卡的安装是一个非常重要的环节。但是由于网卡的生产厂产、芯片、带宽、总线接口的不同,
    使得我们在安装时感到非常地头痛,这些问题对于LINUX初学者来讲更是突出。而且在互联网上的FAQ也非常多,网虫们虽然可以查寻,但是要找到适合自己网卡的安装介绍并不是一件容易的事情。下面让我们来介绍一下安装网卡的一般手段与思路,
    但并不能面面具到解决您的特殊问题,只希望可以起到抛砖引玉的作用,主要还是靠我们自己动手来解决这些实际问题。
    首先,我们必须确定自己的网卡是什么芯片:是i8255x,还是D-Link DE220......
    是什么总线接口:是ISA还是PCI?一般情况下,10/100M自适应的网卡是PCI插口的,这类网卡如果在没有特殊的情况下,LINUX会自动识别,并且自动装载模块,
    当然是系统支持的情况下,就只剩下软件的配置,放在下面讲,这里就不再多说硬件安装的问题。
    国内PC与LINUX玩家的经济条件来看,大多没有条件也没有必要购买100M的网卡,因为还需要有100M的集线器配套。这对于家庭或者中小型网吧来讲是没有什么必要的,除非是一些大的网络应用单位,有几百个节点的公司,需要使用100M的带宽。
    而这些公司大多不必忧虑他们的100M网卡安装问题,原因就在上文中。
    然而10M网卡的用户面临的问题也是比较多的(谁叫咱穷呢?穷人命苦啊!)
    10M的自然是ISA卡的多,(也有一些例外,比如网友们经常谈论的R**?45元一块的网卡就是PCI口的)
    这些网卡如果在windows98下安装地顺利地话,那么对于LINUX那可就麻烦了。当然不必害怕,自有解决之道。

    下面我用D-link DE220举个例子。
    首先写下芯片型号,然后:
    1、查看一下你的LINUX的模块中有没有ne.o这个模块。如果没有的话就要从第2点开始了。如果有,那么跳过2,3,4、直接从5开始看。
    2、确认你的LINUX的内核源代码已经安装(有些初学的朋友往往忘记这一点)
    这里需要指出的是,在内核安装完成后,你还不一定可以编译,因为这时系统里的
    编译器你还不一定安装了,所以一定要在安装内核时看一看内核需要的编译环境,如果不够格的话,需要升级或者装一个新的系统,初学者朋友最好装最新的版本的LINUX,并且完全安装,这样就不会漏掉编译器了,具体的安装方法请遵照内核代码的安装与编译方面的有关资料。
    3、重新定制内核:(具体的方法请遵照内核的定制与编译方面的有关资料。这里只给出一个简单的方法)。
    到/usr/src/linux目录下,输入make menuconfig
    在菜单定制中选择以下内容将它们标为“*”(注意,这是内核级的支持,对一些外设较多的机器来讲,不是外挂模块比较好,具体方法请查阅有关资料)。
    .enable modules suport
    .networking support
    .TCP/IP networking
    .network device support
    .ethernet
    .ne2000/ne1000 support
    这里我指出一下,
    第一句是让系统支持模块外挂。
    第二句是让系统支持网络(如果LINUX没有对于网络的支持,就像没有望远镜的天文台)
    第三句是TCP/IP网络协议的支持(TCP/IP是LINUX及UNIX发展的命脉,也是互联网的命脉)
    第四句网络设备支持,你的网卡就属于网络设备。
    第五句以太网支持,这是现有在大多数网络的拓朴结构,还有其他的,在此不多说。
    第六句ne2000/ne1000支持,指的就是你的网卡兼容的模块名称,就是告诉LINUX,把你的网卡当成ne2000网卡来用。
    注意,由于内核的版本不同、网卡的型号不同,可能以上的内容不尽相同,这里只是给出一个思路。

    在/usr/doc/HOWTO/Ethernet-HOWTO文件中列出了Linux所支持的各种类型的以太网卡的完整列表,请仔细阅读这篇HOWTO文档。
    在以下只列出一些比较常见的网卡。
    3Com:支持3c503和3c503/16以及3c507和3c509。3c501尽管也支持,但是这种网卡速度太慢,我们不建议使用。
    Novell:支持NE1000和NE2000以及各种兼容产品。同时也支持NE1500和NE2100。(注:这类网卡是我们中国最常用的一种)
    Western:支持Digital/SMC WD8003和WD8012以及较新的SMC Elite 16 Ultra。
    Hewlett:支持HP 27252、HP 27247B和HP J2405A。
    D-link:支持D-link公司的DE-600、DE100、DE200和DE-220-T。此外还支持属于PCMCIA卡的DE-659-T.
    DEC:支持DE200(32k/64k)、DE202、DE100和DEPCA rec E。
    Allied:Teliesis AT1500和AT1700。
    可以参照以上的列表,对你的网卡的类型在内核中的支持有所帮助。

    4、在选择以上内容之后,保存并退出,然后运行:
    make dep;make clean;make zImage;
    如果有些朋友的内核太大,除了将内核中有些东西改成模块支持外,也可以将make zImage 改成make bzimage
    如果编译的时候没有错误发生,那么新的内核zImage"将在
    /usr/src/linux/arch/i386/boot/zImage中
    将其copy至/boot。
    定制lilo.conf文件,使其指向这个新的文件。
    运行lilo
    重要启动。
    5、当系统重新启动后,这个驱动程序将会被装入,这个程序将会检查 {0x300,0x280,0x320,0x340,0x360}口上的网卡,
    你可以运行"dmesg"来检查启动信息。
    需要注意的是有些PNPISA的卡指定的IO端口没有在这个范围中,那么就麻烦了。
    (*****非常注意*****,这里的经验是经过多次上网求证无果,下网实践一事无成后,历尽坎坷不断探索而最终证得觉悟。),
    拿出你的网卡驱动程序,如果没有,就从供应商的网站上拉一个下来。然后在dos下,注意最好是纯DOS状态,而不是win dos状态。运行setup在设置中将plug and play设置成无效,改成jumpless方式。这样你的然后设置IO端口成为以上中的一个。
    以上的这种方式是许多ISA的10M网卡安装的通用解法,许多朋友都被其困惑。(包括:D-link DE220、联想的leLegend LN-1018 ISA PnP Ethernet Card等)
    注意,还有一种老式的网卡,它在驱动程序中没有设置jumpless的方式。那么这类网卡只有将机箱打开,拔下网卡,将其上的跳线从PNP换插成jumpless。至于这种网卡的型号,我已经想不起来的,但是我相信,有许多骨灰级玩家有这种网卡,所以还是写一下,以免错过了他们。

    6、使用netconfig来设置TCP/IP
    注意,应当先使用ifconfig或netstat -i来看看是否这里且个ne0?

    还有另一种方法,这种方法比较简单,但是需要有X-windows的支持。(注意,首先在windows 9x下到系统设备中看一下“网络适配器”的IO Address和IRQ。)有些网卡在Setup成jumpless后无法在windows 9x 中正常工作,那么只能进入Setup程序中查看一下了。
    有许多种网卡的配置的方法。这里介绍最容易的一种kernelcfg。kernelcfg是Redhat自带的核心模块配置工具,是一个在X-windows下非常方便的图形界面的配置工具。
    而且在其他版本中也有类似的工具。在X-windows的xterm中输入"kernelcfg"。读者可以看到屏幕上弹出一个"kernel Configurtor"的框。如果内核还没有找了你的网卡的话,框里面是没有关于网卡的描述的。在左下角的"add"点击一下,然后在弹出的界面中的Module Type按钮中选择模块类型为eth。表明这是一块以太网卡,而不是声卡,或其他的一些硬件设备。
    然后选择OK后,就可以在以后的界面中选择合适的网卡模块了。如果配置第一块网卡,则在“Which module type”中选择eth0;如果是第二块那么就选择eth1,以此类推。在"which module"中需要选择的网卡的具体类型,对于D-Link DE220的卡来讲,只要在其中选择单元“ne”就可能了。注意,之后还需要填写有关于网卡的一些配置参数,这里需要的参数就是在Setup中设jumpless后,网卡的I/O地址和IRQ。这些工作完成以后,网卡就可以驱动了。系统每次启动时,都会自动定位网卡的位置和型号。但是并不是每块卡可以通过的。如果你使用LILO引导系统,那么就可以在lilo.conf文件中使用附加的命令语句将设备参数传递给核心。对于以太网卡可以使用:
    ether=irq,base_addr,param1,param2,name
    前四个参数是用数字,最后一个参数是设备的名称。所有的数字变量都可以自由选择,如果用户忽略或是设置成0,那么核心会自动检测该设备的参数变量或使用默认
    值。第一个参数代表分配给设备的中断请求通道,默认情况下核心会自动检测设备的IRQ通道。第二个参数变量base_addr用来指定设备的基本I/O地址。同样,如果这里是0,就意味着核心会自动检测该设备的I/O地址;剩下的两个参数变量param1和param2对于不同的设备有不同的含义。对于共享内存的网卡,它们用来定义共享内存区域的起始点和结束点。对于其他网卡来说,它们使用param1来设置信息的调试等级,数字1到7代表调试等级逐渐增加,而数字8表示关闭信息调试,0表示使用默认值。
    如果用户有两块网卡,那么其中一块可以让Linux在启动时自动检测而另一块则通过lilo将其参数传递给核心。但是,您必须确保通过lilo传递参数的那块网卡不会在系统启动时被“偶然”检测到,否则第一块网卡就检测不到了。为此,可以在lilo.conf中使用reserve命令。这条命令语句明确地告诉核心不自动检测第二块网卡。例如,为了安装I/O地址是0x300的第二块网卡eth1,可以在lilo.conf中加上下面这一条语句:
    reserve=0x300,32 eth1=0,0x300,eth1
    使用rserve命令语句就可以保证核心在系统启动检测其他硬件时不会检测分配给第二块网卡的I/O地址。用户可以使用这条语句来覆盖自动检测的第一块网卡:
    reserve=0x340,32 eth1=0,0x340,eth0
    如果要关闭自动检测功能,可以将base_argiment参数变量定义为-1,如:
    ether=0,-1,etn0
    接下来是网卡接口的配置,可以ifconfig命令来配置TCP/IP网络。它可以使Linux核心知道软件回送这样一些网络接口,但这些网络接口被激活以后,核心就可以使用它们发送和接收数据报。我们需要在自己的机器上设置好几个接口,包括回送接口lo和以太网接口(或者所有使用的其他网络接口)。ifconfig命令可以激活每一个网络接口。
    ifconfig命令最常用的格式是:
    #ifconfig interface_type IP_Address
    这里interface_type是接口设备的驱动器名,如回送接口lo,ppp接口PPP和以太网接口eth等。IP_Address是分配给接口设备的IP地址。运行了ifconfig之后,相应接口会被激活。先配置回送接口loopback位于网络上的每一台主机都应该有一个回送接口,所有系统中回送接口的IP地址都是127.0.0.1。通常Linux系统的回送接口在安装时就已经自动设置好了,并且使用虚拟主机名localhost来代表地址127.0.0.1。如果在/etc/hosts文件中可以找到下面这一项。
    #Sample /etc/hosts entry for localhost
    127.0.0.1 localhost
    那么说明回送接口已经配置好了,如果不存在,则可以使用vi编辑器添加。
    当hosts文件中没有回送接口这一项时,还需要使用ifconfig命令来产生回送接口:
    #ifconfig 127.0.0.1
    之后我们还可以使用ifconfig命令来显示回送接口的所有信息以确认配置是否生效:
    $ifconfig lo
    lo Link encap Local Loopback
    inet addr 127.0.0.1 Bcast[NONE SET] Mask 255.0.0.0
    UP BROADCAST LOOPBACK RUNNING MTU 2000 METRIC 1
    RX packets 0 errors 0 dropped 0 overrun 0
    TX packets 0 errors 0 dropped 0 overrun
    可看到回送接口的掩码是255.0.0.0,这是因为回送地址127.0.0.1本身是一个A类地址:此外回送接口也没有设置广播地址,广播地址对于回送接口来说意义不是很大,但是如果想运行rwhod守护进程的话,就必须设置回送设备的广播地址以便rwho命令可以正常工作。如何设置广播地址将在本章第三节中介绍。现在还需要使用下面两条命令中的任意一个将回送设备添加到核心路由表中:
    #route add 127.0.0.1
    #route add localhost
    我们可以使用一些命令来检查刚才配置的回送网络是否正常工作,检查网络状态的命令很多,如ifconfig、arp、netstat等,这里使用ping命令。ping命令可以指出一台主机是否可以到达,还可以显示分组报文丢失和传输时间等统计资料等等。
    然后你可以使用
    #ping localhost
    如果显示
    PING localhost(127.0.0.1):56 data bytes
    64 bytes from 127.0.0.1:icmp seq=0 ttl=32 time=1ms
    ......
    那么你就将回送接口配置好了。
    然后就可以配置以太网接口,这其实与配置回送接口非常相似:使用ifconfig命令配置接口设备,然后将远程网络的主机路由添加到核心路由表中,配置工作完成后也使用ping命令检查网络是否畅通。只是如果有子网存在的话,还需要更多的配置参数。
    首先,使用ifconfig命令设置以太网接口。在B类网络Vtriual Breway中定义了两个C类子网。为了让接口设备可以识别他们,需要安下面的格式使用ifconfig命令:
    #ifconfig eth0 vstout netmask 255.255.255.0
    这条命令将把主机的IP地址分配给了以太网接口eth0。如果忽略了掩码,ifconfig命令将从IP网络的级别中自动推测出掩码值,这样会将掩码指定为255.255.0.0。
    现在可以用下面的命令来检查以太网接口的工作状况。
    #ifconfig eth0
    eth0 Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:44
    inet addr xxx.xxx.xxx.xxx Bcast xxx.xxx.xxx.255 Mask 255.255.255.0
    UP BROADCAST RUNNING MTU 1500 Metric 1
    RX packets 0 errors 0 dropped 0 overrun 0
    TX packets 0 errors 0 dropped 0 overrun 0
    从输出结果可以看到Linxu依照主机的IP地址自动地为eth0设置广播地址xxx.xxx.xxx.255,这个地址是主机IP地址的网络号加上将所有主机位位置为1而得到的。信息传送单元(MTU)被设置成了最大值1500bit。


    发布人:netbull 来自:LinuxAid