2016-08-05 4 views
2

Raspbian Jessie 설치, 커널 버전 4.4.16-v7 +에서 USB HID 지원을 비활성화하려고합니다. 우리는 반 공공 장소에 라즈베리 파이를 가져와 TV에 물건을 표시 할 필요가 있습니다.USB HID 장치가 연결되었을 때 usbhid가 자동으로로드되지 않도록합니다

지금까지 나는 usbhid 모듈을 rmmod를 통해 커널에서 제거 가능하게 만들었습니다. 모듈을 rmmod'ing 한 후에는 USB 키보드 나 마우스를 연결할 때마다 장치 드라이버가 다시 커널로로드됩니다.

이를 예방할 수있는 방법이 있습니까? 나는 두 가지 옵션의

답변

2

udev에는, 예를 들면에 새로운 규칙을 추가 그 일을 가장 쉬운 방법입니다

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

udev을 다시 시작하십시오. 데비안 Jessie ARM 4.4.16에서 테스트했습니다.

+0

이것은 정말 멋진 해결책입니다. 나는 마침내 구현 한 것 (문제가되는 커널 모듈을 블랙리스트에 올리는 것)보다 더 좋아합니다. 이 가능성을 알았 으면 좋겠어. – 1flx

1

을 생각할 수 있습니다 :

쉽게 :

블랙리스트 /etc/modprobe.d/blacklist.conf 내부의 커널 모듈을 추가하여 :

blacklist usbhid 

하는 것이 있는지 확인하십시오 당신이 sudo를 사용하거나 루트로 로그인하여 루트로 수행하십시오. 그렇지 않으면이 파일은 읽기 전용입니다.

더 열심히 :

당신은 당신이 다음 = n은 커널 설정 파일에 완전히 USBHID 사용하지 CONFIG_USB_HID을 설정할 수 있습니다 사용하는 커널을 다시 컴파일 할 수있는 능력이있는 경우.

라즈베리 파이의 kernel building steps을 따르고 모든 설정을 모두 완료하면 CONFIG_USB_HID = n이되도록 구성 파일을 수정할 수 있습니다. menuconfig 나 평소와 같이 makeconfig를 실행 한 후 숨겨진 .config 파일을 편집하는 방법으로이 작업을 수행 할 수 있습니다. 리눅스 커널 설정과 빌드에 대한 더 자세한 정보는 linux kernel in a nutshell을 참조하십시오.

라즈베리 파이가 ARM이기 때문에 컴퓨터가 x86이라고 가정하기 때문에 교차 컴파일러 도구 체인을 설정해야합니다. 이 정보는 RasPi의 커널 구축 단계에서도 잘 나타나야합니다.

그런 다음 RasPi의 커널 빌드 단계를 수행하여 커널을 Raspberry Pi에 가져 오십시오. 이렇게하면 usbhid가 표시되는 문제가 해결됩니다. 처음에는 커널에 구워지지 않습니다. /etc/udev/rules.d/99-disable-usb-hid.rules :

+0

실제로 커널을 재 컴파일하여 각 모듈을 선택적으로 만들려고 시도했지만 장치가 연결되면 자동로드가되어 작동하지 않습니다 ... 기능을 완전히 잃고 싶지 않았습니다. 그래서 모듈을 완전히 버리는 것은 최후의 수단이었습니다. blacklist.conf에 넣는 것이 어떻게 든 작동하지 않았지만 설명대로 블랙리스트에 넣고 싶었습니다. usbhid, usbkbd, usbmouse에 대한 블랙리스트 라인을'/ etc/modprobe.d/usbkbd.conf'에 넣어야했습니다. usbhid만으로는 어떤 이유로 충분하지 않았습니다. – 1flx

+1

make를 실행하면 설정 옵션이 자동으로 "y"또는 "n"으로 자동 설정됩니다.이미 작동하는 솔루션을 찾은 것 같지만 구성 옵션을 강제 실행해야하는 경우 make 명령 뒤에 포함하면됩니다. 예를 들어'make CONFIG_USB_HID = n'을 실행하면 설정 옵션이 강제로 실행됩니다. –

관련 문제