重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
linux系统如何安装网卡驱动
成都创新互联于2013年成立,是专业互联网技术服务公司,拥有项目网站设计制作、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元合山做网站,已为上家服务,为合山各地企业和个人服务,联系电话:13518219792
很多初学者都觉得能够在自己的笔记本上安装linux系统是一件很酷的事情,结果两个小时安装好linux系统,却发现缺少各种驱动, 为了让各位少走一些弯路,我在这里把linux如何安装有线网卡驱动的方法整理了下,方便大家学习。
场景:联想笔记本电脑安装的centos系统,安装完成后发现缺少网卡驱动
1. 检查是否安装网卡驱动
执行命令:lspci | grep -i eth
终端显示的结果为:02:00.0 Ethernet controller: Qualcomm Atheros AR8161 Gigabit Ethernet (rev 08)
接着再执行一下命令:ifconfg
终端显示的连接中没有eth0的相关信息,只有一个lo 和virbr0
很明显,网卡驱动没有装好。我是这样来解决的.。
注意:我电脑是联想Y400 网卡是上面的Atheros AR8161这个,网卡驱动下载链接
下载后解压得到: alx-linux-v2.0.0.6 目录
2. 检查自己的系统环境
gcc
kernel-headers 和 kernel-devel 是否已经安装,我安装系统时候就安装了开发组件和桌面,所以这里没必要再安装。
如果没有安装开发组件,可以进行如下操作(用yum前需要提前配好yum源)
yum install gcc
yum install kernel-headers
yum install kernel-devel
3. 编译:
进入 alx-linux-v2.0.6的目录
执行make
此时在src文件件夹中产生了一个alx.ko文件
4. 配置文件的修改:
mkdir /lib/modules/2.6.32-358.6.2.el6.x86_64/kernel/net/wired //创建文件夹wired
在vi /lib/modules/2.6.32-358.6.2.el6.x86_64/modules.networking 文件里添加 alx.ko
执行命令:vi /etc/sysconfig/modules/alx.modules
在alx.modules中添加如下脚本内容:
#!/bin/sh
if [ ! -c /dev/input/alx.ko ] ; then
exec /sbin/modprobe alx /dev/null 21
fi
5.最后执行其他命令:
首先执行命令:depmod -a
接着执行命令:modprobe alx
此时用ifconfig 就可以找到eth0 了
6.如果还是找不到
执行ifconfig -a //这样就可以发现eth0了(eth0是第一个,如果你有其他网卡,就会有eth1,2,3...)
ifconfig eth0 up //启动eth0
好了。到此为止,网卡驱动已经安装好了,接下来开始配置网络文件,开始愉快的玩耍吧!
不过我还是要强烈呼吁初学者,不要安装双系统,不要在笔记本安装linux系统。用windows+虚拟机的模式来学习是最快的学习方式。
1、将驱动程序文件bcm5700src.rpm复制到一个临时目录中,并在此目录中运行以下命令;
2、运行以下命令切换到驱动目录中;
3、此目录中会生成一个名字为bcm5700.spec的文件,运行以下命令对驱动程序进行编译;
4、运行以下命令切换到RPM目录中;
5、运行以下命令安装驱动程序;
6、运行以下命令加载驱动模块;
7、运行kudzu命令,系统会自动搜索到硬件,进行配置即可。
linux是文件型系统,在linux中,一切皆文件,所有硬件都会在对应的目录(/dev)下面用相应的文件表示。 文件系统的linux下面,都有对于文件与这些设备关联的,访问这些文件就可以访问实际硬件。 通过访问文件去操作硬件设备,一切都会简单很多,不需要再调用各种复杂的接口。 直接读文件,写文件就可以向设备发送、接收数据。 按照读写存储数据方式,我们可以把设备分为以下几种:字符设备(character device)、块设备(Block device)和网络设备( network interface)。
字符设备(character device):指应用程序采用字符流方式访问的设备。这些设备节点通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务, 它通常只支持顺序访问。字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。
块设备(Block device):通常支持随机存取和寻址,并使用缓存器,支持mount文件系统。典型的块设备有硬盘、SD卡、闪存等,但此类设备一般不需要自己开发,linux对此提过了大部分的驱动。
网络设备(network interface):是一种特殊设备,它并不存在于/dev下面,主要用于网络数据的收发。网络驱动同块驱动最大的不同在于网络驱动异步接受外界数据,而块驱动只对内核的请求作出响应。
上述设备中,字符设备驱动程序适合于大多数简单的硬件设备,算是各类驱动程序中最简单的一类,一般也是从这类驱动开始学习,然后再开始学习采用IIC、SPI等通讯接口的一些设备驱动。可以基于此类驱动调试LKT和LCS系列加密芯片。注意7位IIC地址是0x28。
linux的驱动一般有两种格式,分别为:tar和rpm格式。
rpm安装步骤:
1.将驱动程序文件bcm5700-.src.rpm复制到一个临时目录中,并在此目录中运行以下命令:
rpm –ivh bcm5700-.src.rpm
2.运行以下命令切换到驱动目录中:
cd /usr/src/redhat/SPECS/
3.此目录中会生成一个名字为bcm5700.spec的文件,运行以下命令对驱动程序进行编译:
rpmbuild –bb bcm5700.spec (对4.x.x版本的RPM适用)或 rpm -bb bcm5700.spec
4.运行以下命令切换到RPM目录中:
cd /usr/src/redhat/RPMS/i386/
5.运行以下命令安装驱动程序:
rpm –ivh bcm5700-.i386.rpm (对于Red Hat 7.2, 7.3, 2.1AS和其他包含老版本驱动的系统需要使用--force的参数,强制用新的驱动替换系统自带的老版本驱动)
6.运行以下命令加载驱动模块:
insmod bcm5700
7.运行kudzu命令,系统会自动搜索到硬件,进行配置即可。
或者重新启动系统,启动过程中系统会自动找到硬件,进行相应配置即可。
tar格式安装步骤:
1. 将驱动程序压缩文件bcm5700-.tar.gz复制到一个临时目录中,并使用以下命令解压缩:
tar xvzf bcm5700-.tar.gz
2.构建驱动程序为运行内核可加载模块
cd bcm5700-/src
make
3.加载测试
insmod bcm5700
4.加载驱动程序
make install
5.重新启动系统,启动过程中找到硬件,进行相应配置。
或者直接运行kudzu命令,系统会自动搜索到硬件,进行配置即可。
hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用
描述
我们以event1为例,当我们insmod挂载了键盘驱动后,出现一个event1设备,
此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来?
通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层hexdump
因为键盘驱动的input_handler 是:evdev_handler
所以键盘驱动的read函数是: evdev_handler-evdev_fops-evdev_read
进入evdev_read()函数,如下图所示:
evdev_event_to_user()这个函数从字面上来看,显然就是用来上传给用户层的函数,其中buffer是函数参数,指向用户层,所以数据就是event.
我们来看看event的结构体:input_event
把 time里的成员展开如下:
所以我们hexdump调试任何输入子系统event XX驱动时,有信息就会打印上面数据
1.调试键盘驱动
以按开发板的按键 KEY_L,为例(因为数据是从低到高打印的,所以数据是反的):
在Linux下安装驱动程序的实施步骤如下:
第一步:首先使用lsmod|grep "*" *为你需要查看的驱动模块;
第二步:首先去相应设备提供商官网下载相应的Linux版本驱动程序包,可以是rpm包也可以是源码包,下载完毕后使用rpm或者make命令进行编译安装;
第三步:使用insmod或者modprobe将安装后的模块加载到内核中去即完成了驱动程序的安装。
最后一步在加载模块时主机维护人员可能会碰到成功安装后无法加载到内核的问题,现我详细介绍一下inmod和modprobe的用法。
1)modprobe:
在挂载某个内核模块的同时,这个模块所依赖的模块也被同时挂载;这是于insmod挂载模块有区别的地方。当然modprobe也有列出内核所有模块的功能modprobe -l,还有移除模块的功能modprobe -r 模块名称;
2)insmod:
insmod挂载模块这个工具和modprobe有点类似,但功能上没有modprobe强,modprobe在挂载模块是不用指定模块文件的路径,也不用带文件的后缀.o 或.ko;而insmod需要的是模块的所在目录的绝对路径,并且一定要带有模块文件名后缀。
在以后管理员使用modprobe工具无法加载安装的模块时用建议可以使用insmod或者modprobe -f进行强制加载。
在2.4内核中,加载驱动命令为:insmod ,删除模块为:rmmod;
在2.6以上内核中,除了insmod与rmmod外,加载命令还有modprobe;
insmod与modprobe不同之处:
insmod 绝对路径/××.o,而modprobe ××即可,不用加.ko或.o后缀,也不用加路径;最重要的一点是:modprobe同时会加载当前模块所依赖的其它模块;
lsmod查看当前加载到内核中的所有驱动模块,同时提供其它一些信息,比如其它模块是否在使用另一个模块。