Garuda Linux is an Arch-based rolling-release Linux distribution focused on gaming, performance, and aesthetics.
First released in March 2020 by the Garuda Linux team — a community project based in India.
Built on top of Arch Linux — uses the same pacman package manager and AUR ecosystem.
Ships with the linux-zen kernel by default — optimized for desktop responsiveness and gaming.
Uses Btrfs with automatic Snapper snapshots — every pacman transaction creates a snapshot.
Who
Founded by dr460nf1r3 (Nico), TNE, Librewish (Shrinivas Kumbhar), and other community contributors.
Maintained by the Garuda Linux Team — fully community-driven, no corporate backing.
Based in India — one of the few major distros with Indian roots.
Why
Arch Linux is powerful but requires manual setup for gaming and performance tuning.
Goal: deliver a ready-to-game Arch experience out of the box — no manual tweaking needed.
Combines Arch’s cutting-edge packages with automated performance optimizations, beautiful theming, and safety nets (Btrfs snapshots).
Introduction
What is Garuda Linux?
A rolling-release, Arch-based Linux distro designed for gaming, performance, and daily desktop use.
Ships with the linux-zen kernel, Btrfs + auto-snapshots, ZRAM, and gaming tools pre-configured.
Default desktop: Dr460nized KDE Plasma — a heavily customized, visually stunning KDE setup.
Uses pacman + Chaotic-AUR — access to all Arch packages plus thousands of pre-built AUR packages.
Garuda Editions
Garuda Dr460nized → KDE Plasma (default, most popular, gaming-focused)
Garuda Dr460nized Gaming → Dr460nized + full gaming suite pre-installed
Garuda GNOME → GNOME desktop variant
Garuda Xfce → lightweight Xfce desktop
Garuda Cinnamon → Cinnamon desktop (familiar for Mint users)
Garuda MATE → MATE desktop
Garuda LXQt-kwin → ultra-lightweight LXQt
Garuda Wayfire → Wayland compositor (experimental/advanced)
Garuda Sway → tiling Wayland WM
Garuda i3 → tiling X11 WM
Garuda vs Other Gaming Distros
Feature
Garuda Linux
Pop!_OS
Nobara
SteamOS
Base
Arch (rolling)
Ubuntu LTS
Fedora (rolling)
Arch (immutable)
Kernel
linux-zen
linux-generic
linux-fsync
linux-neptune
Gaming tools
Pre-installed
Partial
Pre-installed
Steam-focused
Snapshots
Btrfs auto
No
No
No
AUR access
Yes (Chaotic-AUR)
No
No
Limited
Target
Gaming + general
Gaming + creative
Gaming + general
Steam Deck only
Advantages
Ready-to-game out of the box, linux-zen kernel for low latency, Btrfs auto-snapshots (safe to experiment), Chaotic-AUR (pre-built AUR packages — no compile time), ZRAM enabled by default, beautiful Dr460nized KDE theme, full Arch ecosystem access, rolling release (always latest), Garuda Assistant GUI for system management.
Disadvantages
Rolling release can occasionally break, heavier than vanilla Arch (more pre-installed software), Btrfs snapshots consume disk space over time, not ideal for servers, requires more RAM than lightweight distros (~4GB minimum for Dr460nized), less documentation than Ubuntu/Fedora.
Use Cases
PC gaming (Steam, Lutris, Heroic), daily desktop use, content creation, development workstation, learning Arch Linux with safety nets, performance-critical workloads.
# Download ISO from: https://garudalinux.org/downloads# Using Ventoy (recommended — multi-boot)# Just copy the ISO to the Ventoy USB drive# Using dd (Linux)sudo dd if=Garuda-dr460nized-linux-zen-*.iso of=/dev/sdX bs=4M status=progresssync# Using Rufus (Windows) — select DD mode, not ISO mode
Installation (Calamares Installer)
1. Boot from USB → "Boot with open source drivers" (AMD/Intel)
or "Boot with proprietary drivers" (NVIDIA)
2. Try or Install Garuda Linux
3. Language & Keyboard
4. Partitioning:
- Erase disk (recommended — sets up Btrfs automatically)
- Manual: /boot/efi (512MB FAT32), / (rest, Btrfs)
- Swap: use ZRAM instead (Garuda default — no swap partition needed)
5. User creation
6. Install → ~10-15 min
7. Reboot → remove USB
First Boot Setup
# Garuda Welcome app opens automatically# Run system update first (critical on fresh install)sudo pacman -Syu# Or use Garuda Assistant → System Maintenance → Update System# Install Chaotic-AUR (usually pre-configured, verify):sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.comsudo pacman-key --lsign-key 3056513887B78AEBsudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'# Add to /etc/pacman.conf:# [chaotic-aur]# Include = /etc/pacman.d/chaotic-mirrorlist# Enable multilib (for 32-bit gaming libraries)# Uncomment in /etc/pacman.conf:# [multilib]# Include = /etc/pacman.d/mirrorlistsudo pacman -Syu
NVIDIA Driver Setup
# Garuda includes nvidia-installer-dkms for easy NVIDIA setupsudo nvidia-installer-dkms# Reboot after installation# Or manually:sudo pacman -S nvidia-dkms nvidia-utils lib32-nvidia-utils nvidia-settings# Check NVIDIA driver is loadednvidia-smilsmod | grep nvidia# For older cards (Kepler/Maxwell):sudo pacman -S nvidia-470xx-dkms # from AUR/Chaotic-AUR
# Chaotic-AUR is pre-configured on Garuda# It provides pre-compiled AUR packages — no need to compile from source# Search Chaotic-AUR packagespacman -Ss package # searches all repos including chaotic-aur# Popular packages available in Chaotic-AUR:sudo pacman -S visual-studio-code-binsudo pacman -S google-chromesudo pacman -S spotifysudo pacman -S discordsudo pacman -S heroic-games-launchersudo pacman -S proton-ge-custom-binsudo pacman -S mangohudsudo pacman -S gamemodesudo pacman -S bottles
yay / paru (AUR Helpers)
# yay is pre-installed on Garudayay -Syu # update system + AUR packagesyay -S package # install from AURyay -Ss keyword # search AURyay -R package # removeyay -Yc # remove unneeded deps# paru (Rust-based, more features)sudo pacman -S paru # install paru (from Chaotic-AUR)paru -Syu # update allparu -S package # install from AURparu -Ss keyword # searchparu -c # clean orphans
Flatpak
# Flatpak is pre-installed on Garudaflatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepoflatpak install flathub org.gimp.GIMPflatpak update # update all Flatpaksflatpak listflatpak uninstall org.gimp.GIMPflatpak run org.gimp.GIMP
Gaming Setup & Tools
Steam
# Install Steam (from Chaotic-AUR or multilib)sudo pacman -S steam# Enable Steam Play (Proton) for Windows games# Steam → Settings → Steam Play → Enable Steam Play for all titles# Select Proton version (Proton Experimental or Proton-GE recommended)# Install Proton-GE (better compatibility than official Proton)sudo pacman -S proton-ge-custom-bin # from Chaotic-AUR# Or use ProtonUp-Qt to manage Proton versions:sudo pacman -S protonup-qt# Steam native runtime librariessudo pacman -S lib32-mesa lib32-vulkan-icd-loader# For NVIDIA:sudo pacman -S lib32-nvidia-utils# For AMD:sudo pacman -S lib32-vulkan-radeon lib32-amdvlk
sudo pacman -S heroic-games-launcher # from Chaotic-AUR# Heroic supports:# - Epic Games Store (free games, AAA titles)# - GOG Galaxy (DRM-free games)# - Amazon Prime Gaming# Uses Wine/Proton under the hood for Windows games
GameMode (CPU/GPU Performance Boost)
# GameMode is pre-installed on Garuda Gaming editionsudo pacman -S gamemode lib32-gamemode# Enable GameMode servicesystemctl --user enable --now gamemoded# Run a game with GameMode:gamemoderun ./gamegamemoderun steam steam://rungameid/APPID# In Steam: add launch option:# gamemoderun %command%# What GameMode does:# - Sets CPU governor to "performance"# - Applies GPU performance tweaks (NVIDIA/AMD)# - Disables CPU mitigations temporarily# - Renice game process for priority# - Inhibits screensaver/sleep# Check GameMode status:gamemoded -s
MangoHud (In-Game Performance Overlay)
sudo pacman -S mangohud lib32-mangohud# Run with MangoHud:mangohud ./gamemangohud steam steam://rungameid/APPID# In Steam launch options:# mangohud %command%# MangoHud shows: FPS, frametime, CPU/GPU usage, temps, VRAM, RAM# Config file: ~/.config/MangoHud/MangoHud.conf# Example config:# fps# cpu_stats# gpu_stats# ram# vram# cpu_temp# gpu_temp# frametime# position=top-left# font_size=24# GOverlay — GUI for MangoHud config:sudo pacman -S goverlay
Wine & DXVK (Windows Games without Steam)
# Wine — run Windows .exe filessudo pacman -S wine-staging winetricks# Create a Wine prefix (isolated Windows environment)WINEPREFIX=~/.wine32 WINEARCH=win32 wine winebootWINEPREFIX=~/.wine64 wine wineboot# Install DirectX, Visual C++ runtimes via winetrickswinetricks d3dx9 d3dx11 vcrun2019 dotnet48# DXVK — DirectX 9/10/11 → Vulkan (much better performance)sudo pacman -S dxvk-binWINEPREFIX=~/.wine64 setup_dxvk install# VKD3D-Proton — DirectX 12 → Vulkansudo pacman -S vkd3d-proton-bin # from Chaotic-AUR# Bottles — GUI Wine manager (easier than raw Wine)sudo pacman -S bottles
Emulation
# RetroArch (multi-system emulator frontend)sudo pacman -S retroarch retroarch-assets-xmb# Individual emulatorssudo pacman -S dolphin-emu # GameCube / Wiisudo pacman -S rpcs3 # PlayStation 3 (from Chaotic-AUR)sudo pacman -S yuzu # Nintendo Switch (from Chaotic-AUR)sudo pacman -S pcsx2 # PlayStation 2sudo pacman -S ppsspp # PSPsudo pacman -S desmume # Nintendo DSsudo pacman -S mgba # Game Boy Advancesudo pacman -S cemu # Wii U (from Chaotic-AUR)# Emulation Station DE (frontend for all emulators)sudo pacman -S emulationstation-de
Performance Tuning
linux-zen Kernel
# Garuda ships linux-zen by default — optimized for desktop/gaminguname -r # check current kernel# Should show: x.x.x-zen1-x-zen# Available kernels (install via pacman):# linux-zen → low-latency, desktop/gaming (Garuda default)# linux-tkg-pds → TKG patchset, best for gaming (from Chaotic-AUR)# linux-tkg-bmq → BMQ scheduler variant# linux-cachyos → CachyOS optimized kernel (from Chaotic-AUR)# linux-xanmod → XanMod kernel with extra patches# linux → vanilla Arch kernel# linux-lts → long-term support kernel (most stable)# Install alternative kernel:sudo pacman -S linux-tkg-pds linux-tkg-pds-headers# Select at GRUB boot menu# Check kernel scheduler:cat /sys/kernel/debug/sched/features
ZRAM (Compressed RAM Swap)
# ZRAM is enabled by default on Garuda — no swap partition needed# ZRAM creates a compressed block device in RAM for swap# Much faster than disk swap, reduces I/O# Check ZRAM status:zramctlswapon --showfree -h# ZRAM config: /etc/systemd/zram-generator.conf# [zram0]# zram-size = ram / 2 # use half of RAM# compression-algorithm = zstd# Garuda default: zram-size = min(ram, 8192)# Compression: lz4 (fast) or zstd (better ratio)
CPU Governor & Power Management
# Check current CPU governorcat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor# Available governors:# performance → max frequency always (best for gaming)# schedutil → kernel scheduler-based (Garuda default)# powersave → minimum frequency (battery saving)# ondemand → scales with load# Set performance governor (temporary):echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor# Permanent via cpupower:sudo pacman -S cpupowersudo cpupower frequency-set -g performancesudo systemctl enable --now cpupower# Edit /etc/default/cpupower: governor='performance'# Garuda uses auto-cpufreq for laptop battery management:sudo pacman -S auto-cpufreqsudo systemctl enable --now auto-cpufreq
Power On
→ UEFI/BIOS POST
→ GRUB2 bootloader (with Btrfs snapshot entries)
→ linux-zen kernel decompresses
→ initramfs (mkinitcpio-generated)
→ systemd (PID 1)
→ Targets: sysinit → basic → graphical
→ SDDM display manager → Dr460nized KDE Plasma
Linux File System Hierarchy (FHS)
/ Root filesystem (Btrfs @ subvolume)
├── /boot Kernel, initramfs, GRUB2
├── /dev Device files
├── /etc System configuration
├── /home User home dirs (Btrfs @home subvolume)
├── /opt Optional software (Steam, games)
├── /proc Virtual: process + kernel info
├── /root Root user home
├── /run Runtime data
├── /srv Service data
├── /sys Virtual: hardware info
├── /tmp Temporary files (tmpfs — RAM)
├── /usr Programs, libraries, docs
│ ├── /usr/bin User commands
│ ├── /usr/lib Libraries
│ └── /usr/share Shared data
└── /var Variable data (logs, cache, pacman db)
Garuda Btrfs subvolumes (default layout):
@ → mounted at /
@home → mounted at /home
@cache → mounted at /var/cache
@log → mounted at /var/log
@snapshots → Snapper snapshot storage
GRUB & Snapshot Boot
# Garuda installs grub-btrfs — GRUB shows Btrfs snapshots as boot entries# If system breaks after update:# 1. Reboot → GRUB menu → "Garuda Linux snapshots"# 2. Select a snapshot from before the problem# 3. Boot into it (read-only snapshot)# 4. From inside snapshot, run: sudo garuda-update (or pacman rollback)# 5. Or: sudo snapper rollback <number># Update GRUB snapshot list:sudo grub-mkconfig -o /boot/grub/grub.cfg# grub-btrfs auto-updates on snapshot creation (systemd path unit)systemctl status grub-btrfsd
Shell & Terminal
Default Shell & Terminal
# Garuda Dr460nized uses fish shell by defaultecho $SHELL # /usr/bin/fish# fish features: auto-suggestions, syntax highlighting, tab completion# No need to source config — fish auto-loads ~/.config/fish/config.fish# Switch to bash/zsh if preferred:chsh -s /bin/bashchsh -s /bin/zshsudo pacman -S zsh zsh-autosuggestions zsh-syntax-highlighting# Default terminal: Konsole (KDE) or Alacritty (GPU-accelerated)sudo pacman -S alacritty # fast GPU terminalsudo pacman -S kitty # another GPU terminal
Essential Commands
# File operationsls -la / exa -la / lsd -la # list files (exa/lsd are modern ls replacements)sudo pacman -S exa lsd bat # install modern CLI toolsbat file.txt # cat with syntax highlightingfd pattern # modern find replacementrg pattern # ripgrep — fast grep# System infoneofetch # system info + ASCII art (pre-installed)fastfetch # faster neofetch alternativebtop # modern htop (pre-installed on Garuda)# Disk usagedf -hT # disk space + filesystem typedust # modern du replacementsudo pacman -S dust ncdu# Process managementbtop / htop / top # process monitorkill PID / killall name # kill process
fish Shell Basics
# fish config: ~/.config/fish/config.fish# Variablesset name "Garuda"echo $name# Functionsfunction greet echo "Hello, $argv[1]"endgreet "World"# Aliases (fish calls them abbreviations)abbr -a update 'sudo pacman -Syu'abbr -a install 'sudo pacman -S'# Conditionalsif test $status -eq 0 echo "Success"else echo "Failed"end# Loopsfor i in (seq 1 5) echo $iend
# Garuda uses the "wheel" group for sudo (same as Arch/Fedora)sudo visudo# Uncomment: %wheel ALL=(ALL:ALL) ALL# Passwordless sudo (for gaming/automation — less secure):# %wheel ALL=(ALL:ALL) NOPASSWD: ALL
Systemd & Services
systemctl
systemctl status servicenamesudo systemctl start|stop|restart servicenamesudo systemctl enable|disable servicenamesystemctl list-units --type=service --state=runningsystemctl --failed # show failed servicessudo systemctl daemon-reload
Gaming-Related Services
# GameMode daemonsystemctl --user status gamemodedsystemctl --user enable --now gamemoded# Sunshine (game streaming server — GeForce NOW alternative)sudo pacman -S sunshinesudo systemctl enable --now sunshine# Web UI: https://localhost:47990# Pipewire (audio — pre-installed, replaces PulseAudio)systemctl --user status pipewiresystemctl --user status wireplumberpactl info # audio server info
Dr460nized KDE Desktop
KDE Plasma Basics
Super key → Application launcher (KRunner)
Super + Tab → Switch windows
Alt + Tab → Switch windows (classic)
Super + D → Show desktop
Super + E → File manager (Dolphin)
Super + L → Lock screen
Ctrl + Alt + T → Terminal
Super + PrtSc → Screenshot (Spectacle)
Super + Shift + S → Screenshot region
KDE Customization
# KDE System Settings → Appearance → Global Theme# Garuda Dr460nized uses: Sweet theme + Latte Dock + custom icons# Install additional themes:sudo pacman -S kvantum-qt5 # Kvantum theme enginesudo pacman -S latte-dock # macOS-style dock# KDE Plasma widgets (right-click desktop → Add Widgets)# Useful widgets: System Monitor, Weather, Clipboard, Notes# Virtual desktops# System Settings → Workspace → Virtual Desktops# Ctrl + F1/F2/F3/F4 → switch desktops# Meta + Ctrl + Left/Right → switch desktops
Display & HiDPI
# KDE Wayland session (recommended for HiDPI):# Select "Plasma (Wayland)" at SDDM login screenecho $WAYLAND_DISPLAY # check if Wayland activeecho $XDG_SESSION_TYPE # "wayland" or "x11"# HiDPI scaling: System Settings → Display → Global Scale# Fractional scaling supported natively on Wayland# Multi-monitor: System Settings → Display → Arrangement
1. Reboot → GRUB menu → "Garuda Linux snapshots"
2. Select snapshot from before the update
3. Boot into it
4. Open terminal → run: sudo snapper rollback <snapshot-number>
or: sudo pacman -U /var/cache/pacman/pkg/package-old-version.pkg.tar.zst
5. Reboot normally
Pacman Errors
# Error: failed to synchronize databasessudo pacman -Syy # force refresh all databases# Error: signature is unknown trustsudo pacman-key --refresh-keyssudo pacman -S archlinux-keyring garuda-keyring# Error: database is lockedsudo rm /var/lib/pacman/db.lck# Partial upgrade issues (never do pacman -Sy without -u)sudo pacman -Syu # always full upgrade# Reinstall broken package:sudo pacman -S --overwrite '*' package
NVIDIA Issues
# Black screen after NVIDIA install:# Boot from snapshot → reinstall driverssudo pacman -S nvidia-dkms nvidia-utils# Check NVIDIA is working:nvidia-smiglxinfo | grep "OpenGL renderer"# Force NVIDIA for specific app (Optimus laptops):__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia app# Or use prime-run:sudo pacman -S nvidia-primeprime-run game
Audio Issues
# Check Pipewire status:systemctl --user status pipewire wireplumber# Restart audio:systemctl --user restart pipewire wireplumber# Check audio devices:pactl list sinks shortpactl list sources short# Set default output:pactl set-default-sink sink-name# Install PulseAudio compatibility (if app needs it):sudo pacman -S pipewire-pulse
Gaming Performance Issues
# Check if GameMode is active:gamemoded -s# Check CPU governor:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor# Check GPU usage:radeontop # AMDnvidia-smi dmon # NVIDIA# Check for thermal throttling:watch -n 1 "cat /sys/class/thermal/thermal_zone*/temp"# Enable fsync (better than esync for Wine/Proton):# Use linux-tkg kernel which has fsync built-in# Or check: ulimit -Hn (should be > 524288)# Add to /etc/security/limits.conf:# * hard nofile 524288