본문 바로가기
리눅스

NVIDIA GPU

by 다움위키 2023. 12. 17.

NVIDIA는 인기 있는 그래픽 칩셋 제조업체입니다.

NVidia GPU는 오픈 소스 (xf86-video-nouveau) 또는 (close source) 독점 드라이버 (nvidia)를 사용할 수 있습니다. 독점 드라이버가 보다 최신이고 효율적이기 때문에, 그것은 계산 집약적인 3D 응용 프로그램 및 게임에 필수적인 것으로 간주됩니다.

Proprietary drivers

먼저 시스템에 설치된 비디어 카드를 sudo lshw -c display로 확인합니다. 여기서 display 대신에 video를 사용할 수 있습니다.

  *-display                 
       description: VGA compatible controller
       product: GP107 [GeForce GTX 1050]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:07:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: irq:55 memory:f6000000-f6ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:e000(size=128) memory:c0000-dffff

다음으로, 기본 우분투 저장소로부터 가능한 드라이버 목록을 다음과 같이 알아낼 수 있습니다.

  • sudo ubuntu-drivers devices

추천하는 드라이버를 설치하기 위해서, 다음 명령을 실행하십시오.

  • sudo ubuntu-drivers autoinstall

만약 특정 드라이버를 설치하고 싶을 때에는 다음과 같이 명령을 실행하십시오.

  • sudo apt install nvidia-driver-390

그러나, 간혹은 최신 드라이브를 수동으로 설치해야 하는 경우도 있습니다. NVIDIA 홈페이지에서 최신의 유닉스용 독점 드라이브를 받을 수 있습니다.

우분투 PPA

수동 설치의 문제점은 이미 설치된 패키지들과 충돌이 발생할 수도 있고, 추후에 패키지 제거가 완전히 이루어지지 않을 수 있다는 점입니다. 그러므로 가능한 우분투 패키지로 설치하는 것이 좋습니다. 최신의 NVIDIA 독점 드라이브를 설치하고 싶다면, PPA를 설정해야 합니다:

  • sudo add-apt-repository ppa:graphics-drivers/ppa

PPA 정보를 확인하십시오.

패키지 정보를 업데이트한 후에, 새롭게 설치할 드라이버가 있는지 확인을 합니다.

  • sudo apt update
  • sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:03.1/0000:07:00.0 ==
modalias : pci:v000010DEd00001C81sv00001462sd00008C97bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP107 [GeForce GTX 1050]
driver   : nvidia-driver-390 - third-party free
driver   : nvidia-driver-396 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

새로운 버전의 드라이버가 추천 목록에 올라온 것을 볼 수 있습니다. 새로운 드라이버를 설치하기 위해서, 시도합니다.

  • sudo ubuntu-drivers autoinstall
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 nvidia-driver-396 : Depends: xserver-xorg-video-nvidia-396 (= 396.54-0ubuntu0~gpu18.04.1) but it is not going to be installed
                     Depends: libnvidia-cfg1-396 (= 396.54-0ubuntu0~gpu18.04.1) but it is not going to be installed
                     Recommends: libnvidia-ifr1-396:i386 (= 396.54-0ubuntu0~gpu18.04.1)
                     Recommends: libnvidia-fbc1-396:i386 (= 396.54-0ubuntu0~gpu18.04.1)
E: Unable to correct problems, you have held broken packages.

위와 같은 오류가 발생하면, 다음과 같이 설치를 시도해 봅니다.

  • sudo apt install libnvidia-cfg1-396 xserver-xorg-video-nvidia-396 nvidia-driver-396
The following NEW packages will be installed:
  libnvidia-cfg1-396 libnvidia-common-396 libnvidia-compute-396
  libnvidia-compute-396:i386 libnvidia-decode-396
  libnvidia-decode-396:i386 libnvidia-encode-396
  libnvidia-encode-396:i386 libnvidia-fbc1-396 libnvidia-gl-396
  libnvidia-gl-396:i386 libnvidia-ifr1-396 nvidia-compute-utils-396
  nvidia-dkms-396 nvidia-driver-396 nvidia-kernel-common-396
  nvidia-kernel-source-396 nvidia-utils-396
  xserver-xorg-video-nvidia-396
0 upgraded, 19 newly installed, 19 to remove and 0 not upgraded.

Manual

패키지 컴파일

무슨 이유인지 PPA의 꾸러미를 설치하면, 커널 모듈이 동작하지 않습니다. 그래서 PPA의 우분투 원본을 가져와서, 현재 시스템에서 컴파일해서 설치할 수 있습니다.

nvidia-440.64 패키지

컴파일이 잘 되고, 설치 후에 잘 작동합니다.

  • dpkg-buildpackage -i -uc -us -b
  • dpkg-buildpackage -i -ai386 -uc -us -b -d

nvidia-440.59 패키지

아래의 396.24의 순서대로 컴파일이 잘 되고, 설치도 잘 됩니다.

  • dpkg-buildpackage -i -uc -us -b
  • dpkg-buildpackage -i -ai386 -uc -us -b -d
  • sudo dpkg -i libnvidia-cfg1-440_440.59-0ubuntu0~~18.04.1_amd64.deb libnvidia-common-440_440.59-0ubuntu0~~18.04.1_all.deb libnvidia-compute-440_440.59-0ubuntu0~~18.04.1_* libnvidia-decode-440_440.59-0ubuntu0~~18.04.1_* libnvidia-encode-440_440.59-0ubuntu0~~18.04.1_* libnvidia-fbc1-440_440.59-0ubuntu0~~18.04.1_* libnvidia-gl-440_440.59-0ubuntu0~~18.04.1_* libnvidia-ifr1-440_440.59-0ubuntu0~~18.04.1_* nvidia-compute-utils-440_440.59-0ubuntu0~~18.04.1_amd64.deb nvidia-dkms-440_440.59-0ubuntu0~~18.04.1_amd64.deb nvidia-driver-440_440.59-0ubuntu0~~18.04.1_amd64.deb nvidia-kernel-common-440_440.59-0ubuntu0~~18.04.1_amd64.deb nvidia-kernel-source-440_440.59-0ubuntu0~~18.04.1_amd64.deb nvidia-utils-440_440.59-0ubuntu0~~18.04.1_amd64.deb xserver-xorg-video-nvidia-440_440.59-0ubuntu0~~18.04.1_amd64.deb

nvidia-396.24 패키지

더미 소스 파일과 amd 아키텍츠 소스, 그리고 데비안 패키지 파일을 받습니다.

  1. 파일을 풀어서 디렉토리를 생성합니다.
  2. amd 아키텍츠 소스를 더미 디렉토리에 풉니다.
  3. 더미 디렉토리에 들어갑니다.
  4. amd 아키텍츠 디렉토리를 아키텍츠 이름 amd64로 바꿉니다.
  5. 패키지를 제작하고 설치합니다.
    • dpkg-buildpackage -i -uc -us -b
    • dpkg-buildpackage -i -ai386 -uc -us -b -d
    • sudo dpkg -i libnvidia-cfg1-396_396.24-0ubuntu1~gpu18.04.1_amd64.deb libnvidia-common-396_396.24-0ubuntu1~gpu18.04.1_all.deb libnvidia-compute-396_396.24-0ubuntu1~gpu18.04.1_*deb libnvidia-decode-396_396.24-0ubuntu1~gpu18.04.1_*deb libnvidia-encode-396_396.24-0ubuntu1~gpu18.04.1_*deb libnvidia-fbc1-396_396.24-0ubuntu1~gpu18.04.1_*deb libnvidia-gl-396_396.24-0ubuntu1~gpu18.04.1_*deb libnvidia-ifr1-396_396.24-0ubuntu1~gpu18.04.1_*deb nvidia-compute-utils-396_396.24-0ubuntu1~gpu18.04.1_amd64.deb nvidia-driver-396_396.24-0ubuntu1~gpu18.04.1_amd64.deb nvidia-kernel-common-396_396.24-0ubuntu1~gpu18.04.1_amd64.deb nvidia-kernel-source-396_396.24-0ubuntu1~gpu18.04.1_amd64.deb nvidia-utils-396_396.24-0ubuntu1~gpu18.04.1_amd64.deb xserver-xorg-video-nvidia-396_396.24-0ubuntu1~gpu18.04.1_amd64.deb

현재 시스템과 부딪혀서 설치가 되지 않습니다.

nvidia-390.48 패키지

더미 소스 파일 1개와 아키텍츠 기반 3개, 그리고 debian 패키지 파일이 필요합니다.

  1. 더미 파일을 풀어서 디렉토리를 생성합니다.
  2. 각각의 아키텍츠 소스를 더미 디렉토리에 풉니다.
  3. 데비안 패키지 소스를 더미 디렉토리에 풉니다.
  4. 더미 디렉토리에 들어갑니다.
  5. 각 아키텍츠 디렉토리를 아키텍츠 이름(amd64,i386,armhf)으로 각각 바꿉니다.
  6. 패키지를 제작하고, 설치합니다.
    • dpkg-buildpackage -i -uc -us -b
    • dpkg-buildpackage -i -ai386 -uc -us -b -d
    • sudo dpkg -i libnvidia-cfg1-390_390.48-0ubuntu3+gpu18.04.2*_amd64.deb libnvidia-common-390_390.48-0ubuntu3+gpu18.04.2*_all.deb libnvidia-compute-390_390.48-0ubuntu3+gpu18.04.2_* libnvidia-decode-390_390.48-0ubuntu3+gpu18.04.2_* libnvidia-encode-390_390.48-0ubuntu3+gpu18.04.2_* libnvidia-fbc1-390_390.48-0ubuntu3+gpu18.04.2_* libnvidia-gl-390_390.48-0ubuntu3+gpu18.04.2_* libnvidia-ifr1-390_390.48-0ubuntu3+gpu18.04.2_* nvidia-compute-utils-390_390.48-0ubuntu3+gpu18.04.2*_amd64.deb nvidia-dkms-390_390.48-0ubuntu3+gpu18.04.2*_amd64.deb nvidia-kernel-common-390_390.48-0ubuntu3+gpu18.04.2*_amd64.deb nvidia-kernel-source-390_390.48-0ubuntu3+gpu18.04.2*_amd64.deb nvidia-utils-390_390.48-0ubuntu3+gpu18.04.2*_amd64.deb

nvidia-390.25 패키지

다음 두 개의 파일을 받아서 패키지 제작을 시도합니다:

독점 드라이버 소스 우분투 패키지 파일

우분투 패키지 제작 문서의 내용을 참고해서, debian/changes을 바꾼 후에 패키지를 제작합니다.

nvidia-settings 패키지

마찬가지로 다음 두 개의 파일을 받아서 패키지 제작을 시도합니다.

소스 파일 우분투 패키지 파일

우분투 패키지 제작 문서의 내용을 참고해서, debian/changes을 바꾼 후에 패키지를 제작합니다.

패키지 설치

먼저, 기본의 nvidia 패키지를 제거합니다:

  • sudo apt purge nvidia-384
  • sudo apt autoremove

이제 새로운 꾸러미를 설치합니다:

  • sudo dpkg -i nvidia-390*deb
  • sudo dpkg -i nvidia-opencl-icd*deb
  • sudo dpkg -i libcuda1-390*deb
  • sudo dpkg -i nvidia-settings*deb
  • sudo dpkg -i libxnvctr10*deb

의존성 패키지를 설치합니다:

  • sudo apt install -f

시스템을 재시작합니다.

패키지를 설치 후에

컴파일을 해서 설치를 했음에도 불구하고, 커널 헤드와 맞지 않아 모듈이 생성되지 않을 때에는, 오류가 생긴 파일들을 수동으로 패치를 해야 합니다. 그리고 다음과 같이 모듈을 만들 수 있습니다.

  • sudo dpkg-reconfigure nvidia-387

Troubleshooting

다른 비디어 드라이버를 설치했을 때

간혹은 Nouveau 드라이버를 설치했을 때, 시스템이 멈추어버리거나, 또는 Ctrl+Alt+F3 등을 눌러서 터미널로만 접근가능한 경우가 생깁니다. 이때에는 그놈 환경으로 진입을 하지 못하기 때문에, 즉, Software & Updates를 실행할 수 없기 때문에, Nvidia 드라이버로 전환을 할 수 없습니다.

이때에는 부팅 시에 리커버리 모드로 부팅해서, resume으로 로긴 쉘을 접근하면, 640x480의 기본 그래픽 모드로 부팅이 됩니다.

External Resources