robin/src-tauri/patterns/dualboot-macos.toml
pyr0ball e4a682be2f feat(patterns): mobile-origin users + dual-boot supplement system
New SourceOs variants: Android, IpadOs — routed to android-to-* and
ipad-to-* pattern files respectively. Pattern bodies assume zero terminal
experience; every command explained from first principles with App Store /
iOS analogies.

Dual-boot supplement system: PatternFile::extend() + load_supplement()
in patterns.rs; lib.rs loads dualboot-{windows,macos}.toml on top of the
primary pattern file when migration.dual_boot_with is set. Supplement
covers NTFS dirty flag from Fast Startup, clock skew (RTC local vs UTC),
GRUB overwrite by Windows Update, BitLocker, APFS/HFS+ access, T2 Secure
Boot.

complete_onboarding() now accepts dual_boot_with: Option<String> and
normalises it to "windows"/"macos". Onboarding.vue becomes a 3-step flow:
source OS -> (Linux distro if linux) -> (dual-boot if windows/macos).
Mobile users skip the dual-boot step entirely.

10 new pattern files (8 mobile + 2 supplements), config.rs tests updated.
2026-05-19 09:32:18 -07:00

65 lines
3.7 KiB
TOML

[meta]
source_os = "supplement"
target_distro_family = "any"
# Supplementary patterns for users dual-booting macOS alongside any Linux distro.
# These patterns cover coexistence-specific issues unique to Apple hardware.
# This file is merged on top of the primary migration pattern file.
[log_paths]
# ── Apple T2 / Secure Boot ────────────────────────────────────────────────────
[[patterns]]
id = "t2-secure-boot"
sources = ["kmsg", "journald"]
match_text = "Secure Boot"
severity = "warn"
title = "Apple T2 Secure Boot blocking Linux"
body = "Intel Macs with a T2 chip require Secure Boot to be disabled before Linux can boot. Boot into macOS Recovery (hold Cmd+R at startup) -> Utilities -> Startup Security Utility -> set Secure Boot to 'No Security' and allow booting from external media. Apple Silicon (M1/M2) Macs cannot dual-boot Linux at all — see Asahi Linux for the current state."
[[patterns]]
id = "apple-wifi-firmware"
sources = ["kmsg"]
match_text = "brcmfmac: brcmf_fw_alloc_request"
severity = "warn"
title = "Apple WiFi firmware not loading"
body = "Broadcom WiFi chips in Macs need proprietary firmware. Extract it from the macOS partition: mount your macOS partition and copy from /Volumes/Macintosh HD/usr/share/firmware/wifi/ — or install apple-firmware-wifi (check your distro's AUR or repos)."
# ── HFS+ / APFS ───────────────────────────────────────────────────────────────
[[patterns]]
id = "apfs-not-mounted"
sources = ["journald"]
match_text = "apfs: module not found"
severity = "info"
title = "macOS APFS partition not readable"
body = "Linux can't read APFS (macOS's filesystem) natively. To access files: sudo apt install apfs-fuse (Debian) or paru -S apfs-fuse-git (Arch). Mount: apfs-fuse /dev/sdXN /mnt/mac — read-only access only."
[[patterns]]
id = "hfsplus-not-mounted"
sources = ["journald"]
match_text = "hfsplus: Journal not clean"
severity = "warn"
title = "HFS+ partition not cleanly unmounted"
body = "The macOS HFS+ partition (older Macs) wasn't unmounted cleanly. Mount in macOS and run Disk Utility -> First Aid to fix it. Or force Linux mount: sudo mount -o force /dev/sdXN /mnt/mac"
# ── rEFInd / boot manager ────────────────────────────────────────────────────
[[patterns]]
id = "refind-missing"
sources = ["journald"]
match_text = "Boot0001"
severity = "info"
title = "EFI boot entry may be missing"
body = "macOS may have reset the EFI boot order after an update, removing the Linux entry. rEFInd is the recommended boot manager for Mac dual-boot: it auto-detects both macOS and Linux. Install: sudo refind-install — or reinstall GRUB EFI and re-add it with efibootmgr."
# ── Clock skew ────────────────────────────────────────────────────────────────
[[patterns]]
id = "rtc-time-wrong"
sources = ["journald"]
match_text = "RTC time"
severity = "info"
title = "System clock drifted after macOS boot"
body = "macOS stores the hardware clock in local time; Linux stores it in UTC. This causes clock drift in dual-boot. Fix in Linux: timedatectl set-local-rtc 0 — then set macOS to UTC by running in Terminal: sudo systemsetup -setusingnetworktime off && sudo systemsetup -settime $(date -u +%H:%M:%S)"