Ubuntu – Grub does not show a Windows 8 option after dual boot


So, I've successfully dual-booted my Windows 8 machine with Ubuntu 12.04 . However, I still don't have a convenient method of choosing what OS to load at boot time.

After installing Ubuntu, my computer still loads Windows 8 directly. I then added grubx64.efi to the white list of my boot loader. But after that, my machine loads Ubuntu directly without even a shadow of GRUB showing up!

I used boot-repair and I got this paste.ubuntu URL: paste.ubuntu.com/1326074. After running boot-repair (and re-white listing the grubx64.efi file), GRUB now shows up but without any Windows 8 option!

Lastly, I ran sudo fdisk -l and it gave me this:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x6396389f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  1465149167   732574583+  ee  GPT
Partition 1 does not start on physical sector boundary.

I'm guessing my problem has something to do with the warning from fdisk above but I don't know what to do with it. How do I proceed now?


My etc/default/grub is as follows:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)

# Uncomment to disable graphical terminal (grub-pc only)

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux

# Uncomment to disable generation of recovery mode menu entries

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Also, just for the record, this is what I followed in installing my dual-boot. The tutorial (which uses, 11.10, I must note), doesn't mention anything about this problem. Is there anything there I shouldn't have done?

Best Answer

  • 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.

  • Related Question