[meta] source_os = "linux" target_distro_family = "arch" # openSUSE Tumbleweed/Leap user moving to Arch. # Body text assumes zypper, YaST, and AppArmor familiarity. [log_paths] pacman = "/var/log/pacman.log" steam = "~/.local/share/Steam/logs/content_log.txt" proton = "~/.local/share/Steam/logs/proton_log.txt" lutris = "~/.cache/lutris/logs/lutris.log" # ── pacman / AUR ───────────────────────────────────────────────────────────── [[patterns]] id = "pacman-db-lock" sources = ["journald", "applog:pacman"] match_text = "could not lock database: File exists" severity = "warn" title = "pacman database locked" body = "Lock file left from a crashed pacman run — like zypper's /var/run/zypp.pid getting orphaned. Remove if nothing is running: sudo rm /var/lib/pacman/db.lck" [[patterns]] id = "partial-upgrade-warning" sources = ["applog:pacman"] match_text = "warning: database file for" severity = "info" title = "Package database out of sync" body = "On Arch, syncing without upgrading is dangerous — unlike openSUSE where zypper ref is safe to run alone. Always: pacman -Syu — never pacman -Sy without the u." [[patterns]] id = "pacman-dep-conflict" sources = ["journald", "applog:pacman"] match_text = "conflicting dependencies" severity = "warn" title = "Dependency conflict" body = "Unlike zypper which resolves conflicts interactively, pacman puts the choice directly on you. Read the conflict — usually one package replaces another. Remove the conflicting package first." [[patterns]] id = "aur-build-failure" sources = ["journald", "applog:pacman"] match_text = "error: failed to build" severity = "warn" title = "AUR package build failed" body = "The AUR has no binary packages — makepkg compiles from source every time. There's no OBS equivalent here. Check the build log and the AUR comments page for the package." [[patterns]] id = "aur-pgp-key" sources = ["journald", "applog:pacman"] match_text = "unknown public key" severity = "warn" title = "PGP key not in keyring" body = "Import the key: gpg --recv-keys — different from zypper's --gpg-auto-import-keys; this is GnuPG's personal keyring used by makepkg." [[patterns]] id = "chaotic-aur-sig-fail" sources = ["journald", "applog:pacman"] match_text = "signature from" severity = "warn" title = "Package signature verification failed" body = "Chaotic-AUR key not trusted. Import: sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com && sudo pacman-key --lsign-key 3056513887B78AEB" # ── AppArmor → none ─────────────────────────────────────────────────────────── [[patterns]] id = "apparmor-remnant" sources = ["journald"] match_text = "apparmor=\"DENIED\"" severity = "info" title = "AppArmor log entry (no AppArmor on Arch by default)" body = "Arch doesn't ship AppArmor by default. If you see this, you may have installed apparmor from the AUR manually. Run: sudo systemctl disable apparmor if you don't need it." # ── Kernel / DKMS ───────────────────────────────────────────────────────────── [[patterns]] id = "dkms-build-fail" sources = ["journald"] match_text = "Error! Build of" severity = "warn" title = "DKMS module failed to build" body = "A kernel module didn't compile. Arch's rolling kernel updates more frequently than Tumbleweed's. Check: dkms status — reinstall the failing dkms package." [[patterns]] id = "kernel-driver-firmware" sources = ["kmsg"] match_text = "firmware: failed to load" severity = "warn" title = "Firmware file missing" body = "sudo pacman -S linux-firmware — equivalent to openSUSE's kernel-firmware." # ── System ──────────────────────────────────────────────────────────────────── [[patterns]] id = "locale-not-set" sources = ["journald"] match_text = "Cannot set LC_ALL to default locale" severity = "info" title = "Locale not generated" body = "Unlike YaST which configured this for you, Arch requires manual locale setup. Edit /etc/locale.gen, uncomment your locale, run: sudo locale-gen — set LANG in /etc/locale.conf." [[patterns]] id = "oom-killer" sources = ["kmsg"] match_text = "Out of memory: Kill process" severity = "warn" title = "OOM killer fired" body = "Arch doesn't set up swap by default like openSUSE's installer does. Add zram: sudo pacman -S zram-generator — or add a swapfile." [[patterns]] id = "disk-io-error" sources = ["kmsg"] match_text = "Buffer I/O error on device" severity = "warn" title = "Disk I/O error" body = "Check SMART: sudo smartctl -a /dev/sdX — install: sudo pacman -S smartmontools" # ── Audio ───────────────────────────────────────────────────────────────────── [[patterns]] id = "pipewire-connect-fail" sources = ["journald"] match_text = "Failed to connect to PipeWire" severity = "warn" title = "PipeWire not responding" body = "Both openSUSE and Arch ship PipeWire. Restart: systemctl --user restart pipewire pipewire-pulse wireplumber" [[patterns]] id = "bluetooth-rfkill-blocked" sources = ["journald"] match_text = "Blocked through rfkill" severity = "warn" title = "Bluetooth rfkill blocked" body = "rfkill unblock bluetooth" # ── GPU / display ───────────────────────────────────────────────────────────── [[patterns]] id = "gpu-hang" sources = ["kmsg"] match_text = "GPU HANG" severity = "warn" title = "GPU hang" body = "GPU stopped responding. On Arch: AMD uses mesa (official repos), NVIDIA uses nvidia or nvidia-dkms. No OBS equivalent — everything is in pacman or the AUR." [[patterns]] id = "xwayland-crash" sources = ["journald"] match_text = "XWayland server terminated unexpectedly" severity = "warn" title = "XWayland crashed" body = "X11 apps dead until session restart. Same behavior as on openSUSE Wayland sessions." # ── Network ─────────────────────────────────────────────────────────────────── [[patterns]] id = "networkmanager-activation-fail" sources = ["journald"] match_text = "Activation failed" severity = "info" title = "NetworkManager: connection failed" body = "nmcli device status — Arch uses NetworkManager (not Wicked). If a wifi adapter is missing, check dmesg for firmware errors." # ── Gaming ──────────────────────────────────────────────────────────────────── [[patterns]] id = "proton-runtime-missing" sources = ["applog:proton"] match_text = "wine: cannot find" severity = "warn" title = "Proton runtime issue" body = "Right-click game in Steam -> Properties -> Local Files -> Verify integrity."