I struggled with this problem for a long time when I recently tried to install Ubuntu alongside Windows 10, on an EFI BIOS. The solution I found is as follows--but it's entirely from memory, so YMMV.
Reboot into a live USB or DVD.
Open a command prompt.
Type the following:
Code:
sudo blkid
(Note the device nodes of your Linux boot and system partitions. It will be something like "/dev/sdXY", where "X" is a letter, and "Y" is a number.)
sudo mount [Linux system partition] /mnt
sudo mount [Linux boot partition] /mnt/boot/efi
sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
sudo mount --bind /var /mnt/var
sudo mount --bind /tmp/mnt/tmp
sudo chroot /mnt
sudo grub-install [Linux boot partition]
sudo update-grub
exit
Reboot.
Go into EFI BIOS and ensure that it's booting from your Linux hard drive.
Please note that GRUB must be installed into the Ubuntu Linux boot partition, when using EFI. If you install to the drive root (/dev/sdX rather than /dev/sdXY), you'll have problems.