[CentOS] HP Envy EFI problem after BIOS update

Wed Sep 14 18:22:45 UTC 2016
Chris Murphy <lists at colorremedies.com>

Multiboot is basically a PITA, the Ux sucks. Almost invariably you're
better off figuring out how to navigate the firmware's boot manager to
choose Windows vs Fedora vs CentOS; where you can use efibootmgr -o to
get the bootorder such that the first entry at least is the one you
usually want to boot by default. And then use the firmware's boot
manager to pick something else as an exception. Although I sometimes
find efibootmgr -n as a one time boot is neat.

If you want to standardize on a single GRUB boot menu that has all
options available, this is basically total shit right now, you have to
do it manually because between grub2-mkconfig and os-prober, they
aren't smart enough to create the proper boot entries. It *should* be
true that it'll create the proper boot entry for Windows, but only
Fedora 24's GRUB supports Secure Boot chainloading the Windows
bootloader, the CentOS one can boot the kernel with Secure Boot
enabled, but can't chainload another bootloader with Secure Boot
enabled. So the first step is you have to standardize on the Fedora 24
version of GRUB if you want to use Secure Boot and I can only advise
that you do because generally I think it's bad advice to disable it.

Next, how to boot CentOS from the Fedora 24 GRUB menu? grub2-mkconfig
and os-prober conspire to create wholly new CentOS boot entries rather
than using the unique CentOS boot entries; and further if you do a
CentOS kernel update, that'll only update the CentOS grub.cfg not the
Fedora one. This is why this is such shit. What I do is disable
os-prober entirely by adding GRUB_DISABLE_OS_PROBER="true" to
/etc/default/grub and then take your pick between
/etc/grub.d/40_custom and /etc/grub.d/41_custom: the first one you
just add the entry directly in that file, and the 2nd one you create a
drop in cfg of your own called custom.cfg. It's probably a little more
reliable to use 41_custom because any of these files can be replaced
with a grub update.

So your menu entry should be something like this:

menuentry 'CentOS menu' {
    configfile /EFI/centos/grub.cfg

Now grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

And what you ought to have if I didn't mess that up, is a CentOS item
in the Fedora menu, and when you click that, it'll read and use the
CentOS grub.cfg instead. Now you get all the custom CentOS boot
params, and whenever CentOS gets a kernel update and updates its
grub.cfg, you'll see those changes without having to do anything.

Chris Murphy