Repairing my Windows bootloader after Omarchy

The problem

Before I switched to Omarchy, I was running omakase-blue on one NVME drive, and Windows on another. Part of this is because I want to use full disk encryption, and part of this is because I was originally playing with Project Bluefin, which doesn’t support dual-boot off of a single disk.

I installed Omarchy via online ISO, and pointed it at my Linux drive.

After it installed, I no longer could boot into Windows. My BIOS didn’t even show the 2nd NVME drive as a boot option.

The solution

After some digging, I figured out a way to get things back without needing to reinstall any operating systems. My system looked like this after the Omarchy install:

❯ lsblk --output NAME,PTTYPE,PARTLABEL,FSTYPE,FSVER,LABEL,FSSIZE,FSAVAIL,FSUSE%,MOUNTPOINTS
NAME        PTTYPE PARTLABEL                    FSTYPE      FSVER LABEL FSSIZE FSAVAIL FSUSE% MOUNTPOINTS
zram0                                           swap        1     zram0                       [SWAP]
nvme0n1     gpt
├─nvme0n1p1 gpt                                 vfat        FAT32           2G    1.8G     9% /boot
└─nvme0n1p2 gpt                                 crypto_LUKS 2
  └─root                                        btrfs                     1.8T    1.8T     2% /var/log
                                                                                              /home
                                                                                              /var/cache/pacman/pkg
                                                                                              /
nvme1n1     gpt
├─nvme1n1p1 gpt    Microsoft reserved partition
├─nvme1n1p2 gpt    Basic data partition         ntfs
└─nvme1n1p3 gpt                                 ntfs

That is, the vfat, FAT32 partition with the bootloader was on nvme0n1, and it didn’t seem there was any corresponding partition on nvme1n1.

The good news is that this indicated that I could probably just restore the required boot files to nvme0n1p1 for Windows and be on my way.

Repairing the Windows bootloader files

To do so, I used Hiren’s BootCD PE on a USB drive with Ventoy.

Once in the Windows PE environment, we can restore the files with diskpart and bcdboot in the command prompt.

diskpart

> list volumes

# find the fat32 one, let's call it X
> select volume X
> assign letter K:

Now that we’ve assigned a letter, we can fix the files:

  bcdboot C:\Windows /s K: /f ALL

where /s specifies the volume letter of the system partition, and /f specifies the firmware type (ALL copies all of them).

At this point, I could once again boot from this drive and land in Windows.

Adding Windows to Limine

But, we could do even better! Having to use the BIOS boot menu is annoying: you typically have to spam an F-key at startup, and if you miss your opportunity, need to restart again. It would be nice to be able to just boot to the same bootloader and select Windows, like in a traditional single-drive, dual-boot setup.

Turns out that isn’t hard, since Omarchy uses Limine out of the box.

In Linux, we can just edit the boot config.

sudoedit /boot/limine.conf

Then, I added the following entry after the Omarchy ones, and before the EFI fallback.

/Windows
comment: Windows
comment: order-priority=40
    protocol: efi
    path: boot():/EFI/Microsoft/Boot/bootmgfw.efi

With this, I then configured my BIOS to with Limine as the first boot option, and disabled the others. Now, it boots to Limine on startup, and my Windows drive is once again an easy option to select. Nice.

Posts from blogs I follow

The Past, Present, and Future of Digital Storytelling with Ramy Katrib

Ramy Katrib has been at the forefront of digital storytelling for over 25 years, with his post-production company, DigitalFilm Tree, earning a reputation as one of Hollywood's most technically adventurous post-production houses. He joined Bryan and Adam to explore the past, prese…

via Oxide and Friends July 23, 2026

On AI

In 2019, I started watching Andreas Kling's programming videos, many of which were live-coding sessions writing his new operating system Serenity OS. He was always pretty fast at writing code, especially since his IDE, Qt Creator, had knowledge of all his C++ code and could auto-…

via joshua stein July 23, 2026

Hardening Rust Code For Production

We talked about patterns for defensive programming in Rust before, in which implicit invariants that aren’t enforced by the compiler lead to utter misery. But being careful isn’t enough! Even valid code can fail at runtime in ways that are hard to predict and control. That’s what…

via Corrode Rust Consulting July 23, 2026

Generated by openring-rs from my blogroll.