1. 程式人生 > >動態載入模組出現disagrees about version of symbol 問題分析

動態載入模組出現disagrees about version of symbol 問題分析

1.編譯kernel的時候,會生成Module.symvers檔案,記錄每個Symbol 和相應的CRC code,例如: 比如這個kernel 版本是2.6.38-1.4 0x258d700e      raw_seq_open    vmlinux EXPORT_SYMBOL_GPL 0xebba1d26      device_add      vmlinux EXPORT_SYMBOL_GPL 0xfb0f0e78      device_del      vmlinux EXPORT_SYMBOL_GPL 0xa5bf5c3e      pm_qos_add_requirement  vmlinux EXPORT_SYMBOL_GPL 2.編寫動態載入module的時候,也會生成類似的檔案module_name.mod.c,將module呼叫到的system call 記錄在裡面,這個的symbol使用編譯module的時候指向的kernel路徑。比如這個kernel 版本是2.6.37-2.5。 3.載入這個動態module的時候,kernel會去check載入模組的每一個symbol的CRC,看看是否與kernel相應的symbol相同,不同的話就會報錯。  同一個kernel版本,不同的config也會出這個問題。 Found checksum 818923239 vs module A1009786 "***module": disagrees about version of symbol device_add "***module": Unknown symbol device_add