1

I just finished installing Linux Mint on a separate drive. I now got three drives: one with Windows 10, one with Linux Mint, and one with just data. Now I want to use Grub to switch between operating systems.

However, Grub won't detect/load Windows 10.

  • I have tried using sudo os-prober, which does not return anything
  • I have tried to create (a lot) of manual menu entries for Grub. But all return something like No device with such UUID or No such partition (I selected the second partition with label='EFI system')

Also I'm not sure whether I'm supposed to turn off the windows bootloader. Fast startup for Windows 10 is also turned off.

Any help is appreciated.

  • Two things: make sure you have disabled legacy BIOS mode (CSM), and check that the EFI System Partition has the right UUID. It's not enough to label it 'EFI System'. – Johan Myréen Jul 24 '17 at 11:07
  • @JohanMyréen The BIOS settings show that its booting in Legacy+UEFI mode. If I try to change this mode to just UEFI, all drives disappear except from the windows boot-loader. – Lars Jul 24 '17 at 11:15
  • In that case, Windows is probably installed in EFI mode, while Mint isn't. It's actually not hugely difficult to reconfigure a Linux system to boot in EFI mode, but that's somewhat beyond the topic of this question. – Austin Hemmelgarn Jul 24 '17 at 11:36
  • The mode is either legacy or UEFI. If you are using UEFI mode, then you should use GPT partitioning, else DOS (MBR) partitions. If the BIOS setting says "legacy" and you haven't changed that, that's OK too, Windows and Linux can both boot in legacy mode. The important thing is that both OSs agree upon the mode. – Johan Myréen Jul 24 '17 at 11:37
  • I think @AustinHemmelgarn might be right. Windows is installed in EFI, and Mint is running in Legacy. Is there a way to fix this? – Lars Jul 24 '17 at 11:40
0

If you're booting in BIOS mode, there's not much you can do to make this work reliably (at least, last I knew there wasn't a reliable way without having separate hard drives for each install).

If you're booting in UEFI mode though, it largely consists of creating a GRUB entry to chainload /EFI/Microsoft/Boot/bootmgfw.efi from your EFI system partition. You'll also need to modify what Windows thinks the bootloader should be (or make your EFI variables read-only (only some firmwares let you do this)), otherwise Windows will update the EFI variables to point at it's own bootloader as the default every time you boot into Windows. I'm not 100% certain about the exact command you need to pull this off (it's been too long since I had to set up my own system), except that it's done with bcdedit.

  • Both operating systems are installed on separate hard drives. – Lars Jul 24 '17 at 11:42
  • If that's the case, you have two options, either get Windows converted to legacy boot mode, and have GRUB chainload the MBR of that hard drive, or convert Linux to UEFI mode and use what I recommended above for that. – Austin Hemmelgarn Jul 24 '17 at 11:54
  • Could you elaborate on how to convert Linux to UEFI? – Lars Jul 24 '17 at 12:07
  • To start with, you're going to need a LiveCD that can be booted in UEFI mode. SystemRescueCD is what I would recommend for this (it's designed for stuff like this). From there, you need to mount your root filesystem, bind mount /sys and /dev in the appropriate location in the root filesystem, as well as mounting a new instance of /proc in the appropriate location, then run chroot /path/to/your/root /bin/bash and install the EFI version of grub through the package manager (probably called grub-efi-x86_64 or something similar). – Austin Hemmelgarn Jul 24 '17 at 12:27
  • I decided just to use the BIOS to switch to my Linux drive. Switching the Linux OS to UEFI seems a bit too difficult for a novice like me. Maybe one day. – Lars Jul 24 '17 at 13:58

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.