Comment 4 for bug 1647184

Revision history for this message
Jack Howarth (jwhowarth) wrote :

I finally got this to work. The only real requirement for this to work is the the a boot partition that is FAT32 was exist for the Mac EFI firmware to see and that this partition must contain the fake mach_kernel file and a System/Library/CoreServices/SystemVersion.plist file containing...

<xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<dict>
    <key>ProductBuildVersion</key>
    <string></string>
    <key>ProductName</key>
    <string>Linux</string>
    <key>ProductVersion</key>
    <string>Arch Linux</string>
</dict>
</plist>

The Fedora installer automatically places those files on their installed /boot partition which is why they produce an installation on Macs which is bootable. I was able to reproduce this with the Debian Jessie multi-arch installer (debian-8.6.0-amd64-i386-netinst.iso) which is required for the MacBook Pro 2,1's EFI-32 firmware. Ubuntu needs to use that approach for their next release. It is described at https://wiki.debian.org/UEFI

Support for mixed-mode systems: 64-bit system with 32-bit UEFI
Some systems have been released containing 64-bit Intel Atom CPUs (such as the Bay Trail), but unfortunately use 32-bit UEFI firmware with no BIOS compatibility mode. Using the 32-bit UEFI x86 support, an i386 installation should be possible on these machines but it won't make the most of the 64-bit hardware.

Debian Jessie (8.0) was the first Linux distribution to include full support for mixed-mode UEFI installation on these machines. The multi-arch installation media (available in netinst and DVD form) include the UEFI boot loaders necessary for both i386 and amd64 boot. By selecting "64-bit install" from the initial boot menu, debian-installer will install a 64-bit (amd64) version of Debian. The system will automatically detect that the underlying UEFI firmware is 32-bit and will install the appropriate version of grub-efi to work with it.

The Debian Jessie required the mach_kernel and file to be placed at /boot/efi however because their installer mounts the FAT32 boot partition at the /boot/efi directory level rather than at the /boot level like Fedora.

Note that there appears to be no require to place a boot.efi file at the System/Library/CoreServices directory level as described elsewhere on the net. I suspect that requirement is only present if you use a HFS+ filesystem for the boot partition. However that approach requires that the System/Library/CoreServices/SystemVersion.plist file be explicitly blessed with hfs-bless from the mactel-boot package. This is and the requirement for Journaling to be disabled on the HFS+ volume for the Apple diskutil program makes it more onerous to implement than the simplier FAT32 approach.