码迷,mamicode.com
首页 > 其他好文 > 详细

5.2.2.最简单的模块源码分析1

时间:2018-07-01 15:53:39      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:打印   也有   end   install   模块   shel   重新编译   分析   sed   

本节主要讲解模块安装和过程,及其和module_init宏的关联,并且重点讲解了模块安装时的安全性兼容性校验问题。

5.2.2.1、常用的模块操作命令
* lsmod(list module):打印当前内核中已经安装的模块

aston@ubuntu:~$ lsmodModule Size Used byvmhgfs 48609 1snd_ens1371 24547 2snd_ac97_codec 105709 1 snd_ens1371
* modinfo(module info):打印出内核模块的自带信息。modinfo xxx.ko

modinfo module_test.komodinfo module_test.kofilename: /root/winshare/driver/5.2.1/module_test.ko 带全路径的模块名字license: GPLsrcversion: 9607C92CC3B26CACAF59BA3 不用管depends: vermagic: 3.13.0-32-generic SMP mod_unload modversions 686 (uboot)vermagic: 2.6.35.7 preempt mod_unload ARMv7 版本魔数(版本信息)校验与内核是否相同模块有版本信息,内核的zImage也有版本信息,两者必须相同才能安装
* insmod(install module):insmod xxx.ko

insmod module_test.koinsmod: ERROR: could not insert module module_test.ko: Invalid module format解决:Makefile打开#ubuntu的内核源码树,如果要编译在ubuntu中安装的模块就打开这2个KERN_VER = $(shell uname -r)KERN_DIR = /lib/modules/$(KERN_VER)/build 重新编译安装后打印:lsmodModule Size Used bymodule_test 12394 0 (最前面)vmhgfs 48609 1>>dmesg[11804.303931] chrdev_init
* rmmod(remove module):卸载模块(最好不要.ko)。rmmod xxx

rmmod module_test.ko>>dmesg[11804.303931] chrdev_init[12165.167548] chrdev_exit代码中:module_init(chrdev_init);代码insmod所做的事情:
* 调用module_init宏声明的函数

module_init(chrdev_init); //声明驱动(函数)入口,用module_init把chrdev_init这个函数与insmod绑定起来。module_exit(chrdev_exit); //声明驱动(函数)出口,用module_init把chrdev_init这个函数与rmsmod绑定起来。

5.2.2.最简单的模块源码分析1

标签:打印   也有   end   install   模块   shel   重新编译   分析   sed   

原文地址:https://www.cnblogs.com/Ocean-Star/p/9250234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!