我可以檢測我的定制內核是否是使用模組支援構建的嗎?

我可以檢測我的定制內核是否是使用模組支援構建的嗎?

我已經獲得了供應商提供的最小 Linux 安裝。從對上一個問題的回答中,我發現可以建立具有或不帶有模組支援的核心。我有一個需要連接的 CANBUS 設備,該設備附帶 .ko 檔案形式的驅動程式。我希望能夠使用提供的安裝腳本來安裝它們,但首先我需要知道我的核心是否是使用模組支援構建的 - 我是否可以從命令列檢測到這一點?

當我運行時lsmod它不會返回任何內容,所以我知道目前沒有 .ko 文件 - 但這是否意味著內核不允許我安裝 .ko 文件?

答案1

如果您有一個檔案系統,當且僅當核心使用模組支援進行編譯時,/proc該檔案才存在。/proc/modules如果該檔案存在但為空,則您的核心支援模組,但目前尚未載入任何模組。如果該檔案不存在,您的核心將無法載入任何模組。

從技術上講,無需/proc.您可以檢查內核二進位檔案中是否存在init_module和系統呼叫。delete_module如果您只有壓縮的二進位(例如vmlinuzuImage),這可能並不容易。看如何將 vmlinuz 解壓縮到 vmlinux?為了vmlinuz。一旦您成功解壓縮了大部分內核,就可以搜尋字串sys_init_module.

請注意,如果支援模組,您將需要額外的檔案來編譯您自己的模組:內核頭檔。這些是 C 頭檔(*.h ),其中一些是在編譯核心時產生的(因此您不能只從核心原始碼中取得它們)。看內核原始碼樹包含什麼?這與 Linux 核心頭檔有關嗎?

答案2

大多數發行版都會在某處儲存帶有內核配置的文字檔案。在 Debian 系統上,您可以在/boot/config-<kernel_version>.

然後你可以簡單地運行grep該文件:

grep CONFIG_MODULES /boot/config-<kernel_version>

相關內容