Monday, February 8, 2016

Dual Boot configuration for Windows 10 and openSUSE with full UEFI and Secureboot support

Questions and preamble

As has become normal, the FOSS/Linux community is peppered with anxiety over yet another major change to the tech landscape issuing forth from Redmond. With the release of Windows 10 comes a great many questions for the thoughtful, and this is especially true for our very own Linux communities. With gratitude we can recall our own past relief upon discovering that UEFI and Secureboot are not the herald of the end-times we had feared them to be. That being so does not however relieve the question of safely upgrading our dual-booting computers to Windows 10 without losing our ability to run Linux in tandem.

Excitement for Windows 10 was largely absent in me. I had grown quickly comfortable to the Windows 8.1 work-flow as it shared some similarities in those key areas which I had already grown to love in the GNOME Shell. Further, Windows served a role limited to usage for proprietary software that I deemed not sensible to coax into service on a Linux OS. However it did make sense for me to upgrade for my employment as a repair technician. It seems incumbent on me to familiarize myself with the upgrade process and the general operation issues of Windows 10.

Can I perform the upgrade safely?

In short, yes. Performing an in-place upgrade of your present Windows operating system will not overwrite your Linux partitions. However, the necessary Boot Configuration Data settings directing the UEFI firmware to use GRUB for booting will be lost. The Windows Boot Manager will be reasserted. This can be changed from within Windows using bcdedit.

How about a fresh installation?

Some users prefer to make a clean installation of their operating systems instead of in-place upgrades. Unlike in older versions of Windows, you can direct Windows 8 and above to specific partitions. This means that whether you wish to install Windows first in sequence or not is inconsequential; you can now install Linux first without worrying about the Windows installer overwriting it. 

One minor caveat however is that if you are not using a computer with UEFI firmware instead of a BIOS, GRUB will need to be installed after the Windows installation. 

Can I still get the free Windows 10 upgrade even if I want to cleanly install it? 

Yes. However, you will need to initiate the in-place upgrade for Windows 10 in your already present qualifying Windows 7, or 8.1 installation. As +How-To Geek says in their article, "When you upgrade a Windows 7 or 8.1 system to Windows 10, the installer confirms that you have a “genuine Windows” system installed and activates your computer for use with Windows 10. Note that you don’t actually get a Windows 10 product key — instead, your computer’s hardware is registered with Microsoft’s servers. When you install Windows 10 on that PC again in the future, it will check in with Microsoft’s servers, confirm it’s installed on a registered PC, and automatically activate itself."

How to install Linux alongside Windows 10

Prepare your hard drive

If you've performed a clean installation and installed openSUSE first in sequence, then drive preparation is irrelevant for your consideration. Note: if you intend to install openSUSE to a separate drive on a computer with UEFI, the  /boot partition must be placed on the primary drive with the Windows partitions.

Create free space

Though there are different ways this can be achieved, I advocate the following as the safest method. Creating free space should be simple if you have freshly installed Windows 10 instead of performing an in-place upgrade.

In Windows, open the Disk Management module from the Control Panel. You can find this simply by searching for it from the Start Menu/Cortana. Select your Windows partition (this is probably C:\ and the largest) and right click. The context menu will show an option to "Shrink Partition." Select this, and specify the size you would like.

If Windows is not allowing the amount of space you would like for your openSUSE installation, you can try clearing your temp files with a utility (I use Glary Utilities) and rebooting. If this still does not work, you can use an advanced utility such as PerfectDisk by Raxco which has a special mode specifically for preparing the partition for shrinking.

Now Install

Now simply use your install media such as DVD or bootable USB to install openSUSE. I will not detail this as it is easy. See our Installation Portal for more details. 

Post-installation configuration (critical)

Finally there are a couple things you must do to get your dualboot working properly with GRUB. If installing the latest openSUSE (LEAP 42.1) you will need to update your system completely. 42.1 contained a regression which did not chainload the Windows bootloader correctly, preventing you from using your Windows system. I prefer to update with zypper from the command line interface:
"sudo zypper up"
Now reboot, and you should be able to successfully boot into your Windows system. From GRUB, select the Windows entry since the next steps will need to be taken from within Windows. Though the same changes can be applied from within openSUSE, I find it much simpler to do from within Windows.

Now from your Windows 10 desktop, right click the Start Menu. From the context menu that comes up, select "Command Prompt (Admin)." A black Windows Command Prompt box will come up. Now insert the following line into the command prompt:
"bcdedit /set {bootmgr} path \EFI\opensuse\shim.efi"
This line will instruct the computer's firmware (EFI which is the successor to the BIOS) to use openSUSE's GRUB boot loader.

And that's it. Have a lot of fun!