커널 모듈을 블랙리스트에 올리는 방법?


답변:


44

참고 : 커널 이미지에 내장 된 모듈 (예 : 별도의 파일을 통해로드되지 않은 모듈)에는 블랙리스트 기능이 작동 하지 않습니다 .ko. 이러한 모듈을 비활성화하는 유일한 방법은 커널 매개 변수 (사용 가능한 경우)를 사용하거나 커널을 다시 컴파일하는 것입니다.

/etc/modprobe.d/blacklist파일을 열고 다음 구문을 사용하여 드라이버 이름을 추가하십시오.

blacklist driver-name

편집 : 12.10 (12.04?) 이후 버전에서는 파일이 /etc/modprobe.d/blacklist.conf

상자를 재부팅하고 lsmod 명령을 사용하여 Linux 커널에서 모듈 상태를 표시하십시오.

참고 : 다음 driver-name은 원하는 블랙리스트 드라이버의 이름입니다. 예를 들어, NIC 카드 드라이버를 비활성화하려면 lspci -v터미널에서 command 명령 을 사용하여 LAN 카드의 커널 드라이버 이름을 찾을 수 있습니다 .
예를 들어 내 출력은 다음과 같습니다.

........
........ 
6 : 00.0 이더넷 컨트롤러 : Broadcom Corporation NetLink BCM5906M 고속 이더넷 PCI Express (rev 02)
    서브 시스템 : Lenovo Device 3861
    플래그 : 버스 마스터, 빠른 개발, 대기 시간 0, IRQ 46
    b8000000의 메모리 (64 비트, 프리 페치 불가능) [size = 64K]
    [사용 안함]에서 확장 ROM
    기능 : 
    사용중인 커널 드라이버 : tg3
    커널 모듈 : tg3
........
........

여기에 드라이버가 tg3있습니다. tg3대신에 (또는 드라이버) 를 작성해야합니다 driver-name.

많은 정보는 여기 에서 찾을 수 있습니다 .


7
제 경우에는 ( Lubuntu 12.10) /etc/modprobe.d/blacklist파일 이 없습니다 . 이 /etc/modprobe.d/blacklist.conf파일
Abdull

1
업그레이드 중 충돌을 피하기 위해 사용자가 모듈을 블랙리스트에있는 별도의 파일로 유지하는 것이 좋습니다 ( serverfault의이 주석 참조 ).
Alexander Pozdneev

1
blacklist.conf파일이 존재 할 필요가 없습니다. my-mom-is-awesome거기에 파일을 넣을 수 있고 작동합니다. 특정 파일을 블랙리스트에 추가하여 원하는 파일을 만들려면 원하는 이름을 정하십시오 blacklist-nouveau.
doug65536

@ doug65536이 질문은 7 년 전에 게시되었습니다. 물론 상황이 바뀔 것입니다. 당신이 가지고있는 Ubuntu 버전으로 새로운 질문을 만드십시오. 사람들이 당신을 도울 수 있습니다
LnxSlck

@LnxSlck 나는 이전 의견에서 언급 된 혼란을 해결하고있었습니다. 나는 도움을 원하지 않았다. 오래된 콘텐츠에 게시하지 않는 것에 대한 집착은 무엇입니까? 그냥 썩게 놔둬? 사람들은 여전히 ​​이것을 발견하고 다른 사람들은 내가 언급 한 것과 같은 질문을 할 것입니다.
doug65536

28

구문으로 부팅 할 때 grub 명령 줄 (linux 행)에서 일시적으로 블랙리스트에 올릴 수도 있습니다.

module_to_blacklist.blacklist=yes

1
이 "임시"는 얼마나 걸립니까? 다음 부팅 때까지?
Seth

1
세스 부팅 중 편집 한 경우 단일 부팅에 대해서만 임시입니다. /etc/grub.d/ 스크립트 또는 / etc / default / grub을 사용하여 편집하면 영구적입니다.
피터

1
분명히 이것은 i915에서 작동하지 않습니다 i915: unknown parameter 'blacklist' ignored.
Rafał Cieślak

5
이것과의 차이점은 무엇입니까 modprobe.blacklist=module_to_blacklist?
Zaz

4
또는 커널 매개 변수를 사용하십시오 modprobe.blacklist=module_to_blacklist( man modprobe자세한 내용 참조)
Karl Richter

11

최소한 Ubuntu 16.04 LTS에서 모듈을 블랙리스트에 올리는 또 다른 방법은 커널 명령 줄에 다음 줄을 추가하는 것입니다.

modprobe.blacklist=MODULE_NAME

/ etc / modprobe 시스템을 사용하는 것이 가장 좋은 방법이지만 부팅시 GRUB 명령 줄을 편집하여 핀치에 사용할 수있는 대안입니다.

/ etc / default / grub을 편집하고 GRUB_CMDLINE_LINUX_DEFAULT변수에 추가하여 영구적으로 만들 수도 있습니다 . 예를 들어, 내 / etc / default / grub에는 다음이 있습니다.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

그럼 실행 update-grub2한 후, update-initramfs -u. 재부팅 후에는 부팅 후 아무것도로드되지 않는 한 모듈에서 벗어날 수 있습니다.

이 방법은 EL 변형 (RHEL, CentOS, SciLinux)에서도 작동하지만 grub 및 initrd를 업데이트하려면 해당 배포 방법을 사용해야합니다.

(누보를 블랙리스트에 올리려는 사람들에게 참고 :을 실행하여 X를로드하지 마십시오 systemctl set-default multi-user.target. 그렇지 않으면 X가 시작되면 다시 nouveau를로드합니다!)


4

최신 릴리스에서는 블랙리스트 파일에서 install 지시문을 사용해야합니다.

install modulename /bin/false

위의 "모듈 이름"을 모듈 이름으로 바꾸십시오. 로드를 강제로 방지합니다.

설치 지시문에 대한 자세한 정보는 modprobe.conf 매뉴얼에서 찾을 수 있습니다.

man modprobe.conf

2
이것은 매우 도움이됩니다. 에 블랙리스트 항목이 있어도 /etc/modprobe/blacklist.conf모듈을 수동으로로드 할 수 있습니다 modprobe <module_name>. 이 install <module_name> /bin/false방법을 사용하면 원하는대로 실패합니다.
RawwrBag

3

이러한 솔루션 중 어느 것도 i915.ko의 16.04 LTS에서 작동하지 않았습니다.

내가 찾은 (더러운) 솔루션은 이름을 바꾸는 것이 었습니다

/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko
/usr/lib/xorg/modules/drivers/modesetting_drv.so
/usr/lib/xorg/modules/drivers/intel_drv.so

불행히도 외부 VGA 화면은 더 이상 인식되지 않습니다 : {


6
당신이 필요하다 sudo update-initramfs -u/etc/modeprobe.d/ 파일을 수정 한 후
이반 블랙
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.