大佬教程收集整理的这篇文章主要介绍了如何构build和部署Linux驱动程序?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Ubuntu的,但问题是一般的Linux。
我通过编译我的linux内核来安装一个模块/驱动程序,并安装新的编译内核。 它工作正常。
为了使这个驱动程序在另一台机器上工作而不需要安装新内核,我将.ko文件复制到/lib/modules/<version>/...下的新机器上,然后运行sudo depmod -a 。 然后运行sudo modprobe <drivername> 。 该模块可以加载没有问题。 但是该设备在这个.ko模块中运行不正常。
这两台机器不同于硬件,但它们与内核版本和ubuntu发行版本相同。 通常情况下,复制.ko文件应该适用于相同的linux版本和相同的内核。
为什么我们需要在ARM Linux cpu_idle中的WFI之前禁用中断
识别unix域套接字连接的另一端
Linux内核编程:“无法处理内核NULL指针解除引用”
如何从外部模块导出符号?
内核模式版本的Findresource
有关驱动程序的更多信息。 这是一个隐藏的笔平板电脑驱动程序。 所有补丁文件:
在drivers/hid/Makefile添加一行
在drivers/hid/usbhid/Kconfig添加几行
在{0,0}前添加几行到drivers/hid/usbhid/hid-quirks.c的hid_blacklist结构中
就这样。
我甚至试图复制整个drivers/hid/目录包括从第一台机器的所有.ko文件到第二个。 但没有运气。 可以在第二台机器中识别笔写板,我可以用笔做鼠标左键单击事件,但笔不能移动光标。
希望我提供了足够的细节。 我的目标是只将模块安装到相同的linux发行版(内核),无需重新安装内核。 我不知道如何实现,或者如果可能的话。
非常感谢。
PS:
第一台机器的dmesg输出: http : //paste.ubuntu.com/6419301/
第二台机器的dmesg输出: http : //paste.ubuntu.com/6419302/
在第一台机器上,在插入平板电脑前,lsmod不显示模块。 插入后,模块可以自动加载。 我可以看到lsmod显示模块。
在第二台机器中,插入设备不能自动加载模块。 我必须手动执行sudo modprobe <module> 。
由于我将不得不将模块安装到我公司的许多机器上,所以安装模块更容易,无需重新安装内核。 我试图安装在第一台机器内置的第二台机器的内核.deb包,它在第二台机器上工作正常。 但是我觉得很难将内核重新安装到很多机器上。 谢谢。
Windows内核是否具有读写的fork()指令?
inode数据结构中的数据指针
如何在Linux上通过inode访问文件
安多林冠层中的多粒核
模块化内核与微内核/单核内核
看来你建的内核不是1:1的比赛。 另外,通常不需要编译新的内核。
处理树外驱动程序部署的最简单方法是使用DKMS 。
你需要提供的只是一个dkms.conf文件,它指定了软件包名称,版本,驱动程序名称和目标(在/lib/modules/{kernel} )。
在下面的例子中,大括号内的东西需要用真实的东西来替换,例如,如果版本是1.0.0,那么明显的是{version}和1.0.0 。
示例dkms.conf :
PACKAGE_NAME="{mydriver}" PACKAGE_VERSION="{version}" BUILT_MODULE_NAME[0]="{mydriver}" BUILT_MODULE_LOCATION[0]="/{mycompany?}" AUTOINSTALL="yes"
然后你只需要把源代码安装到/usr/src/{mydriver}-{version} ,然后运行dkms :
dkms add -m {mydriver} -v {version} dkms build -m {mydriver} -v {version} dkms install -m {mydriver} -v {version}
您应该看看其他人在这方面做了什么,可以应用于测试和发布流程的自动化程度非常高。 Bluecherry的solo6x10 out-of-tree版本提供了一些有用的make目标(披露:我是谁写的那个)。
另外,您一定要构建和分发软件包,您可以使用solo6x10/debian作为模板,并且可以在Debian wiki中阅读有关软件仓库 。
您可以将模块添加到/ etc / modules,以便在启动时加载。
以上是大佬教程为你收集整理的如何构build和部署Linux驱动程序?全部内容,希望文章能够帮你解决如何构build和部署Linux驱动程序?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。