登录 注册

网卡设置指南

资讯 驱动中国 10,209 次阅读 0 条评论
分享 Q

索引关键词:[Linux,网卡,D-LINKDE-220/NE2000,D-LINKDFE530TX,双网卡]
最新修改日期:Oct.9th,2000
发布日期:19991119
版权协议:GPL


作者说明:
本文现由我本人维护(mailto:wangdong@163.net),但我的知识、精力、时间都
不足,因此希望与有兴趣的朋友讨论并欢迎合作修改、整理。
其实本文大多数信息可以在EthernetHOWTO中找到,初写这篇文章时Ethernet
HOWTO中文版还没有正式发布,现在您可以在中国Linux论坛的“藏经阁”中找到
EthernetHOWTO中文版8-)。

本文的写作目的是给新手在设置网卡时提供一些帮助。我曾在设置我的DE220
网卡时遇到了一些问题,查询资料时发现很多书籍对此没有涉及;各大BBS及新闻
组问的很多,答的虽然大多正确,但办法五花八门,令人一头雾水。其实资料最全的
是在各种HOWTO中,可惜中文的却很少,所以写这篇文章,希望能节省大家的时间。

本文只包含初步的信息,如希望详细了解这方面的内容,请参考各种HOWTO:
BootpromptHOWTO包含启动时如何向内核传递参数信息
ConfigHOWTO包含LILO及Loadin如何使用的信息
EthernetHOWTO包含以太网卡是否被系统支持(买网卡时可以参考),及如何设置
的信息,Linuxforum已推出中文版
KernelHOWTO如何修补、编译内核
NET2-NET3-HOWTO包含TCP/IP设置的信息,最新已是NET3-4-HOWTO,中文版正在

翻译
以上各种HOWTO英文版、中文版均可从中国Linux论坛
(http://www.linuxforum.net)的“藏经阁”中获得。
中文版也可从中文LDP处获得
http://www.linux.org.tw/CLDP/

因为现在大多数实际应用的网卡都是以太网卡,如不是特别指明,本文中网卡即
指以太网卡。

在Linux中,第一块网卡设备名为eth0,以后依次为eth1,eth2……但网卡
并不作为裸设备出现于/dev下,而是内核在引导时在内存中建立的。这就是说,应
该在系统引导时自动设置网卡。现在大多数发行版都是采用module的方式在系统引
导时设定网卡的,当然如果你清楚的知道你的网卡类型,也可以把相应的网卡驱动编
译进内核。

Linux的引导通常有以下几种方式,
A.通过硬盘以LILO引导。优点是启动快而简捷;缺点是需要写硬盘主引导扇区,
在多系统共存时可能与DOS/WIN下某些防病毒软件冲突,而且很多人希望LILO默
认引导到DOS/WIN下,这就需要掌握LILO的配置方法,这对新手是有一点障碍的。
B.通过软盘引导。虽然慢,但这是对原系统影响最小的办法。只要在安装时不安装
LILO,而做一张引导软盘就行了。这样想启动Linux时,只要插入软盘就可以了。
C.通过Loadin.exe引导。Loadin.exe是DOS下的程序,可以装入Linux的内
核,启动到Linux下。这样可以从WIN9X的纯DOS环境下直接启动Linux。当
然,需要学会如何配置,--很简单的哦。


不管采用哪种方式引导,加载网卡的方式有两种:
1.把网卡驱动编译进内核,引导时就加载。
2.采用modules自动加载。

采用方式1,则不可能支持所有的网卡,哪样内核会变成个庞然大物。因此很多
发行版为了灵活支持多种网卡,采用modules的方式。然而对于每一台特定的电脑,
通常只需要支持有限的一种或几种网卡,因此可以采用方式1,不过需重新编译内核。
编译内核的方法详见KernelHOWTO,编译时需要注意的是以下几项:
Networkingsupport(CONFIG_NET)[Y/n/?]Y
TCP/IPnetworking(CONFIG_INET)[Y/n/?]Y
Networkdevicesupport(CONFIG_NETDEVICES)[Y/n/?]Y
Ethernet(10or100Mbit)(CONFIG_NET_ETHERNET)[Y/n/?]Y
PCIEthernetadapters(CONFIG_NET_PCI)[N/y/?]Y/*如果是PCI网卡的话*/
方式2为大多数发行版所采用,而且可以在安装时设置网卡,选用相应的网卡即
可。值得指出的是,安装时很多网卡没有列出,但并不代表Linux本身不支持,详
见EthernetHOWTO。这时您可以查阅网卡及手册,会发现其使用何种芯片,可以用安
装时网卡列表中同种芯片的网卡试试。通常,网卡手册中会说明该网卡兼容或类似某
种通用网卡。很多10M网卡兼容NE2000,比如我的D-LINKDE220,这时可以选
NE2000试试。
然而,很多PNP的网卡并不能被检测到,例子还是我的DE220。据说在Linux
环境下可以通过isapnp设置,我没试过,详情请manisapnp吧。为免麻烦,我使
用了另一种方法:在DOS下使用DE220的驱动程序(可以在其网站下载到),屏蔽掉
PNP功能,并设定“IO=0240h-025fh”,“IRQ=11”。然后再进行安装。
糟糕的是,有部分网卡并非完全兼容NE2000,例子又是我的DE220,这类网卡
在EthernetHOWTO中被称为badNE2000clone,他们采用了非标准的标识方法以
致Linux的NE2000驱动不能自动检测到它。我的RedHat6.1就是这样,导致安
装后找不到网卡,必需手动进行配置了。
解决这个问题需要向内核传递IRQ号及IO端口,这两项的具体数据可以从
WIN9X的设备管理中查到,最笨却最稳妥的是如前哪样用网卡DOS下的驱动程序设
定好,记下来。Linux下输入的数据格式类似C语言,IO采用十六进制,即0xNNN,
其中NNN是IO中0XXXh-0XXXh的前一个数的“XXX”部分。IRQ可直接用十进制。
针对我的DE220,就是“0x240”和“11”了。配置方法如下:

如果采用方式1,必须直接将IRQ号及IO端口传递给内核——在系统启动出现
Boot:的时候,输入“linuxether=IRQ,IO,eth0”。具体针对我的DE220就是这样:

Boot:linuxether=11,0x240,eth0

通常传递了IO地址系统就可以检测到网卡了,因此也可以输入:

Boot:linuxether=0,0x240,eth0

IRQ或IO处可以输零(如上),是告诉内核自动检测该项。如果这样可以了,可以
通过LILO每次启动时自动把以上参数传递给内核,具体方法是:

编辑/etc/lilo.conf,加入:
append="ether=0,0x240,eth0"
然后:
#lilo/*重新加载lilo*/

append是告诉LILO把引号中的字符串传递给内核。使用Loadlin.exe的道理与此
类同,不过我没试过,请查阅Loadlin的手册(一般随程序提供)。

如果采用方式2,就需要手工加上相应的modules:
a.)查看目录“/lib/modules/内核版本号/net/”,其中内核版本号部分可能每台机器
都不同,看你自己的决定吧。该目录下文件格式如*.o,分别代表不同网卡的
modules,记下你自己网卡相应的文件名,如DE220兼容NE2000,就是NE2000
的ne.o了。
b.)编辑文件/etc/conf.modules,如没有就建一个。加入以下两行:
aliaseth0“网卡相应module的文件名”
options网卡类型io=0xNNN
针对我的DE220,这两行就应该是这样:
aliaseth0ne.o
optionsneio=0x240
c.)重启动后,我的DE220就可以找到了。

启动后,查看/proc下的ioports和interrupts文件,如果网卡设置成功,
应该有相应描述,如我的DE220使用NE2000的驱动,可以看到:
#catioports
...
0240-025f:NE2000
...
#catinterrupts
...
11:...XT-PICNE2000
...
然后就可以开始设置TCP/IP的参数了(本文不涉及)。值得指出的是,采用
ping127.0.0.1的方式只能测试内核是否支持网络及lo设备,并不能测试到eth0
是否工作,应该ping通实际的IP地址,才算TCP/IP配置成功。

因为要配置路由器,我在另一台机器上实验了双网卡。采用了TopstarTE2000
系列,ISA接口,使用8019芯片,兼容NE2000。有的书上告戒不要使用两块相同的
NE2000兼容网卡,我不知道原因,而我配置过程中也没发现问题。
首先下载该网卡DOS下驱动/设置程序,用DOS6.22启动,运行设置程序并设定
IRQ,IO地址。关键是两块网卡不能设成一样的以免冲突,同时注意不能同其它的设备
冲突。有在DOS下配置硬件经验的朋友当然轻车熟路了8-)。用纸记录下来。编译内
核使之支持NE2000系列后,用新内核重启(RedHat6.1),报告发现eth0,没有提到
eth1(第二网卡)。
接下来编辑/etc/lilo.conf,加入:
append="ether=9,0x320,eth1"/*我第二网卡设置为IRQ=9,IO=0X320*/
然后:
#lilo/*重新加载lilo*/
重启动,发现eth0,eth1,成功!

我在为一台机器配D-LINKDFE530TX(10/100M)的网卡时,在其网站下找到了技
术支持文档,说的很详细(http://tsc.dlinktw.com.tw/nic/dfe530/RedHat6.pdf)。
配置该网卡的朋友可以参考。
由此也可以总结出在linux下配置网卡的终极大法:
A.从买网卡开始,就应选择Linux支持比较好的品牌,可以参考EthernetHOWTO,
如果最新的EthernetHOWTO中对该品牌甚至芯片都是unsupported,建议还是换
一块吧。
B.不要急于发问,先查查厂商的网站,厂商自己的解决方案可能是最好的,起码可
以参考。
C.建议屏蔽掉网卡的pnp,客观的说,虽然人们对M$有PlugAndPray的嘲弄,
Linux对PNP的支持还不如M$。屏蔽掉网卡的pnp,能省掉好多麻烦,起码在
不成功时缩小了排错的范围。
D.如果系统还不能找到网卡,可能需要去相应的Linux驱动下载点下载最新的驱动
程序。然后按其说明安装。不过绝大多数比较新的发行版都带了很多,而且工作
的相当好,比如NE2000兼容系列,完全可以使用NE2000的ne.o。
E.重新编译内核,详情请参考KernelHOWTO,注意相关的网络选项一定要选定支持。
而对应的网卡一定要选y(编译进内核)或m(采用module)。如果选m,还需要
编译module。
F.试验新内核或module。如果还不能找到网卡,就参照上文所说的方法向内核或
module传递IRQ和IO等参数。
G.a.)成功了!配置LILO或/etc/conf.modules,使每次引导都可以自动加载网
卡。
恭喜!你的水平也上了一个台阶。
b.)还不行!你有三个选择:
1.)去各大BBS,新闻组,求求各位大侠赐教,不过恐怕近期内不会有什么
新招了。
2.)痛骂网卡的制造商,然后做个顺民,回去继续受M$的压榨。
3.)苦练编程本领,自己写个驱动出来!为自由天地做个贡献!

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友