本文主要面对新菜鸟,不对任何高难度问题进行讨论,包括双网卡,正常编译了driver也不能用的奇特网卡等。本文的主要目的是告诉新菜鸟,Linux下网卡是如何被驱动的。本文不讨论安装Linux的问题,假定用户早已成功安Linux,就等驱动网卡。
本文引用地址:第一步:不要再问Linux下才能装XXX卡么?这样的问题,Linux是个开放的系统,利用于网路上无数的前辈,几乎所有的硬件都能找到支持。
首先须要强调,Linux下对网卡的支持常常是只对芯片的,所以对个别不是很知名的网卡,常常须要晓得它的芯片机型以配置Linux.例如我的Accton网卡,就不存在Linux的driver,并且由于它是NE2000兼容,所以把它当NE2000就可以在Linux下用了。所以当你有一块网卡不能用,在找Linux的driver之前一定认清楚这个网卡用的哪些芯片linux基础教程,跟谁兼容,例如3c509,ne2000,etherexpress等等。这样的机型通常都在网卡上最大的一快芯片上印着,抄出来就是了。
最普遍使用似乎是最好配的网卡其实就是Ne2000兼容卡了,我用它来作事例.注意实际上好多廉价卡都是NE2000兼容的。
对于NE2000卡,先要作的一件事情,是将网卡设定为Jumpless模式。好多现今的网卡缺省都是PnP模式,这在95下的确能降低好多麻烦,而且Linux不支持linux安装腾达网卡驱动,所以Linux下必须是Jumpless模式。通常所有程序将网卡设为Jumpless。其实假如是老卡linux安装腾达网卡驱动,原本就不是PnP,不用管这个。注意,这儿主要是ISA的NE2000,关于PCI的NE2000,须要另外设置。
出来就是得弄清楚网卡的IO地址和IRQ。这是两个特别重要的网卡驱动参数。这个最简单就是还用那种网卡的设定程序,设定完Jumpless以后肯定有地方可以软设定IO和IRQ.老一些的卡得尾纤,道理一样。另外一个方式是假如网卡能在95或NT下工作,去95下的controlpanel里看这个卡的properities,查IO和IRQ。
OK,到如今,你晓得了你的卡是NE2000兼容,晓得了它是在Jumpless模式下,晓得了IO地址和IRQ,就可以安装了。
Linux系统与95这种系统不同的一点是它是运行在内核上的,所谓内核,就是把系统最核心的部份孤立下来编程,将各类驱动程序,显存控制等部份编在一起。于95不同,Linux得内核是公开的,时常更新的,这样不须要更新整个系统,用户只须要把最新的内核原程序download出来编译,就可以得到一个支持更多硬件,更多文件系统,更安全的系统了。所以须要强调,Linux的Driver极少有象95下那样是。安装的Linux下的driver大多数都是以C程序方式发布linux教程下载,或则在内核里,或则须要用户自己更改内核代码。其实要让Driver运行,得重新配置编译内核。怎么操作Linux内核是学习Linux中极其重要的一节。Linux的菜鸟最好在这儿多下点工夫认清楚.有关核心的问题建议看LinuxHowTo文档中的kernelHowto。
Anyway,Linux早已装好了,这么用的是哪些内核呢?通常缺省的Linux内核是从安装盘上来的。那种内核通常包括大多数硬件的驱动程序,例如Ne2000卡。所以未一定要重新编译内核,恐怕现有的内核就可以驱动。所以下一步就是把网卡插入计算机,瞧瞧Linux能够发觉它。这可以从Linux的启动画面中看下来,假如你发觉如下的一行:
eth0:NE2000cardfoundat0x300usingIRQ05
那就说明Linux发觉了NE2000卡,在IO300,IRQ05的地方。
假如Linux没有发觉你的网卡,而且你确认你网卡得机型和参数,例如我的网卡是NE2000兼容,IO0x300,IRQ05。这么可以更改Linux启动文件专门搜索这个设备。这个文件在/etc/rc.d/rc.modules里对于NE2000,是这样的:
#/sbin/modprobeneio=0x300#NE2000at0x300
将最上面的#号去除,再启动机器试试。
另外该文件里还可以发觉对其它系列网卡例如3C系列的autoprobe。
OK,到如今启动屏幕上也没有出现
eth0:NE2000cardfoundat0x300usingIRQ05
这样的好消息,这么你就得编译内核了。
编译内核之前一定要认清楚的是网卡的芯片号。例如我有一块SMC的网卡,而且我是难以在Linux的内核配置菜单里找到SMC这样的字样的,Linux不是win95,有这么长一串厂商钢号等。我在这个SMC的卡上找到了digital21140-AE的字眼,于是我晓得这个卡用的是DEC21140-AE芯片,于是根据这个找寻,就找到了驱动。
晓得了芯片类型,或则兼容类型(例如ne2000)就可以开始编译内核了。具体的针对不同系统的内核编译推荐先瞧瞧有关内核编译的文章,这儿不多作介绍。
步入/usr/src/linux
运行makemenuconfig步入菜单配置内核。找到NetworkDeviceSupport.选则EtherNet,再选则相应的芯片号.假如是ISA系线的NE2000,就选则otherISAcards,选则NE2000/NE1000ISAsupport。假如是PCI的网卡,就选则PCIethernetadapters。注意,PCI卡未必都能这样驱动,好多都不行,得另外找driver。例如IntelPCIEtherExpressPro100等。
有关其它选项希望能多自己摸索。多瞧瞧help和how-to。
配置完内核后,运行makedep;make;makezlilo就可以了。假如内核选项过多会出现过大的情况而难以安装。这么须要把一些毋须要的驱动去除。
通常这样以后再启动就可以发觉网卡了。驱动了网卡,下一步就是设定TCP/IP这种东西。这就不是这儿的内容了。
我的经验,Linux下NE2000兼容卡都比较好设。3c系列的卡也都有支持.至于其它卡例如我的DEC21140就麻烦好多。
另外有些卡即使用某种芯片也未必能够用这个芯片的驱动,这些情况就是有驱动程序也不能用,就须要上网查了。
有关IntelEtherexpress系列卡的配置.Linux内核中有Etherexpress16的支持,但没有其它卡的driver。在里有关于EtherExpress100100Bpro的讨论。在哪里可以download到一个c源码的驱动程序,编译进内核就可以了。
这么,假如以上都试过了,而你的网卡的确还是不能认,这么你须要上网查driver了。在网上查东西是一门看上去简单实际上极彰显经验的学问。建议找寻Linux网卡的driver从开始。在哪里可以发觉的针对网卡得驱动有:
[table=98%][/table]