FreeBSD on Supermicro servers with UEFI

Trying to set up a new Supermicro server with FreeBSD 10.2 I ran in to some problems. I needed to run ZFS on root for redundancy since this is a JBOD server with no regular RAID controller. The problems seems to be of the same nature as some problems I ran into when trying to install FreeBSD on my HP zBook G2. As many of you might know, FreeBSD 10.2 does not support booting from ZFS when running in UEFI mode. One would think that installing FreeBSD in legacy mode would be sufficient, but to my experience it’s not. Trying to boot from disks with GPT partition tables in legacy mode seems to be failing all over the place. I’ve had this problem on HP, Lenovo and now Supermicro hardware. I have seen this reffered to as the Lenovo GPT bug 1 2, but it seems to be present on a lot of hardware, not only Lenovo.

On my workstation at home I ended up installing the OS on UFS and creating a ZFS pool on the rest of the disk. On my laptop I created a boot environment on UFS and the rest of the operatingsytem installed on encrypted ZFS following this guide. But for a spanking new server none of these options where suitable.

I tried the following configurations with zfs-on-root, and they all failed (in no specific order):

  1. GPT in legacy mode, mirror configuration
  2. GPT in legacy mode, single disk configuration
  3. MBR in legacy mode, mirror configuration
  4. MBR in legacy mode, UFS, single disk
  5. GPT in UEFI-only mode, UFS, single disk

All the above installed just fine, no errors, but they all failed to boot. It seems like the BIOS was not able to find the boot record and thus failing to start the FreeBSD boot loader. I have no idea why the UFS installations refused to boot, they should have worked, but no luck.

I knew that Allan Jude did some work on UEFI booting from ZFS late last year, and that these commits should be ready for FreeBSD 10.3, so I grabbed the RC2-memstick image and installed in UEFI-mode (CMS enabled). And guess what - everything worked right out of the box and the server booted on the first attempt.

So it looks like the UEFI / ZFS boot problems finally are fixed. So if you’re having problems booting FreeBSD with zfs-on-root, use FreeBSD 10.3.