2015年3月27日星期五

android:try to insert module into kernel

1.make menuconfig
  配置界面是从各目录下的Kconfig文件中读取的,各目录下的Makefile指明了配置项生成的文件。
  配置界面press m会编译成ko文件,或者直接去Makefile里面将对应值改成m 

2.android带有insmod命令.
  insmod的时候会对模块进行2层校验:vermagic和各symbol的crc. 可以参考:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/
  报错的话可以用dmesg命令查看具体出错原因。
①vermagic值类似:“3.4.39 SMP preempt mod_unload modversions ARMv7 p2v8”
 用modinfo *.ko可以查看.
 前面是版本号,在kernel代码根目录的Makefile里面。
 后面和内核编译配置有关,像modversions,在.config里面可以找到“CONFIG_MODVERSIONS=y”这一项.
 如果insmod后报错提示:version magic ‘****' should be ‘***',就可以按情况修改。
②用modprobe --dump-modversions *.ko可以查看模块内各symbol的crc值.
 如果报错提示:disagrees about version of symbol **** unknown symbol **** 则可以用hex editor之类的工具可以直接修改里面的crc值,方法来自:http://stackoverflow.com/a/11115750/1263423

没有评论:

发表评论