Can I enlarge Mac EFI Partition? And if so how?

1

I've been searching for this forever... By default EFI partition on Mac is 200 MB. I have a special Windows 10 image (enterprise compilation) I would like to install on the Boot Camp partition, which requires that the EFI partition be 500 MB due to the image installer boot.wim file size, which is 290 MB.

The way I tried to do this is first install MS Windows 10 image downloaded from MS website by using Boot Camp Assistant to create and prepare Windows partition, then startup from the USB drive that includes the Windows 10 Enterprise image, deploy the image on top of the Windows partition, and reboot starting up from Windows to continue installation, but because I cannot copy boot.wim file onto the EFI partition, the deployment process cannot continue.

I've been trying different methods to change EFI partition size, using diskpart when starting up from the USB drive with the Windows image, or diskutil when starting up from macOS. None of which allowed me to resize the EFI partition:

  • On diskutil I get: "file system format does not support resizing".
  • On diskpart I get: "You may not extend OEM, ESP, or recovery partitions".

Is EFI partition resizing even possible?

Due to the fact that this is a relatively new Mac, I don't think I'll have any problem reformatting the drive for this to work, and reinstall Sierra from the Recovery Mode, if necessary (Of course if it's possible to change the partition size without losing data, that's the best solution).

erutan

Posted 2016-11-06T13:48:12.427

Reputation: 13

Answers

1

The ESP uses FAT32, so in theory, any tool that can resize FAT32 on a GUID Partition Table (GPT) disk can do the job; however, to do so, you'd need to shrink the partition that follows the ESP by changing its start point. This can be a relatively risky operation, so if at all possible, you should look for another solution. Also, some tools (like GParted in Linux) seem to be more likely to damage a FAT partition when resizing it than to damage other filesystem types.

Several other alternatives exist:

  • It's safer to shrink a partition by moving the end point than by moving the start point. Thus, you might consider shrinking some other partition from its end and create a new FAT partition in the freed space. This should give you space to hold the file(s) you need.
  • In theory, you should be able to store the boot.wim file on an HFS+ partition, since Apple's EFI can read HFS+ just as well as it can read FAT. This presumes, though, that boot.wim won't require write access, and that the file won't need to be read from Windows. Note that most recent OS X installations use encryption or an LVM setup, which the EFI can't read, so you'd need a plain unencrypted HFS+ partition.
  • At least two NTFS drivers are available. One comes with my rEFInd boot manager and the other comes with EFI drivers package. By using such a driver, you could theoretically put boot.wim on an NTFS volume. Some of the same caveats from an HFS+ location apply, but Windows would be able to read NTFS.
  • You could use another disk entirely -- say, a USB flash drive.

Rod Smith

Posted 2016-11-06T13:48:12.427

Reputation: 18 427

Just to extand it a bit: The ESP (EFI system partition) may use any format it wants, but it must support at least the FAT32/EFI filesystem. It may also allow others; Apple has devices which use and boot from a Apple HFS formatted ESP. – Hennes – 2016-11-08T17:00:53.017

No, technically the ESP must be FAT (or, to be more precise, the filesystem that the EFI spec describes, which is basically identical to FAT). The spec mentions in one or two places that it should be FAT32, as opposed to FAT16 or FAT12, when used on a hard disk, but that requirement is pretty soft. An EFI firmware implementation may support additional filesystems (Apple's supports HFS+ and a few support ISO-9660), but using anything other than FAT on an ESP means it's technically not an ESP. It might work on some platforms, but it's not technically an ESP. – Rod Smith – 2016-11-08T23:04:55.787

@RodSmith thanks, I was hoping that I won't need to mess around with Macintosh HD partition starting sector, which follows the ESP, because it means that I have to reformat the drive from USB, remap the partitions sizes to match my needs, and reinstall macOS from recovery mode onto the newly moved partition. I've never done this before and I hope not to cause any issues preventing me from reinstalling macOS. – erutan – 2016-11-11T14:48:32.610

Regarding your suggestions:

  • I thought that boot.wim has to be on the ESP, so having a FAT partition after macOS won't do any good...

  • The boot.wim file is required to finish the deployment of Windows 10 so I can't put it on HFS+ partition.

  • Not sure I understand what you meant, but again, the file is needed on the ESP.

  • < – erutan – 2016-11-11T14:58:07.220

>

  • Installing it on a USB drive means that everytime I need to reboot to Windows 10 I need that flash drive inserted, which is very inconvenient... I thought I can find a solution to put this Windows 10 image on the Boot Camp...
  • I guess I don't have a choice other than reformatting and remapping partitions, and then recovering macOS. I'll wait a little longer for more suggestions before I close this thread. – erutan – 2016-11-11T14:59:32.760

    I'm not familiar with the details of what you're doing with boot.wim (I'm more of a Linux expert, and to a lesser extent OS X; I know relatively little about Windows). Thus, I can't comment on what might or might not be required on that end. My initial comments assumed that you could put boot.wim and whatever else it needs or uses on the same partition, even if it's not the ESP. This might still be the case; I just don't know. – Rod Smith – 2016-11-11T22:39:49.250

    @rod I understand, thanks for your suggestions! Unfortunately boot.wim has to be in the ESP for the deployment process to complete when Windows 10 is booting up. – erutan – 2016-11-13T13:35:20.363

    Keep in mind that you can always do my first suggestion (shrink a partition from the end and create a new FAT partition in the free space), mark the new partition as the ESP, and unmark the first partition as the ESP. That new partition will then become recognized as the ESP by Windows. You can reverse the process when you're done, if you like, but be careful to move any Windows boot loaders installed to the new ESP to the original ESP. You may also need to adjust EFI boot manager entries. – Rod Smith – 2016-11-13T15:23:26.963

    @Rod I just saw your comment, and now I'm intrigued... How can I mark a partition as ESP and unmark the first one? I thought that ESP has to be the first partition on the drive... If this is possible then it would be the best solution, and after I finish deployment I can reverse the process, delete the "fake" ESP partition and re-add it to the main partition... – erutan – 2016-11-27T15:18:26.140

    The ESP is a FAT partition with a type code of C12A7328-F81F-11D2-BA4B-00A0C93EC93B. It does not need to be the first partition on the disk, although Apple puts it there by default. Different partitioning tools offer different ways to change the type code. In my gdisk, it's abbreviated as EF00. In tools based on libparted, it's a "boot flag." AFAIK, there's no way to set a partition as an ESP in Apple's Disk Utility.

    – Rod Smith – 2016-11-28T14:38:34.313

    1Thanks @Rod you helped me greatly! I was able to overcome this by creating another EFI (marking the old one as regular data), performed the deployment and reverted the drive state, and it worked! – erutan – 2017-03-16T15:13:34.403