ubuntu12.04插入字符设备模块(不用重新编译内核)
2014-07-31 17:51
309 查看
直接上操作步骤啦!
1.写好的自己添加的模块源码(test_drv.c )
2.编写makefile文件
3. 在终端路径下以root身份编译模块
#sudo make (调用第一个命令default)
这时,在test_drv.c所在文件夹就会有test_drv.ko ,这个就是我们需要的内核模块啦
4. 插入模块,让其工作(注意必须是root权限)
#insmod test_drv.ko
完成后,再看看系统中的模块:
#lsmod
显示模块列表,发现多了一个模块“test_drv”,表示成功加载了!
分配前,我们必须要知道主设备号:
#cat /proc/devices
(我这里的主设备号为249.)
现在我们分配从设备号:
#mknod /dev/test_dev c 249 0
实际上就是在虚拟文件夹/dev/中加一个设备(在系统看来是文件)test_dev ,注意,这个是设备名,在测试文件中真是要利用这个设备名打开设备。最后的0表示从设备号。可以随便分配(只要不冲突)。
此时可以在/dev/目录下看到新建的设备test_dev了:
#ls /dev/
6.测试新加的字符驱动程序
附上测试程序:
编译测试程序:
#gcc -o test test.c
执行测试程序 :
#./test
之后根据提示输入字符,查看输出即可。
#rm /dev/test_dev
删除后,可查看/dev/目录下已经木有test_dev 了:
#ls /dev/
8.接着删除模块
# rmmod test_drv.ko
可查模块列表中已经没有test_drv模块了:
#lsmod
这样插入字符驱动模块,并调用显示,再删除模块就都完成啦!
1.写好的自己添加的模块源码(test_drv.c )
2.编写makefile文件
3. 在终端路径下以root身份编译模块
#sudo make (调用第一个命令default)
这时,在test_drv.c所在文件夹就会有test_drv.ko ,这个就是我们需要的内核模块啦
4. 插入模块,让其工作(注意必须是root权限)
#insmod test_drv.ko
完成后,再看看系统中的模块:
#lsmod
显示模块列表,发现多了一个模块“test_drv”,表示成功加载了!
5.分配次设备号
每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备。分配前,我们必须要知道主设备号:
#cat /proc/devices
(我这里的主设备号为249.)
现在我们分配从设备号:
#mknod /dev/test_dev c 249 0
实际上就是在虚拟文件夹/dev/中加一个设备(在系统看来是文件)test_dev ,注意,这个是设备名,在测试文件中真是要利用这个设备名打开设备。最后的0表示从设备号。可以随便分配(只要不冲突)。
此时可以在/dev/目录下看到新建的设备test_dev了:
#ls /dev/
6.测试新加的字符驱动程序
附上测试程序:
编译测试程序:
#gcc -o test test.c
执行测试程序 :
#./test
之后根据提示输入字符,查看输出即可。
7.删除设备
就像删除普通文件一样:#rm /dev/test_dev
删除后,可查看/dev/目录下已经木有test_dev 了:
#ls /dev/
8.接着删除模块
# rmmod test_drv.ko
可查模块列表中已经没有test_drv模块了:
#lsmod
这样插入字符驱动模块,并调用显示,再删除模块就都完成啦!
相关文章推荐
- 编译时向内核添加新设备 模块的方式动态的将驱动加入内核,但这种方式加入的驱动程序,当系统重新启动时, 还需要重新用模块的方式进行插入,如果是系统内常用的设备驱动采用这种方式进行加载, 就会很不方便。
- 网卡始终不通的原因?改了linux内核后要重新编译insmod安装的模块
- 利用模块添加系统调用(不重新编译内核)
- ubuntu12.04重新编译内核
- 利用模块添加系统调用(不重新编译内核)
- linux kernel 编译内核模块代码,插入内核模块遇到的问题和解决
- 内核子系统或设备驱动可以直接编译到内核,也可以编译成模块,如果编译到内核,可以使用前一节介绍的方法通过内核启动参数来向它们传递参数,如果编译成模块,则可以通过命令行在插入模块时传递参数,或者在运行时,
- 利用模块添加系统调用(不重新编译内核)
- 嵌入式重新记录1.将驱动模块编译进内核
- 编译内核NTFS模块(RHEL3.0)
- Linux系统下编译安装支持NTFS的内核模块
- 编写、编译、安装、移除一个内核模块的基本过程,不能再简单了的
- 如何把自己的驱动编译进内核或模块
- Linux 2.6内核的编译步骤及模块的动态加载
- 内核模块编译说明
- 两个编译2.4与2.6内核模块的Makefile 模板
- 日记 [2008年03月23日]不编译内核给iptables增加模块
- 在Debian 4.0rc3上编译内核2.6.24时加入Layer7模块笔记--第三版
- 在2.6内核下不编译内核给iptables添加模块
- Linux(Ubuntu)下编译内核模块