2016-08-05 106 views
2

我試圖(可逆地)禁用Raspbian Jessie安裝上的USB HID支持,內核版本爲4.4.16-v7 +。我們需要將Raspberry Pi放在半公開的空間中,並在電視上播放東西,而且我們希望至少有點難以搞砸它。防止usbhid在USB HID設備插入時自動加載

到目前爲止,我已經設法使usbhid模塊通過rmmod從內核中移除。然而,在模塊化之後,似乎每當我插入USB鍵盤或鼠標時,設備驅動程序都會重新加載到內核中。

有什麼辦法可以防止這種情況發生?

回答

2

的udev是這樣做的最好的,最簡單的方法,例如,在添加新的規則: /etc/udev/rules.d/99-disable-usb-hid.rules:

SUBSYSTEMS=="usb", DRIVERS=="usbhid", ACTION=="add", ATTR{authorized}="0" 

並重新啓動udev。 我剛剛在Debian Jessie ARM 4.4.16中進行了測試。

+0

這是一個非常酷的解決方案,我比我最終實現的更好(將黑名單內核模塊列入黑名單)。希望我知道這種可能性。 – 1flx

1

我能想到的兩個選項:通過添加

黑名單內/etc/modprobe.d/blacklist.conf內核模塊:

EASIER

blacklist usbhid 

確保您以root用戶身份執行此操作,或者以root身份登錄,否則此文件是隻讀的。

HARDER:

如果你必須重新編譯您正在使用,那麼你可以設置CONFIG_USB_HID = N內核配置文件中禁用USBHID完全內核的能力。

您可以關注Raspberry Pi的kernel building steps,一旦您擁有了所有設置的內容,您可以修改配置文件,使CONFIG_USB_HID = n。您可以在menuconfig期間或通常執行此操作的方式執行此操作,即在運行make defconfig後編輯隱藏的.config文件。有關配置和構建Linux內核的更多信息,請參閱linux kernel in a nutshell

由於Raspberry Pi是ARM,並且我假設您的計算機是x86,所以您需要設置交叉編譯器工具鏈。這些信息也應該在RasPi的內核構建步驟中找到。

然後繼續遵循RasPi的內核構建步驟將內核加載到Raspberry Pi上。這應該可以解決出現問題。它首先不會被燒入內核。

+0

我實際上已經嘗試了一個內核重新編譯,使各個模塊可選,但一旦設備插入,它總是自動加載,所以沒有工作......我不想完全失去功能,所以完全忽略模塊只是最後一招。 我能夠按照您所描述的方式完成黑名單所需的操作,但將它放入blacklist.conf中卻無法正常工作。我必須將usbhid,usbkbd和usbmouse的黑名單行放入'/etc/modprobe.d/usbkbd.conf'等文件中。只是因爲某種原因,usbhid還不夠。 – 1flx

+1

有時運行時會自動將配置選項設置爲「y」或「n」。這聽起來像是你已經找到了一個可行的解決方案,但是如果你確實需要強制配置選項,你可以在make命令之後加入它。例如,你可以運行'make CONFIG_USB_HID = n'來強制該配置選項。 –