Ubuntu 24.04 최적화 작업 정리

작업일: 2026-04-19 하드웨어: ASUS VivoBook D515UA / Ryzen 5 5300U (Zen 2) / 20GB RAM / Samsung PM991 256GB NVMe 외장 모니터: 4K (3840×2160) IPS 패널 HDMI 연결, 200% 스케일링


1. 데스크탑 환경 변경

문제

MATE X11의 Marco 컴포지터가 4K@60Hz 합성을 감당하지 못해 시스템 전체가 느리고 팬이 과도하게 회전. Windows 10에서는 동일 하드웨어로 쾌적했음 — DWM의 GPU 하드웨어 합성과 달리 Marco는 비효율적인 소프트웨어 합성 사용.

해결

MATE X11 → KDE Plasma Wayland로 변경. 체감 90% 이상 개선.

# 설치 명령어
sudo apt install kde-plasma-desktop sddm plasma-workspace-wayland
sudo dpkg-reconfigure sddm
sudo apt remove ubuntu-mate-desktop mate-desktop-environment mate-desktop-environment-core
sudo apt remove caja pluma atril eom mate-terminal mate-panel marco
sudo apt autoremove

2. CPU 전력 관리 + 팬 정책

문제

amd-pstate-epp 드라이버에서 EPP가 기본값(power)으로 설정되어 CPU 반응성 저하. ASUS 기본 팬 커브가 공격적으로 설정되어 55°C에서도 팬 2700+ RPM.

해결

EPP를 balance_power로 변경. ASUS 팬 정책을 조용한 모드(2)로 변경.

# 즉시 적용
echo "balance_power" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
echo 2 | sudo tee /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy

# 재부팅 후 자동 적용 (systemd 서비스)
sudo tee /etc/systemd/system/cpu-epp.service << 'EOF'
[Unit]
Description=Set CPU EPP and Fan Policy
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo balance_power | tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference && echo 2 > /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy"

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable cpu-epp.service

ASUS 팬 정책 (throttle_thermal_policy)

EPP 옵션 참고


3. swappiness 변경

문제

기본값 60은 데스크탑 용도에 과도함.

해결

echo "vm.swappiness=10" | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl -p /etc/sysctl.d/99-swappiness.conf

4. 브라우저 변경

문제

해결

Firefox deb (Mozilla 공식 저장소) 사용. Wayland 네이티브 + VA-API HW 디코딩 정상 동작.

# Snap Firefox 제거
sudo snap remove firefox

# Mozilla 공식 deb 설치
sudo install -d -m 0755 /etc/apt/keyrings
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null

echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee /etc/apt/sources.list.d/mozilla.list

echo 'Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000' | sudo tee /etc/apt/preferences.d/mozilla

sudo apt update
sudo apt install firefox

Firefox VA-API 하드웨어 디코딩 설정

Firefox가 샌드박스 안에서 VA-API 장치에 접근하지 못해 소프트웨어 디코딩으로 떨어지는 문제 해결:

# 환경변수 설정 (로그아웃 → 재로그인 필요)
mkdir -p ~/.config/environment.d
cat > ~/.config/environment.d/firefox-vaapi.conf << 'EOF'
MOZ_DISABLE_RDD_SANDBOX=1
LIBVA_DRIVER_NAME=radeonsi
EOF

about:config 설정 확인

HW 디코딩 동작 확인 방법

# 유튜브 재생 중 RDD 프로세스 CPU 확인
top -bn1 -o %CPU | grep -E "(firefox|RDD|Utility)" | head -10
# RDD가 0~2%면 HW 디코딩 정상, 8% 이상이면 SW 디코딩

Firefox HW 디코딩 지원 상태


5. mpv 설정

설정 파일: ~/.config/mpv/mpv.conf

hwdec=vaapi
vo=gpu
gpu-api=opengl
video-sync=audio

scale=lanczos
scale-antiring=0.7
dscale=mitchell
cscale=spline36

sigmoid-upscaling=yes
correct-downscaling=yes

deband=yes
deband-iterations=2
deband-threshold=35
deband-range=20

sub-font-size=40

주요 설정 설명

참고: Vega 6 4K 스케일링 한계


6. mpv-one 스크립트 (단일 인스턴스 + Wayland 윈도우 활성화)

파일: ~/bin/mpv-one

#!/usr/bin/env bash

SOCK="${XDG_RUNTIME_DIR:-/tmp}/mpv-one.sock"

send_files() {
  python3 - "$SOCK" "$@" <<'PY'
import json, socket, sys
sock_path = sys.argv[1]
files = sys.argv[2:]
s = socket.socket(socket.AF_UNIX)
s.connect(sock_path)
for i, f in enumerate(files):
    mode = "replace" if i == 0 else "append"
    msg = {"command": ["loadfile", f, mode]}
    s.sendall((json.dumps(msg) + "\n").encode("utf-8"))
PY
}

activate_mpv() {
  local scriptfile script_id
  scriptfile="$(mktemp --suffix=.js)"
  cat > "$scriptfile" <<'JS'
var clients = workspace.clientList();
for (var i = 0; i < clients.length; i++) {
    if (clients[i].resourceClass == "mpv") {
        workspace.activeClient = clients[i];
        break;
    }
}
JS

  script_id=$(qdbus org.kde.KWin /Scripting loadScript "$scriptfile" mpv-activate 2>/dev/null)
  if [ -n "$script_id" ]; then
    qdbus org.kde.KWin "/$script_id" run 2>/dev/null
    qdbus org.kde.KWin /Scripting unloadScript mpv-activate 2>/dev/null
  fi
  rm -f "$scriptfile"
}

if [ -S "$SOCK" ]; then
  if send_files "$@"; then
    activate_mpv
    exit 0
  else
    rm -f "$SOCK"
  fi
fi

exec mpv \
  --idle=yes \
  --force-window=immediate \
  --input-ipc-server="$SOCK" \
  "$@"

X11 → Wayland 변경점


7. XanMod 커널 설치

문제

Ubuntu 기본 커널은 x86-64-v1 (Generic) 타겟 빌드로 AVX2/FMA 미사용.

해결

XanMod 6.19.12-x64v3 설치. BORE 스케줄러 + Zen 2 최적화 + Full Preempt.

# CPU psABI 레벨 확인 (v3 이상 필요)
curl -fsSLO https://dl.xanmod.org/check_x86-64_psabi.sh
chmod +x check_x86-64_psabi.sh
./check_x86-64_psabi.sh

# Secure Boot 확인 (꺼져 있어야 함)
mokutil --sb-state

# 저장소 추가 및 설치
sudo install -m 0755 -d /etc/apt/keyrings
wget -qO - https://dl.xanmod.org/archive.key | sudo gpg --dearmor -vo /etc/apt/keyrings/xanmod-archive-keyring.gpg

echo "deb [signed-by=/etc/apt/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/xanmod-release.list

sudo apt update
sudo apt install linux-xanmod-x64v3

# GRUB 메뉴 표시 (문제 시 기존 커널로 부팅 가능)
sudo sed -i 's/GRUB_TIMEOUT_STYLE=hidden/GRUB_TIMEOUT_STYLE=menu/' /etc/default/grub
sudo sed -i 's/GRUB_TIMEOUT=0/GRUB_TIMEOUT=5/' /etc/default/grub
sudo update-grub

sudo reboot

x86-64 psABI 레벨 설명

확인

uname -r
# 출력: 6.19.12-x64v3-xanmod1

8. KDE 설정 변경

더블클릭으로 파일 열기

kwriteconfig5 --file kdeglobals --group KDE --key SingleClick false

작업 표시줄 창 그룹화 해제

MATE처럼 같은 앱의 창을 묶지 않고 개별 표시:

# Plasma 종료
kquitapp5 plasmashell

# 그룹화 해제 설정 추가
# [Containments][3][Applets][6]이 icontasks 위젯인 경우 (환경마다 번호 다를 수 있음)
sed -i '/\[Containments\]\[3\]\[Applets\]\[6\]\[Configuration\]\[General\]/a groupingStrategy=0' ~/.config/plasma-org.kde.plasma.desktop-appletsrc

# Plasma 재시작
kstart5 plasmashell &

참고: 위젯 번호([3], [6])는 환경마다 다를 수 있음. 아래 명령으로 icontasks 위젯 위치 확인:

grep -n "icontasks" ~/.config/plasma-org.kde.plasma.desktop-appletsrc

한글 입력 설정

# 시스템 키보드 레이아웃 변경
localectl set-x11-keymap kr pc105 kr104 "korean:ralt_hangul,korean:rctrl_hanja"

# KDE 키보드 설정
kwriteconfig5 --file kxkbrc --group Layout --key Use true
kwriteconfig5 --file kxkbrc --group Layout --key LayoutList "kr"
kwriteconfig5 --file kxkbrc --group Layout --key VariantList "kr104"
kwriteconfig5 --file kxkbrc --group Layout --key Options "korean:ralt_hangul,korean:rctrl_hanja"

한글키 문제 원인

Wayland에서 한글키(keycode 108)가 Alt_R로 인식됨. X11에서는 xmodmap으로 수정 가능하지만 Wayland에서는 작동하지 않음. localectl + KDE kxkbrc 설정으로 XKB 레벨에서 해결.

화면 캡처


9. 제거한 패키지

# MATE 데스크탑
sudo apt remove ubuntu-mate-desktop mate-desktop-environment mate-desktop-environment-core
sudo apt remove caja pluma atril eom mate-terminal mate-panel marco

# Google Chrome (GBM 크래시 문제)
sudo apt remove google-chrome-stable
sudo rm /etc/apt/sources.list.d/google-chrome.list

# Brave Browser
sudo apt remove brave-browser
sudo rm /etc/apt/sources.list.d/brave-browser-release.list
sudo rm /usr/share/keyrings/brave-browser-archive-keyring.gpg

# Snap Firefox
sudo snap remove firefox

# 잔여 패키지 정리
sudo apt autoremove

최종 구성 요약

항목 변경 전 변경 후
데스크탑 MATE X11 (Marco) KDE Plasma Wayland (KWin)
커널 6.17.0-20-generic (v1) 6.19.12-x64v3-xanmod1 (v3)
브라우저 Snap Firefox + Snap Chromium Firefox deb (Mozilla 공식)
Firefox VA-API 미설정 (SW 디코딩) MOZ_DISABLE_RDD_SANDBOX=1 (HW 디코딩)
CPU EPP default (power) balance_power
ASUS 팬 정책 0 (기본) 2 (조용함)
swappiness 60 10
한글 입력 한글키가 Alt_R로 인식 kr104 + ralt_hangul 매핑
파일 열기 싱글클릭 더블클릭
작업 표시줄 같은 앱 창 그룹화 그룹화 해제 (개별 표시)
mpv 윈도우 활성화 xdotool (X11) KWin 스크립팅 (Wayland)

주요 설정 파일 위치

파일 용도
~/.config/mpv/mpv.conf mpv 재생 설정
~/bin/mpv-one mpv 단일 인스턴스 스크립트
~/.config/environment.d/firefox-vaapi.conf Firefox VA-API 환경변수
~/.config/kxkbrc KDE 키보드 레이아웃 (한글)
~/.config/plasma-org.kde.plasma.desktop-appletsrc KDE 패널/위젯 설정 (작업 표시줄 그룹화 등)
/etc/systemd/system/cpu-epp.service CPU EPP + 팬 정책 자동 적용
/etc/sysctl.d/99-swappiness.conf swappiness 설정
/etc/apt/sources.list.d/xanmod-release.list XanMod 커널 저장소
/etc/apt/sources.list.d/mozilla.list Firefox deb 저장소

트러블슈팅 참고

부팅 문제 시

GRUB 메뉴에서 Advanced options → 6.17.0-20-generic 선택하여 기존 커널로 부팅 가능.

Chrome/Chromium Wayland GBM 크래시

Chrome 147 + AMD Renoir + KDE Wayland 조합에서 gbm_bo_import BGRA_8888 에러 발생. 어떤 플래그(--use-gl=egl, --use-gl=angle, --ozone-platform=x11)로도 해결 불가. 현재로서는 Firefox deb 사용이 유일한 안정적 해결책.

Firefox HW 디코딩이 안 될 때

  1. ~/.config/environment.d/firefox-vaapi.confMOZ_DISABLE_RDD_SANDBOX=1 확인
  2. about:config에서 media.ffmpeg.vaapi.enabled = true 확인
  3. 로그아웃 → 재로그인 필요 (환경변수 적용)
  4. 확인: top에서 RDD 프로세스 CPU가 0~2%면 HW 디코딩 정상

mpv 4K 스케일링

Vega 6 iGPU에서 GPU 셰이더 기반 고급 스케일링(ewa_lanczossharp, vulkan+interpolation)은 프레임 드롭 발생. lanczos + video-sync=audio가 화질과 안정성의 최적 타협점.

팬 소음

유튜브 재생 중 CPU 64°C / 팬 2600 RPM은 5300U 노트북의 정상 동작 범위. Windows 10에서도 동일한 수준이므로 하드웨어 한계. EPP를 balance_power, 팬 정책을 2(조용함)로 설정하여 유휴 시 팬 소음 최소화.

작업 표시줄 그룹화 재설정

설정이 초기화되면 아래 명령으로 다시 적용:

kquitapp5 plasmashell
sed -i '/\[Containments\]\[3\]\[Applets\]\[6\]\[Configuration\]\[General\]/a groupingStrategy=0' ~/.config/plasma-org.kde.plasma.desktop-appletsrc
kstart5 plasmashell &

위젯 번호 확인: grep -n "icontasks" ~/.config/plasma-org.kde.plasma.desktop-appletsrc