I am trying to set up Arch to boot using an EFI stub and rEFInd on a late 2013 Macbook Pro. I cannot get past the "rEFInd - Booting OS screen". I installed rEFInd to my OS X partition (I am dual-booting) using the --nodrivers option. I also enabled "scan_all_linux_kernels" and "also_scan_dirs" in refind.conf. I then installed drivers for ext2 and ext4 in the refind directory.
My partition table looks like this:
/dev/sda1 -- EFI
/dev/sda2 -- OS X
/dev/sda3 -- OS X Recovery
/dev/sda4 -- extra partition
/dev/sda5 -- boot -- ext2
/dev/sda6 -- root -- ext4
/dev/sda7 -- home -- ext4
My refind_linux.conf in /boot (/dev/sda5) looks like this:
"Boot with defaults" "root=/dev/sda6 rw rootfstype=ext4 add_efi_memmap systemd.unit=graphical.target nomodeset"
"Boot with defaults" "root=/dev/sda6 rw rootfstype=ext4 add_efi_memmap systemd.unit=multi-user.target nomodeset"
Interstingly, if the Arch live disk is plugged in when I start rEFInd then the menu entry for Arch (not the live disk, my actual installation) works, but without the live disk plugged in, it hangs. Obviously I did something wrong and missed something but I am not sure what.
Last edited by PhineasRex (2013-11-24 21:11:18)
I have a few shot-in-the-dark suggestions, none of which is guaranteed to work:
Try specifying your disk by UUID, as in "root=UUID=5f96cafa-e0a7-4057-b18f-fa709db5b837", rather than by device ID, in refind_linux.conf. It's conceivable that the presence of your live disk is changing the partition identification. That said, I'd expect it to work the other way around -- that is, to work without the live disk and fail when it's inserted -- if this were the case. Still, it's worth trying.
Try removing the rEFInd ext4fs driver. With an ext2fs /boot partition, you don't need the ext4fs driver, so its presence is more likely to cause problems than to do any good. (Ideally it will just be neutral, but who knows....)
Try copying your kernel, initial RAM disk, and refind_linux.conf file to your (presumably FAT) ESP (/dev/sda1). If this works, you could simply mount the ESP as /boot to simplify system maintenance.
Try adding an explicit initrd= reference to your boot options in refind_linux.conf. (You can test this without changing the refind_linux.conf file by hitting F2 or Insert twice to edit the kernel options line.)
I actually started out with UUID and changed it to the device id after the former did not work. I removed the ext4 driver to no avail.
Rather than copying the kernel to the ESP, I formatted my extra 100MiB partition (/dev/sda4) to FAT and copied /boot to there, which worked.
Anything I should know about using a FAT partition as my /boot partition? It seems to me like it should be fine (I've just never done it before).
Under Arch, a FAT /boot partition should be fine. Some distributions (IIRC, OpenSUSE is one of them) put symbolic links on /boot, and that obviously won't work with FAT, but Arch doesn't do this. In fact, a lot of Arch users mount the FAT ESP at /boot, so using FAT for /boot is pretty well-tested under Arch.
FWIW, the rEFInd filesystem drivers work well for most people, but they do cause problems for some. This seems to be an interaction between the driver and the firmware. FWIW, rEFInd 0.7.5 included some changes that were intended to help with filesystem issues on some Macs. Are you using rEFInd 0.7.5 or something earlier?
I am using 0.7.5. I also tried the variant package as well but that made no difference.
Thank you so much for your help (and for rEFInd).