网卡设置指南

王朝other·作者佚名  2008-05-18
宽屏版  字体: 小 | 中 | 大 | 超大  

索引关键词:[Linux,网卡,D-LINK

DE-220/NE2000,D-LINK

DFE530TX,双网卡]

最新修改日期: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,编译时需要注意的是以下几项:

Networking

support

(CONFIG_NET)

[Y/n/?]

Y

TCP/IP

networking

(CONFIG_INET)

[Y/n/?]

Y

Network

device

support

(CONFIG_NETDEVICES)

[Y/n/?]

Y

Ethernet

(10

or

100Mbit)

(CONFIG_NET_ETHERNET)

[Y/n/?]

Y

PCI

Ethernet

adapters

(CONFIG_NET_PCI)

[N/y/?]

Y

/*

如果是PCI网卡的话*/

方式2为大多数发行版所采用,而且可以在安装时设置网卡,选用相应的网卡即

可。值得指出的是,安装时很多网卡没有列出,但并不代表

Linux

本身不支持,详

见

EthernetHOWTO。这时您可以查阅网卡及手册,会发现其使用何种芯片,可以用安

装时网卡列表中同种芯片的网卡试试。通常,网卡手册中会说明该网卡兼容或类似某

种通用网卡。很多10M网卡兼容

NE2000,比如我的

D-LINK

DE220,这时可以选

NE2000

试试。

然而,很多

PNP

的网卡并不能被检测到,例子还是我的

DE220。据说在

Linux

环境下可以通过

isapnp

设置,我没试过,详情请

man

isapnp

吧。为免麻烦,我使

用了另一种方法:在

DOS

下使用

DE220

的驱动程序(可以在其网站下载到),屏蔽掉

PNP

功能,并设定“IO=0240h-025fh”,“IRQ=11”。然后再进行安装。

糟糕的是,有部分网卡并非完全兼容

NE2000,例子又是我的

DE220,这类网卡

在

EthernetHOWTO

中被称为

bad

NE2000

clone,他们采用了非标准的标识方法以

致

Linux

的

NE2000

驱动不能自动检测到它。我的

RedHat

6.1

就是这样,导致安

装后找不到网卡,必需手动进行配置了。

解决这个问题需要向内核传递

IRQ

号及

IO

端口,这两项的具体数据可以从

WIN9X

的设备管理中查到,最笨却最稳妥的是如前哪样用网卡

DOS

下的驱动程序设

定好,记下来。Linux

下输入的数据格式类似

C

语言,IO采用十六进制,即

0xNNN,

其中

NNN

是

IO

中

0XXXh-0XXXh

的前一个数的“XXX”部分。IRQ

可直接用十进制。

针对我的

DE220,就是“0x240”和“11”了。配置方法如下:

如果采用方式1,必须直接将

IRQ

号及

IO

端口传递给内核——在系统启动出现

Boot:

的时候,输入“linux

ether=IRQ,IO,eth0”。具体针对我的

DE220

就是这样:

Boot:

linux

ether=11,0x240,eth0

通常传递了

IO

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

Boot:

linux

ether=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

,如没有就建一个。加入以下两行:

alias

eth0

“网卡相应

module

的文件名”

options

网卡类型

io=0xNNN

针对我的

DE220

,这两行就应该是这样:

alias

eth0

ne.o

options

ne

io=0x240

c.)

重启动后,我的

DE220

就可以找到了。

启动后,查看

/proc

下的

ioports

和

interrupts

文件,如果网卡设置成功,

应该有相应描述,如我的

DE220

使用

NE2000

的驱动,可以看到:

#

cat

ioports

...

0240-025f:

NE2000

...

#

cat

interrupts

...

11:

...

XT-PIC

NE2000

...

然后就可以开始设置

TCP/IP

的参数了(本文不涉及)。值得指出的是,采用

ping

127.0.0.1

的方式只能测试内核是否支持网络及

lo

设备,并不能测试到

eth0

是否工作,应该

ping

通实际的

IP

地址,才算

TCP/IP

配置成功。

因为要配置路由器,我在另一台机器上实验了双网卡。采用了

Topstar

TE2000

系列,ISA

接口,使用8019芯片,兼容

NE2000。有的书上告戒不要使用两块相同的

NE2000

兼容网卡,我不知道原因,而我配置过程中也没发现问题。

首先下载该网卡

DOS

下驱动/设置程序,用

DOS6.22

启动,运行设置程序并设定

IRQ,IO

地址。关键是两块网卡不能设成一样的以免冲突,同时注意不能同其它的设备

冲突。有在

DOS

下配置硬件经验的朋友当然轻车熟路了

8-)。用纸记录下来。编译内

核使之支持

NE2000

系列后,用新内核重启(RedHat

6.1),报告发现

eth0,没有提到

eth1(第二网卡)。

接下来编辑

/etc/lilo.conf,加入:

append="ether=9,0x320,eth1"

/*

我第二网卡设置为

IRQ=9,IO=0X320

*/

然后:

#

lilo

/*

重新加载

lilo

*/

重启动,发现

eth0,eth1,成功!

我在为一台机器配

D-LINK

DFE530TX

(10/100M)的网卡时,在其网站下找到了技

术支持文档,说的很详细(http://tsc.dlinktw.com.tw/nic/dfe530/RedHat6.pdf)。

配置该网卡的朋友可以参考。

由此也可以总结出在

linux

下配置网卡的终极大法:

A.

从买网卡开始,就应选择

Linux

支持比较好的品牌,可以参考

EthernetHOWTO,

如果最新的

EthernetHOWTO

中对该品牌甚至芯片都是

unsupported,建议还是换

一块吧。

B.

不要急于发问,先查查厂商的网站,厂商自己的解决方案可能是最好的,起码可

以参考。

C.

建议屏蔽掉网卡的

pnp,客观的说,虽然人们对

M$

有

Plug

And

Pray

的嘲弄,

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.)

苦练编程本领,自己写个驱动出来!为自由天地做个贡献

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有