More UEFI weirdness; the HP Pavilion G4
[Updated 7/09/2013. Check details toward the end of the post.]
I have been helping another user with his UEFI system. The help thread at opensuse forums is:
In this case, the user has successfully installed opensuse 12.3. But, whenever he boots, the system wants to boot Windows rather than opensuse. It is not a total disaster. He is able to bring up the BIOS boot selector and choose opensuse there. However, it would be far easier if the grub2-efi boot menu came up and he could simply select Windows or opensuse.
The owner of this HP computer is an admitted linux newbie, so it is taking time to work through the details. I am pretty sure that I understand what is going on, but a fix is not yet in place. If appropriate, I’ll update this post when more is known.
The basic problem
The problem here is similar to, though not quite the same as, the problem on the Toshiba system that I described in an earlier post. The firmware does implement most of the features of UEFI. However, on reboot, the BIOS seems to switch the boot order so that it always boots a device rather than an operating system. In this case, the device is configured to always boot Windows. I’ll make a separate post on the issue of booting an operating system, rather than a device.
The solution, in this case, is going to be to change the device so that it will default to booting grub2-efi rather than Windows. That way, the broken behavior of the HP computer will still get to the grub2 boot manager menu.
Changing the device amounts to copying some of the grub2/opensuse boot files to the directory “\EFI\Boot” on the primary disk, and naming one of those “bootx64.efi”. I am pretty sure that my advice, given in that opensuse forum thread, will solve the user’s problem.
My initial diagnosis was a bit off. The problem seems to be that the firmware was always changing the boot order to put the Microsoft entry first. I’m not sure whether it is putting entry 0000 first, or the entry that uses the Microsoft name.
We discovered this when the attempted workaround of putting opensuse boot files in “\EFI\Boot” did not solve the problem. The solution that did work was to have the opensuse boot files in the same EFI partition, and then use BCDEDIT on Windows to set the path for the Windows boot manager to actually be the path to the opensuse boot loader (the “shim.efi”) program. Consult the opensuse forum thread if you want to see the full details.