Grub does not show a Windows 8 option after dual boot

Solution 1:

First, your fdisk -l output is not a problem; that simply identifies your disk as using the GUID Partition Table (GPT) partitioning system. To view your partitions, you must instead use a GPT-enabled tool, such as gdisk or parted, rather than fdisk, which doesn't understand GPT.

Second, you may be able to get GRUB to chainload Windows by adding a suitable entry to /etc/grub.d/40_custom and then doing a sudo update-grub. An entry might look something like this:

menuentry "Windows 8" {
    set root='(hd0,gpt1)'
    chainloader /EFI/microsoft/BOOT/bootmgfw.efi
}

The details might depend on your installation, though.

Third, if you consider rEFInd to be ugly, you can always try another rEFInd theme or create your own, as described in the rEFInd documentation. Alternatively, if you prefer a text-mode boot loader, you can set the textonly option in refind.conf. You can achieve a similar end by switching to gummiboot.

Fourth, if rEFInd is periodically reporting errors, please write those down or take a picture of the screen with a digital camera and report them to me. (I'm rEFInd's maintainer.) Bugs can't get fixed if nobody reports them; or if they aren't bugs in rEFInd, the messages may provide clues about how to resolve the problem.

Finally, it's possible to boot Linux via rEFInd (or gummiboot) without using GRUB; you just need a different EFI boot loader. My personal preference is the Linux kernel's EFI stub loader. This is available only in 3.3.0 and later kernels, though. Since Ubuntu 12.04 ships with a 3.2.0 kernel, you'll need to either find a pre-built 3.3.0 for Ubuntu 12.04 (I've heard of such things, but I don't have any links handy) or build your own from source code. (You could also install Ubuntu 12.10, which ships with a suitable kernel, but presumably you want an LTS release, so this may not be optimal.) See the rEFInd documentation's page on booting Linux for additional details on how to set this up. You could also use ELILO or GRUB Legacy. If you simply object to the delay, you could reduce the GRUB 2 timeout value and set it to not display the menu by default.

Solution 2:

Both answers with /EFI/Microsoft/Boot/bootmgfw.efi would do. However I hacked like hell to get the right settings for set root='(hd0,gpt1)'. If you know it's very simple

When GRUB starts: press c give the command ls on the prompt.
You get a list of partitions on harddisks like (hd0,gpt1) etc.
Type ls (hd0,gpt1) and try the others.
Look at the label and if it states EFI you know you've got a hit.

Warning: there could be more partitions labelled with EFI, depending how you installed Ubuntu. Try all of them.

Solution 3:

Boot into Ubuntu using CD,
Choose "Try Ubuntu",
Connect to internet,
Open up a terminal window using Ctrl-Alt-t and then run: boot-repair

If boot-repair is not found, then install it :

sudo add-apt-repository ppa:yannubuntu/boot-repair &&
sudo apt-get update &&
sudo apt-get install -y boot-repair &&
boot-repair

Click Recommended Repair. Write on a paper the new URL that will appear. Reboot the pc, you should get a GRUB menu with access to both Ubuntu and Windows. If any problem, indicate the new URL.