contributed by < max890808 >
自我檢查清單
[X] 自己的實體電腦運作 GNU/Linux
[ ] 閱讀〈Linux 核心模組運作原理〉並對照 Linux 核心原始程式碼 (v6.1+),解釋 insmod 後,Linux 核心模組的符號 (symbol) 如何被 Linux 核心找到 (使用 List API)、MODULE_LICENSE 巨集指定的授權條款又對核心有什麼影響 (GPL 與否對於可用的符號列表有關),以及藉由 strace 追蹤 Linux 核心的掛載,涉及哪些系統呼叫和子系統?
解釋 insmod 後,Linux 核心模組的符號 (symbol) 如何被 Linux 核心找到 (使用 List API)
使用 strace 追蹤執行 insmod 的過程會有哪些系統呼叫被執行,可以發現會呼叫 finit_module,接著呼叫 idempotent_init_module 該函式當中還會呼叫 init_module_from_file ,在 init_module_from_file 才真正呼叫到 load_module。
在 kernel/module/main.c 可以找到 find_symbol 函式,其使用 List API list_for_each_entry_rcu 和 find_exported_symbol_in_section 來查找模組的符號。