1

I have a EFI dual boot installation on a Lenovo y50-70. I upgraded to win10 without any problems the very first day of win10 availability.

This is the structure of my Hd:

  • sda1 - windows recovery partition
  • sda2 - Ubuntu EFI partition
  • sda3 - LSP_ESP: I think is the ESP for the Lenovo recovery system
  • sda4 - Un-mountable partition: i inferred that this is the win10 ESP
  • sda5 - win10 main partition
  • sda6 - Lenovo recovery partition
  • sda7 - PBR_DRV: No idea of the purpose of this partition, it was preconfigured by lenovo.
  • sda8 - swap
  • sda9 - Ubuntu root partition

I have disabled fast boot on win10, disabled safe-boot on bios, Ubuntu is installed in EFI mode, the Ubuntu ESP has the higher boot priority.

The problem:

For more than a month the dual boot with win10 worked perfectly. Now (probably after the last kernel header update) the laptop automatically boot win10.

Attempt:

I believed that the problem was a corrupted ubuntu ESP, so I followed the standard CHROOT procedure from a live usb to reinstall the ubuntu ESP on sda2, running the command

apt-get install --reinstall grub-efi-amd64

All worked perfectly, but after the re-installation, during the update-grub phase, the windows boot loader was not found, also running a further update-grub command. I exited the chroot and rebooted.
After the reboot the ubuntu ESP started correctly but, as expected, without the Windows boot loader option. I logged in into my Ubuntu and did another update-grub.
This time the Windows Boot Loader was found, Youppie! Problem Solved!
Well that's not that easy. After another reboot, the GRUB prompt was not shown and win10 was automatically booted. Again. Note:
I repeated the procedure twice, sampe steps, same intermediate results, same final effect.

The loop in bullets:

  1. Autoboot win10
  2. Restore from live usb with chroot
  3. update-grub -> win10 loader not found
  4. reboot->grub prompt shown -> boot into ubuntu
  5. update-grub -> win10 found -> reboot
  6. Autoboot win10

The efibootmgr output before step 6:

BootCurrent: 0004  
Timeout: 0 seconds  
BootOrder: 0004,0003,2003,2001,0002,2002  
Boot0000* EFI Network 0 for IPv4 (F8-A9-63-4E-C6-FF)  
Boot0001* EFI Network 0 for IPv6 (F8-A9-63-4E-C6-FF)  
Boot0002* Lenovo Recovery System  
Boot0003* Windows Boot Manager  
Boot0004* ubuntu  
Boot0005* EFI USB Device (JetFlashTranscend 16GB)  
Boot2001* EFI USB Device  
Boot2002* EFI DVD/CDROM  
Boot2003* EFI Network  

uname -a output:

Linux Elianto 3.16.0-48-generic #64~14.04.1-Ubuntu SMP Thu Aug 20 23:03:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux  

If you need further data from intermediate steps (commands output) ask in the comments.

Thank you.

snoop
  • 4,040
  • 9
  • 40
  • 58

1 Answers1

0

Two possible solutions occur to me:

  1. Install my rEFInd boot manager. This tool is more reliable about booting Windows than is GRUB, so it may work around whatever is causing GRUB to ignore the Windows entry. Note that this means you'll be bypassing GRUB, at least for Windows boots; instead, you'll see rEFInd's menu. (To boot Ubuntu, rEFInd should be able to either boot Linux kernels directly or use GRUB.)
  2. Create a manual GRUB boot stanza for Windows, as described in my answer to this question. You'll need to change some details, such as the partition identifier (it should probably be (hd0,gpt2)).

Also and FYI, your /dev/sda2 is the EFI System Partition (ESP). Note that it's the EFI System Partition -- it "belongs" to the EFI (the computer's firmware), not to any one OS. OSes are required to store their boot loaders in the ESP, but the ESP doesn't really belong to any one OS; it's normally shared by all the OSes. That said, it's possible to have multiple ESPs on a disk, and some users restrict each OS to using a dedicated ESP. That doesn't seem to be the case for you, although I can't be 100% positive of that without more detailed information, such as the output of sudo parted /dev/sda print or sudo gdisk -l /dev/sda. (Summaries such as you provided are almost always inferior to cut-and-pasted program output.) This isn't really relevant to your problem, but I thought I should clear up this bit of confusion.

Rod Smith
  • 44,284
  • 7
  • 63
  • 105
  • Thank you very much for you help and for clarifying this thing on ESP. I will try your solution and come back with updates, if any. Thank you again. – Dario Valocchi Sep 11 '15 at 15:10