커널 모듈에 올라간 드라이버 버전과 클라이언트에서 사용하는 라이브러리 버전이 다른 경우 발생함.
문제 확인
dmesg 를 사용해서 커널 로그를 확인합니다.[1] 로그를 보면 버전이 일치하지 않는다는 메세지를 확인할 수 있습니다.
$ dmesg|grep -i nvrm
[1539409.084595] NVRM: API mismatch: the client has the version 515.76, but
NVRM: this kernel module has the version 515.48.07. Please
NVRM: make sure that this kernel module and all NVIDIA driver
NVRM: components have the same version.
apt or apt-get 으로 드라이버를 설치한 경우 기존 드라이버가 남아 있는등의 이유로 문제가 발생할 수 있습니다.
modinfo nvidia 명령어를 통해서 470.141.03 버전이 설치되어 있는 것을 확인할 수 있고,
root@root:~$ modinfo nvidia
filename: /lib/modules/5.4.0-131-generic/updates/dkms/nvidia.ko
firmware: nvidia/470.141.03/gsp.bin
alias: char-major-195-*
version: 470.141.03
supported: external
license: NVIDIA
~~ 내용이 많지만 가독성을 위해 이하 삭제함 ~~
위 버전이 /usr/lib/x86_64-linux-gnu의 파일들의 라이브러리 버전과 일치해야 합니다.
root@root:/usr/lib/x86_64-linux-gnu$ ls -al | grep libnvidia
lrwxrwxrwx 1 root root 24 7월 29 18:21 libnvidia-allocator.so -> libnvidia-allocator.so.1
lrwxrwxrwx 1 root root 33 7월 29 18:21 libnvidia-allocator.so.1 -> libnvidia-allocator.so.470.141.03
-rw-r--r-- 1 root root 98688 7월 1 03:33 libnvidia-allocator.so.470.141.03
-rw-r--r-- 1 root root 762400 7월 1 03:34 libnvidia-cbl.so.470.141.03
~~ 파일들이 많지만 가독성을 위해 이하 삭제함 ~~
버전이 매치되는 파일이 있더라도, 드라이버가 다른 버전의 파일을 바라보고 있는 경우도 있는것 같습니다.
문제 해결
시스템에 설치된 nvidia driver, library 를 모두 제거하고, 사용하려는 nvidia driver version 을 설치하면 됩니다.