You are not logged in.

#1 2013-12-15 18:46:15

_will
Member
Registered: 2004-07-08
Posts: 123

rEFInd, 64bit Arch, and a 32bit EFI (MacBook 2,1 2007)

I installed rEFInd on a 32bit EFI MacBook, and after copying the filesystem drivers into /efi/refind/drivers, was able to boot into an UEFI stripped install cd.  I ran through the install, taking notes from the MacBook wiki entry

I am under the impression that rEFInd should do magic and find linux inside /boot (as suggested here) but the automatically generated "Legacy" OS entry fails: "Operating system missing."  Perhaps because the kernel EFI stub is 64bit while the EFI is 32?


My failing manual menuentry errors with "Error: Not Found While Loading vmllinuz-linux." I suspect this is because I do not have the partition labeled correctly (see diskutil and gptfdisk outputs) or am expecting rEFInd to be able to read into places it can not. But am mostly totally clueless.

I also did some configuration before realizing /efi/ on the mac partition is different than the ESP (EFI system partition) and am still unclear how the two are related.


Any one have success with a similar setup?


» /usr/local/Cellar/gptfdisk/0.8.8/sbin/gdisk -l /dev/disk0
...
Found valid GPT with hybrid MBR; using GPT.
...
Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409639   200.0 MiB   EF00  EFI System Partition
   2          409640       208349631   99.2 GiB    AF00  _DS_DEV_DISK_X_
   3       208613376       312580095   49.6 GiB    8300  Arch
» diskutil info /dev/disk0s3
   Device Identifier:        disk0s3
   Device Node:              /dev/disk0s3
   Part Of Whole:            disk0
   Device / Media Name:      Arch

   Volume Name:
   Escaped with Unicode:

   Mounted:                  No

   File System:              None

   Partition Type:           0FC63DAF-8483-4772-8E79-3D69D8477DE4
   Bootable:                 Is bootable
   Media Type:               Generic
   Protocol:                 SATA
   SMART Status:             Verified

   Total Size:               53.2 GB (53230960640 Bytes) (exactly 103966720 512-Byte-Blocks)
   Volume Free Space:        Not Applicable

   Read-Only Media:          No
   Read-Only Volume:         Not applicable (no filesystem)
   Ejectable:                No

   Whole:                    No
   Internal:                 Yes
» sed -e 's/#.*//;/^$/d' /efi/refind/refind.conf  # no disabled menuentry is shown :)
timeout 20
scan_all_linux_kernels
menuentry "Arch Linux Core Kernel" {
    icon /EFI/refind/icons/os_arch.icns
    volume Arch
    loader vmlinuz-linux
    initrd initramfs-linux.img
    options "root=UUID=2c17e506-1d6a-433e-9f63-12ea59cc779b rootfstype=ext4 rw loglevel=6 printk.time=y"
    ostype Linux
    graphics off
}
» ls /efi/refind/drivers/
ext2_ia32.efi     ext4_ia32.efi     hfs_ia32.efi      iso9660_ia32.efi
» ext4fuse /dev/disk0s3 /Volumes/Arch
» ls /Volumes/Arch/boot
initramfs-linux-fallback.img  initramfs-linux.img           refind_linux.conf             vmlinuz-linux

Offline

#2 2013-12-15 20:05:52

srs5694
Member
From: Woonsocket, RI
Registered: 2012-11-06
Posts: 719
Website

Re: rEFInd, 64bit Arch, and a 32bit EFI (MacBook 2,1 2007)

EFI is restricted to booting same-architecture images. Thus, on a Mac with a 32-bit EFI, rEFInd should be able to boot a 32-bit Linux kernel, but not a 64-bit Linux kernel. There are ways around this limitation, though. Some EFI boot loaders can boot cross-architecture, although I don't recall the details. Try GRUB (Fedora's patched Legacy or 2), ELILO, and SYSLINUX if you want to investigate this possibility. Booting in BIOS/CSM/legacy mode is also an option, and one that's certain to work; but this requires that you set up a hybrid MBR because Apple's EFI activates its CSM only if a hybrid MBR (or a conventional MBR) is present on the disk.

Of course, you could also install a 32-bit version of Arch on your computer. I'm not sure what sort of boot support the 32-bit Arch images have for EFI, though.

Offline

#3 2013-12-15 22:00:37

_will
Member
Registered: 2004-07-08
Posts: 123

Re: rEFInd, 64bit Arch, and a 32bit EFI (MacBook 2,1 2007)

Thanks for the link!  It's unclear to me what happens when a bootloader is installed to the MBR in the hybrid partition table.  Mac will go into BIOS mode and use that bootloader? EFI will still take precidence and rEFInd will give an option to boot to the MBR (is that what happens now, and the reason for the no OS found error?)


I thought going to EFI-installed grub or syslinux through rEFInd might work. I'm able to use the 64bit kernel on the install CD.

Unfortunately, --target=i386-efi as suggested by the grub wiki doesn't work. Expected files are missing

» ls /Volumes/Arch/usr/lib/grub
i386-pc/    x86_64-efi/
» egrep '368-efi|32' /Volumes/Arch/var/lib/pacman/local/grub-1:2.00.1282.g5ae5c54-1/files
usr/lib/grub/i386-pc/adler32.mod
usr/lib/grub/i386-pc/efiemu32.o
usr/lib/grub/x86_64-efi/adler32.mod
etc/default/grub	a03ffd56324520393bf574cefccb893d

is there an alternative grub package?

[I'll be back with an edit after backing up the mbr and trying syslinux ]

Offline

#4 2013-12-16 05:52:21

the.ridikulus.rat
Member
From: Indiana, USA
Registered: 2011-10-04
Posts: 765

Re: rEFInd, 64bit Arch, and a 32bit EFI (MacBook 2,1 2007)

@_will: Arch dev do not officially support cross-ARCH EFI installation (not even with non-EFISTUB bootloaders like GRUB).

But you can rebuild GRUB pkg with i386-efi files included which will enable you to install in your Macbook's EFI, but this required slightly modifying the PKGBUILD. I maintain the grub-git pkg in AUR and I have made the required changes to support i386-pc, x86_64-efi and i386-efi all in one grub-git-x86_64 pkg, but this is disabled by default (change _GRUB_IA32_EFI_ARCH_X64="1" in PKGBUILD to enable it).

Offline

#5 2013-12-16 17:14:25

srs5694
Member
From: Woonsocket, RI
Registered: 2012-11-06
Posts: 719
Website

Re: rEFInd, 64bit Arch, and a 32bit EFI (MacBook 2,1 2007)

You could try grabbing a 32-bit EFI binary for whatever boot loader you choose to use. You should be able to find something in the binary repositories for any number of distributions, but you'll probably have to unpack it and install the files manually, which means you'll have to know a bit about what goes where. My EFI Boot Loaders for Linux page may be helpful, but it's not a step-by-step guide for this sort of thing.

As to the boot process, when you've got a hybrid MBR with an installed BIOS-mode boot loader, the Mac will boot OS X or rEFInd or whatever it's configured to boot. IIRC, you can use OS X's own boot selector tool (I don't recall its name, offhand) to switch between OSes, or you can hold down the Option key at boot time to do so. The usual way with rEFInd, though, is to set rEFInd to boot by default, and it will then provide you with the option to continue on via the Apple EFI boot loader to OS X, via an EFI-mode Linux boot loader, or to do the BIOS/CSM/legacy boot through to Windows or BIOS-mode GRUB.

Offline

Board footer

Powered by FluxBB