|
<br>摘自互联网 <br>如何在一台机器上安装两个网卡 <br><br>翻译:刘 文 峰 <br><br><br>如何在一台机器上安装两个网卡<br>原作: Paul Gortmaker<br>翻译:Ken W. Liu<br><br>分两种情况考虑:<br><br>1.当驱动程序被作为模块时:<br><br>如今大部分Linux都将驱动程序使用为一个个的模块。这种模块和<br>做在内核中的驱动程序不一样。在PCI卡的情况下,模块会自动的检测<br>所有安装的网卡。但是,对于isa卡就不一样了,检测isa卡是一件不够<br>安全的操作,因此需要手动的指定io地址和中断号,从而可以让模块查<br>找网卡。这个信息在文件/etc/conf.modules中保存着。 <br><br>举个例子说:一个用户有两块isa的Ne2000网卡,一个为0x300,另一个为<br>0x240。那么,在conf.modules文件中应该这样写:<br><br>alias eth0 ne<br>alias eth1 ne<br>options ne io=0x240,0x300<br><br>这种情况下,在运行modprobe eth0 或者modprobe eth1 时,ne.o 就会<br>导入 eth0 或 eth1.还有,当ne.o模块导入时,可以得到关于io地址的信息,<br>从而可以知道到何处去查找isa网卡.注意,前缀0x是很重要的,否则网卡必<br>定不能正常工作。<br>大部分的isa驱动程序模块可以按照上面的方法正常工作,但是有一些(旧式?)<br>网卡驱动程序,如3c501.o只能用一个模块一次导入一个网卡设备。这种情况<br>下,可以将同一个模块导入两次,如下所示:<br><br>alias eth0 3c501<br>alias eth1 3c501<br>options eth0 -o 3c501-0 io=0x240 irq=5<br>options eth1 -o 3c501-1 io=0x300 irq=7<br><br>这个例子中,-o的选项表示的含义是让每一个导入的模块有不同的名称。<br><br>最后一个例子:<br>一个用户有两块不同的网卡:3c503(0x350)和SMC Elite16(wd8013) (0x280).<br>这个用户可能会这样写:<br><br>alias eth0 wd<br>alias eth1 3c503<br>options wd io=0x280<br>options 3c503 io=0x350<br><br>对于PCI网卡,你只需要这样的一行便可以完事大吉。因为PCI网卡的IO<br>地址是被安全检测的。<br><br>所有的驱动程序放置在/lib/modules目录中,你可以到那去看有哪个驱动<br>程序可以满足你的需要。一旦你有了正确的conf.modules设置,你可以进行<br>这样的命令进行检测:<br><br>modprobe ethN<br>dmesg | tail<br><br>*其中的N表示的是你需要检测的网卡号码。<br><br>2.驱动程序已经编译到了内核(Kernel)中:<br><br>如果驱动程序已经在内核中了,那么多网卡的设置已经有了。但是,缺省的<br>情况是自动检测一块网卡,这样可以防止在启动时不正常的挂起。 <br><br>有两种方法让你使自动检测两块网卡或多块网卡成为可能。简单的办法是给<br>启动的内核传入参数,这一点由lilo来完成。假如你有两块网卡:其一:<br>io=0x300,irq=5;其二:io=0x280,irq=15,那么在启动时这样写:<br><br>LILO: linux ether=5,0x300,eth0 ether=15,0x280,eth1<br><br>如果觉得每次启动时这样写太复杂了,那么可以在lilo的配置文件中设置。<br>这要用到append命令。在image=....一行的下面写上append="ether=5,<br>0x300,eth0 ether=15,0x280,eth1"便可以了。<br><br>第二种方法是(不推荐使用):编辑Space.c文件。将其中的0xffe0改为0。<br>0xffe0地址是标志那些不用进行自动检测的网卡,0却是表示那些需要自动<br>检测的网卡。<br><br>(--译者:在编译这种核心之后,要保留好一个无错误的内核版本,否则<br>恢复起来太麻烦了。)<br><br>注意:<br>如果你用两个网卡的目的是用Linux作为两个网络的网关的话,不要忘了编译<br>内核,使内核能够支持IP forwording.<br> |
|