
PPA에서 USB 장치용 DKMS 드라이버를 설치했습니다. 코드를 변경하고 apt-get --purge 제거를 사용하여 드라이버를 제거하려고 하는데 장치를 연결하면 커널 모듈이 계속 로드됩니다...왜 그럴까요? 그들은 어디에 숨어 있나요?
미리 감사드립니다
답변1
귀하(또는 DKMS)가 커널 모듈을 빌드하고 설치할 때 로 이동하므로 /lib/modules/$(uname -r)/...
그곳을 확인하십시오. 내 시스템의 한 예:
/lib/modules/3.2.0-36-generic-pae/updates/dkms/nvidia_current_updates.ko
답변2
DKMS를 사용하여 설치된 커널 모듈을 설치하고 사용하려면 다음과 같은 몇 가지(대부분 자동화된) 단계가 필요합니다.
- (귀하의 경우) PPA 소스를 추가하고 패키지 목록을 새로 고칩니다.
apt-get
소스와 자동 설치 지침을 표준 디렉터리(/usr/src/<module name>-<version>
) 에 복사하여 시작하는 패키지 관리자( )를 사용하여 DKMS 패키지를 설치합니다.- DKMS는 파일을 개인 디렉터리에 복사합니다.
- DKMS는 개인 디렉터리에서 커널 모듈의 소스 코드를 컴파일합니다.
- DKMS는 컴파일된 커널 모듈 파일을 모듈 디렉터리(일반적으로
/lib/modules/<kernel version>/updates
) 에 복사합니다. modprobe <modname>
DKMS는 .NET 대신 사용할 수 있도록 모듈 종속성을 업데이트합니다insmod /lib/modules/<kernel version>/updates/<modname>.ko
.- 커널 모듈을 수동으로 로드하거나(
modprobe <modname>
) USB 장치를 연결할 때 시스템 구성 요소(udev)가 이를 수행합니다.
패키지를 제거하면 1~6단계가 실행 취소됩니다. 7단계는 자동으로 취소되지 않습니다. 일반적으로 모듈은 를 사용하여 수동으로 제거하지 않는 한 로드된 후에 로드된 상태로 유지됩니다 sudo rmmod <modname>
. 모듈의 이름이 무엇인지 알아내는 데 사용합니다 lsmod
. 일반적으로 이는 와 동일 <modname>
하지만 적어도 Ubuntu의 nvidia 드라이버의 경우 이는 다르게 수행됩니다( 을 사용 modprobe nvidia-current
하지만 를 사용합니다 rmmod nvidia
).