Ubuntu – Dual boot UEFI Windows 7 and Ubuntu 12.04 (both 64 bits). W7 entry doesn’t appear in GRUB

12.04dual-bootuefiwindows 7

After trying to install both OS during 2 days, I'm confused and getting mad…
I have SSD 128 GB and HDD 500 GB both empty. My laptop is Asus K55VM. BIOS support UEFI.

What I have done:

  1. Install new SSD (Samsung 830 128GB)

  2. Use GParted on liveCD to create new table of partitions (GPT) and create 3 partitions (in the SSD) for different purposes:

    • Partition 1: 80 GB (w7);
    • Partition 2: 30 GB (Ubuntu 12.04 -Just / -);
    • Partition 3: 10 GB unused (for future extesion of the other partitions)
  3. Install Windows 7 (with UEFI) in Partition 1. This create:

    • /dev/sda1 -> 100 MB for System (UEFI boot I guess) – FAT32
    • /dev/sda2 -> 100 MB aprox. for MSR
    • /dev/sda3 -> 79.800 MB aprox. for Windows7 data

In this point everything works fine. I have W7. Now I install Ubuntu 12.04 amd64 (with UEFI) as follows:

  1. Install / in Partition 2 -> /dev/sda4 30 GB ext4, and in the hdd I install /home and swap.

  2. I select bootloader in /dev/sda1 (where it's supposed to be the UEFI boot).

  3. I install updates and reboot.

Problem: Now just appears grub menu with Ubuntu entries and not Windows 7.

Alternative solution found: When I turn on laptop, before loading GRUB I press ESC key and appear BIOS boot, so I can select to boot the Windows partition, Ubuntu partition, DVD, USB, etc… but I think is not the best way to boot different OS.

I've tried: sudo update-grub2 with no success.

What can I do??

Best Answer

Find where the windows bootloader resides by mounting the efi partition:

sudo mount -t vfat /dev/sdx1 /mnt/efi/

And search for bootmgfw.efi. Then, find the UUID of the drive:

sudo grub-probe --target=fs_uuid /mnt/efi/EFI/Microsoft/Boot/bootmgfw.efi

Add this UUID to /etc/grub.d/40_custom:

menuentry "Windows x86_64 UEFI-GPT" {
    search --fs-uuid --no-floppy --set=root UUID
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

Finally run update-grub.

Related Question