- 0x0000007b
- 2차세계대전
- 3.20해킹
- 4대강
- 502 error
- 53빌딩
- 7840hs
- 88체육관 수영장
- ABI
- abortive close
- abortive shutdown
- AHCI
- akmods
- ALC1220
- alma linux
- alternatives
- AM4 메인보드
- AMD
- amd 7840hs
- amd 그래픽 게임용
- amd 내장 그래픽 최적화
- anonymous file
- API
- apple.com
- APT
- apt-get
- Armagnac
- Asrock
- ASTALIFT
- audacious player
- Today / Yesterday
- /
- Total
Linux Programmer
페도라 리눅스 nvidia 드라이버 설치 (RPM Fusion akmods, 24년 10월 기준) 본문
페도라 리눅스 nvidia 드라이버 설치 (RPM Fusion akmods, 24년 10월 기준)
sunyzero 2024. 10. 19. 20:39이 문서는 페도라 리눅스에서 nvidia 드라이버를 손쉽게 설치하고, 커널 업데이트시 자동으로 드라이버를 업데이트 및 빌드하는 akmods 기반의 드라이버 설치를 다룬다. 여기서 사용된 리눅스는 Fedora Linux 40 버전을 기준으로 작성하였다. 일반적으로 페도라 35 이후는 이 문서의 방법대로 작업하면 된다. 만일 페도라 34 이전의 구형 버전이라면 다른 방법을 사용해야 하는데, 오래된 페도라 버전의 경우는 굳이 문서화가 필요 없다고 판단되어 생략하였다.
명령어 권한
이 문서에서 내리는 모든 명령어는 root 권한으로 작업한다. 따라서 터미널을 열고 "su -" 를 실행하여 root로 권한을 변경하는 것을 권장한다. (sudo 권한이 주어져 있다면 sudo를 사용해도 되지만 계속 sudo를 타이핑하려면 귀찮으니까 su - 를 권장한다)
명령어는 아래 순서대로 작업하도록 하고, 특별히 주의해야 하는 부분은 형광색으로 색칠 해두었으니 참고하자.
1. 커널 및 관련 패키지를 업데이트
커널의 버전을 lock할 수 있는 고급 숙련자는 이 과정이 필요없지만 일반적인 사용자는 커널 버전 및 관련 패키지를 최신 버전으로 업데이트하고 재부팅해야 한다. 이를 위해 아래와 같은 명령어를 사용한다.
dnf -y update
dnf update 명령이 성공한 뒤에 kernel module이나 ramdisk가 리빌드 되는 경우가 있을 수 있기 때문에 약 1분 정도 기다렸다가 reboot 한다.(잊지말고 리부트하자) 리부트는 터미널에서 reboot라고 명령하면 된다.
reboot
2. rpmfusion 저장소 활성화
설치할 nvidia driver를 제공하는 곳이 rpmfusion repository이므로 해당 저장소를 활성화 해야 한다. 활성화 방법은 저장소 설정파일 패키지를 설치하는 것으로 아래 명령어를 실행하면 된다.
원래 아래 dnf install 명령어는 패키지를 한 라인에 붙어 써도 되지만 가독성이 안좋아서 2개의 명령어로 쪼개놓았다. 아래 2개의 명령어는 길기 때문에 직접 타이핑하다가 오타 가능성이 높으니, 복사해서 붙어넣기를 권장한다. [1]
dnf -y install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
dnf -y install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
저장소는 금방 설치가 끝날 것이다. 설치 완료 후 cache를 업데이트 하기 위해 아래의 makecache 명령어를 실행한다. 사실 makecache는 안해도 상관은 없지만 하는 편이 좋기는 하다.
dnf makecache
3. nvidia 드라이버 설치
원문 = https://rpmfusion.org/Howto/NVIDIA
nvidia 드라이버 설치는 akmod-nvidia 와 xorg-x11-drv-nvidia-cuda를 설치하면 끝이다. 아래의 명령어를 실행한다. (앞서와 마찬가지로 복붙하자)
dnf -y install akmod-nvidia xorg-x11-drv-nvidia-cuda
위 명령어로 설치하면 akmod-nvidia와 의존성이 있는 수십 개의 패키지가 같이 설치될 것이다. 주의할 점은 akmods 설치 후 nvidia driver를 빌드하기 위해 C 컴파일러가 실행되므로 CPU 사용량이 갑자기 올라갈 것이다. 드라이버 빌드는 시스템 성능에 따라 다르지만 대개 1분에서 최대 5분까지도 걸린다. 따라서 즉각 reboot하면 절대로 안되고, 약 1~3분 정도는 기다려야 한다. 무작정 기다리기보다는 빌드가 언제 끝나는지는 top을 실행해보면 쉽게 알 수 있다.
dnf로 akmod-nvidia를 설치 완료 후, top을 실행하면 백그라운드에서 dnf나 akmods, cc1 등의 각종 프로세스들이 새로 실행되면서 CPU 사용량이 올라가는 것을 볼 수 있다. 그리고 1~2분 정도 지나면 dnf나 akmods, cc1 등의 프로그램이 종료되고 CPU 사용량이 뚝 떨어질 것이다. CPU 사용량이 뚝 떨어진 것을 확인한 후에 reboot하면 정확하다. 참고로 라이젠 5000번 CPU에서는 약 1분 30초 정도 시간이 걸렸다. (만일 드라이버 빌드가 되기 전에 재부팅하더라도 재부팅 과정에서 드라이버를 다시 빌드하기 때문에 문제가 없을 수도 있다. 하지만 안전성을 위해 되도록이면 기다렸다가 재부팅하는 것이 좋다.)
akmods 명령어
차후 수동으로 akmods로 작동되는 드라이버를 직접 rebuild하려면 "akmods --rebuild --force"명령을 내리면 즉각 리빌드하도록 되어있다. 자세한 사용법은 akmods --help 명령으로 확인하도록 하자.
4. 재부팅 후 nvidia 드라이버 확인
재부팅하면 nvidia 드라이버가 올라왔는지 2가지 방법으로 확인할 수 있다. 첫번째 방법은 터미널에서 nvidia-smi를 실행하는 것이다. 아래는 실제 페도라 40 시스템에서 akmod-nvidia 설치 후 재부팅한 뒤에 nvidia-smi를 실행한 것이다.
$ nvidia-smi
Sat Oct 19 19:45:55 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3080 Off | 00000000:3C:00.0 On | N/A |
| 0% 32C P8 16W / 340W | 414MiB / 10240MiB | 3% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 4709 G /usr/libexec/Xorg 163MiB |
| 0 N/A N/A 5433 G /usr/bin/gnome-shell 203MiB |
+-----------------------------------------------------------------------------------------+
두번째 방법은 터미널에서 nvidia-settings를 실행하는 것이다. 이 프로그램은 nvidia 제어판의 리눅스 버전이며 아래와 같이 나타난다. (터미널에서 실행하지 않고 Super키(윈도 키) 누르고 nvidia만 쳐도 Nvidia 서버 설정인가? 하는 이름으로 프로그램이 보일 것이다)
5. Fedora 커널 업데이트 후 nvidia가 작동하지 않는 경우
간혹 Fedora 커널 업데이트 후에 akmod가 버전에 맞는 nvidia kernel module을 생성하지 못하여 그래픽이 잘 안나오는 경우에는 다음과 같이 작업한다. 이 방법 외에 akmods가 제대로 설치되어있다는 가정하에 akmods만 재컴파일하는 방법도 있다. 이는 아래 Failed to initialize NVML 에러를 해결하는 글에 설명되어있다. (아래 과정은 과거 문제가 있었던 페도라 36에서 캡쳐한 것으로 버전이 다르게 보이는 것이다)
2020.11.28 - [컴퓨터 관련/리눅스, 유닉스] - Failed to initialize NVML (Fedora 리눅스)
akmods만 재컴파일하는 경우가 아닌, 아예 nvidia kernel module관련 전부를 재설치하는 방법을 살펴보자. 먼저 현재 커널 버전에 맞는 nvidia kernel module(kmod-nvidia)가 존재하는지 확인해본다.
$ uname -r
5.17.9-300.fc36.x86_64
$ rpm -qa kmod-nvidia*
kmod-nvidia-5.17.5-200.fc36.x86_64-510.68.02-1.fc36.x86_64
kmod-nvidia-5.17.6-300.fc36.x86_64-510.68.02-1.fc36.x86_64
위에 보면 현재 커널 버전은 5.17.9-300.fc36.x86_64인데, kmod-nvidia는 5.17.6과 5.17.5만 존재하고 있다. 원래 kmod-nvidia는 따로 설치되는 커널이 아니라 akmod-nvidia가 자동으로 빌드해서 만드는 패키지이므로 akmod-nvidia가 문제가 있는 경우가 많다.
따라서 akmod-nvidia 패키지가 설치되어있는지 확인하고 삭제되어있거나 혹은 깨져있다면 재설치 해준다. 예를 들어 기존의 파일을 삭제하고 재설치하려면 아래와 같이 명령한다. (명령시 관리자 권한인 root로 명령한다)
# dnf remove akmod-nvidia
... 중간에 y 해주거나 아니면 애초에 dnf에 -y 옵션을 추가해서 명령
# dnf install akmod-nvidia
akmod-nvidia는 패키지를 빌드하기 때문에 처음 설치 후 X윈도우 작동시에 몇십초에서 2~3분 정도 시간이 걸릴 수 있다. 따라서 반응이 없어도 좀 끈기를 가지고 기다려보자. 아무리 오래 걸려도 5분 이상은 걸리지는 않는다.
모든 작업을 완료하고 로그인이 잘 되었다면 rpm -qa kmod-nvidia* 에 새로운 커널 버전에 맞는 패키지가 자동으로 생성되어있을 것이다. (예를 들어 아래 화면은 kmod-nvidia-5.17.9-300 버전에 맞는 파일이 생성된 화면이다)
$ rpm -qa kmod-nvidia*
kmod-nvidia-5.17.5-200.fc36.x86_64-510.68.02-1.fc36.x86_64
kmod-nvidia-5.17.6-300.fc36.x86_64-510.68.02-1.fc36.x86_64
kmod-nvidia-5.17.9-300.fc36.x86_64-510.68.02-2.fc36.x86_64
만일 5~10분이상 걸려도 화면이 안나오거나 문제가 생겼다면 CTRL-ALT-F5나 F6 정도로 다른 console을 열고 root로 로그인한 뒤에 journalctl -xe 로 확인해보자.
5.1. 그래픽 화면이 잘 작동하지 않는 경우(grubby로 확인)
간혹 모든 설정을 제대로 했음에도 불구하고 제대로 작동하지 않는 경우가 있다. 이런 경우는 boot loader 설정을 건드린 경우가 대부분이다. 따라서 boot loader인 grub2 설정을 확인하고 수정하는 방법을 알아둘 필요가 있다.
Fedora나 RedHat계열에서는 boot loader를 관리하는 아주 편리한 툴인 grubby가 있다. grubby로 현재 부트 설정을 모두 보려면 grubby --info=ALL 로 명령하면 된다. ALL 대신에 0을 넣으면 0번째 커널 버전(가장 최근 커널)을 보여준다.
grubby를 사용하지 않는 경우에는 수동으로 커널 엔트리 설정을 찾아야 하는데, 커널 엔트리 설정 파일은 다음과 같다.
/etc/default/grub : 부트 로더인 GRUB의 기본 설정 파일
/boot/loader/entries/*.conf : kernel 버전별 커널 설정 파일 (grubby가 보여주는 설정 ★)
특히 /boot/loader/entries에 존재하는 파일들의 내용을 보면 아래와 같이 되어있다. (아래는 과거 Fedora 36에서 캡쳐한 것이다)
# ls /boot/loader/entries/
1dbd4d32815b4ee7bbe3f2a41f9317c8-0-rescue.conf
1dbd4d32815b4ee7bbe3f2a41f9317c8-5.17.5-200.fc36.x86_64.conf
1dbd4d32815b4ee7bbe3f2a41f9317c8-5.17.6-300.fc36.x86_64.conf
1dbd4d32815b4ee7bbe3f2a41f9317c8-5.17.9-300.fc36.x86_64.conf
# cd /boot/loader/entries/
# cat 1dbd4d32815b4ee7bbe3f2a41f9317c8-5.17.9-300.fc36.x86_64.conf
title Fedora Linux (5.17.9-300.fc36.x86_64) 36 (Server Edition)
version 5.17.9-300.fc36.x86_64
linux /vmlinuz-5.17.9-300.fc36.x86_64
initrd /initramfs-5.17.9-300.fc36.x86_64.img $tuned_initrd
options root=/dev/mapper/fedora00-root ro rd.lvm.lv=fedora00/root systemd.unified_cgroup_hierarchy=0 $tuned_params rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 initcall_blacklist=simpledrm_platform_driver_init systemd.unit=multi-user.target
grub_users $grub_users
grub_arg --unrestricted
grub_class fedora
위의 경우 options에 systemd.unit=multi-user.target이 설정되어있기 때문에 부팅하면서 자동으로 그래픽이 로딩되지 않는 것이다. 이런 문제를 없애려면 grubby의 --remove-args 옵션을 사용할수도 있고, 아니면 vim 에디터로 해당 파일을 열어서 해당 부분을 삭제하면 된다.
히스토리
2024.10.19 초고
레퍼런스
[1] RPM Fusion configuration, https://rpmfusion.org/Configuration
[2] RPM Fusion nvidia driver, https://rpmfusion.org/Howto/NVIDIA
'컴퓨터 관련 > 리눅스(유닉스) 일반' 카테고리의 다른 글
유닉스 표준 IEEE std 1003.1 issue 8 (SUSv5) 개정판 - 2024년 5월 발표 (1) | 2024.11.25 |
---|---|
썬더볼트 장치 스캔 방법 - Fedora Linux / Windows (2) | 2024.02.26 |
[CentOS7] vim 7.4의 python3 지원 (0) | 2022.11.23 |
Fedora 35 : Thunderbolt 4 Maple ridge 인식 실패 문제 (0) | 2022.05.09 |
Failed to initialize NVML (Fedora 리눅스) (0) | 2020.11.28 |
리눅스 배포판 순위 : distrowatch에 대한 오해 (10) | 2019.12.05 |
bash : 기초 : 셸의 역사, 종류 (0) | 2019.10.13 |
파일(file)에 대한 토막글 : 파일이란 무엇인가? (18) | 2019.03.08 |