1

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.

My setup

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:

  1. 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.

  1. 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:

title Linux

root(hd1,2)

kernel /boot/vmlinuz-linux root=/dev/sdb3

initrd /boot/initramfs-linux.img

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.

  1. 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?

  • Sounds like you should configure Grub to boot into Windows and/or Linux based on your selection. Windows Boot Manager doesn't know how to boot into Linux ( nor does Grub know how to boot into Windows, it lets the windows boot manager do that ). – Ramhound Apr 20 '14 at 22:16
  • Usually, one would use Windows Boot Manager to chainload Grub, which then loads your Linux distribution of choice. Or, you could chain it the other way, by booting into Grub and then get transferred to Windows Boot Manager. – Caleb Xu Apr 21 '14 at 2:52
  • @CalebXu - Yes, I'm having trouble with WBM chain-loading Grub on a second hard drive. – tekiwibird Apr 21 '14 at 3:22
  • @Ramhound - I'd like to explore getting a solution with WBM, I've tried to use Grub to load the WBM but it hasn't worked for me either. I used os-prober to find other OS's before running grub-mkconfig but it didn't know what to do with the windows partitions. – tekiwibird Apr 21 '14 at 3:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.