Make UEFI, GPT, Bootloader, SSD, USB, Linux and Windows work together

Solution 1:

OK, it was a very involving process, but I solved my problem and everything works together just as it should.

I'm documenting the solution for everyone:

  1. One must begin with GParted Live and create a fresh GPT partition table. This will wipe everything on the HDD resp. SSD. Then one must create a small 8 MB 'unpartitioned' partition and flag it with 'bios_grub'. Afterwards, one creates a 100 MB fat32 partition labeled 'EFI' and flagged 'boot'. (This is the modern and more transparent equivalent of what the MBR used to do, see here for reference.)

  2. Optional: Install a Linux distribution that works correctly on GPT UEFI systems from USB. I don't know which ones do. I installed Chakra Linux to try it out. While installing make sure to mount the 100 MB fat32 as /boot/efi. Do the rest as usual. I left some unformatted room for Windows 8 (300 GB), created a linux-swap of 1 GB afterwards, created an adjoining ext4 (25 GB) and mounted it as /. After installation it will not boot, but we will fix that with ease. Do the entire step again for installing more distributions.

  3. Install Windows 8 in the unformatted space we left in the previous step. It will automatically identify the EFI system partition, create a MSFTRES, and a NTFS where it installs itself. After installation we can only boot into Windows, but we will fix that later.

  4. Ubuntu will fix it all. While installing select the 100 MB fat32 and change it into 'use as efi'. Create an ext4, install Ubuntu. Upon rebooting we are presented a nice working GRUB2 which detects Ubuntu and Chakra Linux.

  5. Now we will configure GRUB2 to detect Windows. It is a known bug, however, Rasmus Pedersen's workaround is functional. Be aware of a typing error he made: It is /etc/default/grub without an s instead of /etc/defaults/grub. When writing "chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi" I wrote /EFI/ in capitals just to be sure. When done this will present us a working GRUB2 with a working Windows 8 entry.

  6. GRUB2 does not look very nice with so many boot options and it is not in my preferred order. Thus I install and use grub-customizer in Ubuntu as shown here. I configure it so to hide the memtest, the recovery and the old kernels, and I reorder it to put my custom script with Windows on top. Done.

Solution 2:

Kubuntu and LinuxMint KDE distro's worked fine for me with GPT and EFI.

Steps:

  1. Start Windows 7/8 install and configure HDD partition, it will create automatically the EFI boot, MS System Reserved, for Windows 8 also the recovery partition. Install Windows.
  2. Install your desired Linux distro with EFI support. Select manual partitioning and to install bootloader on "/" root partition, Grub 2 EFI files will be automatically installed on EFI boot partition, alongside with those of Windows.
  3. Install rEFInd and your good to go. rEFInd will do the job and offer you option to chose desired operating system at PC start. Install rEFInd info - http://www.rodsbooks.com/refind/installing.html. Before rEFInd install, you must select boot device at start with your BIOS dedicated key, or by entering in BIOS and put desired device first in list, boot Windows and configure rEFInd from Windows. Make sure that proper EFI partition is set as default boot device in BIOS.

I personally prefer Kubuntu 12.10, probably Mageia 3 will be nice to but it's a long way till 2013 spring.

Good luck.