Linux下编写和加载 .ko 文件(驱动模块文件

Linux下编写和加载 .ko 文件(驱动模块文件,第1张

一、.ko 文件介绍

.ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载。

二、优点

(1)这样可以缩小内核体积;

(2)使用方便。

三、.ko文件一般的用处

(1)作为一个功能模块,需要使用时,直接插入运行就行。如在imx6上连接模拟摄像头,先运行模拟摄像头对应的驱动模块 camera.ko文件,然后对应的工程执行文件运行就行。

四、使用.ko 文件

1、加载驱动模块test.ko

(1)方法一 

进入test.ko驱动模块文件所在的目录,然后直接   insmod  test.ko 

(2)方法二 

将test.ko文件拷贝到/lib/module/#uname-r#/目录下,这里,#uname -r#意思是,在终端中输入 

uname -r后显示的内核版本及名称,例如mini2440中#uname-r#就是2.6.32.2-FriendlyARM。

然后 depmod(会在/lib/modules/#uname -r#/目录下生成modules.dep和modules.dep.bb文件,表明模块的依赖关系) 

最后 modprobe test(注意这里无需输入.ko后缀) 即可

注:两种方法的区别

modprobe和insmod类似,都是用来动态加载驱动模块的,区别在于modprobe可以解决load module时的依赖关系,它是通过/lib/modules/#uname -r/modules.dep(.bb)文件来查找依赖关系的;而insmod不能解决依赖问题。也就是说,如果你确定你要加载的驱动模块不依赖其他驱动模块的话,既可以insmod也可以modprobe,当然insmod可以在任何目录下执行,更方便一些。而如果你要加载的驱动模块还依赖其他ko驱动模块的话,就只能将模块拷贝到上述的特定目录,depmod后再modprobe。

驱动各种各样,一般直接在硬件商官网下载安装包的都是tar.gz或者tar..bz2之类的tar的压缩包。

如果是系统自己安装的,那一般安装包都是不同的,比如debian,ubuntu这样的发行版用的deb,

而centos,和fedora这样的发行版用的是rpm。

如果是安装好的驱动,后缀都是.c

linux系统如何安装网卡驱动

很多初学者都觉得能够在自己的笔记本上安装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这个,网卡驱动下载链接 http://pan.baidu.com/s/1gd3hNvd

下载后解压得到: 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 2>&1

fi

5.最后执行其他命令:

首先执行命令:depmod -a

接着执行命令:modprobe alx

此时用ifconfig 就可以找到eth0 了

6.如果还是找不到

执行ifconfig -a //这样就可以发现eth0了(eth0是第一个,如果你有其他网卡,就会有eth1,2,3...)

ifconfig eth0 up //启动eth0

好了。到此为止,网卡驱动已经安装好了,接下来开始配置网络文件,开始愉快的玩耍吧!

不过我还是要强烈呼吁初学者,不要安装双系统,不要在笔记本安装linux系统。用windows+虚拟机的模式来学习是最快的学习方式。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6210308.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-18
下一篇2023-03-18

发表评论

登录后才能评论

评论列表(0条)

    保存