关于内核module符号表的一些实验
问题1:当我在已经装有kernel-devel的机器上,改写并编译DM模块然后安装。接下来编译一个dm模块的字模块,编译会通过,但是在安装的时候dmesg会报出没有找到对应符号的错误。
解决1:安装DM模块之后将/lib/modules/{uname -r}/build/Module.symvers中有关DM模块的符号地址改成编译之后新生成的Module.symvers,然后编译子模块不会报错,运行也正常。
安装包:将解决中的两个ko文件安装在其他机器(机器2)并没有报错,疑问1:难道只是编译才需要正确的符号表?疑问2:符号表不应该是从内核中的动态符号表里找吗?
实验1
不更改原有的符号直接删除编译中报没有定义符号的警告,但是可以正常安装运行,这时候对应的符号是从哪里找的呢?是不是找不到build中的静态符号表就从内核里的动态符号表里找呢?
实验2
在机器2上下载kernel-devel再编译新的字模块: