
我已透過 PPA 安裝了 USB 裝置的 DKMS 驅動程式。我正在更改程式碼並嘗試使用 apt-get --purge remove 卸載驅動程序,但是當我插入設備時,內核模組仍然加載......為什麼會這樣?他們藏在哪裡?
先致謝
答案1
當您(或 DKMS)建立核心模組並安裝它時,它們會轉到/lib/modules/$(uname -r)/...
,因此請在那裡檢查。我的系統中的一個例子:
/lib/modules/3.2.0-36-generic-pae/updates/dkms/nvidia_current_updates.ko
答案2
安裝和使用使用 DKMS 安裝的核心模組涉及幾個(大部分是自動化的)步驟:
- (根據您的情況)新增 PPA 來源,刷新套件清單。
- 使用套件管理器 ( ) 安裝 DKMS 套件,
apt-get
首先將原始碼和自動安裝說明複製到標準目錄 (/usr/src/<module name>-<version>
) - DKMS 將檔案複製到其私有目錄。
- DKMS 在其私有目錄中編譯核心模組的原始碼。
- DKMS將編譯後的核心模組檔案複製到modules目錄中(通常是
/lib/modules/<kernel version>/updates
) - DKMS 更新了模組依賴項,以便您可以
modprobe <modname>
使用insmod /lib/modules/<kernel version>/updates/<modname>.ko
. - 您可以手動載入核心模組 (
modprobe <modname>
),也可以在插入 USB 裝置時由系統元件 (udev) 為您載入。
清除包時,步驟 1-6 將被撤銷。步驟 7 不會自動撤銷。通常,模組在載入後會保持載入狀態,除非您使用 手動刪除它sudo rmmod <modname>
。用於lsmod
找出您的模組的名稱,通常這與 相同<modname>
,但至少對於 Ubuntu 上的 nvidia 驅動程序,這是不同的(您可以使用modprobe nvidia-current
,但使用rmmod nvidia
)。