2016-08-05 66 views
2

Ich versuche (reversibel) die USB-HID-Unterstützung auf einer Raspbian Jessie-Installation, Kernel-Version 4.4.16-v7 +, zu deaktivieren. Wir müssen den Raspberry Pi in einem halböffentlichen Raum haben und Sachen auf einem Fernseher zeigen, und wir möchten es zumindest ein bisschen schwierig machen, damit herumzuhantieren.Verhindern, dass das USB-HID-Gerät automatisch geladen wird

Bisher habe ich es geschafft, das usbhid-Modul über rmmod vom Kernel entfernbar zu machen. Nach dem Modifizieren des Moduls scheint es jedoch so zu sein, dass jedes Mal, wenn ich eine USB-Tastatur oder Maus anschließe, der Gerätetreiber wieder in den Kernel geladen wird.

Gibt es eine Möglichkeit, das zu verhindern?

Antwort

2

udev ist der beste und einfachste Weg, das zu tun, um eine neue Regel in zB hinzufügen: /etc/udev/rules.d/99-disable-usb-hid.rules:

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

und starten Sie udev neu. Ich habe es gerade in Debian Jessie ARM 4.4.16 getestet.

+0

Dies ist eine wirklich coole Lösung, die mir besser gefällt als die, die ich schließlich implementiert habe (Blacklisting der betreffenden Kernelmodule). Ich wünschte, ich hätte von dieser Möglichkeit gewusst. – 1flx

1

kann ich von zwei Möglichkeiten denken:

LEICHTER:

Schwarze Liste der Kernel-Modul innerhalb /etc/modprobe.d/blacklist.conf durch Zusatz:

blacklist usbhid 

Vergewissern Sie sich, dass Sie Tun Sie dies als root, indem Sie sudo verwenden oder sich als root anmelden, ansonsten ist diese Datei schreibgeschützt.

STARK:

Wenn Sie haben die Fähigkeit, den Kernel neu zu kompilieren, die Sie verwenden, dann könnte man CONFIG_USB_HID = n in der Kernelkonfigurationsdatei vollständig zu deaktivieren usbhid.

Sie könnten Raspberry Pi's kernel building steps folgen, und sobald Sie alles haben, um zu bauen, können Sie die Konfigurationsdatei so ändern, dass CONFIG_USB_HID = n. Sie können dies während eines menuconfig oder wie ich es normalerweise tue, indem Sie die versteckte .config-Datei nach dem Ausführen eines make defconfig bearbeiten. Weitere Informationen zum Konfigurieren und Erstellen des Linux-Kernels finden Sie unter linux kernel in a nutshell.

Da Raspberry Pi ARM ist, und ich nehme an, dass Ihr Computer x86 ist, müssen Sie eine Cross-Compiler Toolchain einrichten. Diese Informationen sollten auch in den Kernel-Building-Schritten von RasPi enthalten sein.

Dann folgen Sie weiter den RasPi-Kernel-Building-Schritten, um den Kernel auf Ihren Raspberry Pi zu bekommen. Dies sollte das Problem lösen, dass usbhid auftaucht. Es wird nicht in erster Linie in den Kernel gebacken werden.

+0

Ich habe tatsächlich eine Kernel-Neukompilierung versucht, um das entsprechende Modul optional zu machen, aber es wurde immer automatisch geladen, sobald ein Gerät angeschlossen wurde, so dass es nicht geklappt hat ... Ich wollte die Funktionalität nicht vollständig verlieren Das Modul komplett auszulassen, war nur eine letzte Sache. Ich konnte erreichen, was ich wollte, durch Blacklisting, wie Sie beschreiben, obwohl es in blacklist.conf irgendwie nicht funktioniert. Ich musste schwarze Listenzeilen für usbhid, usbkbd und usbmouse in '/ etc/modprobe.d/usbkbd.conf' usw .; nur usbhid war aus irgendeinem Grund nicht genug. – 1flx

+1

Manchmal wird beim Ausführen eine Konfigurationsoption automatisch auf "y" oder "n" gesetzt.Es klingt, als ob Sie bereits eine funktionierende Lösung gefunden haben, aber wenn Sie eine Konfigurationsoption erzwingen müssen, können Sie sie einfach nach dem make-Befehl einfügen. Zum Beispiel könnten Sie 'make CONFIG_USB_HID = n' ausführen, um diese Konfigurationsoption zu erzwingen. –