Ethernet HOWTO Linux以太网-HOWTO (2)常见问题

2008-02-23 07:21:04来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

--------------------------------------------------------------------------------

2. 常见问题

这里是一些有关使用Linux进行以太网连接的常见问题。某些特定问题按照制造商进行分类。可能你想问的问题别人已经问过(而且被回答了!),所以即使没有在这里找到你的答案,还可能在诸如 Dejanews之类的新闻档案中找到你所要的。


2.1 该为Linux买什么网卡?

这个问题的答案很大程度取决于你希望用网络连接干些什么,以及会遇到多大的数据流量。

如果你只想作为一个用户偶尔使用一下FTP或WWW,那么即使是8比特的老ISA网卡都能满足你的需要。

如果你想建立一个服务器,并要求接收或发送网络数据给CPU带来的负载最小,那么你可能需要看一下使用具有总线控制能力的芯片的PCI网卡,比如DEC tulip (21xxx)芯片,或者AMD PCnet-PCI芯片。

如果你的需求在这二者之间,那么使用有稳定的驱动程序的便宜的PCI网卡或16比特的ISA网卡就可以了。


2.2 Alpha驱动程序——获取与使用

我听说我的网卡有一个更新的或初步的/alpha驱动程序。从哪儿得到它呢?

最新的“新”驱动程序可以在Donald的FTP站点:cesdis.gsfc.nasa.gov里面的/pub/linux/下找到。因为事情变化很频繁,可能需要四处找一找。或者使用WWW浏览器去:

Don's Linux Home Page

查找你想要的驱动程序更简单一些。(留神WWW浏览器会悄悄地把源码中的TABs替换为空格,等等——如果无法确定的话,使用FTP下载,至少也得用WWW浏览器的FTP URL。)

如果驱动程序确实是alpha版本,或pre-alpha版本,那么请恰当地对待它。换句话说,不要抱怨,因为你无法弄清用它能做些什么。如果弄不清如何安装,最好不要去试。同样,如果它使你的机器宕机了,不要抱怨。相反,你应该发给我们一份材料组织很好的Bug报告,如果是一个补丁,那就更好!

注意,某些“可用”的实验性/alpha驱动程序已经包含在标准的内核源码树中。在运行make config时你首先要回答的一个问题就是“Prompt for development and/or incomplete code/drivers”。在此你要回答“Y”以包括任何alpha/实验性驱动程序。


2.3 一台机器使用多个以太网卡

做些什么才能让Linux运行两块以太网卡?

这个问题的答案取决于驱动程序是否被用做可载入的模块或者直接编译进了内核。大多数Linux发行版本现在都使用模块化的驱动程序。这样就不用发行许多内核,每种内核设置一个不同的内建驱动程序。使用一个单一的基本内核,如果特定用户系统需要,一旦系统启动,就可以从驱动程序模块文件(通常存放在/lib/modules/)中载入个别的驱动程序。

把驱动程序作为模块使用:对于PCI驱动程序,模块通常会自动检测该品牌类型所有安装的网卡。但对于ISA网卡,探寻一个网卡是不安全的操作,因此你需要提供网卡的I/O地址以便模块知道去哪里查找。这一信息存储在文件/etc/conf.modules中。

例如,如果一个用户有两块ISA NE2000网卡,一块在0x300,一块在0x240,它们在/etc/conf.modules文件中显示如下:


alias eth0 ne
alias eth1 ne
options ne io=0x240,0x300

这几行的意义:就是说如果管理员(或内核)进行modprobe eth0或者modprobe eth1,那么为eth0或者eth1载入ne.o驱动程序。此外,在载入ne.o模块时,使用选项io=0x240,0x300,这样驱动程序就知道去哪里寻找网卡。注意0x很重要——DOS里常用的300h在这里没有用。改变0x240和0x300的顺序会使哪一块物理网卡以eth0和eth1结尾发生改变。

同这个例子一样,大多数ISA模块驱动程序可以接受多个以逗号分隔的I/O值以处理多块网卡。但是,某些(老的?)驱动程序,比如3c501.o模块,目前载入一个模块只能处理一块网卡。这样,要检测两块网卡就必须载入两次该模块。此时,文件/etc/conf.modules将如下所示:


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=也是用来指定网卡设置的硬件IRQ。(此方法也能用于可接受多个以逗号分隔的I/O值的模块,但这样会使模块被不必要地载入两次,降低了效率。)

最后一个例子,假设用户有一块在0x350的3c503网卡和一块在0x280的SMC Elite16 (wd8013)网卡。则应该这样:


alias eth0 wd
alias eth1 3c503
options wd io=0x280
options 3c503 io=0x350

对于PCI网卡,只要用alias语句把ethN接口和相应的驱动程序名联系起来就行了,因为PCI网卡的I/O地址可以被安全地检测到。

可用的模块一般存放在/lib/modules/`uname -r`/net下,这里uname -r命令可以得到内核的版本(比如2.0.34)。你可以在这里看看哪一个驱动程序适合你的网卡。一旦你在conf.modules文件里进行了正确的设置,就可以用下面的方法检查一下:


modprobe ethN
dmesg | tail

这里“N”是你要检测的以太网卡的接口号。


使用编译进内核的驱动程序:如果你需要的驱动程序编译进了内核,那么处理多块以太网卡的接口已经存在了。但缺省情况下只自动检测一块以太网卡。这样就避免了启动时检测敏感网卡可能引起的麻烦。

(注意:在2.1.x之后的内核中,启动检测被分为安全和不安全的两类,所有安全的检测(如对PCI和EISA网卡)可以自动找到所有相关的网卡。在至少有一块ISA网卡的多网卡系统中还需要进行以下的处理。)

有两种方法可以启动对第二块(或第三块等等)网卡的自动检测。最简单的方法是向内核传递启动参数,由LILO完成。使用ether=0,0,eth1这样简单的启动参数就可以完成对第二块网卡的检测。此时按照启动时找到的网卡顺序分配eth0和eth1。假如你想让0x300处的网卡为eth0,而0x280处的网卡为eth1,那么可以使用

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Ethernet HOWTO Linux以太网-HOWTO (1)导言

下一篇:Ethernet HOWTO Linux以太网-HOWTO (3)性能小技巧