[meta] source_os = "ipad" target_distro_family = "debian" # iPad/iPhone user on their first Debian/Ubuntu/Mint install. # Ubuntu/Mint are the most recommended starting points for iPad migrants — # automatic updates, GUI software center, familiar GNOME/Cinnamon interface. [log_paths] steam = "~/.local/share/Steam/logs/content_log.txt" proton = "~/.local/share/Steam/logs/proton_log.txt" # ── Package management ──────────────────────────────────────────────────────── [[patterns]] id = "apt-lock" sources = ["journald"] match_text = "Could not get lock /var/lib/dpkg/lock" severity = "warn" title = "Software installer is busy" body = "Ubuntu's software installer is already running in the background — probably doing automatic updates, similar to how iOS updates apps silently. Wait a minute and try again. You can also open 'Software Updater' from the app menu to see what's happening. If it's been stuck for a long time: open the Terminal app and type: sudo rm /var/lib/dpkg/lock-frontend && sudo dpkg --configure -a" [[patterns]] id = "dpkg-interrupted" sources = ["journald"] match_text = "dpkg was interrupted" severity = "warn" title = "App install was cut short" body = "A previous software install didn't finish. Fix it: open Terminal and type: sudo dpkg --configure -a — then press Enter." [[patterns]] id = "apt-unmet-dependency" sources = ["journald"] match_text = "Unmet dependencies" severity = "warn" title = "App needs another app first" body = "The software you're installing needs something else first. Let Ubuntu fix it: sudo apt --fix-broken install" # ── AppArmor ────────────────────────────────────────────────────────────────── [[patterns]] id = "apparmor-denial" sources = ["journald"] match_text = "apparmor=\"DENIED\"" severity = "info" title = "App blocked by security policy" body = "Ubuntu includes AppArmor — a security layer that restricts what each program can do, similar to how iOS tightly sandboxes every app. Something was blocked. This is usually routine security protection, not a problem." # ── Files and paths ─────────────────────────────────────────────────────────── [[patterns]] id = "permission-denied" sources = ["journald"] match_text = "Permission denied" severity = "info" title = "Permission denied" body = "On iPad, files are hidden inside apps and permissions are invisible. On Linux, files are shared and controlled. If a command fails with this, add 'sudo' before it to run as admin: sudo — your password won't show as you type, that's normal." # ── System ──────────────────────────────────────────────────────────────────── [[patterns]] id = "kernel-driver-firmware" sources = ["kmsg"] match_text = "firmware: failed to load" severity = "warn" title = "Hardware driver file missing" body = "Some hardware needs a driver file installed separately — unlike iPad where Apple controls everything. Ubuntu usually handles this, but if something isn't working: sudo apt install firmware-linux linux-firmware — then restart." [[patterns]] id = "oom-killer" sources = ["kmsg"] match_text = "Out of memory: Kill process" severity = "warn" title = "System ran out of memory" body = "Linux closed a program to free up RAM — similar to iPadOS refreshing apps in the background. Try closing some programs you're not using." [[patterns]] id = "disk-io-error" sources = ["kmsg"] match_text = "Buffer I/O error on device" severity = "warn" title = "Storage error" body = "A hardware-level storage error. Install: sudo apt install smartmontools — then check: sudo smartctl -a /dev/sda" # ── Audio ───────────────────────────────────────────────────────────────────── [[patterns]] id = "pipewire-connect-fail" sources = ["journald"] match_text = "Failed to connect to PipeWire" severity = "warn" title = "Sound system not responding" body = "Restart audio: systemctl --user restart pipewire pipewire-pulse wireplumber — or log out and back in." [[patterns]] id = "pulseaudio-connect-fail" sources = ["journald"] match_text = "Failed to connect to pulseaudio" severity = "warn" title = "Sound system not responding" body = "Restart audio: pulseaudio --kill && pulseaudio --start — or log out and back in." [[patterns]] id = "bluetooth-rfkill-blocked" sources = ["journald"] match_text = "Blocked through rfkill" severity = "warn" title = "Bluetooth turned off by software" body = "Run: rfkill unblock bluetooth — in a terminal." [[patterns]] id = "cups-server-error" sources = ["journald"] match_text = "Unable to connect to CUPS server" severity = "info" title = "Printer service not running" body = "The printing service needs to be started: sudo systemctl start cups && sudo systemctl enable cups — then try printing again from your app." # ── Network ─────────────────────────────────────────────────────────────────── [[patterns]] id = "networkmanager-activation-fail" sources = ["journald"] match_text = "Activation failed" severity = "info" title = "Wi-Fi connection failed" body = "Check the network status icon in the top bar — or open Terminal and type: nmcli device status" # ── Media ───────────────────────────────────────────────────────────────────── [[patterns]] id = "missing-codec" sources = ["journald"] match_text = "GStreamer: Failed to find plugin" severity = "info" title = "Video or audio format not supported" body = "Linux needs extra packages to play some media formats. On Ubuntu/Mint: sudo apt install ubuntu-restricted-extras — this adds support for MP3, MP4, and other common formats."