Seven ways to set up multi-booting with Windows 8 and Linux

Seven ways to set up multi-booting with Windows 8 and Linux

Summary: More trial and error attempts to set up multi-boot on my new laptop. Here's what I've learned to date.


A good bit of the feedback on my most recent post about installing Fedora on my new laptop was along the lines of "instead of telling us what doesn't work, please give us some information about what options we have which do work". 

Fedora 20: Hands on with five different desktops

Fedora 20: Hands on with five different desktops

Fedora 20: Hands on with five different desktops

That's good advice, and I'm happy to follow it. If all we do is sit around and moan about dual-booting Linux on UEFI systems, it really is likely to discourage some people from trying it, and the simple truth is that there are options that will work, without a massive amount of effort.

First, though, I will repeat something I have said many times before. Every UEFI firmware implementation is different - and not just a little bit different, either

Some work really well with Linux installations, dual-booting with no problem right from the start. Others are difficult, unpredictable and downright maddening in their inconsitency, and seem to go out of their way to prevent Linux booting. So if you want to dual-boot Linux and Windows, try to find a description written by someone with the same system you are using, or at least a system from the same manufacturer.

Ok, so what are the possibilities? 

1. Install the Linux GRUB bootloader

Well, the first and certainly the simplest if it works properly, is to install the Linux GRUB bootloader as the default boot object, and have it control dual-booting with Windows. 

To do this, of course, you have to have a UEFI-compatible Linux distribution - the ones I have tried and can vouch for are openSuSE, Fedora, Linux Mint and Ubuntu, but there are others and there are more coming in the near future. 

If you have a UEFI Secure Boot compatible Linux distribution, you don't even have to change the UEFI configuration settings, although a lot of people will choose to disable Secure Boot anyway. 

When you install a UEFI-compatible Linux distribution, if everything works as it should and the UEFI firmware configuration works properly and does not get improperly "reset" (which I have seen happen far too often), then when you reboot after installation completes you will get the GRUB boot menu, and you will be able to choose either Linux (the default) or Windows 8 to boot from it. 

At that point you are almost home free - but be aware that I have personally seen (and personally own) systems which at some later point will suddenly reset the configuration to boot Windows for no particular reason. If this happens, you should consider using one of the other methods described below, because my experience has been that it doesn't happen just once.

2. Use the BIOS Boot Select Key

The second possibility is that you choose a UEFI-compatible Linux distribution, the installation goes along just fine, but when you reboot it comes up with Windows rather than Linux. This can be very disheartening, but it is actually not that difficult to work with. 

The important thing to remember is that the Linux installation will have added itself to the boot list: you just need to be able to get to that list to boot it. 

The simplest way to do that is to use the BIOS Boot Selection option, which is activated by pressing a special key during the power-on or reboot process. That "special key" varies between systems, I have seen Escape, F9 and F12 used on some of my systems, and I'm sure there are others. 

When you press it, the Windows boot process will be interrupted and you will get a list of available operating systems - probably Windows 8 and Linux. I personally don't care for this option because I don't like to have to "race" with the boot process to make sure that I press the Boot Select key in time, and if I am distracted or too slow then I have to go all the way through Windows boot and then just immediately reboot to get back to the Boot Selection menu. 

But a lot of people don't seem to mind it, and it certainly is an option which requires a minimum of fiddling and fighting with stubborn BIOS configurations. One way that this can be made a bit easier is to go into the BIOS setup and choose a start-up delay, many systems will allow you to set anywhere from 5 to 30 seconds of delay before Windows actually boots, thus giving you a lot more time to press the magic key.

3. Enable 'Legacy Boot'

The third "simple" possibility is to enable 'Legacy Boot' in the BIOS configuration, and just ignore the whole UEFI issue. 

This is not an option that I personally prefer, in part because I am stubborn and in part because as Adam Williamson explained to me some time ago there are some functional advantages to UEFI boot. But it certainly is a viable option, and strictly in terms of getting Linux installed and booting it might actually be the absolute simplest solution. 

Experiments with my new laptop, Linux and UEFI

Experiments with my new laptop, Linux and UEFI

Experiments with my new laptop, Linux and UEFI

The only problem that I have seen with this option is that some systems make it difficult to enable Legacy Boot, either the option is well hidden in the BIOS configuration, or you actually have to set a BIOS password before they will let you change it. I have heard that there might be some systems which don't have Legacy Boot support at all, but I have never seen one like that.

Anyway, if you choose this route not only does it make things much simpler for installing and configuring dual-boot, it allows you to install pretty much any Linux distribution you want, without regard to UEFI compatbility. 

I have personally used this option to install non-UEFI Linux distributions, such as SolydXK, PCLinuxOS and Linux Mint Debian Edition in a multi-boot configuration with some other UEFI-compatible distribution. I can then go back and disable Legacy Boot, and just use the UEFI-compatible GRUB to boot the non-compatible Linux.

4. Try using the Windows bootloader

The fourth possibility should be to use the Windows bootloader to dual-boot with Linux. I say should be, because people keep posting comments which say "just use easyBCD to set it up", or even "use bcdedit", but try as I might I can't get it to work. 

I wrote about this a year or so ago, when I got my first UEFI system, and I assumed at that time that the problem was just that easyBCD was not completely adapted to support UEFI boot, but now I have tried it again, with the latest version of easyBCD that I could get from the NeoSmart web page and I still can't get it to boot Linux at all. 

Now, it may be that I am just too dense to figure it out, but if anyone is going to come along and post a comment that says "it works fine", then please be prepared to be very specific, and give exact details of what you did to get it to work. Because I have tried everything thing I can think of, and no matter what I do the only thing I get when I try to boot any Linux installation is a message that says "Windows Failed to Boot". 

I have also searched the web for more information, and the only concrete examples I can find are those who have failed, the same way that I have.  I can find lots of places that say "easyBCD works", and "use easyBCD to multi-boot Windows 8, 7, Vista, XP, MacOS and Linux", but not ONE which actually says "we did this with Windows 8 UEFI and LInux, it worked, and here is what you have to do".

What I did was the following.  I downloaded and installed easyBCD 2.2 on two different Windows 8 UEFI systems (the recently purchased HP Compaq, and my Acer Aspire One 725). When I then ran easyBCD (as administrator, of course), I was surprised that it came up with a list of operating system for its boot configuration. I know that the Windows bootloader had not been seeing or offering to boot anything other than Windows 8. It took me a minute to realize that what it was listing was everything which was in the BIOS boot list. 

That was exactly what was being offered if I used the Boot Selection option, as described above, but if I just let Windows boot normally there was no sign of these others. Even if I put a 30-second delay in Windows boot, using either bcdedit or easyBCD, it would stop and list only Windows 8.  So why was easyBCD listing all the others? I didn't understand, but I hoped that it might be a good sign, that easyBCD was at least finding the other options, and all I had to do now was add them to the normal WIndows bootloader menu.

I tried to do that, first by just marking one of the Linux distributions as the default boot object. easyBCD let me do that with no complaints, but when I rebooted it just came right back up with Windows. Bah.

Then I tried using the "Add" option in easyBCD, and gave all the information for one of the Linux partitions.  This time at least when I rebooted it showed the Linux option in the boot list, but when I tried to boot it I got the "Windows Boot Failed" message. I shouted at the blasted computer that I wasn't even trying to boot Windows, so how could that fail, but that didn't help either.

Then I saw that what easyBCD was actually setting up was an attempt to boot something called /NST/neogrub.efi (or some such thing close to that, I don't have the exact name in my head right now, and I am fed up with easyBCD and Windows, so I'm not going back to look again). 

So I tried putting various bootable files in with that name - first I tried the grubx64.efi image from one of the LInux distributions, then I tried copying the boot block (first 512 bytes) of the disk and/or Linux filesystem, as used to be done in order to dual-boot Windows XP and Linux, and then I got desperate and just put a Linux kernel under that name. Of course, none of those worked. 

I finally decided, based on my own experience and the lack of success stories or real configuration information on the web, that easyBCD is of no use whatsoever in setting up dual-boot Windows/Linux with UEFI boot enabled. It might be possible to use it if you enable Legacy Boot, and then set it up exactly the way that it used to be done on Windows XP, but if you're going to do that, then just use method three above, and save yourself a lot of trouble.

After fighing with easyBCD for a very long time, and finally surrendering, I decided to make a run at the bcdedit utility, which is the standard Windows approach to this kind of configuration. I am reasonably familiar with this program, as I have used it to set up dual-boot on Windows XP, so I wasn't exactly blundering around in the dark. 

But again, no matter what I tried it didn't boot. I could get the Linux item added to the Windows bootloader menu, and I could set all kinds of different things as the boot object, but none of them worked. Finally, just to prove to myself that I wasn't doing something just fundamentally wrong (or stupid), I just set the boot object of one of my Linux attempts to be Windows 8, and it booted right up. Grrrr.

So, my conclusion from all of this is that one of the major reasons that easyBCD is of no use in setting up Linux dual-boot is that it is basically impossible to use the Windows 8 bootloader to boot Linux with UEFI boot enabled. Again, it might be possible with Legacy Boot enabled, but I don't care enough at this point to find out. 

If you know that I wrong about this, and you have personally set up a Windows 8 system to boot Linux using the Windows bootloader, then please tell me this in the comments, and please, please be specific and tell me how you did it, because I would love to know.

5. Install a different Boot Manager

The fifth UEFI multi-boot option is to install a different Boot Manager, such as rEFInd from Roderick W. Smith. This has the advantage of being able to boot almost anything - Windows, Linux, MacOS - and it is very powerful and very flexible in automatically finding whatever might be on the disk and presenting you with a boot selection list. 

Unfortunately the one thing it doesn't solve is the "uncooperative/unpredictable BIOS configuration" problem described above. If Windows, or the boot process, or something else is monkeying around with the BIOS configuration and preventing you from permanently setting GRUB as the default bootloader, then it is almost certainly going to prevent you from setting rEFInd as well.

6. Try a workaround

The sixth option is not exactly a solution to the uncooperative/unpredictable BIOS configuration problem, it is more of an ugly workaround for it. 

It turns out that in addition to the normal "boot sequence" list in the UEFI boot configuration, there is also a "next boot" option, which specifices a one time boot configuration. 

This is normally null, so the system follows the boot sequence list, but if it is set the system will try to boot that item first, and will also clear that setting so that on the next boot it goes back to using the default boot sequence list. 

The next boot configuration can be set from Linux using efibootmgr -n XXXX, where XXXX is the item number from the boot list; to find out the number for your Linux installation(s), just use efibootmgr with no options (or efibootmgr -v if you want to see all the gory details): the number will be something like 0001 or 0002 in most cases. 

This "next boot" option could be turned into a semi-permanent work-around by adding the efibootmgr command to the Linux startup scripts, so every time you boot Linux it would reset the value so that it would boot Linux again the following time. I didn't say it was nice, or elegant, or even pretty, but does work, because I have tried it.

7. Trick the default boot process

Finally, the seventh option is to "trick" the default boot process by putting the Linux shim.efi (or grubx64.efi if you disable Secure Boot) image in the place where the Windows Boot Manager is normally located. 

On the systems I have tried, this is in the EFI boot partition (typically /dev/sda2 on Linux, mounted as /boot/efi), under the name /EFI/Microsoft/Boot/bootmgfw.efi.  I have had some success in doing this, but be warned that some systems (especially HP Compaq) are so aggressive about checking and resetting the default UEFI boot configuration that sometimes they will actually notice that it is not the "original" bootmgfw.efi program insttalled, and they will actually go and get a copy of the original and put it back in place, thus undoing your clever deception. You can probably imagine how irritating and frustrating it is when this happens...

So, there you have it.  Seven different options to set up multi-booting with Windows 8 and Linux. 

I suppose there are others that I have not thought about, or that I am not remembering right now, but these are what I think are the most obvious.

I have tried all of these at one time or another. The simplest and nicest of course is the first, just install and boot grub, if that works on your particular system. I also know some people who swear by the second option, just press Boot Select, and they think that I am just being lazy and stubborn by not using that.

Beyond those two, it would probably take more dedication, learning and trial and error to get the others working (some I still haven't gotten working). But in the long run, if you are determined to dual-boot LInux and Windows, you should be able to do it.

Further reading

Topics: Linux, Open Source, Operating Systems

J.A. Watson

About J.A. Watson

I started working with what we called "analog computers" in aircraft maintenance with the United States Air Force in 1970. After finishing military service and returning to university, I was introduced to microprocessors and machine language programming on Intel 4040 processors. After that I also worked on, operated and programmed Digital Equipment Corporation PDP-8, PDP-11 (/45 and /70) and VAX minicomputers. I was involved with the first wave of Unix-based microcomputers, in the early '80s. I have been working in software development, operation, installation and support since then.

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.


Log in or register to join the discussion
  • Dual boot with windows and linux

    I have an HP laptop and had all kinds of problems dual booting. I even contacted the software engineer that writes HP software and he said that my machine could not do this because of the bios settings. The settings are firmware and not settable by the user.

    I set up Windows 8 on an SSD and Windows 7 on the main hard drive. I went in and manually changed the BCD and added the boot options, specifically setting the memory allocation, boot disk and OS path and boot-loader.

    After several months of work, I happened upon a combination that worked. I set to boot to the rotating drive. To boot with Windows 8 first, and then select the Windows 7 disk with the BCD options. It then will reboot to the Win7 disk after it is selected in the boot-loader.

    It works like a champ. to run RoboLinux, I boot from a flash drive, using the same kind of settings. Who says it can't be done?
  • I want Touch friendly GRUB Bootloader

    Device : ASUS Transformer TX300ca

    Presently I use GRUB Bootloader to boot Ubuntu 14.04 and Windows 8.1. All are fine. UEFI settings also default.
    The only feature I miss on GRUB is TOUCH friendly. GRUB Bootloader is not touch friendly.So I need to dock my tablet to choose OS.
    I managed to set GRUB to boot Windows 8.1 as default OS.

    Is there any way to make GRUB Bootloader touch friendly?
    SYD Harry
    • I would think so

      You may have to write the code yourself (or pay someone to do it for you if you have the money) , but I think it's highly likely to be feasible.
      John L. Ries
  • I like to see BOTH what works and what doesn't work

    I personally find it useful to know what works and what doesn't. Not every system and UEFI are the same, and it sometimes helps to know what others have tried and what their experience was.

    Thanks for this useful series of articles.
  • ahh, its so satisfying to boot your computer

    and Reboot... :-)
  • Why would I want to?

    What can I do with one OS that I cant do with the other?
    • You're reading the wrong blog

      The title of this one is "Jamie's Mostly Linux Stuff". There are other blogs that cover Windows and Macintosh.
      John L. Ries
    • Why would I want to?

      If you are a computer science major you may want to learn a bunch of OSes from mainframe OSes, VMS, CICS, Linux and Windows. There are things Linux can do that Windows can not. Microsoft themselves use Linux. Skype, Bing and all run Linux. Linux can also do OS level virtualization or containers. So far Windows can not. You may want to modify Linux source code and load it for educational purposes in college. Necessity is the mother of invention so if Windows works for you then you probably shouldn't dual-boot but that makes you mono-OS literate while a lot of IT professions are poly-OS literate.
      Tim Jordan
      • Agree on all but one point

        Windows 8.1 and its counterpart server 2012 r2, do include hyper-v as a feature and server role respectively. Having tested Hyper-v's capabilities, I do find it to be comparable with esxi and ubuntu cloud. However, each hypervisor has its own strengths and provides the most benefit in a particular situation. Unsurprisingly, each works very well with products of the same brand. (Except esxi which works great with everything)
  • With hardware so cheap these days

    I don't bother with dual booting anymore. My big laptop is Linux Mint KDE and my tablet is Windows 8. I also have a couple multimedia machines that are Windows 7, one of which I could use, if needed, as a desktop for Office work where the tablet might be too small for heavy use. And at work most everything is Windows 7 but we do have a couple dedicated Linux machines that we can RDP into if needed.
    Michael Kelly
  • Get a laptop from the right manufacturer/OEM

    The worst problems are apparently when the straightforward solutions do not work because of wildly non-compliant UEFI boot firmware. The first question I asked a Lenovo pre-sales support person was, "will I have any special problems setting up dual boot with Linux?" She answered that the laptop was fully capable of installing Linux and that included disabling Secure Boot if my distribution required it and a legacy boot mode if that was necessary.

    In fact I silmply installed Fedora, found that grub muffed its attempt to install the Microsoft efi in the boot config. At first I simply defaulted to booting Linux which is what grub managed to get right and only booted Windows8 from the firmware boot manager--that worked because I nearly never need Windows. Later, I tested rEFInd from a test CD (as recommended by Rod Smith) and it found both Windows8 and Fedora just fine so I installed it. I put the rEFInd key in the right folder and was done.

    The big thing I needed to solve before going forward was to shrink the Win8 partition down more than halfway using the Windows Disk Manager. I googled and found a recipe that worked like a charm:

    I have a 90GB Win8 partition which is plenty for updating my Garmin GPS maps. For everything else Windows I have VirtualBox and WinXP installed under Fedora.
    D Soup
  • Moral of the story:

    Buy a laptop built for Linux, not Windows. System76, Zareason, Chromebook, Dell.
    • That's probably the best option

      If mainstream OEMs value their MS preload contracts more than they do users of alternative systems, then make sure they receive the full consequences of this, so they show up properly on the balance sheet.
      John L. Ries
      • John L. Ries: "MS preload contracts"

        Am curious, do these MS pre-load contracts direct the OEMs to implement widely varying UEFI firmware implementations?
        Rabid Howler Monkey
        • Good question

          I'm not familiar with MS' specification for "secure boot", but reports are that it *must* be implemented in order to preload Windows 8.
          John L. Ries
        • I guess not...

          Our Lenovos have a pretty straightforward UEFI with very useful firmware boot managers. There was no issue installing Fedora except that grub failed to find Windows after the install. rEFInd solved that although the firmware boot manager did a fine job of booting both Windows and Fedora also. No hidden cards, no tricky bits, simple straightforward install and tweak to make it fully straightforward.
          D Soup
          • D Soup: "I guess not... "

            Did you even bother to read my post? I wrote of:

            "widely varying UEFI firmware implementations [amongst Microsoft OEMs]"

            I neither stated nor implied that UEFI was a kludge with every Microsoft OEM. And you even tipped your hat [below] regarding GNU/Linux dual-booting problems with HP PCs.

            P.S. Am glad to hear that Lenovo worked for you. I've had good luck with an old IBM T23 Thinkpad and a newer Lenovo ThinkCentre desktop (Windows Vista vintage) wrt GNU/Linux too. It appears that Lenovo is carrying the IBM baton nicely with GNU/Linux support.
            Rabid Howler Monkey
    • james.vandamme: "Moral of the story: Buy a laptop built for Linux"

      Did you read the article? It's about multi-booting Windows and Linux on one's PC. Believe it or not, some people do use *both* Windows and Linux.

      While purchasing a Linux pre-load PC from System76, Zareason or Dell, is not a bad thing in and of itself, it will end up costing more $$$ as one will need to purchase a retail Windows license for multi-booting. And, as far as I know, one cannot install Windows on a Chromebook or Chromebox.

      P.S. Secure boot has also given fits to some wanting to multi-boot Windows 8 (pre-loaded) and Windows 7. For example, the first comment on this article. Secure boot isn't just anti-Linux, it's anti-Windows too. ;)
      Rabid Howler Monkey
    • Not a bad idea, but....

      Some manufacturers know about Linux and can tell you how their systems fit the bill.

      It is great to support the Linux specialty companies. However, the disadvantage of a laptop from a Linux-specialty vendor is that you pay more for the same or lesser hardware. If you buy one from a major business vendor that expects some users to install Linux and knows that their systems fill that bill then you pay less in spite of the Windows Tax and you can get amenities like backlit keyboard with great spacing and touch. For instance I paid $800 for a Lenovo with i7 4700quad with both the built-in Intel graphics plus an Nvidia card, 8GB RAM, 1TB 5600rpm HD plus 24GB SSD, backlit keyboard, 15.6" 1920x1080 glare resistant screen and Win8.1 (useful now and then). The nearest System76 is $1013, with glossy screen, Intel only graphics, no backlit keys, 1TB HD plus 8GB SSD.

      I skipped HP in spite of past HP laptops because of concern over dual booting Linux, glossy screen, plastic case and other issues and higher price.

      My wife got an i5 Lenovo with slimmer profile, Intel video, 15.6" screen, 8GB RAM, 1TB HD, backlit keyboard, Win8, $579.

      Mass marketers who will cater to us Linux users will get my business if they have more for the money. For people who want Linux pre-installed I totally support them buying from System76 or ZaReason, I knew from what the support person at Lenovo told me that I'd be able to get Fedora installed and I did on both my computer and my wife's and we're pretty happy with the results.
      D Soup
  • Virtualbox

    I just use virtualbox to load up Win and Linux on the Mac, it works pretty well for the most part. I also tried it the other way around where I installed Linux (Fedora) and ran Win7 from a Vbox. I wasn't too successful with running OSX in the virtual box, its quite slow and useless. Got it working on VMWare Workstation.
    Radomir Wojcik