Чтобы установить uefi загрузчик, нужно запустить livecd версию linux в режиме uefi, затем из консоли примонтировать разделы операционной системы (важны корень / /boot и главное /boot/EFI, напоминаю чтобы UEFI работало нужен раздел с загрузчиком EFI формата fat32 размера примерно 100мб) и выполнить
grub-install --root-directory=/mnt /dev/sda
где /mnt это корень системы, а /dev/sda устройство, на котором находится /efi раздел (по уму кстати в UEFI режиме раздел не нужен, так как загрузочный сектор уже не используется, но я как то без раздела указал, мне выдало ошибку, я не копался)
grub сам проанализирует структуру используемых разделов, установит efi загрузчик на диск и запустит efibootmgr которая обновит таблицу в биосе. Можно конечно самому все запустить без grub но с ним проще.
p.s. /boot системы должен находиться в файловой системе, про которую знает grub (например bcache он не знает), а в простых случаях типа btrfs/ext4/... у корня, раздел /boot вообще не нужен.
Если нужен legacy режим то у grub-install нужно указать раздел куда загрузчик установить, ну и если это диск с gpt разметкой, то там должен быть раздел bios boot (1мб)
------------------------------------------------------
upd. если --root-directory не работает (у меня разок так было то ли версия ОС была экзотическая то ли еще почему) то нужно смонтировать помимо всех каталогов ос в /mnt еще и /dev /sys /proc/ и /run с помощью mount -o bind /dev /mnt/dev ..., затем сделать туда chroot /mnt и уже из него запустить grub-install /dev/sda и кажется еще /mnt/etc/mtab редактировать нужно (в общем муторный способ)