The problem is your "host" is far from one that would consume zero resources, and is essentially an operating system itself. You would be better off installing a small distribution of Linux, essentially acting as a "host operating system", and running both of your required operating systems at once.
The problem with a discrete OS host is management of resources.
Who decides what OS gets what piece of hardware at what time? Who manages OS priority? Who manages who gets what part of memory in the address space? Who's responsible for managing CPU usage between OSs? How do you handle storage device read/write synchronization between OSs?
The only truly way to do it is to do something like this:
Computer
|
Linux/Windows
|
--------
| |
Windows Linux
Although if you go that far, it's better to simply use the host operating system as opposed to virtualizing itself (i.e. if you use a Windows host, virtualize Linux, and vice-versa).
I chose to install the GRUB bootloader on the SSD as a whole not a specific partition on it so I guess that would make it install GRUB in the EFI partition?
Yes it would. The question whether to install GRUB into a disk vs partition doesn't even make sense on UEFI.
the EFI partition exists (System Reserved Partition)
That's not the same partition.
I want to uninstall grub and return to the Windows Bootloader/boot manager without reinstalling Windows. Then boot by default into it and have the option to chose to go to GRUB or Ubuntu directly as this tutorial https://stomp.colorado.edu/blog/blog/2011/12/05/on-dual-booting-tpm-linux-windows-and-bitlocker/ says.
The tutorial is written for PC BIOS systems. It does not apply to UEFI – the special partitions are different, bootloaders live elsewhere, the whole boot process is nothing like BIOS boot.
For UEFI, the Windows Boot Manager refuses to start any other boot programs except for what comes with Windows itself. You can still add the corresponding entries, but they won't work.
However, for UEFI, your EFI System Partition already has both bootloaders installed and the firmware itself has a boot menu that allows you to choose between them. Hold Esc or F12 or whatever your computer uses; you'll find an entry for "Windows Boot Manager" and an entry for "Ubuntu".
Within Linux you can manage these boot entries using efibootmgr
. For example:
# efibootmgr
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0000,0001
Boot0000* Windows Boot Manager
Boot0001* Ubuntu
To swap them around (make Windows primary), you can again use the firmware settings screen, or you can change the BootOrder variable:
# efibootmgr --bootorder 0001,0000
To boot into Windows once while keeping Ubuntu as default, you can set BootNext:
# efibootmgr --bootnext 0000
And vice versa, if you're using Windows, to boot into Ubuntu just once:
- Use
bcdedit /enum firmware
to find the Windows BCD GUID for the Ubuntu entry.
- Use
bcdedit /set {fwbootmgr} bootsequence {UBUNTU_GUID_HERE}
to program the BootNext variable.
Best Answer
I can't imagine OSX working on a surface pro due to the custom/proprietary hardware being used... but linux and windows should co-exist happily so long as you have enough disk space.
When dual booting, install windows first! Then install linux, which will allow Grub to take over and manage booting. Essentially this will boot to Grub, then will chain-boot your windows bootloader if you select windows from the menu.
Good luck!