
我已經獲得了供應商提供的最小 Linux 安裝。從對上一個問題的回答中,我發現可以建立具有或不帶有模組支援的核心。我有一個需要連接的 CANBUS 設備,該設備附帶 .ko 檔案形式的驅動程式。我希望能夠使用提供的安裝腳本來安裝它們,但首先我需要知道我的核心是否是使用模組支援構建的 - 我是否可以從命令列檢測到這一點?
當我運行時lsmod
它不會返回任何內容,所以我知道目前沒有 .ko 文件 - 但這是否意味著內核不允許我安裝 .ko 文件?
答案1
如果您有一個檔案系統,當且僅當核心使用模組支援進行編譯時,/proc
該檔案才存在。/proc/modules
如果該檔案存在但為空,則您的核心支援模組,但目前尚未載入任何模組。如果該檔案不存在,您的核心將無法載入任何模組。
從技術上講,無需/proc
.您可以檢查內核二進位檔案中是否存在init_module
和系統呼叫。delete_module
如果您只有壓縮的二進位(例如vmlinuz
或uImage
),這可能並不容易。看如何將 vmlinuz 解壓縮到 vmlinux?為了vmlinuz
。一旦您成功解壓縮了大部分內核,就可以搜尋字串sys_init_module
.
請注意,如果支援模組,您將需要額外的檔案來編譯您自己的模組:內核頭檔。這些是 C 頭檔(*.h
),其中一些是在編譯核心時產生的(因此您不能只從核心原始碼中取得它們)。看內核原始碼樹包含什麼?這與 Linux 核心頭檔有關嗎?
答案2
大多數發行版都會在某處儲存帶有內核配置的文字檔案。在 Debian 系統上,您可以在/boot/config-<kernel_version>
.
然後你可以簡單地運行grep
該文件:
grep CONFIG_MODULES /boot/config-<kernel_version>