As complicated as today’s operating systems get, the computer boots following some pretty simple steps.

  1. BIOS creates a device map listing the disks (in the order from which they should boot based off the BIOS)
    Here is an example from Windows 10 EFI shell showing 2 disks – hd1 and hd2. It also lists other
    attributes (the path PCIroot/ PCI device 12 / SATA controller 1 / disk1 and disk2

    Blk0 :HardDisk – Alias (null)
    PciRoot (0x0) /Pci(0x12, 0x0) /Sata(0x1, 0xFFFF, 0x0) /HD(1, MBR, 0xAAD15D3F, 0x800, 0xC350000)
    Blk1 :HardDisk – Alias (null)
    PciRoot (0x0) /Pci(0x12, 0x0) /Sata(0x1, 0xFFFF, 0x0) /HD(2, MBR, 0xAAD15D3F, 0xC350800, 0xC350000)

Notes:
You can find the ‘bios-hint’ of a device (this will change if you update BIOS boot order or if a device is not alive or if you change the PC cabling).
Here are some sample commands to understand ‘hints’ in grub.cfg
# grub2-probe -t bios_hints –device /dev/sda3 :: hd0,msdos3 (disk starts with disk0, part’n starts with 1 like the Linux OS)
# grub2-probe -t hints_string –device /dev/sdc1 :: –hint_bios=hd2,gpt1 –hint-efi=hd2,gpt1 –hint-baremetal=ahci2,gpt1
# grub2-probe -t fs –device /dev/sdc1 :: ext2 ( actually ext4, but good enough )
# grub2-probe -t fs_label –device /dev/sdc1 :: hd2,gpt1 ( xfs_admin -L cent-root /dev/xvda1
or tune2fs -L filesys-label /dev/mapper/fedora_localhost )
# grub2-probe -t fs_uuid –device /dev/sdc1 :: 3cae8841-c7cd-4265-af41-058d1c80fece
This UUID is pretty much random, you can change it with ‘xfs-admin -U 3cae… /dev/xvda1’
# grub2-probe -t disk –device /dev/disk/by-id/3cae8841-c7cd-4265-af41-058d1c80fece :: /dev/sdc1
# grub2-probe -t disk –device /dev/disk/by-label/CentOS :: /dev/sdc1


Here is good documentation for GRUB2
https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-grub2.html