Looking at online sources its speculated that, for UEFI/GPT systems, this is not possible.
My setup is a Windows 8.1 OS on a SSD and a 1TB SATA HDD for data/music/pictures etc.
I recently wanted to load Archlinux and decided to resize the 1TB HDD to allow 100GB for linux. I was able to install successfully and I am able to boot the UEFI linux install via BIOS.
However to switch between Windows 8.1 and Linux, I have to press DEL on reboot, get into BIOS, click on the BOOT menu and then click on arch_grub entry for the boot partition on the 1TB HDD.
Ideally I'd like to get the Windows 8 Bootmanager to show an entry for Archlinux and boot the linux EFI partition from there.
Primary SSD (Win8) |- /dev/sda1 – recovery (ntfs) |- /dev/sda2 – boot (fat32) |- /dev/sda3 – unknown |- /dev/sda4 – windows primary (ntfs) Secondary HDD (Windows Data Disk / Archlinux install) |- /dev/sdb1 – unknown |- /dev/sdb2 – windows secondary (ntfs) |- /dev/sdb3 – /boot (fat32) |- /dev/sdb4 – /mnt (ext4) |- /dev/sdb5 – /mnt/var (ext4) |- /dev/sdb6 – swap |- /dev/sdb7 – /mnt/home (ext4)
I formatted a seperate /boot partition to be FAT32 and installed GRUB to that partition using:
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug --force /dev/sdb3
This allows me to see the linux /boot partition from Windows (drive H:) and has the structure:
/boot/ |-EFI/arch_grub/grubx64.efi |-grub/ |-fonts/... |-locale/... |-themes/... |-x86_64-efi/... |-grub.cfg |-grub.cfg.example |-grubenv |- initramfs-linux |- initramfs-linux-fallback |- vmlinuz-linux
What I've tried:
- Followed the steps to configure bcdedit in the well known guide referenced in the Archlinux wiki.
This results in a boot error and requires the user to boot back into the os selection. Only Windows option works. I suspect it is because Linux is on the second hard-drive.
- Used the Grub4Dos method, by placing grldr and grldr.mbr in C: creating a bcdedit entry with a path to grldr.mbr. Configured a menu.lst and placed it in the C: . The menu.lst looked like this:
kernel /boot/vmlinuz-linux root=/dev/sdb3
This results in the same boot error as 1. I suspect it is because loading a MBR in a UEFI/GPT environment isn't supported.
- Created a bcdedit entry with the directory set to H: (linux fat32 /boot partition) with the path pointing to EFI/arch_grub/grubx64.efi
This results in the same error again. I suspect it is because bcdedit can't work on a second hdd.
Can anyone provide insight/guidance on this topic?