0

I have followed this guide on how to setup Arch Linux dual-boot. However, only get "macOS" option when booting and when it is chosen the following error shows up:

Error loading \System\Library\CoreServices\boot.efi: Unsupported
Failed to execute macOS (\System\Library\CoreServices\boot.efi): Unsupported

After another retry macOS boots, but I never get to see the Arch Linux boot option. My boot.efi is:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
set root='hd0,gpt5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt5' --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  a4d89761-6298-4e27-99c9-0d86bb1c8aa2
else
  search --no-floppy --fs-uuid --set=root a4d89761-6298-4e27-99c9-0d86bb1c8aa2
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

And my partitions:

Device Size Type
/dev/sda1 200M EFI System
/dev/sda2 116.8G Apple APFS
/dev/sda3 128M Apple HFS/HFS+
/dev/sda4 256M Linux Filesystem (Boot)
/dev/sda5 116.4G Linux Filesystem (Root)

Any ideas why Arch boot option does not show up?

0
+100

It looks like you missed a step or somehow misunderstood a step.

You have posted a text file in your question claiming it is your boot.efi. But that file should be a binary. What you have posted looks like a grub menu configuration file.

According to the tutorial you linked this file should be generated with this:

grub-mkconfig -o boot/grub/grub.cfg
grub-mkstandalone -o boot.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi -C xz boot/grub/grub.cfg

Here the second step grub-mkstandalone -o boot.efi ... should generate the binary to put in your EFI directory. This shouldn't be a text file.

0

It sounds like the problem is your Mac isn't recognizing your bootloader files. The guide you linked is from 2013 so it's a bit outdated- there's really no need for a seperate /boot partition, so you should delete /dev/sda4 and mount the Mac's EFI as /boot instead when installing with

mkdir /mnt/boot && mount /dev/sda1 /mnt/boot

Also, instead of using GRUB, you can use the native Apple EFI bootloader with systemd-boot, since it's binary is installed to the local EFI system partition (/EFI/BOOT/BOOTX64.EFI) by default. After installing normally, install systemd-boot with

bootctl --path=/boot install

and reboot.

2
  • You've misunderstood the purpose of the boot partition! Mac's firmware does not use a canonical layout for EFI. The "boot" partition mentioned in this question and the article isn't /boot but the functional equivalent of a second EFI partiton. I suspect the article is suggesting this because boot.efi is placed in one specific directory and doesn't appear to have alternative directories available. – Philip Couling Feb 6 at 23:04
  • Note that on a mac the EFI partition is often pretty much empty. It exists, but isnt actually used for EFI. – Philip Couling Feb 6 at 23:07
0

If you want to install arch go to https://archlinux.org/ you will find updated information and more then need. However, you should have installed "hfsprogs" before "mkinitcpio -p linux"[1]

1- https://wiki.archlinux.org/index.php/Mac

2- https://wiki.archlinux.org/index.php/MacBookPro7,1

If you are able to login to your mac, install rEFInd and let it search on the installed OS's.

3- https://www.rodsbooks.com/refind/installing.html

Make sure to backup your data.

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.