Phytec中国的wiki
support@phytec.cn
热线:0755-61802110-803
单独编译kernel时, 发现无法加载文件系统上的kernel modules.
depmod: can't change directory to 'lib/modules/3.2.0-PD13.1.2-dirty': No such file or directory
发现自己编的kernel version为3.2.0-PD13.1.2-dirty, 而bsp编译的kernel version为3.2.0-PD13.1.2.
直接将/lib/modules/3.2.0-PD13.1.2的目录修改为/lib/modules/3.2.0-PD13.1.2-dirty, 发现加载kernel模块时有symbol error.
loading modules [ 6.588104] Disabling lock debugging due to kernel taint [ 6.596008] pvrsrvkm: disagrees about version of symbol put_page [ 6.602355] pvrsrvkm: Unknown symbol put_page (err -22) [ 6.608001] pvrsrvkm: disagrees about version of symbol clk_set_rate [ 6.614715] pvrsrvkm: Unknown symbol clk_set_rate (err -22) [ 6.620697] pvrsrvkm: disagrees about version of symbol __free_pages [ 6.627380] pvrsrvkm: Unknown symbol __free_pages (err -22) [ 6.633270] pvrsrvkm: disagrees about version of symbol clk_round_rate [ 6.640136] pvrsrvkm: Unknown symbol clk_round_rate (err -22) [ 6.646209] pvrsrvkm: disagrees about version of symbol find_vma [ 6.652526] pvrsrvkm: Unknown symbol find_vma (err -22) [ 6.658081] pvrsrvkm: disagrees about version of symbol __get_page_tail [ 6.665069] pvrsrvkm: Unknown symbol __get_page_tail (err -22) [ 6.671386] pvrsrvkm: disagrees about version of symbol __alloc_pages_nodemask [ 6.678985] pvrsrvkm: Unknown symbol __alloc_pages_nodemask (err -22) [ 6.685791] pvrsrvkm: disagrees about version of symbol clk_get_rate [ 6.692504] pvrsrvkm: Unknown symbol clk_get_rate (err -22) [ 6.698394] pvrsrvkm: disagrees about version of symbol __register_chrdev [ 6.705566] pvrsrvkm: Unknown symbol __register_chrdev (err -22) [ 6.711914] pvrsrvkm: disagrees about version of symbol clk_disable [ 6.718536] pvrsrvkm: Unknown symbol clk_disable (err -22) [ 6.724365] pvrsrvkm: disagrees about version of symbol clk_enable [ 6.730865] pvrsrvkm: Unknown symbol clk_enable (err -22) modprobe: can't load module pvrsrvkm (extra/pvrsrvkm.ko): Invalid argument Module pvrsrvkm failed to load. Retrying.
网上搜索发现kernel version中多了-dirty标志的原因应该是git没有commit导致的,
kernel version去掉-dirty的标志, 可以在kernel menuconfig中配置:
CONFIG_LOCALVERSION_AUTO=n
修改后发现编译出来的kernel version为3.2.0-PD13.1.2+, 多了一个字符"+", kernel modules依然加载不成功.
去掉kernel version中的"+", 可以在kernel的目录下创建.scmversion的空白文件.
touch .scmversion
此时编译出来的kernel version为3.2.0-PD13.1.2, 现在可以成功加载原来文件系统上的模块了.
Overview
Content Tools
Activity
Tasks