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.
65 lines
3.7 KiB
TOML
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)"
|