2016-08-05 50 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'来强制该配置选项。 –