一、耦合:
linux的kernel与modules存在耦合版本匹配,在版本不匹配(内核重新编译后,或者驱动模块编译依赖的内核版本跟运行版本不匹配)时候,会存在insmod 驱动模块失败的情形;
二、解耦:
1、修改内核配置,去掉CONFIG_MODVERSIONS的选项,表示不增加sub-string;
2、修改内核源码:./scripts/setlocalversion脚本,为res="$res${scm:+}";
3、insmod如果是基于busybox的,需要做如下修改,force insmod:
modutils/modutils.c中 finit_module(fd, options, 2);改为finit_module(fd, options, 0);