리퍼로 몇 년 전인가 사서 방치하다가 개발용 머신으로 세팅해서 사용하는 녀석이 가끔 화면이 Freezing되는데, 마우스 커서는 움직이는데, 그 아래있는 화면이 응답이 없는 현상에 대해서 원인이 무엇일까 몇 달을 착고있다.

GPT에게 물어봐도 다 해본 방법밖에 없는 것을 보니. 이건 다른 문제인가 싶기도 하고.


Arch Linux에서 AMD 그래픽 카드가 멈추는(freezing) 문제를 점검하고 해결하는 방법을 정리해 보겠습니다.


🔍 1. 시스템 로그 확인 (freeze 원인 분석)

Freeze의 원인을 파악하려면 로그 확인이 필수입니다.

1.1 dmesg 로그 확인

sudo dmesg -l err,crit,alert
  • 시스템 부팅 후 발생한 오류(error), 치명적(critical), 경고(alert) 메시지를 출력합니다.
  • amdgpu 관련 오류가 있는지 확인하세요.
sudo dmesg | grep -i amdgpu
  • amdgpu 드라이버에서 발생한 오류만 필터링할 수 있습니다.

1.2 journalctl 로그 확인

sudo journalctl -p 3 -xb
  • 현재 부팅(-b)에서 발생한 심각한(-p 3) 오류만 출력합니다.
  • amdgpu 관련 메시지가 있는지 확인하세요.
sudo journalctl -k | grep amdgpu
  • 커널 로그에서 amdgpu 관련 메시지만 필터링할 수 있습니다.

⚙ 2. AMD 드라이버 상태 점검

2.1 lsmod로 AMD 드라이버 확인

lsmod | grep amdgpu
  • amdgpu 모듈이 로드되어 있어야 합니다.
  • 아무것도 나오지 않는다면 드라이버가 제대로 로드되지 않은 것입니다.

2.2 lspci로 GPU 확인

lspci -k | grep -A3 "VGA"
  • AMD GPU가 감지되었는지 확인하세요.
  • 출력 결과에서 Kernel driver in use: amdgpu가 보이면 정상적으로 로드된 것입니다.

2.3 glxinfo로 OpenGL 드라이버 확인

glxinfo | grep "OpenGL renderer string"
  • AMD GPU가 제대로 사용되고 있는지 확인하세요.
  • 이 명령어가 실행되지 않으면 mesa-utils를 설치하세요:
    sudo pacman -S mesa-utils
    

🔄 3. 커널 및 드라이버 문제 해결

3.1 최신 Linux 커널 또는 LTS 커널로 변경

최신 커널 사용 중인데 문제가 발생하면 LTS 커널로 변경해보세요.

sudo pacman -S linux-lts linux-lts-headers

설치 후 LTS 커널을 사용하려면 GRUB 부트 메뉴에서 LTS 커널을 선택하거나, 기본 커널을 변경하세요:

sudo grub-mkconfig -o /boot/grub/grub.cfg

그리고 시스템을 재부팅합니다.

3.2 amdgpu 모듈 강제 로드

부팅 시 amdgpu가 자동으로 로드되지 않는다면, /etc/mkinitcpio.conf에 추가해 주세요.

sudo nano /etc/mkinitcpio.conf

MODULES=() 부분을 다음과 같이 수정합니다:

MODULES=(amdgpu)

적용 후 initramfs를 다시 생성합니다:

sudo mkinitcpio -P

재부팅 후 적용되었는지 확인하세요.


🚀 4. 전력 관리 설정 조정 (전원 관리 관련 오류 해결)

4.1 PCIe 전원 관리를 비활성화

AMD GPU가 PCIe 전원 관리 문제로 인해 멈출 수 있습니다. GRUB 커널 파라미터를 수정해 해결할 수 있습니다.

sudo nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT에 다음을 추가:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.runpm=0"

설정 저장 후 GRUB 업데이트:

sudo grub-mkconfig -o /boot/grub/grub.cfg

재부팅 후 적용됩니다.

4.2 AMD GPU 전력 관리 수동 설정

다음 명령어를 사용하면 전력 관리 문제를 해결할 수 있습니다.

echo high | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level

이 설정을 영구적으로 유지하려면 rc.local 또는 udev 규칙을 추가해야 합니다.


🛠 5. Xorg / Wayland 설정 변경

5.1 Xorg 드라이버 설정 (/etc/X11/xorg.conf.d/20-amdgpu.conf 생성)

Xorg 설정이 올바르지 않으면 프리징(freezing) 문제가 발생할 수 있습니다.

sudo mkdir -p /etc/X11/xorg.conf.d
sudo nano /etc/X11/xorg.conf.d/20-amdgpu.conf

다음 내용을 입력하고 저장하세요.

Section "Device"
    Identifier "AMD Graphics"
    Driver "amdgpu"
    Option "TearFree" "true"
    Option "DRI" "3"
    Option "VariableRefresh" "true"
EndSection

적용 후 Xorg를 다시 시작하세요.

5.2 Wayland를 사용하는 경우

Wayland에서 문제가 발생하면 Xorg로 변경해 보세요.

  1. /etc/gdm/custom.conf 파일을 열고 다음을 수정:
    WaylandEnable=false
    
  2. 저장 후 GDM을 재시작:
    sudo systemctl restart gdm
    

📌 6. 최신 패키지 업데이트 (mesa, linux-firmware)

AMD GPU 관련 패키지가 최신인지 확인하세요.

sudo pacman -Syu mesa xf86-video-amdgpu linux-firmware

linux-firmware 패키지가 최신이 아니면 AMD GPU가 정상 작동하지 않을 수 있습니다.


📊 7. 실시간 GPU 상태 확인 (모니터링)

7.1 radeontop으로 GPU 사용량 확인

sudo pacman -S radeontop
radeontop

실시간 GPU 사용량을 확인할 수 있습니다.

7.2 GPU 온도 확인 (sensors 사용)

sudo pacman -S lm_sensors
sudo sensors

amdgpu 관련 항목에서 GPU 온도를 확인할 수 있습니다.


🔥 결론: 어떤 방법을 먼저 시도할까?

  1. 로그 확인 (dmesg, journalctl) → Freeze 원인 찾기
  2. LTS 커널 사용 (linux-lts) → 최신 커널과의 호환성 문제 해결
  3. amdgpu 강제 로드 (MODULES=(amdgpu)) → 드라이버 문제 해결
  4. GRUB 설정 변경 (amdgpu.runpm=0) → 전원 관리 문제 해결
  5. Xorg 설정 조정 (/etc/X11/xorg.conf.d/20-amdgpu.conf) → 화면 깨짐 및 프리징 해결
  6. 패키지 업데이트 (mesa, linux-firmware) → 최신 드라이버 적용

위 방법들을 하나씩 시도해 보면서 문제가 해결되는지 확인해 보세요! 🚀

Read Count