My colleague Lee Hutchinson had a hell of a time getting Windows onto our SteamOS box. Through a series of mishaps and misfortunes, he somehow managed to destroy a Western Digital Black2 Dual Drive hybrid thing, create multiple UEFI partitions with multiple boot loaders, make SteamOS think it was Ubuntu, and thoroughly confuse both himself and the poor PC we were using.

I was drafted in to rescue both him and the machine and get it working with dual boot. Dual boot isn't, of course, the point of SteamOS, given that it's intended for console-like machines that are plugged into TVs and do nothing other than play games. Having Windows on the machine in many ways undermines the purpose of SteamOS, since Windows can play every Steam game rather than the limited subset available to the Linux-based SteamOS.

But we want to be able to compare the performance of the two operating systems, and if you just want to check SteamOS out to see what Valve is working on, you might well want to dual boot, especially if you're not willing to dedicate a machine to software that's still very much in beta.

As Lee detailed , the SteamOS installer is a little limited: it will wipe the disk it's installed onto, and we discovered that it fails if the machine has more than one hard disk. So the first step of the dual-boot process is to install SteamOS. This will create a suitable UEFI system partition that boots to grub.

Given that hard disks are basically free these days, and since we didn't want to even begin to mess with resizing partitions lest we upset SteamOS, we added a second hard disk for Windows 8.1. We booted from a USB 3 stick and installed Windows onto the second empty hard disk. It was blazingly fast, thanks to Lee's spiffy USB key.

Windows adds its boot stuff to the EFI partition and sets itself up as the default operating system. I know that many Linux users hate this and think it's rude of Microsoft to make Windows work this way, but I tend to think it's the only safe option. Microsoft needs the Windows installer to work and get people into Windows, even if they're starting out with a broken mess of Linux, UEFI, Hackintosh OS X, and whatever else happens to be on the disk. Making Windows set itself as the default achieves this goal.

This will leave a machine that boots into Windows, but which has SteamOS installed on the other disk. We just need a boot manager that will let us choose an OS to start so that we can switch between the two. I would have liked to use the Windows 8.1 boot manager to do this since it offers nice, big graphical buttons to pick the OS you want. Deep down, I'm sure it's possible to do, but whenever we tried, it gave an error message that ran off the bottom of the screen, so we don't actually know what it says or why it was failing.

Getting down to business

Since SteamOS is using grub, however, we can just use that instead. First we'll tell UEFI to boot grub rather than Windows' boot manager. That will boot into SteamOS without offering Windows. Next, we'll update grub to make it notice that Windows has been installed and stick an option in its menu.

To do the first bit, boot into Windows and start an Admin command prompt. In theory, the right thing to do here would be to tell the firmware itself to switch to grub as its boot manager. However, there are many reports that Windows doesn't like this very much and will reset the firmware's setting each time it starts. This is unfortunate. To retaliate, we'll just modify the entry for the Windows boot manager to make it run grub instead of the Microsoft code, and we'll leave the firmware pointing at this adulterated Windows entry. Windows doesn't notice this, so it leaves everything alone.

First we need to check what the path to grub actually is. The easiest way to do this is to type the following command: bcdedit /enum ALL | findstr grub . The path should look something like \EFI\steamos\grubx64.efi .

Then we need to update the Windows boot manager configuration to make it start grub. The command for this is bcdedit /set {bootmgr} path \EFI\steamos\grubx64.efi (replacing the path with the path you recorded in the previous step if it's different). Note that the braces should be typed exactly as is.

At this point you can reboot the machine. It should boot straight into SteamOS, as at the moment the grub menu doesn't include a Windows option. Log in to SteamOS with the desktop account and start a terminal. From the terminal, run sudo update-grub . Type in the password, and grub should notice that Windows exists and update its boot menu to include the Windows option.

This should be all you need to do. Now if you press a key during the (brief) grub menu, you'll have a Windows option in addition to the SteamOS option, and you'll be able to switch into Windows as you please. As long as you're not Lee, it's actually pretty simple.

Gamers, it’s Ars Technica Charity Drive time again! You can win your share of over 160 prizes, including tablets, games, and rare and limited edition collectibles, by donating to a good cause. Entries are due by January 3rd, so check it out!