커널 모듈 ‘nvidia-drm’을 언로드하는 방법은 무엇입니까? have occured that has corrupted an

데비안 스트레치에 최신 NVIDIA 드라이버를 설치하려고합니다. 나는 다운로드 한 NVIDIA-Linux-x86_64-390.48.run에서 여기에 ,하지만 난 할 때

sudo sh ./NVIDIA-Linux-x86_64-390.48.run

제안 된대로 오류 메시지가 나타납니다.

ERROR: An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in your kernel.  This may be because it is in use (for example, by an X server, a CUDA program, or
         the NVIDIA Persistence Daemon), but this may also happen if your kernel was configured without support for module unloading.  Please be sure to exit any programs
         that may be using the GPU(s) before attempting to upgrade your driver.  If no GPU-based programs are running, you know that your kernel supports module unloading,
         and you still receive this message, then an error may have occured that has corrupted an NVIDIA kernel module's usage count, for which the simplest remedy is to
         reboot your computer.

누가 nvidia-drm(또는 nvidia_drm)을 사용하는지 알아 내려고하면 아무것도 보이지 않습니다.

~$ sudo lsof | grep nvidia-drm
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
~$ sudo lsof -e /run/user/1000/gvfs | grep nvidia-drm
~$

그리고 그것을 제거하려고하면 사용 중이라고 말합니다.

~$ sudo modprobe -r nvidia-drm
modprobe: FATAL: Module nvidia_drm is in use.
~$

사용자 이름 / 암호를 제공하기 전에 Ctrl + Alt + F2를 눌러 텍스트 전용 모드로 재부팅하고 시작했지만 동일한 오류가 발생했습니다.

게다가 “커널이 모듈 언로드를 지원한다는 것을 어떻게 알 수 있습니까?”

nvidia와 관련된 부팅시 몇 가지 경고가 표시되지만 관련이 있는지는 모르겠습니다.

Apr 30 00:46:15 debian-9 kernel: nvidia: loading out-of-tree module taints kernel.
Apr 30 00:46:15 debian-9 kernel: nvidia: module license 'NVIDIA' taints kernel.
Apr 30 00:46:15 debian-9 kernel: Disabling lock debugging due to kernel taint
Apr 30 00:46:15 debian-9 kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module  375.82  Wed Jul 19 21:16:49 PDT 2017 (using threaded interrupts)



답변

Nvidia 드라이버를 사용하고 있다고 생각되는 디스플레이 관리자를 중지하고 싶다고 생각합니다.

텍스트 콘솔로 변경하고 ( Ctrl+ Alt+를 누름 F2) 루트로 로그인 한 후 다음 명령을 사용하여 그래픽 대상을 비활성화하십시오. 디스플레이 관리자가 계속 실행됩니다.

# systemctl isolate multi-user.target

이 시점에서, 당신이 사용하는 엔비디아 드라이버를 언로드 할 수있을 거라고 기대 modprobe -r(또는 rmmod직접) :

# modprobe -r nvidia-drm

교체 / 업그레이드를 완료하고 그래픽 환경을 다시 시작할 준비가되면 다음 명령을 사용할 수 있습니다.

# systemctl start graphical.target


답변

lsof사용자 공간 프로세스에서 사용중인 파일을 나열합니다. 그러나 nvidia_drm커널 모듈이므로 lsof실제로 사용 중인지 여부를 반드시 알 필요는 없습니다. (커널이 완전히 RAM으로로드 이미했기 때문에 모듈 파일을 열 수 없습니다. 그러나 모듈은 사용자 공간 또는 다른 커널 구성 요소에 서비스를 제공 할 수 있으며 모듈의 언 로딩을 방지 할 것입니다.)

실행 lsmod | grep nvidia.drm하고 nvidia_drm모듈 이름 오른쪽에있는 숫자를보십시오 . 첫 번째 숫자는 단순히 모듈의 크기입니다. 두 번째는 사용 횟수입니다. 모듈을 성공적으로 제거하려면 먼저 사용 횟수가 0이어야합니다.

X11 서버가 실행 중이고 nvidia드라이버를 사용하는 경우 nvidia_drm커널 모듈이 가장 확실하게 사용됩니다. 따라서 최소한 텍스트 콘솔로 전환하고 X11 서버를 종료해야합니다. 일반적으로 사용중인 X Display Manager 서비스를 중지하면됩니다 (사용중인 데스크톱 환경에 따라 다름).

오류 메시지가 말했듯 nvidia-persistenced이을 실행하는 경우 nvidia_drm모듈을 언로드하기 전에 중지해야 합니다.


답변

나는 비슷한 문제가 있었다.

* 이유 : nvidia.drm 패키지가 사용 중입니다

모든 NVIDIA 패키지를 제거하여 수정했습니다.

다음 두 명령으로 이전 NVIDIA 설치를 모두 제거하십시오.

$ sudo apt-get purge nvidia*

$ sudo apt-get autoremove

모듈을 제거해야합니다.

재부팅하고 진행하십시오.


답변

systemd-logind 서비스를 중지하면 그래픽 로그인으로 되돌아갑니다 . 그래픽 로그인이있는 경우 X가 실행 중이므로 비디오 드라이버가로드되어 사용 중입니다. 이것은 nvidia-drm 모듈이 왜 사용되는지 부분적으로 설명합니다.

또한 말할 때 명백한 오해를 배신합니다

사용자 이름 / 암호를 제공하기 전에 Ctrl + Alt + F2를 눌러 텍스트 전용 모드로 재부팅하고 시작했지만 동일한 오류가 발생했습니다.

Ctrl + Alt + F2를 누르면 가상 터미널 # 2로 전환되며 텍스트 모드 로그인을 위해 구성 될 수 있지만 “텍스트 모드에서 시작”과는 거리가 멀다. 기본 가상 터미널에 그래픽 로그인 화면이있는 경우 X가 실행 중이며 다른 VT로 전환해도 변경되지 않습니다. X가 아닌 세션에 로그인하고 있습니다.

가장 먼저 시도해야 할 것은 실제로 X 서버를 종료하는 것입니다. 구식 방법은 텍스트 모드 세션에 로그인하여 명령을 실행하는 것입니다.

telinit 3

실행 수준 3으로 전환하려면 systemd에서도 작동해야하지만 기본 systemd 방식은 대신 실행하는 것입니다.

systemctl isolate multi-user.target

물론 둘 다 특권이 필요하기 sudo때문에 자신 을 사용 하거나 근본이되어야합니다.

이렇게해도 모듈이 제거되지 않거나 최소한 수동으로 수행 할 수있게되면 다음 단계는 시스템을 런레벨 3 (다중 사용자 대상) 또는 심지어 런레벨 1로 직접 부팅하는 것입니다. (구조 대상). 부팅 할 때 부트 로더를 통해 커널 인수 목록의 끝에 “3”(또는 “1”)을 추가하여이 작업을 수행합니다. 이 기사 에서 설명한대로 기본 부팅 대상을 변경할 수도 있습니다 .

nVidia 드라이버는 대부분의 Linux 배포판을 위해 사전 구축 된 패키지로 제공됩니다. 드라이버가 독점 소유이기 때문에 해당 패키지를 자체 표준 저장소에 포함하는 사람은 거의 없지만 신뢰할 수있는 타사 저장소를 찾을 수 있습니다. 설치 프로그램을 직접 실행하는 대신 이러한 패키지를 사용하는 것이 좋습니다. 그러나 현재 위치에서 설치하려면 먼저 드라이버를 수동으로 제거해야합니다.


답변

CUDA 설치

1) 최신 CUDA 툴킷 다운로드

2) Ctl + Alt + F3을 눌러 tty3으로 전환

3) 진행하기 전에 nvidia-drm을 언로드하십시오.

3a) 다중 사용자 대상 분리

sudo systemctl isolate multi-user.target

3b) nvidia-drm이 현재 사용 중입니다.

lsmod | grep nvidia.drm

3c) nvidia-drm 언로드

sudo modprobe -r nvidia-drm

4d) nvidia-drm은 더 이상 사용되지 않습니다.

lsmod | grep nvidia.drm

5) 다운로드 폴더로 가서 cuda 설치를 실행하십시오.

sudo sh cuda_10.1.168_418.67_linux.run

6) 설치 중에 프롬프트에 응답하십시오.

7) 설치가 완료되면 CUDA 버전이 업데이트되었는지 확인하십시오.

nvidia-smi

8) GUI를 다시 시작하십시오.

sudo systemctl start graphical.target


답변

Nvidia 드라이버를 설치할 때 데비안 스트레치와 동일한 문제가 발생했습니다. 텍스트 모드에서 유일한 해결책은 드라이버를 제거하고 gdm 및 gnome-shell을 다시 설치하는 것입니다. 나는 그것이 서투른 해결책이라는 것을 알고 있지만, 먼저 gnome-shell을 수정하고 Nvidia 드라이버 만 제거하고 GDM을 다시 설치하려고 시도한 것을 기억합니다. 전체 쉘을 다시 설치하는 것이 훨씬 쉽다는 것이 밝혀졌습니다.


답변

나는 또한 같은 문제에 직면했다. 오류의 원인은 cuda 설치 중에 실수로 “Nvidia 드라이버 설치”를 선택했기 때문입니다.

따라서 CUDA 설치 중에 다음 옵션이 표시 될 때

Linux-x86_64 용 NVIDIA 가속 그래픽 드라이버 384.81을 설치 하시겠습니까? (y) es / (n) o / (q) uit :

q를 선택 하면 문제가 해결됩니다.