You are not logged in.
I have a dual-boot configuration consisting of Mac OS X Snow Leopard and Bunsenlabs Helium. I want to be able to boot Mac OS X Snow Leopard from grub2.
The partition arrangement is as follows:
/dev/sda1 40 409639 409600 200M EFI System
/dev/sda2 409640 23845871 23436232 11.2G Apple HFS/HFS+
/dev/sda3 23846912 24319999 473088 231M Linux filesystem
/dev/sda4 24320000 488396799 464076800 221.3G Linux filesystem
As you can see, Mac OS X was installed first. After installing Bunsenlabs Helium, when the grub was installed, it automatically detected the Mac OS X installation and provided two entries:
Mac OS X (32-bit) (on /dev/sda2)
Mac OS X (64-bit) (on /dev/sda2)
However, when choosing either of the entries above, I receive the following error:
panic(cpu 0 caller 0x291d88): "pmap_pv_remove(0x84b6e0,0xffe00000,0x29a): empty hash~@/SourceCache/xnu/xnu-1504.3.12/osfmk/i386/pmap_internal.h:719
I'm surprised this does not work, especially since Bunsenlabs goes to the trouble of detecting there is a Mac OS X system.
Following some guides online, I edited the /etc/grub.d/40_custom file and added the following entries:
menuentry "Chainload Mac OS X Snow Leopard v10.6.8" {
set root=(hd2)
chainloader +1
}
menuentry "Start insmod Mac OS X Snow Leopard v10.6.8" {
insmod hfsplus
set root=(hd0,2)
multiboot /boot
}
Then updated the grub:
sudo update-grub
with the following result:
Generating grub configuration file ...
Found background image: .background_cache.png
Found linux image: /boot/vmlinuz-4.9.0-6-amd64
Found initrd image: /boot/initrd.img-4.9.0-6-amd64
Generating custom entry for: /boot/vmlinuz-4.9.0-6-amd64
initrd image OK: /boot/initrd.img-4.9.0-6-amd64
Found Mac OS X on /dev/sda2
done
However, when choosing either of the entries above, I receive the following error:
error: file `/boot` not found.
What am I doing wrong?
I read that this should be easy to configure Mac OS X entries for grub2, especially for releases prior to Yosemite.
Last edited by jimjamz (2018-08-30 05:41:39)
Offline
I had already read that article, and found it didn't help me solve my issue, yet I don't know why my setup is different.
In the Mac OS X system, I located the .efi at the same location you had specified. I modified the grub entry as follows:
menuentry "Start insmod Mac OS X Snow Leopard v10.6.8) (hd0,2)" {
insmod hfsplus
set root=(hd0,2)
multiboot /System/Library/CoreServices/boot.efi
}
However, when selecting this in grub, I receive:
error: multiboot header not found
I know that it can see the boot.efi file, because if I attempt to look for boot2.efi in the same location, I receive a 'boot2.efi not found' error.
I copied the boot.efi file to /boot/efi/EFI/APPLE/ and made the entry:
menuentry "Start insmod Mac OS X Snow Leopard v10.6.8) (hd0,2)" {
insmod hfsplus
insmod part_apple
set root=(hd0,2)
multiboot /EFI/APPLE/boot.efi
}
But again, I receive the same error:
error: multiboot header not found
Offline
so adapting it to what you already posted,
menuentry "OSX" { insmod hfsplus insmod part_apple insmod chain set root=(hd0,2) chainloader /System/Library/CoreServices/boot.efi }
might do the trick. If chainloader doesn't find the EFI executable, then try again the path to the copy you made on the EFI partition.
Yes, this worked successfully! I didn't think to to use the 'chainloader' command. Thanks very much!
Strangely, a the grub entry to the other location (/boot/efi/EFI/APPLE) where I copied the boot.efi to did not work and reported the 'boot.efi could not be found'.
That said, I'm happier to use the boot.efi in its original OS X location.
Offline