ubuntu下的内核模块编程

发布于 2022-09-19 14:58:04 字数 68 浏览 12 评论 0

想编写一个内核模块,简单的对字符设备实现读写等功能,是不是一定要另外编译一个新内核?ubuntu安装后/usr/src下好像没有源代码。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

柒七 2022-09-26 14:58:04

ubuntu下要实现一个内核模块的详细流程是什么?

梦里°也失望 2022-09-26 14:58:04

2.6的吗?
字符设备很简单呀,实现struct file_operations里面的read,write,ioctl,llseek函数功能,在编写一个加载和卸载设备驱动的函数XXX_init()和XXX_exit()。就可以了!
块设备要复杂一点!
ubuntu安好后/sur/src下面应该有源码吧!
我是用的7.10的

谁人与我共长歌 2022-09-26 14:58:04

是啊 ,首先要建一个内核树

云归处 2022-09-26 14:58:04

可以下一个源码放那里

红颜悴 2022-09-26 14:58:04

(1)在源代码所在目录建立Makefile文件如下:
obj-m += modulename.o
modulename-objs := file1.o file2.o

(2)在Makefile所在的目录运行make命令:
make –C /usr/src/linux-x.y.z  SUBDIRS=$PWD modules
注意:
模块建立所依赖的内核版本(通过查看内核源代码中的
顶层makefile中的定义)与使用模块内核版本(uname –
r)应该一致,否则就不能加载成功!

先移除字符设备,再注销设备号!

(3)加载模块
   insmod -f mydev.ko
   通过lsmod检查模块是否加载成功

(4)生成设备文件
  在文件/proc/devices中查找增加的设备对应的主设备号
假设为254,生成设备文件的相应的命令是:
     mknod /dev/mydev c 254 0
其中254为主设备号,0为从设备号,c表示字符设备
(5)编写驱动测试程序测试驱动程序的实现
   void main()
  {
     ……
     open();     //打开设备
     read();     //读设备
     write();    //写设备
     close();    //关闭设备
     ……   }
当不再使用时可通过 rmmod命令来卸载设备。

原来分手还会想你 2022-09-26 14:58:04

ubuntu下已经有内核树了,不用在建。在/usr/src/目录下已经有了!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文