I am trying to dual-boot Arch Linux in UEFI mode with Windows 10 (BIOS-MBR) mode, but I don't know how to correctly partition it or use the GRUB boot loader.

What I've read in a beginner's guide says that I need to install it on UEFI-MBR because Windows 10 is on MBR, But it also says something about boot loader chainload that means this wouldn't work with this setup if I'm correct.

So, what do I need to do?

If I need to I can reinstall windows 10 on UEFI first


Yeah if you have existing Windows 10 BIOS/MBR installation, the easiest way would be to create an EFI System Partition (FAT32) with part (100MB or so) of the space you prepared for Arch. UEFI/MBR should work as long as your motherboard have a standard-conforming UEFI.

However that way grub won't be able to chainload Windows Boot Manager (unless you install a set of UEFI version of it to the ESP with bcdboot in Windows). You'll need to use the boot menu of your UEFI to switch between UEFI (Linux) and legacy boot mode (Windows). You can also try rEFInd though.

If you don't mind reinstalling Windows, make sure you boot the installation medium in UEFI mode so that you'll get a UEFI/GPT Windows installation. Then you'll most likely want to share the ESP created by Windows with Arch (grub, systemd-boot...).

| improve this answer | |

You generally cannot chainload from an UEFI bootloader to a BIOS one, or vice versa. The best you can get is choosing between Windows and GRUB in the firmware's boot menu (the one behind F12 or Esc), as most firmwares also list BIOS-mode disks as special UEFI boot entries.

The process in this case would be the same as a regular Arch installation (since dual-booting would be handled entirely at firmware level). You'd need to create an EFI system partition (~200 MB vfat), install Linux in UEFI mode, and put grub2 or the simpler systemd-boot in ESP – that's all.

However, it would be better (at least, less much confusing) to actually have both operating systems installed the same way (ideally UEFI mode, but either works); that way, you could chainload Windows' BOOTMGR from grub or sd-boot.

(If needed, you can convert the MBR disk to GPT using gdisk without losing any data.)

| improve this answer | |

I was too stuck in the same situation and I managed to successfully configure things yesterday. You can set in the BIOS menu to do a legacy boot and then try to boot into Arch Linux.

If the grub command-line opens during boot, try to find the partition that contains /grub. Ideally, you can -

>> (hd0,msdos0), (hd0,msdos1), ...
ls (hd0,msdosX) (where X is the number which contains grub)
>> /boot ...

Now you can set the grub variables accordingly and perform a boot.

set root=hd0,msdosX
set prefix=(hd0,msdosX)/boot/grub
insmod normal

This will probably load the OS your grub points to. If you have multiple entries in it, you'll get options to choose from. If Windows entry is missing, you can go to Linux and add it.


That's it. A reboot should fix everything now.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.