You can do all you ask from within Windows 8 itself, without installing any new tools. You should also make sure to disable Windows 8 Fast-start, if you haven’t already done so (see here: https://forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/487837-how-dual-boot-preinstalled-windows-8-linux-uefi-etc.html#4, see “Preparing Windows 8 for dual-booting”, item 4).
To check MBR/UEFI from Windows, execute the following commands (the “diskpart”-command should work with Vista and W7 too):
From Windows 8 Desktop:
<WindowsKey>-X —> Command Prompt (Admin)
diskpart
list disk
exit
exit
Example from my test-installation - not a dual-boot setup (W8.1 under VMWare Workstation 10 - W8 and W8.1 are similar):
Microsoft DiskPart version 6.3.9600
Copyright (C) 1999-2013 Microsoft Corporation.
On computer: W81PRO64VM
DISKPART> list disk
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 50 GB 15 GB *
DISKPART> exit
Leaving DiskPart...
C:\Windows\system32>exit
An asterisk in the GPT-column indicates that you are running GPT.
If you do have GPT, you should be able to regain access to your Grub-menu from inside Windows too. (That may also be true for MBR, but I have no experience dual-booting Windows 8 in MBR mode).
You can try:
From Windows 8 Desktop:
-X —> Command Prompt (Admin)
Then apply a selection of the following commands to navigate in your BCD database (Anything following “#” (inclusive) are comments and should not be typed when applying commands):
mountvol z: /s # This will mount the ESP partition as drive Z:
mountvol z: /d # Drive z: is removed
bcdedit /set {bootmgr} path \EFI\Boot\bootx64.efi #Select file to use for bootmgr. Here, Grub is the target. Adjust path to your PC
bcdedit /default {bootmgr} #Select bootmgr as default boot entry
bcdedit /default {<hex-ID-for-opensuse-secure>} #As above, but use UUID instead of symbol. Can be used without ".../set {bootmgr}
bcdedit /enum all -v #List the BCD database using UUID everywhere
bcdedit /enum all #List the BCD database using known symbols
Examples from my W8/13.1 installation. You should apply commands in approximately the sequence displayed:
C:\Windows\system32>bcdedit /enum all
Firmware Boot Manager
---------------------
identifier {fwbootmgr}
displayorder {112d7697-46fe-11e3-beb8-806e6f6e6963}
{bootmgr}
{112d7693-46fe-11e3-beb8-806e6f6e6963}
{63dfd18a-2c85-11e3-b718-adb8de629832}
{63dfd18b-2c85-11e3-b718-adb8de629832}
{63dfd18c-2c85-11e3-b718-adb8de629832}
timeout 2
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
path \EFI\Boot\bootx64.efi
description Windows Boot Manager
locale en-GB
inherit {globalsettings}
integrityservices Enable
default {current}
resumeobject {63dfd18d-2c85-11e3-b718-adb8de629832}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Firmware Application (101fffff)
-------------------------------
identifier {112d7693-46fe-11e3-beb8-806e6f6e6963}
device partition=\Device\HarddiskVolume2
path \EFI\opensuse\grubx64.efi
description opensuse
Firmware Application (101fffff)
-------------------------------
identifier {112d7694-46fe-11e3-beb8-806e6f6e6963}
description UEFI: Network Card
Firmware Application (101fffff)
-------------------------------
identifier {112d7695-46fe-11e3-beb8-806e6f6e6963}
description UEFI: Network Card
Firmware Application (101fffff)
-------------------------------
identifier {112d7697-46fe-11e3-beb8-806e6f6e6963}
device partition=\Device\HarddiskVolume2
path \EFI\opensuse\shim.efi
description opensuse-secureboot
Firmware Application (101fffff)
-------------------------------
identifier {63dfd18a-2c85-11e3-b718-adb8de629832}
description EFI Network
Firmware Application (101fffff)
-------------------------------
identifier {63dfd18b-2c85-11e3-b718-adb8de629832}
description EFI USB Device
Firmware Application (101fffff)
-------------------------------
identifier {63dfd18c-2c85-11e3-b718-adb8de629832}
description EFI DVD/CDROM
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.efi
description Windows 8
locale en-GB
inherit {bootloadersettings}
recoverysequence {63dfd18f-2c85-11e3-b718-adb8de629832}
integrityservices Enable
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \Windows
resumeobject {63dfd18d-2c85-11e3-b718-adb8de629832}
nx OptIn
bootmenupolicy Standard
detecthal Yes
Windows Boot Loader
-------------------
identifier {63dfd18f-2c85-11e3-b718-adb8de629832}
device ramdisk=\Device\HarddiskVolume1]\Recovery\WindowsRE\Win
re.wim,{63dfd190-2c85-11e3-b718-adb8de629832}
path \windows\system32\winload.efi
description Windows Recovery Environment
locale en-GB
inherit {bootloadersettings}
displaymessage Recovery
osdevice ramdisk=\Device\HarddiskVolume1]\Recovery\WindowsRE\Win
re.wim,{63dfd190-2c85-11e3-b718-adb8de629832}
systemroot \windows
nx OptIn
bootmenupolicy Standard
winpe Yes
Resume from Hibernate
---------------------
identifier {63dfd18d-2c85-11e3-b718-adb8de629832}
device partition=C:
path \Windows\system32\winresume.efi
description Windows Resume Application
locale en-GB
inherit {resumeloadersettings}
recoverysequence {63dfd18f-2c85-11e3-b718-adb8de629832}
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
filedevice partition=C:
filepath \hiberfil.sys
bootmenupolicy Standard
debugoptionenabled No
Windows Memory Tester
---------------------
identifier {memdiag}
device partition=\Device\HarddiskVolume2
path \EFI\Microsoft\Boot\memtest.efi
description Windows Memory Diagnostic
locale en-GB
inherit {globalsettings}
badmemoryaccess Yes
EMS Settings
------------
identifier {emssettings}
bootems No
Debugger Settings
-----------------
identifier {dbgsettings}
debugtype Serial
debugport 1
baudrate 115200
RAM Defects
-----------
identifier {badmemory}
Global Settings
---------------
identifier {globalsettings}
inherit {dbgsettings}
{emssettings}
{badmemory}
Boot Loader Settings
--------------------
identifier {bootloadersettings}
inherit {globalsettings}
{hypervisorsettings}
Hypervisor Settings
-------------------
identifier {hypervisorsettings}
hypervisordebugtype Serial
hypervisordebugport 1
hypervisorbaudrate 115200
Resume Loader Settings
----------------------
identifier {resumeloadersettings}
inherit {globalsettings}
Device options
--------------
identifier {63dfd190-2c85-11e3-b718-adb8de629832}
description Windows Recovery
ramdisksdidevice partition=\Device\HarddiskVolume1
ramdisksdipath \Recovery\WindowsRE\boot.sdi
C:\Windows\system32>
The key here is the “Windows Boot Manager” part. It has the identifier {bootmgr], the device is “partition=\Device\HarddiskVolume2” (= the second partition on my disk), its path is “\EFI\Boot\bootx64.efi”, where I did copy openSUSE’s shim.efi (look up “description opensuse-secureboot” and check its path).
Example 1 - the ideal solution:
So, given the above, the following would make sense if the Windows Boot Manager part pointed to Windows 8 itself, and is all that should be necessary. However, its success will depend on how your PC’s UEFI is implemented:
bcdedit /set {bootmgr} path \EFI\opensuse\shim.efi
bcdedit /default {bootmgr}
The last command may even be superfluous as it should already be the case for you in your situation.
Example 2 - not the ideal solution, but may be necessary:
My Toshiba doesn’t have an ideal UEFI implementation. So I did the following:
This preparation is necessary for the UEFI to find the secure-boot file necessary to boot openSUSE:
mountvol z: /s
xcopy z:\EFI\opensuse\*.* z:\EFI\Boot\*.*
copy z:\EFI\Boot\grubx64.efi z:\EFI\Boot\grubx64.efi.old
copy z:\EFI\Boot\shim.efi z:\EFI\Boot\grubx64.efi
mountvol z: /d
Then I did as follows, which is almost identical to example 1 above:
bcdedit /set {bootmgr} path \EFI\Boot\bootx64.efi
bcdedit /default {bootmgr}
Which makes for an equivalent situation. If openSUSE’s shim.efi changes in the future, I will need to repeat what I did between the two mountvol-commands above. To be honest, that will be a “when” it changes, not an “if”, as it will change when the MS certificate used for signing it expires and probably also with openSUSE releases, as it did between 12.3 and 13.1.
Example 3:
For a one-time boot of openSUSE without permanent change of the UEFI NVRAM, you should be able to use:
bcdedit /bootsequence <id>
where <id> is openSUSE’s <id>. In my case, the <id> is “{112d7697-46fe-11e3-beb8-806e6f6e6963}” for secure boot, and “{112d7693-46fe-11e3-beb8-806e6f6e6963}” for non-secure boot (“description opensuse”).
Please note that these ID’s aren’t the same across systems! They are generated during installation! So your <id> will be different, as will the <id> be if you were to reinstall the same system! So be sure to check out your own <id>!
dayfinger