Adventures installing Haiku to MacBook Pro (11.3, late 2014, on SSD, EFI)


#1

Long post, but some useful info how I got Haiku installed using EFI on native SSD.

For several years, the only way I got Haiku running on the MBP 2014 (11.3) was with USB2 flash devices / external USB2 hard disk over the Mac’s xHCI bus. A warm boot enabled sound (headphone jack only), video was VESA driver (1600x900x32, or 2880x1800x16 (odd), Broadcom 570 network (via thunderbolt adapter), no wireless. Other than temperamental xHCI bus (causing keyboard/mouse/USB disk to die randomly during heavy activity), the laptop was usable with Haiku. Booting into Haiku was via Mac boot selector, and only in BIOS mode. EFI boot via USB stick was 1 in 50 success rate (basically unusable), but legacy BIOS boot worked fine. The laptop had 4 partitions, EFI boot, OSX (latest), Bootcamp Win10 and a spare data partition (sharing due to encrypted volumes when dual booting)

Slight detour due to Ubuntu caused misery. You can skip next 3 paragraphs if you dont care.

So I decided to install Ubuntu 18.04 on USB3 flash drive, thinking I can carry the stick and plug it into any PC. The stupid installer decided to install GRUB on the Windows partition, with a redirect to the USB3 flash drive for the remainder of files. When the USB3 flash drive is disconnected, the laptop can no longer boot into Windows (since the 2nd part required by GRUB is missing). Agony. After many attempts trying to remove GRUB and get Windows 10 booting properly (including installing Refind), I gave up and decided to install Ubuntu 18.04 on the 4th partition (and reconfigure GRUB to use it for it’s remaining files, hence eliminate the USB3 flash device). Linux wasn’t that bad (I develop under Linux at work for embedded hardware). On the plus side, hardware accelerated nVidia GT750 drivers, working Broadcom 4360 wireless, working audio. Actually usable. On the negative side, CPU temperature at 95’C, and laptop CPU fan constantly blowing. Unusable.

In a battle to lower CPU temperatures, I updated to Ubuntu 18.10 (using official Ubuntu upgrade tool), and proprietary nVidia driver wouldn’t boot any more (due to X misconfiguration). Messing with grub command line parameters, booting into run level 3, uninstalling nVidia drivers, installing Noveou (spelling), booting into X, reinstalling nVidia proprietary driver, and finally I fixed my Ubuntu boot issues. Installed alternative display managers, but other than Gnome3.30, they all had major issues in dual monitor configurations with mismatched HiDPI. Still had high CPU temperature. Researching how to lower CPU temperature, disabling ACPI interrupts GPE16 and 17, installing lots of tools to run laptop always in low power battery mode, and slight progress, I dropped the CPU temperature down to 75’c idle, but the fan constantly would come on and off. Annoying, and I’m terrified that prolonged Linux use would cook the laptop, so Ubuntu must go.

Since Windows was kind of hosed, I decided to try to reinstall Windows (hopping to fix the Windows boot problem). I discovered that the 3rd partition had a MBR signature instead of GPT . Huh?!? The Ubuntu installer when it installed GRUB to the windows partition, it modified the signature to get GRUB loading. Some developer struggled to get GRUB loading via EFI on GPT, so they figured they’d convert the signature to MBR and get GRUB booting that way. Crazy. This is probably why I couldn’t fix Windows boot, since Windows will only boot from GPT disks using EFI. Disaster.

Back to installing Haiku.

In one final attempt, I decided to bite the bullet and install Haiku on the SSD (3rd partition, overwrite Windows). Using OSX boot volume selector, it couldn’t find any Haiku parition (and wouldn’t present BIOS boot option either, bummer). However Refind would present EFI Haiku as an option. OK, some progress. Initially none of the icons would light up (using Haiku EFI boot image). Playing with safe mode options and I finally found a working solution:

  • Enable on screen debugging (slows down boot, avoids some timing related race condition)
  • Disable on screen paging (well, no access to keyboard at this stage)
  • fail safe video mode makes on difference.

And we boot into 2880x1800x32 desktop. Yay!!!. Haiku on SSD on MacBookPro 11.3 (late 2014 generation), 4+4 core i7 -4870HQ@2.5GHz, 16Gb RAM.

Interestingly, the only screen resolution available is 2880x1800x32 frame buffer mode (nVidia GT750M - sadly no Intel IRIS available). When I boot from USB2 hard disk in legacy BIOS mode, I get VESA and many screen resolutions (and suprisingly 2880x1800x16 is highest). So I’m stuck in HiDPI Haiku mode (kind of usable, apps which don’t respect system fonts need to be configured individually - including Terminal which should have respected system setting, but easily fixed.).

So there you have it - I was finally able to boot Haikux64 on the built in SSD using EFI boot by enabling on screen debugging and disabling on screen paging. Some people struggling to boot Haiku on newer systems may want to try these options and see the Desktop.

PS> over the weekend, I will remove Ubuntu 18.10 and try to install Windows 10 on the 4th partition (need it for some work tools when travelling).


#2

Small update. I was able to boot a few times without actually activating any safe mode options. But it may require a couple of attempts. Most likely a timing issue during the boot process (before the atom lights up).


#3

Here is another useful bit of information. Using Haiku Installer, when it formats a BeFS partition, it doesnt modify the GPT UUID partition code. It still maintained the previous OS partition code, and the EFI loader would struggle to identify a Haiku partition. I had to manually scan for bootable devices every boot, and play with safe mode settings to get 2 in 3 chances of booting. Once I discovered this issue, I used gdisk (a GPT version of fdisk) to modify the GPT UUID partition code to Haiku (42465331-3BA3-10F1-802A-4861696B7521, from https://en.wikipedia.org/wiki/GUID_Partition_Table). Once I fixed the GPT UUID parition code, Haiku would boot perfectly 100% of the time straight from Refind. The EFI loader would successfully find Haiku and boot it without any safe mode settings.

So when booting from EFI, check that the GPT UUID partition code is correct. You can use the DriveSetup utility to verify that the partition code displays Be File System. I fixed it using Linux tool gdisk (instead of fdisk). Good luck.

PS - potentially our Drive Setup tool would need to be updated so that it writes the GPT UUID partition code of Haiku (42465331-3BA3-10F1-802A-4861696B7521) when formatting a Haiku disk.


PANIC: Did not find any boot partition
#4

Please open a bugreport for this, and also for your timing issues requiring to enable onscreen debug (with a syslog of working/failing boots), and about Terminal not picking an appropriate font size by default - we should make it use the system default fixed font now.

Failsafe video mode makes no difference because we have no nVidia driver anyways, so you will always be in failsafe/VESA mode. When booting in BIOS mode the resolutions are provided by the VESA BIOS, in UEFI the UEFI firmware sets the video mode for us, and we cannot call it later on to change the video mode. We may be able to change it from the bootloader (where UEFI services are still available)? In that case the resolution change would be in the boot menu, not in screen preferences.


#5

As long as it I still configurable in terminal. Using a different font size in terminal can be handy.