也许你跟我一样,想利用你的linux做一个路由器玩玩;也许你公司的网络太大,需要用一个路由器来提高效率,但是又不想投资买一个专业的路由设备。这时linux可就帮上大忙了。那你马上就会遇到问题,如何让你的linux支持两块以上的网卡呢?
linux内核来说一般只能检测到一块网卡,为了我们能检测到两块以上的网卡,我们就需要配置内核模块了,好在现在的内核,一般将驱动程序将作为模块。即,在内核激活时,让模块自动检测所安装的ethe.net,如果我们使用的时pci网卡,这一切动作将由内核自动完成,但是,如果我们使用的是isa网卡,内核不一定能检测到你的网卡哦,这时,我们就要手动来设置网卡了,我们需要指定网卡的io地址,以至于让模块直接到指定的io地址去检测网卡,因此这些信息我们需要放在/etc/conf.modules文件中,如下面几个实例供大家参考:
假设你有两块isa ne2000网卡,一般设置为非pnp。如果你的网卡是跳线型,你就直接移动你网卡上的跳线头即可,如果你的网卡是软跳线(一般为软跳线),你首先应该用你的网卡驱动盘,在dos下(我使用的是a:setup.exe进行网卡的设置)将这两块网卡的io和irq值设定好,而且要检测通过。
比如一块是:io=0x300,irq=10
另一块是:io=0x240,irq=3
而且,这两种设置,都能正常运行。好了现在我们进入linux,且编辑/etc/conf.modules文件,内容如下:
---------------
alias eth0 ne
alias eth1 ne
options ne io=0x240,0x300
---------------
这是什幺意思呢?当ne.o模块(该模块位于/lib/modules/2.2.5-15.net目录中)被内核加载时,该模块知道到那一个io地址去寻找网卡,注意0x的意思为16进制,一般io地址都用16进制来表示。
好了,你的两块网卡已经能配置好了,赶快reboot你的linux,注意你的激活信息,特别是在进程管理程序init激活之前的一行,你就可以看到下面的内容:
-------------
ne.c:v1.0 9/23/94 donald becker
ne*000 ethercard probe at 0x300: 00 ae 25 01 c7 6b
eth0: ne2000 found at 0x300,using irq 10.
ne*000 ethercard probe at 0x240: 00 00 21 5a 00 07
eth1: ne2000 found at 0x240,using irq 3.
-------------
如果你在激活时错过了,你可以输入dmesg more 来看。:-)
一般来说,大部分的isa网卡都可以用逗号将两个io地址分开,让模块自动检测,但是有些网卡就不行,如:3com的ec501.o模块,当该模块被内核加载时只能检测到一块网卡,这时你就应该将该模块加载两次,这样才能将两块网卡都检测到,如下面的配置模块:
--------
alias eth0 3c501
alias eth1 3c501
options eth0 -o 3c501-0 io=0x280 irq=5
options eth1 -o 3c501-1 io=0x300 irq=7
--------
在该例中,-o是指定一个唯一的模块名称,只有这样才能模块在内核中加载两次irq=指定网卡的中断值。但是如果你用的网卡是两块不同的网卡,这时应该怎幺办呢?如下面的例子:
一块网卡是:3c503 io值为:0x350
另一块为: ne2000 io值为:0x280
模块的配置文件内容如下:
----------
alias eth0 ne
alias eth1 3c503
options ne io=0x280
options 3c503 io=0x350
----------
如果你的网卡为pci网卡,那就容易多了,你只需要在alias一行将ethn和指定的驱动模块联系起来即可,因为基于io的pci网卡很容易被检测到。可用的驱动模块都在下面的目录下:/lib/modules/'uname -r'.net中,注意uname -r是指当前你的linux内核的版本号,如2.0.34或2.2.5-15,我的内核为2.2.5-15,这些驱动模块就在/lib/modules/2.2.5-15.net目录下。一旦你配置好了你的conf.modules文件,你可以用下面的命令来检测:
modprobe ethn
dmesg tail
'n'表示网卡的号码,如果你将网卡的驱动模块编译到内核中了,那你就只能检测到一块网卡了,因为,linux内核只能默认的只检测一个网卡。
一般有两种方法让内核在激活时激活第二块、三、四块网卡。
上面已经介绍了一种方法,下面介绍另一种方法。该方法是一种传统的方法,即在内核还没有模块化的时候。一般是在lilo激活内核时,加入一些参数,如:
lilo: linux ether=10,0x300,eth0 ether=3,0x240,eth1
有关lilo激活参数的详细信息,请参考bootprompt-howto。
为了不在每一次激活时都键入太长的参数,我们可以用append=命令在lilo.conf种配置如:
append="ether=10,0x300,eht0 ether=3,0x240,eth1"
如果你是在dos系统下的loadlin.exe来激活你的linux的,就看下面的例子:
loadlin zimage root=/dev/hdb1 ro ether=10,0x300,eht0 ether=3,0x240,eth1
在linux下安装2块以上的网卡一般就这两种常用的方法,但是还有一种,这种方法不推荐该方法是直接编辑space.c文件,将0xffe0改为0x0,0xffe0表示不检测设备,改为0后,即自动检测设备。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器