当前位置: 技术问答>linux和unix
请问linux下,怎么安装网卡驱动?
来源: 互联网 发布时间:2015-01-15
本文导语: 我装的是redhat linux 7.2,用的网卡是RADTEK RTK8189C Based Fast Ethernet Card,附的linux驱动有以下文档: kern_compat.h Makefile Pci-scan.c Pci-scan.h Rtk8189c.c 请问该怎么装?谢谢! | ...
我装的是redhat linux 7.2,用的网卡是RADTEK RTK8189C Based Fast Ethernet Card,附的linux驱动有以下文档:
kern_compat.h
Makefile
Pci-scan.c
Pci-scan.h
Rtk8189c.c
请问该怎么装?谢谢!
kern_compat.h
Makefile
Pci-scan.c
Pci-scan.h
Rtk8189c.c
请问该怎么装?谢谢!
|
首先写下芯片型号,然后:
1、查看一下你的LINUX的模块中有没有ne.o这个模块。如果没有的话就要从第2点开始了。如果有,那么跳过2,3,4、直接从5开始看。
2、确认你的LINUX的内核源代码已经安装(有些初学的朋友往往忘记这一点)
这里需要指出的是,在内核安装完成后,你还不一定可以编译,因为这时系统里的
编译器你还不一定安装了,所以一定要在安装内核时看一看内核需要的编译环境,如果不够格的话,需要升级或者装一个新的系统,初学者朋友最好装最新的版本的LINUX,并且完全安装,这样就不会漏掉编译器了,具体的安装方法请遵照内核代码的安装与编译方面的有关资料。
3、重新定制内核:(具体的方法请遵照内核的定制与编译方面的有关资料。这里只给出一个简单的方法)。
到/usr/src/linux目录下,输入make menuconfig
在菜单定制中选择以下内容将它们标为“*”(注意,这是内核级的支持,对一些外设较多的机器来讲,不是外挂模块比较好,具体方法请查阅有关资料)。
.enable modules suport
.networking support
.TCP/IP networking
.network device support
.ethernet
.ne2000/ne1000 support
这里我指出一下,
第一句是让系统支持模块外挂。
第二句是让系统支持网络(如果LINUX没有对于网络的支持,就像没有望远镜的天文台)
第三句是TCP/IP网络协议的支持(TCP/IP是LINUX及UNIX发展的命脉,也是互联网的命脉)
第四句网络设备支持,你的网卡就属于网络设备。
第五句以太网支持,这是现有在大多数网络的拓朴结构,还有其他的,在此不多说。
第六句ne2000/ne1000支持,指的就是你的网卡兼容的模块名称,就是告诉LINUX,把你的网卡当成ne2000网卡来用。
注意,由于内核的版本不同、网卡的型号不同,可能以上的内容不尽相同,这里只是给出一个思路。
在/usr/doc/HOWTO/Ethernet-HOWTO文件中列出了Linux所支持的各种类型的以太网卡的完整列表,请仔细阅读这篇HOWTO文档。
在以下只列出一些比较常见的网卡。
3Com:支持3c503和3c503/16以及3c507和3c509。3c501尽管也支持,但是这种网卡速度太慢,我们不建议使用。
Novell:支持NE1000和NE2000以及各种兼容产品。同时也支持NE1500和NE2100。(注:这类网卡是我们中国最常用的一种)
Western:支持Digital/SMC WD8003和WD8012以及较新的SMC Elite 16 Ultra。
Hewlett:支持HP 27252、HP 27247B和HP J2405A。
D-link:支持D-link公司的DE-600、DE100、DE200和DE-220-T。此外还支持属于PCMCIA卡的DE-659-T.
DEC:支持DE200(32k/64k)、DE202、DE100和DEPCA rec E。
Allied:Teliesis AT1500和AT1700。
可以参照以上的列表,对你的网卡的类型在内核中的支持有所帮助。
4、在选择以上内容之后,保存并退出,然后运行:
make dep;make clean;make zImage;
如果有些朋友的内核太大,除了将内核中有些东西改成模块支持外,也可以将make zImage 改成make bzimage
如果编译的时候没有错误发生,那么新的内核zImage"将在
/usr/src/linux/arch/i386/boot/zImage中
将其copy至/boot。
定制lilo.conf文件,使其指向这个新的文件。
运行lilo
重要启动。
5、当系统重新启动后,这个驱动程序将会被装入,这个程序将会检查 {0x300,0x280,0x320,0x340,0x360}口上的网卡,
你可以运行"dmesg"来检查启动信息。
需要注意的是有些PNPISA的卡指定的IO端口没有在这个范围中,那么就麻烦了。
(*****非常注意*****,这里的经验是经过多次上网求证无果,下网实践一事无成后,历尽坎坷不断探索而最终证得觉悟。),
拿出你的网卡驱动程序,如果没有,就从供应商的网站上拉一个下来。然后在dos下,注意最好是纯DOS状态,而不是win dos状态。运行setup在设置中将plug and play设置成无效,改成jumpless方式。这样你的然后设置IO端口成为以上中的一个。
以上的这种方式是许多ISA的10M网卡安装的通用解法,许多朋友都被其困惑。(包括:D-link DE220、联想的leLegend LN-1018 ISA PnP Ethernet Card等)
注意,还有一种老式的网卡,它在驱动程序中没有设置jumpless的方式。那么这类网卡只有将机箱打开,拔下网卡,将其上的跳线从PNP换插成jumpless。至于这种网卡的型号,我已经想不起来的,但是我相信,有许多骨灰级玩家有这种网卡,所以还是写一下,以免错过了他们。
6、使用netconfig来设置TCP/IP
注意,应当先使用ifconfig或netstat -i来看看是否这里且个ne0?
还有另一种方法,这种方法比较简单,但是需要有X-windows的支持。(注意,首先在windows 9x下到系统设备中看一下“网络适配器”的IO Address和IRQ。)有些网卡在Setup成jumpless后无法在windows 9x 中正常工作,那么只能进入Setup程序中查看一下了。
有许多种网卡的配置的方法。这里介绍最容易的一种kernelcfg。kernelcfg是Redhat自带的核心模块配置工具,是一个在X-windows下非常方便的图形界面的配置工具。
而且在其他版本中也有类似的工具。在X-windows的xterm中输入"kernelcfg"。读者可以看到屏幕上弹出一个"kernel Configurtor"的框。如果内核还没有找了你的网卡的话,框里面是没有关于网卡的描述的。在左下角的"add"点击一下,然后在弹出的界面中的Module Type按钮中选择模块类型为eth。表明这是一块以太网卡,而不是声卡,或其他的一些硬件设备。
然后选择OK后,就可以在以后的界面中选择合适的网卡模块了。如果配置第一块网卡,则在“Which module type”中选择eth0;如果是第二块那么就选择eth1,以此类推。在"which module"中需要选择的网卡的具体类型,对于D-Link DE220的卡来讲,只要在其中选择单元“ne”就可能了。注意,之后还需要填写有关于网卡的一些配置参数,这里需要的参数就是在Setup中设jumpless后,网卡的I/O地址和IRQ。这些工作完成以后,网卡就可以驱动了。系统每次启动时,都会自动定位网卡的位置和型号。但是并不是每块卡可以通过的。如果你使用LILO引导系统,那么就可以在lilo.conf文件中使用附加的命令语句将设备参数传递给核心。对于以太网卡可以使用:
ether=irq,base_addr,param1,param2,name
前四个参数是用数字,最后一个参数是设备的名称。所有的数字变量都可以自由选择,如果用户忽略或是设置成0,那么核心会自动检测该设备的参数变量或使用默认
值。第一个参数代表分配给设备的中断请求通道,默认情况下核心会自动检测设备的IRQ通道。第二个参数变量base_addr用来指定设备的基本I/O地址。同样,如果这里是0,就意味着核心会自动检测该设备的I/O地址;剩下的两个参数变量param1和param2对于不同的设备有不同的含义。对于共享内存的网卡,它们用来定义共享内存区域的起始点和结束点。对于其他网卡来说,它们使用param1来设置信息的调试等级,数字1到7代表调试等级逐渐增加,而数字8表示关闭信息调试,0表示使用默认值。
如果用户有两块网卡,那么其中一块可以让Linux在启动时自动检测而另一块则通过lilo将其参数传递给核心。但是,您必须确保通过lilo传递参数的那块网卡不会在系统启动时被“偶然”检测到,否则第一块网卡就检测不到了。为此,可以在lilo.conf中使用reserve命令。这条命令语句明确地告诉核心不自动检测第二块网卡。例如,为了安装I/O地址是0x300的第二块网卡eth1,可以在lilo.conf中加上下面这一条语句:
reserve=0x300,32 eth1=0,0x300,eth1
使用rserve命令语句就可以保证核心在系统启动检测其他硬件时不会检测分配给第二块网卡的I/O地址。用户可以使用这条语句来覆盖自动检测的第一块网卡:
reserve=0x340,32 eth1=0,0x340,eth0
如果要关闭自动检测功能,可以将base_argiment参数变量定义为-1,如:
ether=0,-1,etn0
接下来是网卡接口的配置,可以ifconfig命令来配置TCP/IP网络。它可以使Linux核心知道软件回送这样一些网络接口,但这些网络接口被激活以后,核心就可以使用它们发送和接收数据报。我们需要在自己的机器上设置好几个接口,包括回送接口lo和以太网接口(或者所有使用的其他网络接口)。ifconfig命令可以激活每一个网络接口。
ifconfig命令最常用的格式是:
#ifconfig interface_type IP_Address
这里interface_type是接口设备的驱动器名,如回送接口lo,ppp接口PPP和以太网接口eth等。IP_Address是分配给接口设备的IP地址。运行了ifconfig之后,相应接口会被激活。先配置回送接口loopback位于网络上的每一台主机都应该有一个回送接口,所有系统中回送接口的IP地址都是127.0.0.1。通常Linux系统的回送接口在安装时就已经自动设置好了,并且使用虚拟主机名localhost来代表地址127.0.0.1。如果在/etc/hosts文件中可以找到下面这一项。
#Sample /etc/hosts entry for localhost
127.0.0.1 localhost
那么说明回送接口已经配置好了,如果不存在,则可以使用vi编辑器添加。
当hosts文件中没有回送接口这一项时,还需要使用ifconfig命令来产生回送接口:
#ifconfig 127.0.0.1
之后我们还可以使用ifconfig命令来显示回送接口的所有信息以确认配置是否生效:
$ifconfig lo
lo Link encap Local Loopback
inet addr 127.0.0.1 Bcast[NONE SET] Mask 255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU 2000 METRIC 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun
可看到回送接口的掩码是255.0.0.0,这是因为回送地址127.0.0.1本身是一个A类地址:此外回送接口也没有设置广播地址,广播地址对于回送接口来说意义不是很大,但是如果想运行rwhod守护进程的话,就必须设置回送设备的广播地址以便rwho命令可以正常工作。如何设置广播地址将在本章第三节中介绍。现在还需要使用下面两条命令中的任意一个将回送设备添加到核心路由表中:
#route add 127.0.0.1
#route add localhost
我们可以使用一些命令来检查刚才配置的回送网络是否正常工作,检查网络状态的命令很多,如ifconfig、arp、netstat等,这里使用ping命令。ping命令可以指出一台主机
1、查看一下你的LINUX的模块中有没有ne.o这个模块。如果没有的话就要从第2点开始了。如果有,那么跳过2,3,4、直接从5开始看。
2、确认你的LINUX的内核源代码已经安装(有些初学的朋友往往忘记这一点)
这里需要指出的是,在内核安装完成后,你还不一定可以编译,因为这时系统里的
编译器你还不一定安装了,所以一定要在安装内核时看一看内核需要的编译环境,如果不够格的话,需要升级或者装一个新的系统,初学者朋友最好装最新的版本的LINUX,并且完全安装,这样就不会漏掉编译器了,具体的安装方法请遵照内核代码的安装与编译方面的有关资料。
3、重新定制内核:(具体的方法请遵照内核的定制与编译方面的有关资料。这里只给出一个简单的方法)。
到/usr/src/linux目录下,输入make menuconfig
在菜单定制中选择以下内容将它们标为“*”(注意,这是内核级的支持,对一些外设较多的机器来讲,不是外挂模块比较好,具体方法请查阅有关资料)。
.enable modules suport
.networking support
.TCP/IP networking
.network device support
.ethernet
.ne2000/ne1000 support
这里我指出一下,
第一句是让系统支持模块外挂。
第二句是让系统支持网络(如果LINUX没有对于网络的支持,就像没有望远镜的天文台)
第三句是TCP/IP网络协议的支持(TCP/IP是LINUX及UNIX发展的命脉,也是互联网的命脉)
第四句网络设备支持,你的网卡就属于网络设备。
第五句以太网支持,这是现有在大多数网络的拓朴结构,还有其他的,在此不多说。
第六句ne2000/ne1000支持,指的就是你的网卡兼容的模块名称,就是告诉LINUX,把你的网卡当成ne2000网卡来用。
注意,由于内核的版本不同、网卡的型号不同,可能以上的内容不尽相同,这里只是给出一个思路。
在/usr/doc/HOWTO/Ethernet-HOWTO文件中列出了Linux所支持的各种类型的以太网卡的完整列表,请仔细阅读这篇HOWTO文档。
在以下只列出一些比较常见的网卡。
3Com:支持3c503和3c503/16以及3c507和3c509。3c501尽管也支持,但是这种网卡速度太慢,我们不建议使用。
Novell:支持NE1000和NE2000以及各种兼容产品。同时也支持NE1500和NE2100。(注:这类网卡是我们中国最常用的一种)
Western:支持Digital/SMC WD8003和WD8012以及较新的SMC Elite 16 Ultra。
Hewlett:支持HP 27252、HP 27247B和HP J2405A。
D-link:支持D-link公司的DE-600、DE100、DE200和DE-220-T。此外还支持属于PCMCIA卡的DE-659-T.
DEC:支持DE200(32k/64k)、DE202、DE100和DEPCA rec E。
Allied:Teliesis AT1500和AT1700。
可以参照以上的列表,对你的网卡的类型在内核中的支持有所帮助。
4、在选择以上内容之后,保存并退出,然后运行:
make dep;make clean;make zImage;
如果有些朋友的内核太大,除了将内核中有些东西改成模块支持外,也可以将make zImage 改成make bzimage
如果编译的时候没有错误发生,那么新的内核zImage"将在
/usr/src/linux/arch/i386/boot/zImage中
将其copy至/boot。
定制lilo.conf文件,使其指向这个新的文件。
运行lilo
重要启动。
5、当系统重新启动后,这个驱动程序将会被装入,这个程序将会检查 {0x300,0x280,0x320,0x340,0x360}口上的网卡,
你可以运行"dmesg"来检查启动信息。
需要注意的是有些PNPISA的卡指定的IO端口没有在这个范围中,那么就麻烦了。
(*****非常注意*****,这里的经验是经过多次上网求证无果,下网实践一事无成后,历尽坎坷不断探索而最终证得觉悟。),
拿出你的网卡驱动程序,如果没有,就从供应商的网站上拉一个下来。然后在dos下,注意最好是纯DOS状态,而不是win dos状态。运行setup在设置中将plug and play设置成无效,改成jumpless方式。这样你的然后设置IO端口成为以上中的一个。
以上的这种方式是许多ISA的10M网卡安装的通用解法,许多朋友都被其困惑。(包括:D-link DE220、联想的leLegend LN-1018 ISA PnP Ethernet Card等)
注意,还有一种老式的网卡,它在驱动程序中没有设置jumpless的方式。那么这类网卡只有将机箱打开,拔下网卡,将其上的跳线从PNP换插成jumpless。至于这种网卡的型号,我已经想不起来的,但是我相信,有许多骨灰级玩家有这种网卡,所以还是写一下,以免错过了他们。
6、使用netconfig来设置TCP/IP
注意,应当先使用ifconfig或netstat -i来看看是否这里且个ne0?
还有另一种方法,这种方法比较简单,但是需要有X-windows的支持。(注意,首先在windows 9x下到系统设备中看一下“网络适配器”的IO Address和IRQ。)有些网卡在Setup成jumpless后无法在windows 9x 中正常工作,那么只能进入Setup程序中查看一下了。
有许多种网卡的配置的方法。这里介绍最容易的一种kernelcfg。kernelcfg是Redhat自带的核心模块配置工具,是一个在X-windows下非常方便的图形界面的配置工具。
而且在其他版本中也有类似的工具。在X-windows的xterm中输入"kernelcfg"。读者可以看到屏幕上弹出一个"kernel Configurtor"的框。如果内核还没有找了你的网卡的话,框里面是没有关于网卡的描述的。在左下角的"add"点击一下,然后在弹出的界面中的Module Type按钮中选择模块类型为eth。表明这是一块以太网卡,而不是声卡,或其他的一些硬件设备。
然后选择OK后,就可以在以后的界面中选择合适的网卡模块了。如果配置第一块网卡,则在“Which module type”中选择eth0;如果是第二块那么就选择eth1,以此类推。在"which module"中需要选择的网卡的具体类型,对于D-Link DE220的卡来讲,只要在其中选择单元“ne”就可能了。注意,之后还需要填写有关于网卡的一些配置参数,这里需要的参数就是在Setup中设jumpless后,网卡的I/O地址和IRQ。这些工作完成以后,网卡就可以驱动了。系统每次启动时,都会自动定位网卡的位置和型号。但是并不是每块卡可以通过的。如果你使用LILO引导系统,那么就可以在lilo.conf文件中使用附加的命令语句将设备参数传递给核心。对于以太网卡可以使用:
ether=irq,base_addr,param1,param2,name
前四个参数是用数字,最后一个参数是设备的名称。所有的数字变量都可以自由选择,如果用户忽略或是设置成0,那么核心会自动检测该设备的参数变量或使用默认
值。第一个参数代表分配给设备的中断请求通道,默认情况下核心会自动检测设备的IRQ通道。第二个参数变量base_addr用来指定设备的基本I/O地址。同样,如果这里是0,就意味着核心会自动检测该设备的I/O地址;剩下的两个参数变量param1和param2对于不同的设备有不同的含义。对于共享内存的网卡,它们用来定义共享内存区域的起始点和结束点。对于其他网卡来说,它们使用param1来设置信息的调试等级,数字1到7代表调试等级逐渐增加,而数字8表示关闭信息调试,0表示使用默认值。
如果用户有两块网卡,那么其中一块可以让Linux在启动时自动检测而另一块则通过lilo将其参数传递给核心。但是,您必须确保通过lilo传递参数的那块网卡不会在系统启动时被“偶然”检测到,否则第一块网卡就检测不到了。为此,可以在lilo.conf中使用reserve命令。这条命令语句明确地告诉核心不自动检测第二块网卡。例如,为了安装I/O地址是0x300的第二块网卡eth1,可以在lilo.conf中加上下面这一条语句:
reserve=0x300,32 eth1=0,0x300,eth1
使用rserve命令语句就可以保证核心在系统启动检测其他硬件时不会检测分配给第二块网卡的I/O地址。用户可以使用这条语句来覆盖自动检测的第一块网卡:
reserve=0x340,32 eth1=0,0x340,eth0
如果要关闭自动检测功能,可以将base_argiment参数变量定义为-1,如:
ether=0,-1,etn0
接下来是网卡接口的配置,可以ifconfig命令来配置TCP/IP网络。它可以使Linux核心知道软件回送这样一些网络接口,但这些网络接口被激活以后,核心就可以使用它们发送和接收数据报。我们需要在自己的机器上设置好几个接口,包括回送接口lo和以太网接口(或者所有使用的其他网络接口)。ifconfig命令可以激活每一个网络接口。
ifconfig命令最常用的格式是:
#ifconfig interface_type IP_Address
这里interface_type是接口设备的驱动器名,如回送接口lo,ppp接口PPP和以太网接口eth等。IP_Address是分配给接口设备的IP地址。运行了ifconfig之后,相应接口会被激活。先配置回送接口loopback位于网络上的每一台主机都应该有一个回送接口,所有系统中回送接口的IP地址都是127.0.0.1。通常Linux系统的回送接口在安装时就已经自动设置好了,并且使用虚拟主机名localhost来代表地址127.0.0.1。如果在/etc/hosts文件中可以找到下面这一项。
#Sample /etc/hosts entry for localhost
127.0.0.1 localhost
那么说明回送接口已经配置好了,如果不存在,则可以使用vi编辑器添加。
当hosts文件中没有回送接口这一项时,还需要使用ifconfig命令来产生回送接口:
#ifconfig 127.0.0.1
之后我们还可以使用ifconfig命令来显示回送接口的所有信息以确认配置是否生效:
$ifconfig lo
lo Link encap Local Loopback
inet addr 127.0.0.1 Bcast[NONE SET] Mask 255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU 2000 METRIC 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun
可看到回送接口的掩码是255.0.0.0,这是因为回送地址127.0.0.1本身是一个A类地址:此外回送接口也没有设置广播地址,广播地址对于回送接口来说意义不是很大,但是如果想运行rwhod守护进程的话,就必须设置回送设备的广播地址以便rwho命令可以正常工作。如何设置广播地址将在本章第三节中介绍。现在还需要使用下面两条命令中的任意一个将回送设备添加到核心路由表中:
#route add 127.0.0.1
#route add localhost
我们可以使用一些命令来检查刚才配置的回送网络是否正常工作,检查网络状态的命令很多,如ifconfig、arp、netstat等,这里使用ping命令。ping命令可以指出一台主机