来源:www.yun77.com  发布时间:2011-08-10 13:38:59

本文主要面对新手,不对任何高难度问题进行讨论,包括双网卡,正常编译了driver也不能用的古怪网卡等。本文的主要目的是告诉新手,Linux下网卡是怎样被驱动的。本文不讨论安装Linux的问题,假设用户已经成功安Linux,就等驱动网卡。

第一步--不要再问 Linux下能够装XXX卡么?

这样的问题,Linux是个开放的系统,借助于网络上无数的高手,几乎所有的硬件都能找到支持。

首先需要指出,Linux下对网卡的支持往往是只对芯片的,所以对某些不是很著名的网卡,往往需要知道它的芯片型号以配置Linux。

比如我的Accton 网卡,就不存在Linux的driver,但是因为它是NE2000兼容,所以把它当NE2000就可以在Linux下用了。所以当你有一块网卡不能用,在找Linux的driver之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如3c509,ne2000,etherexpress等等。

这样的型号一般都在网卡上最大的一快芯片上印着,抄下来就是了。

最普遍使用也许是最好配的网卡也许就是Ne2000兼容卡了,我用它来作例子。注意实际上很多廉价卡都是NE2000兼容的。

对于NE2000卡,先要作的一件事情,是将网卡设定为Jumpless模式。很多现在的网卡缺省都是PnP模式,这在95下的确能减少很多麻烦,但是Linux不支持,所以Linux下必须是Jumpless模式。

一般所有程序将网卡设为Jumpless。当然如果是老卡,本来就不是PnP,不用管这个。注意,这里主要是ISA的NE2000,关于PCI的NE2000,需要另外设置。

下来就是得弄清楚网卡的IO地址和IRQ.这是两个非常重要的网卡驱动参数。这个最简单就是还用那个网卡的设定程序,设定完Jumpless之后肯定有地方可以软设定IO和IRQ.老一些的卡得跳线,道理一样。另外一个方法是如果网卡能在95或NT下工作,去95下的control panel里看这个卡的properities,查IO和IRQ.。

OK,到现在,你知道了你的卡是NE2000兼容,知道了它是在Jumpless模式下,知道了IO地址和IRQ,就可以安装了。

Linux系统与95这些系统不同的一点是它是运行在内核 上的,所谓内核,就是把系统最核心的部分孤立出来编程,将各种驱动程序,内存控制等部分编在一起。

于95不同,Linux得内核是公开的,经常更新的,这样不需要更新整个系统,用户只需要把最新的内核原程序download下来编译,就可以得到一个支持更多硬件,更多文件系统,更安全的系统了。所以需要指出,Linux的Driver很少有象95下那样是安装 的。

Linux下的driver大多数都是以C程序形式发布,或者在内核里,或者需要用户自己修改内核代码。总之要让Driver运行,得重新配置编译内核。如何操作Linux内核是学习Linux中非常重要的一节。Linux的新手最好在这里多下点功夫搞清楚,有关核心的问题建议看Linux How To文档中的kernel How to。

Anyway, Linux已经装好了,那么用的是什么内核呢?一般缺省的Linux内核是从安装盘上来的。那个内核一般包括大多数硬件的驱动程序,比如Ne2000卡。所以未一定要重新编译内核,也许现有的内核就可以驱动。所以下一步就是把网卡插入计算机,看看Linux能否发现它。这可以从Linux的启动画面中看出来,如果你发现如下的一行:

eth0:NE2000 card found at 0x300 using IRQ 05

那就说明Linux发现了NE2000卡,在IO 300, IRQ 05的地方。

如果Linux没有发现你的网卡,但是你确认你网卡得型号和参数,比如我的网卡是NE2000兼容,IO 0x300, IRQ 05。那么可以修改Linux启动文件专门搜索这个设备。这个文件在/etc/rc.d/rc.modules里对于NE2000,是这样的:

#/sbin/modprobe ne io=0x300 # NE2000 at 0x300

将最前面的#号去掉,再启动机器试试。另外该文件里还可以发现对其它系列网卡比如3C系列的autoprobe。OK,到现在启动屏幕上也没有出现

eth0:NE2000 card found at 0x300 using IRQ 05

这样的好消息,那么你就得编译内核了。

编译内核之前一定要搞清楚的是网卡的芯片号。比如我有一块SMC的网卡,但是我是无法在Linux的内核配置菜单里找到SMC这样的字样的,Linux不是win95,有那么长一串厂商牌号等。我在这个SMC的卡上找到了digital 21140-AE的字眼,于是我知道这个卡用的是DEC 21140-AE芯片,于是按照这个寻找,就找到了驱动。

知道了芯片类型,或者兼容类型(比如ne2000)就可以开始编译内核了。具体的针对不同系统的内核编译推荐先看看有关内核编译的文章,这里不多作介绍。

进入/usr/src/linux 运行make menuconfig进入菜单配置内核。找到Network Device Support.选则EtherNet,再选则相应的芯片号。如果是ISA系线的NE2000,就选则other ISA cards,选则NE2000/NE1000 ISA support。

如果是PCI的网卡,就选则PCI ethernet adapters.注意,PCI卡未必都能这样驱动,很多都不行,得另外找driver.比如Intel PCI EtherExpress Pro 100等。

有关其它选项希望能多自己摸索。多看看help和how-to。配置完内核后,运行make dep;make;make zlilo就可以了。如果内核选项过多会出现过大的情况而无法安装.那么需要把一些不必要的驱动去掉。

一般这样之后再启动就可以发现网卡了。驱动了网卡,下一步就是设定TCP/IP这些东西,这就不是这里的内容了。

我的经验,Linux下NE2000兼容卡都比较好设。3c系列的卡也都有支持。至于其它卡比如我的DEC 21140就麻烦很多。

另外有些卡即使用某种芯片也未必就能用这个芯片的驱动,这种情况就是有驱动程序也不能用,就需要上网查了。

有关Intel Etherexpress系列卡的配置。Linux内核中有Etherexpress 16的支持,但没有其它卡的driver.在http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html里有关于EtherExpress 100B pro的讨论。在那里可以download到一个c源码的驱动程序,编译进内核就可以了。

那么,如果以上都试过了,而你的网卡的确还是不能认,那么你需要上网查driver了。在网上查东西是一门看起来简单实际上极体现经验的学问。建议寻找Linux网卡的driver从http://cesdis.gsfc.nasa.gov/linux/drivers/开始.在那里可以发现的针对网卡得驱动有:

DEC DC21*4* Tulip chip based cards3Com PCI Etherlink PCI and EISA cardsIntel EtherExpress Pro100B, Pro100+ and Pro10+ PCI3c515 ISA Fast Etherlink cardSMC EtherPower II (EPIC/100 83c170 chip) driver.RealTek RTL8129/8139 driver.Lite-On lc82c168 PNIC driver (now merged with the Tulip driver).Macronix MX98713 and ASIX experimentaldrivers are now merged with the Tulip driver).VIA Rhine (VT86C100A and 3043) driver (now released).Winbond w89c840 driver (beta test).Note: this driver was written without official documentation.TI ThunderLAN driver (external link -- Caldera/James Banks).Hewlett Packard 100VG driver updates (external link -- Yaroslav).Intel EtherExpress Pro/10 PCI driver (remote link).3c509/3c529/3c579 ISA/MCA/EISA EtherLinkIII driver update. The driver now detects multiplecards when loaded as a module.AMD LANCE/PCnet driver update. The driver is now usable as a loadable module.Cirrus/Crystal/IBM CS8900 series driver (remote link).PCI NE2000 driver (local page)PCI NE2000 updates (remote link)Intel Etherexpress Pro 100,DEC 21X4* based board,3Com EtherLink III PCI/EISA (3c590 3c592,3c595,3c597,3c900 3c905)Intel EtherExpress Pro/10 PCI9 With i82596 Chip)TI ThunderLanPCI NE2000Packet Engines Yellowfin G-NICSMC EtherPower II (EPIC/100 83c170 chip)RealTek RTL8129/8139

同时还有一个Ecom EtherLink III family 的setup程序,没有用过,也许不错。

如果这里你还是没有找到相应的网卡驱动,那么就去search了。我推荐的方法是上Internet Newsgroup查。因为你绝对不是第一个在Linux下用这个网卡的人,你的问题绝对有人在网络上问过.而且有人回答过。那么问题就是如何找到他。 最简单的方法是打开netscape 到www.dejanews.com去。

这里的关键是关键字的选则,比如我有个卡的芯片是DEC的21140,那么我考虑到21140已经是个长数字,于是输入21140 linux来搜索,这里Linux是必须的,否则看到上千篇关于21140 win95的驱动问题,是不是很烦?结果21140 linux很快就找到了有关文章。

如果这样也找不到驱动程序,或者有了驱动程序不知道怎么用,用了出问题,再来版上问。记得把具体的网卡型号,芯片型号,你作过什么努力,什么问题等都写清楚,以便于他人帮助。

linux安装网卡图解,Linux系统环境下新手如何安装网卡相关推荐

  1. 双网卡 跃点_Windows10下如何提升双网卡提升网速叠加网卡跃点数

    Windows10下如何提升双网卡提升网速叠加网卡跃点数 Windows10下如何提升双网卡提升网速,叠加网卡,跃点数 前提 我有两张网卡,一个有线,一个无线.两个都能同时连接网络.但是由于Windo ...

  2. linux Ubuntu网卡配置,Windows 7下用VirtualBox安装Ubuntu网卡配置

    Windows 7下用VirtualBox安装Ubuntu,要求Ubuntu能连上互联网,同时在Ubuntu中配置SSH.FTP.NFS服务,能从Win7进行访问. 此时Linux虚拟机需要两块网卡, ...

  3. linux安装mysql图解,linux中怎么安装mysql5.6.12版本图解

    linux中怎么安装mysql5.6.12版本图解 更新时间:2019-08-10 07:16 最满意答案 首先检查环境: 输入命令:rpm -qa | grep -i mysql* 将查询到的包名: ...

  4. linux安装多版本php_Linux系统下为Nginx安装多版本PHP

    我们在安装配置服务器LNPM环境时应该考虑到PHP多版本并存的问题,下面是实现Linux系统下为Nginx安装多版本PHP的实现方法 linux版本:64位CentOS 6.4 Nginx版本:ngi ...

  5. linux 自动安装mysql数据库_linux系统下源码安装mysql5.6数据库

    linux系统下源码安装mysql5.6数据库 下载mysql数据库相关软件包(百度云盘:http://pan.baidu.com/s/1bnL31c7) 从mysql 5.5版本开始,mysql源码 ...

  6. linux英文安装教程图解,Linux安装中英文对照小手册

    CD Found To begin testing the CD media before installation press OK.(按下OK键安装前首先测试光盘媒体) Choose Skip t ...

  7. 手把手教学,带你在Linux、OS X、Windows下Docker的安装

    一.前言 目前,Docker已经支持非常多的Linux平台,包括Ubuntu和RHEL(Red Hat Enterprise Linux,Red Hat企业版Linux).除此之外,Docker还支持 ...

  8. linux安装g++编译器_Ubuntu Desktop下配置Rosetta安装教程

    作者: 吴炜坤 本文仅在虚拟机环境下测试,可能实际操作中会遇到不同的问题 本文是新手向的安装教程,如果需要在CentOS上安装,可以参考本人其他安装教程 由于许多新人朋友在学习Rosetta过程中,通 ...

  9. linux gcc 6源码安装教程,CentOS 6.5下源码安装GCC-4.8.2安装笔记整理

    经历了两天的虐心,写了两篇不敢发表的gcc4.8.2安装笔记,终于成功用源码安装最新的gcc-4.8.2,虽然最初只是为了试一试c++11的几个性能,但是后来不断遇到的问题和搜索中发现的这些问题在大家 ...

最新文章

  1. 使用pinctrl 和 gpio 子系统的字符设备驱动
  2. PostgreSQL在何处处理 sql查询之三十九
  3. 冷眼看移动应用商店发展:再不求变只有死路一条
  4. 浪潮商用机器亮相金博会 夯实新常态下金融科技发展基石
  5. (王道408考研操作系统)第四章文件管理-第一节5:文件存储空间管理
  6. linux常用指令 查看端口占用情况
  7. DBeaver 导出EXCEL文件
  8. 帝国cms纯php调用,帝国CMS模板中:使用php调用最新文章的代码(非灵动和万能标签)...
  9. 设置office首字母不变大小的手段
  10. StopWatch工具
  11. 关于PHP页面显示乱码问题的解决
  12. php转化成json数组,php怎么实现数组转json,php把json转化成数组
  13. mount: none already mounted or /cgroup busy
  14. TP5.x——update更新成功但是返回是0
  15. FileStream:The process cannot access the file because it is being used by another process
  16. java连点方法,Re:连点器(示例代码)
  17. linux常用cat,Linux常用操作命令之cat
  18. @JsonProperty
  19. v-on:click(简写@click)绑定事件加括号和不加括号
  20. wxX11移植到arm板上(序)

热门文章

  1. CentOS7的Tiger VNC设置
  2. 【ESP32】1.Arduino IDE 2.0安装详解
  3. 微信朋友圈图片样式实现方法
  4. 阿里巴巴微服务架构的四大金刚利器
  5. XManager Enterprise简介
  6. 5个非常实用的小程序UI设计模板分享
  7. 3轴、6轴、9轴IMU的区别
  8. BSA分析拟南芥F2代分离群体混池测序
  9. UESTC-1546___Bracket Sequence —— 线段树 + 括号序列
  10. 游戏用简单像素画素材的绘制