본문 바로가기

Dev

[Linux] Failed to initialize NVML: Driver/library version mismatch 에러 해결

리눅스의 unattended-upgrade가 패키지를 자동 업데이트하면서 버전 간 차이로 발생하는 에러

 

커널 로그 확인

 

sudo dmesg | grep -i nvrm

 

 

해결방안 #1

 

재부팅

 

해결방안 #2

 

nvidia 관련 모듈 재가동

 

1. 로딩되어 있는 nvidia drive kernel 확인

 

lsmod | grep nvidia

 

 

2. 로딩되어 있는 커널들을 순서대로 unload 하기

 

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm
sudo rmmod nvidia

 

종종 아래와 비슷한 에러가 뜨는 경우가 있는데,

 

rmmod: ERROR: Module nvidia_uvm is in use
rmmod: ERROR: Module nvidia is in use

 

nvidia와 관련된 프로세스를 모두 kill 해주고 다시 unload하면 된다.

 

sudo lsof /dev/nvidia*

 

사용되고 있는 프로세스 중 가장 높은 pid 부터 kill 해주면 된다.

 

 

모두 unload 한 뒤 아래 명령어 입력 시 아무것도 나오지 않으면 성공

 

lsmod | grep nvidia

 

다시 nvidia-smi 실행하여 잘 작동되면 성공이다.

결국 재부팅과 같은 흐름인데 재부팅이 힘들다면 하나씩 unload 해주고 다시 실행해주면 된다.

 

 

해결방안 #3

 

재부팅으로 쉽게 해결 가능하지만 이러한 상황이 지속적으로 발생하는 것을 방지하기 위해

unattended-upgrade을 막아두면 편하다

security update를 위해 자동 업데이트 되는 것으로 nvidia 관련한 upgrade만 막아둔다

 

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

 

/etc/apt/apt.conf.d/50unattended-upgrades 파일 아래에 Blacklist 추가

 

Unattended-Upgrade::Package-Blacklist {
  "nvidia-*.";
}

 

 

끝!