Running on a Mac Mini?

Hi,

I have a 2009 Mac Mini that's doing nothing and I was thinking it could be put to some good use as a "router on a stick" with OpenWrt. So I wrote the openwrt-18.06.4-x86-64-combined-ext4 image to a USB drive but unfortunately the Mac Mini apparently isn't recognising it and won't boot from it. The same is booting fine from a PC, so it seems to have been written OK. I also tried the openwrt-18.06.4-x86-64-combined-squashfs image with no luck. It is able to boot a Ubuntu Live image.

Does anyone have any suggestions on how to get OpenWrt to run on a Mac, if it's even possible? I guess the ethernet driver may be an issue? The 2009 Mac Mini has an nVidia ethernet controller. I also have a 2006 Mac Mini with a Marvell Yukon ethernet controller, if that would work better.

Thanks!

You will at the very least need to build OpenWrt with UEFI support (which requires https://github.com/openwrt/openwrt/pull/1968 to be merged) - and even then I'd expect additional issues, as Apple's UEFI implementation is rather special (diverging from normal UEFI protocol requirements), so expect further complications and problems there, but it should be possible (depending on how much effort you're willing to spend).

Thanks for that link. Following the link there to http://www.uxgood.org/openwrt/18.06.4/ I found a pre-built EFI image which is booting fine on the 2009 Mac Mini. I then installed the kmod-forcedeth package to get the ethernet working. I haven't tested it much yet but so far so good and it's only using around 20w.

2 Likes

I've noticed a strange thing. If I set the Mac Mini to boot from the USB drive by default then the system will lock up when the ethernet link comes up. But if I use the boot menu (hold down the Control key) and select the USB drive there then the problem doesn't happen. In case anyone else encounters the same problem, you can fix it by adding "msi=0" to the /etc/modules.d/forcedeth file:

forcedeth msi=0

Got it up and running with latest stable
Look at this how to OpenWRT x86-64 UEFI boot = true

// Agge