2

On my old laptop (legacy BIOS, MBR disk), this was perfectly possible to get working:

  • I turn on the computer and see the Windows Boot Manager

  • I use EasyBCD (or BootPart, or something else) to add an option to the BCD menu which allows me to boot into GRUB, and then into Ubuntu

I can't figure how to do this on my new laptop (UEFI, GPT disk), whether in UEFI or legacy mode.

Currently I've installed (and even booted!) Ubuntu on my laptop, but only with the help of an external GRUB (on a USB flash drive).

How can I add GRUB as an option in the Windows Boot Manager on a UEFI laptop?

(No, I don't want to change my primary boot loader. So no, I don't want to overwrite the Windows boot loader with GRUB.)

user541686
  • 4,167

3 Answers3

5

AFAIK, you can't. To the best of my knowledge, the Windows boot loader doesn't provide any means to launch non-Windows EFI boot loaders. I could be wrong about this, though; I admit that my knowledge of the Windows boot loader is limited.

Instead, you can configure any of a number of EFI boot loaders and boot managers for Linux to handle the boot-selection job. When everything works fine, GRUB can do this job; but as of version 13.04, Ubuntu doesn't set up GRUB correctly for dual-booting when it installs. There can also be other problems caused by EFI bugs. To work around the Ubuntu GRUB configuration problem, two solutions are easiest:

  • Run Boot Repair on the system. If this works, it will re-install and reconfigure GRUB so that it can launch Windows.
  • Install my rEFInd boot manager. This is most easily done by installing the Debian package under Ubuntu. (Be sure that your ESP is mounted at /boot/efi, though.) Once installed, rEFInd should enable booting directly into Windows or directly into Linux, bypassing GRUB.

Note that neither of these solutions completely replaces the Windows boot loader; they both just make another boot program (GRUB or rEFInd) run before the Windows boot loader. You can stop reading here if you like, but some background may be helpful in understanding this:

When booting a multi-boot computer, a boot manager gives you a way to choose between two or more OSes, typically through a menu. Most EFIs include an awkward but built-in boot manager. rEFInd is also a boot manager, and GRUB includes a boot manager. A boot loader, by contrast, loads an OS kernel and any associated files and starts the kernel running. The EFI doesn't include a boot loader, so every OS must provide one. GRUB is a boot loader for Linux (but not for Windows) in addition to being a boot manager, the Linux kernel (since version 3.3.0) can function as its own boot loader, and Windows provides its own boot loader. rEFInd is not a boot loader; to boot Linux, it relies on the EFI stub loader or some other boot loader to load the kernel.

Thus, it's not possible to replace the Windows boot loader with GRUB, since GRUB is not a Windows boot loader. GRUB can use its boot manager features to chainload to the Windows boot loader, though.

Rod Smith
  • 44,284
  • 7
  • 63
  • 105
  • I was worried that might be the answer. :( +1 thanks for the detailed response. If there's no other way then I have to install GRUB I guess -- but the question in my mind is now, how do I go back to the Windows boot loader once I have done so? That's also part of what scares me. There's lots of tutorials telling me how to install GRUB but none of them tell me how to return the laptop to its previous state, so it makes me even more reluctant to install GRUB. – user541686 Sep 02 '13 at 17:25
  • On an EFI-based computer, you can either remove an unwanted boot loader file from the EFI System Partition (ESP) or edit the boot options stored in NVRAM using a tool such as Linux's efibootmgr. If you use rEFInd, there's no need to worry; it installs itself completely to the ESP, so even if you delete your Linux partitions, you'll still be able to boot Windows, albeit through rEFInd unless/until you delete rEFInd or adjust your NVRAM entries. – Rod Smith Sep 02 '13 at 17:52
  • IF you just want to boot Windows you can in your UEFI change the boot order to boot Windows. Or use one time boot key possibly f12 to choose to boot Windows. No reinstall of Windows boot loader is required like with BIOS as all are in different folders in efi partition. To totally remove grub then follow Rod Smiths instructions. – oldfred Sep 02 '13 at 18:11
1

It is possible after all - adding .efi boot loaders into Windows Boot Manager but at least on my motherboard is a very bad idea because the change is permanent - eg. after booting to Ubuntu from Windows Boot Manager you will always boot to Ubuntu because it directly edits the UEFI boot config.

Also achieving this can be done only by manually editing the BCD file. You can check the accepted answer to this question: Windows 8.1 UEFI x64 is not able to boot-up UEFI Images for more details.

0

Scenario is Windows boot manager is first boot choice on UEFI.

You can always use boot device selection key (F12 on DELL) from firmware which gives you the list of all installed OS as boot choice.

If the boot process is too fast you can always set Windows boot menu to text style with timeout say 10 seconds and from there escape to firmware boot selection using (ESC key on DELL, should be common).

If you are in Windows 7/8/8.1 and want to boot directly to Linux(Ubuntu) you can use a tool called BootNext which allows direct booting to any installed OS (Windows, Linux) on UEFI.

snayob
  • 437
  • 3
  • 7