1. 程式人生 > >linux核心程式設計學習筆記

linux核心程式設計學習筆記

常見問題

一、核心模組A呼叫核心模組B

檢視匯出的核心符號表

cat /proc/kallsyms | grep 'func_m2'

1、一個核心模組A呼叫另一個核心模組B的匯出函式,需要做到三點
1.模組B先載入
2.模組B函式匯出成功
3.模組B編譯後會有個Module.symvers,將這個Module.symvers拷貝到模組A的編譯目錄

https://stackoverflow.com/questions/33718358/insmod-fails-with-unknown-symbol-in-module-for-a-symbol-defined-in-another-mod?rq=1#

二、核心模組如何除錯

printk + systemtap + kgdb除錯環境搭建

 

三、核心模組相關命令

modprobe

insmod

rmmod

printk

每次重新編譯模組後,必須解除安裝並重新載入後,針對模組的修改才會生效

 

四、dmesg和/var/log/messages區別

開啟syslog服務後,是一樣的

 

五、以iptables/netfilter的set模組為例子

需要編寫使用者態和核心態模組

使用者態iptables:libxt_set.c

核心態netfilter:xt_set.c

 

六、編譯核心模組的makefile

obj-y和obj-m