diff --git a/README.md b/README.md new file mode 100644 index 0000000..f00f707 --- /dev/null +++ b/README.md @@ -0,0 +1,186 @@ +# Dual Boot Omarchy + +Patch the [Omarchy](https://omarchy.com) ISO to install alongside Windows. Creates a modified ISO with a dual-boot installer that preserves your Windows installation while adding Omarchy with LUKS encryption and btrfs snapshots. + +## Requirements + +- **OS**: Arch Linux or Omarchy (to run the patcher) +- **Omarchy ISO**: Download from [omarchy.com](https://omarchy.com) +- **UEFI**: Required for dual-boot (no legacy BIOS support) +- **Free disk space**: 20GB+ unallocated space on the target drive +- **USB drive**: For booting the patched ISO (Ventoy recommended) + +## Quick Start + +```bash +git clone https://github.com/28allday/Dual-Boot-Omarchy.git +cd Dual-Boot-Omarchy + +# Place your Omarchy ISO in this directory, then: +sudo ./patch-omarchy-dualboot.sh + +# Or specify the ISO path directly: +sudo ./patch-omarchy-dualboot.sh /path/to/omarchy-3.x.x.iso +``` + +This creates `omarchy-dualboot-YYYY.MM.DD.iso` — copy it to a Ventoy USB and boot from it. + +## How It Works + +### The Patcher (run on your existing system) + +The patcher modifies the Omarchy ISO by: + +1. **Extracting** the ISO and its squashfs root filesystem +2. **Injecting** a dual-boot setup script into the live environment +3. **Replacing** the boot sequence to run the dual-boot installer on tty1 +4. **Repacking** the squashfs and creating a new bootable ISO + +### The Installer (runs when you boot the patched ISO) + +When you boot the patched ISO, you get a menu: + +| Option | Action | +|--------|--------| +| **1** | Install Omarchy alongside Windows (dual-boot) | +| **2** | Clean up a failed installation | +| **3** | Standard install (original Omarchy installer, wipes disk) | +| **4** | Exit to shell | + +#### Option 1: Dual-Boot Install + +1. **Drive selection** — shows available drives, detects Windows partitions +2. **Free space check** — verifies 20GB+ unallocated space exists +3. **Encryption password** — sets up LUKS2 encryption for the Linux partition +4. **Partitioning** — creates two partitions in free space: + - 1GB EFI partition (labelled "LINUXEFI") for the Linux bootloader + - Remaining space: LUKS2 encrypted partition for Linux root +5. **Filesystem setup** — creates btrfs with subvolumes: + - `@` — root filesystem + - `@home` — user home directories + - `@log` — system logs + - `@pkg` — pacman package cache +6. **Omarchy configurator** — collects your username and preferences +7. **archinstall** — installs the base Arch system +8. **Limine bootloader** — installed and configured with: + - LUKS encryption support + - Windows auto-detection + - Bootable btrfs snapshots via snapper + - Plymouth splash screen (Omarchy theme) +9. **Omarchy packages** — installs the full Omarchy desktop +10. **UEFI boot entry** — creates "Omarchy" entry in your firmware + +**Windows partitions are never touched.** + +#### Option 2: Cleanup Failed Installation + +If a previous dual-boot install failed partway through: +- Detects and removes Linux partitions (LINUXEFI, LUKS) +- Cleans up UEFI boot entries +- Leaves Windows completely untouched + +## What Gets Created on the Target Drive + +``` +Drive (e.g. nvme0n1): +├── Windows partitions (UNTOUCHED) +│ ├── EFI System Partition (Windows Boot Manager) +│ ├── Microsoft Reserved +│ ├── Windows (C:) +│ └── Recovery +├── LINUXEFI (1GB, FAT32) ← NEW: Linux bootloader +│ ├── EFI/BOOT/BOOTX64.EFI (Limine) +│ ├── vmlinuz-linux (kernel) +│ ├── initramfs-linux.img (initramfs with encrypt hook) +│ └── limine.conf (boot menu with Windows + snapshots) +└── Linux Root (LUKS2 encrypted) ← NEW: Omarchy system + └── btrfs + ├── @ (/) + ├── @home (/home) + ├── @log (/var/log) + └── @pkg (/var/cache/pacman/pkg) +``` + +## Booting After Installation + +1. Reboot your computer +2. Press **F12/F8/DEL** at startup for the boot menu +3. Select **"Omarchy"** for Linux or **"Windows Boot Manager"** for Windows + +The Limine boot menu also shows: +- Omarchy (default) +- Omarchy (fallback) +- Snapshots (bootable btrfs snapshots) +- Windows Boot Manager + +## Features + +- **LUKS2 encryption** — full disk encryption for the Linux partition +- **Btrfs subvolumes** — proper layout for snapshots and rollbacks +- **Snapper integration** — automatic timeline snapshots with bootable rollback via Limine +- **Offline installation** — uses packages from the ISO, no internet required during install +- **Plymouth splash** — Omarchy-themed boot animation +- **SDDM auto-login** — boots straight into Hyprland + +## Dependencies + +The patcher automatically installs these if missing: + +| Package | Purpose | +|---------|---------| +| `xorriso` | ISO creation and manipulation | +| `squashfs-tools` | Extracting and repacking the squashfs filesystem | +| `cdrtools` | Reading ISO metadata (`isoinfo`) | + +## Troubleshooting + +### Can't boot into Omarchy after install + +- Use F12/F8 boot menu to select "Omarchy" manually +- If no entry exists: boot the ISO again, choose option 4 (shell), and run: + ```bash + efibootmgr --create --disk /dev/nvme0n1 --part N --loader '\\EFI\\BOOT\\BOOTX64.EFI' --label 'Omarchy' + ``` + +### LUKS password prompt doesn't appear + +- Verify initramfs has the encrypt hook: + ```bash + lsinitcpio /boot/initramfs-linux.img | grep encrypt + ``` +- Rebuild if missing: + ```bash + sudo mkinitcpio -P + ``` + +### Windows disappeared from boot menu + +- Boot into Omarchy, then: + ```bash + sudo limine-update + ``` + This rescans for other bootloaders including Windows. + +### Failed install left orphan partitions + +Boot the patched ISO again and choose **option 2** (Clean up failed installation). + +## Uninstalling Omarchy (keeping Windows) + +Boot from the patched ISO, choose **option 2**, and it will: +- Remove the Linux EFI and LUKS partitions +- Clean up UEFI boot entries +- Leave Windows untouched + +Then use Windows Disk Management to reclaim the free space. + +## Credits + +- [Omarchy](https://omarchy.com) - The Arch Linux distribution +- [archinstall](https://github.com/archlinux/archinstall) - Arch Linux installer framework +- [Limine](https://limine-bootloader.org/) - Bootloader +- [Snapper](http://snapper.io/) - Btrfs snapshot management + +## License + +This project is provided as-is for the Omarchy community.