Do I need an separate EFI partition for each OS sharing a common disk


I was installing FreeBSD on my MacBook Air. When partitioning the disk, the installer told me

This partition scheme requires a boot partition for the disk to be bootable. Would you like to make one now? <Yes/No>

The problem is, I already have an EFI partition on my internal SSD, which presumably serves macOS. Do I need to create a different one for FreeBSD?

I've done some painful experiments on this issue:

  • When I chose No, FreeBSD becomes unbootable, i.e. "FreeBSD" is simply not shown in rEFInd's menu.
  • When I chose Yes, "the FreeBSD installer appears to have created a very bad hybrid MBR on your disk, and this is confusing OS X", and thus my disk got corrupted. Fortunately, after I follow @Rod Smith's instruction (created a new protective MBR to replace the bad hybrid MBR), this problem is solved now, but now my disk have 2 EFI partitions.

    Now my internal SSD looks like this:

    sunqingyaos-MacBook-Air:~ sunqingyao$ diskutil list
    /dev/disk0 (internal, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *121.3 GB   disk0
       1:                        EFI EFI                     209.7 MB   disk0s1
       2:                  Apple_HFS Macintosh HD            60.6 GB    disk0s2
       3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
       4:                        EFI EFI                     209.7 MB   disk0s4
       5:                FreeBSD UFS                         53.5 GB    disk0s5
       6:               FreeBSD Swap                         6.2 GB     disk0s6
       7: 83BD6B9D-7F41-11DC-BE0B-001560B84F0F               101.4 KB   disk0s7


    sunqingyaos-MacBook-Air:~ sunqingyao$ sudo gpt -r show disk0
          start       size  index  contents
              0          1         PMBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640  118284248      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
      118693888    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
      119963424     409600      4  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      120373024  104447992      5  GPT part - 516E7CB6-6ECF-11D6-8FF8-00022D09712B
      224821016   12156928      6  GPT part - 516E7CB5-6ECF-11D6-8FF8-00022D09712B
      236977944        198      7  GPT part - 83BD6B9D-7F41-11DC-BE0B-001560B84F0F
      236978142          1
      236978143         32         Sec GPT table
      236978175          1         Sec GPT header

Best Answer

ESPs are usually shared across OSes, so no, you don't need a second one; but it also should not cause problems. That said, some tools or OSes may become confused by the presence of two ESPs. The Windows installer is the only example of which I'm aware. (This affects Windows 7, but I don't know about later versions.) If you run into such a problem, you can always change the type code on the ESP you don't want the Windows installer to use -- even just temporarily. (A temporary change can be useful if you want to install two Windows versions, each with its own ESP.)

The location of the ESPs relative to your other partitions makes deleting either one awkward -- to recover the space, you'd need to move the start point of at least one partition, which is time-consuming and dangerous. This may not be worthwhile to recover only about 200 MB of space -- but then again, your disk is only 120 GB. You'll have to judge just how precious your space is, vs. the time and risk involved.