Hey everyone, I’ve recently been trying to go back to a dual boot setup with Windows and Arch. I would fully switch to Arch, but unfortunately there are still a few things I need access to that either don’t have a FOSS alternative that meets my needs or won’t run through WINE/Proton.
I used to already have a dual boot setup but recently had to buy a new motherboard, which also involved getting a new CPU, so I ended up wiping everything and just riding on Windows for a while, but I did make sure to give Windows’ boot partition enough space knowing that I was planning on dual booting again soon.
I figured it was all going to be easy-peasy as I’ve done it before and it worked with no problems at all. However, after installing Arch the same way I’d done before and rebooting my PC, it booted straight to Windows, completely skipping GRUB.
I went the lazy route and used Archinstall, which received a UI update since last time I used it so I figured maybe the process changed and I messed it up by not noticing it. So I tried again, this time taking the manual install route… same result.
No GRUB entry would show up on UEFI so I figured maybe it installed in the wrong location or I messed it up again somehow. Booted on the Arch ISO, mounted the EFI partition to check it, both GRUB Windows’ boot manager are there.
After a quick search I found that some motherboard might need you to toggle secure boot on and back off to force it to check for bootloaders. It apparently specifically applies to Acer motherboards, both of my motherboards are Asus (old one was TUF Gaming x570-Pro, new one is ROG Strix x870-F Gaming) but I figured I’d give it a try.
Only way I managed to get anything else to show up was by enabling CSM, then a second “boot” entry on that drive would show up. But it seems that “boot” entry is just the drive itself because when I tried to boot from it, it just gave me that dreaded screen that tells you it couldn’t find anything to boot, to plug in a bootable drive and press enter.
I tried again via Archinstall, this time picking systemd-boot since during my search earlier i found that systemd-boot is apparently easier to set up a dual boot than GRUB… same result. My PC just won’t see Linux bootloaders, it seems.
The only way I managed to make it “work” was by making a second EFI partition on that same drive, leaving the Windows boot partition untouched and giving Arch its own boot partition. By “work” I mean I could finally get systemd-boot to launch, but if I wanted to boot into Windows, I’d have to boot into UEFI and switch the boot devices priorities around, which, while better than nothing, is far from ideal.
In doing so I also noticed that the systemd-boot entry showed up the same way as the “empty drive” entry did earlier when I enabled CSM, might be normal, nit-picking, figured it was worth mentioning.
The way my UEFI is currently set up is:
- CSM disabled
- Secure Boot > OS Type > Other OS
- Secure Boot mode > Standard
That’s the way I had it set up on my old motherboard back when dual boot worked, and it’s the way it needs to be set up for secure boot to be disabled according to Asus support posts I found.
Does anyone have any suggestions on what I might be doing wrong?
Additionally, somewhat unrelated but something I found when messing around with Archinstall is that if I set Archinstall to automatically partition everything using BTRFS, it generates 5 subvolumes, one of which is @.snapshots, but if I try to manually replicate that set up (because the automatic one wants to wipe the whole drive and I don’t want that because I want to keep Windows), it won’t let me make a @.snapshots subvolume. Is this important at all? If so, can I add it post-install?
Thanks in advance! And happy new year!
Iirc, you probably need to change to boot device order in your bios to point at the GRUB partition first instead of windows.
Both Windows and Linux (as well as their boot partitions) are on the same drive. I’ve never had problems with my PC automatically recognizing the Linux boot partitions and adding it to the boot list until this PC.
Are you on a desktop with the option of using separate drives?
The way I did it with systemd-boot was:
- Have Windows and Arch on separate drives.
- Make the drive with arch the default boot device from UEFI.
- Copy
EFI/Microsoft
from boot partition on Windows drive to/boot/EFI
on Arch drive
This is what my /boot partition looks like:
├── EFI │ ├── BOOT │ ├── Linux │ ├── Microsoft │ └── systemd ├── initramfs-linux-fallback.img ├── initramfs-linux.img ├── loader │ ├── entries │ │ └── arch.conf │ ├── entries.srel │ ├── loader.conf │ └── random-seed ├── 'System Volume Information' └── vmlinuz-linux
Alright so I tried your solution, and it had a very interesting effect…
Now both boot partitions boot straight to Windows. Entirely skipping systemd-boot and Arch.
On the plus side it does mean that just copying Windows’s bootloader files to Arch’s bootloader partition will boot Windows no problem.
On the downside, my issue remains the same, I can’t get dual boot to work.
Edit: didn’t work, check new response.
So potentially that solution could work on the same drive with two separate boot partitions like I did earlier then?
Bit of a hacky way to go about it, but if it works it works.
And I guess that would potentially prevent the issue where a Windows update breaks the Linux bootloader from happening as well. Not that this has ever happened to me, but it’s an issue I’ve seen people talk about for years.
I’ll wait a bit longer to see if anyone has any suggestions/fix as to why slapping GRUB/systemd-boot in the same partition as Windows’ bootloader doesn’t seem to work, and if not or if it doesn’t work I’ll go with that.
Thank you!
I’m not very knowledgeable these days, but I recently tried setting up my steam deck to dual boot SteamOS and Windows 11. I tracked down every guide or walkthrough I could find, but just could not get it to work.
My takeaway was that M$ recently has gotten very aggressive in regards to disabling dual boot setups. So I’m not surprised at all that this fellow had to get rather creative to preserve his own setup. Admittedly, I only barely understand the technical details of your discussion; but I bookmarked this post so I could see if I can implement something similar on a steam deck (I don’t need windows…just a nerd with not enough to do lol!)