Arch Linux (아치 리눅스)에서 절전 모드 한 뒤에 키보드나 마우스를 눌러 풀게 되면 화면이 무지개 빛이 되면서 그래픽이 왕창 깨져 재부팅 전까지는 사용이 불가능한 현상이 있었다.
dmesg 확인 결과 NVIDIA 모듈 쪽에서 Graphics Exception 이라는 내용으로 오류를 뿜어대고 있었고, 원인을 검색해보았다.
https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks#Preserve_video_memory_after_suspend
https://download.nvidia.com/XFree86/Linux-x86_64/460.32.03/README/powermanagement.html
NVIDIA 모듈은 절전모드 진입 시 그래픽카드 메모리(VRAM)의 내용을 /tmp에 일시적으로 저장하게 되는데, VRAM의 전체 내용을 저장하는 게 아니라, 일부분(핵심적인 부분)만 저장하기 때문에 나중에 절전모드를 해제했을 때 일부 프로그램을 제외하고 복원하게 되는데, 이때 렌더링이 깨지는 오류가 발생할 수 있다고 한다.
위에 나와있는 해결 방법은, 절전 모드 시 일부분만 아닌 VRAM 전체 내용을 디스크에 저장할 수 있도록 설정하는 것이다.
vim /etc/modprobe.d/nvidia-power-management.conf
해당 파일을 수정하여 nvidia 커널 모듈 로드 시 VRAM 전체 저장하도록 하고, 저장 위치를 지정하는 옵션을 넣어준다.
options nvidia NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=/tmp-nvidia
VRAM 을 전체 저장하도록 설정하고 /tmp-nvidia 에 그 내용들을 전체 저장한다. 라는 옵션을 넣는다.
/tmp-nvidia는 굳이 지정하지 않아도 될 수 있지만, VRAM 용량에 따라서 전체 저장하면 용량에 따라 /tmp 의 용량이 부족할 수 있어, 이것을 디스크 용량이 널널한 특정 지점에(보통 root 파티션) 저장하도록 지정하는 것이다.
/tmp 는 tmpfs 라는 타입으로 별도로 마운트 되는데, 이게 내 PC 기준에서는 3.2G 밖에 되지 않고, 그래픽카드는 8GB 의 VRAM 을 가지고 있으므로, 전체 저장이 불가능하다. 그래서 나는 /tmp-nvidia 라는 곳에 저장하도록 지정하였다.
그리고 저장 후 나간다. 이때 그냥 재부팅 하고나면 NVIDIA 모듈로 인해 재부팅이 되지 않는데, 아래의 서비스들을 enable (활성화) 시켜줘야 한다.
systemctl enable nvidia-suspend
systemctl enable nvidia-hibernate
원래 /proc/driver/nvidia/suspend 와 /proc/driver/nvidia/hibernate 에 직접 suspend 나 hibernate 을 주입해줘야하는데, nvidia-utils 패키지에서 기본 제공하는 위의 서비스들을 통해 절전 모드 진입 시 자동으로 주입하도록 도와준다.
이후 재부팅 하고 나면 정상적으로 절전 모드 설정/해제가 가능하다.
'컴퓨터' 카테고리의 다른 글
[Arch Linux] 삼성 SL-C486W 프린터 드라이버 잡기 (0) | 2023.05.08 |
---|---|
linuxserver.io 도커 Root CA 인증서 추가하기 (0) | 2023.04.11 |
Raspberry Pi 4 (라즈베리 파이 4) 도착 ! (1) | 2019.07.26 |
Supermicro IPMI 웹 인터페이스 인증서 초기화 (0) | 2019.06.04 |