I recently worked with a client who had an issue with deploying updates to one specific model of machine. Using the same image on any other hardware updates worked just fine, but for this line of workstations it did not. Of course where we all thought the issue might reside is with a bad driver, but when they couldn’t isolate the issue they called me in to take a look.
Turns out that a step in the task sequence was the culprit. Microsoft’s guidance to creating the standard partitions on a Windows machine includes a statement that the System Reserved partition should be a minimum of 100MB. Starting in Windows 7 that was the default for an installation. Moving to Windows 8 / 8.1 that default got increased to 350MB. Currently in Windows 10 that default is 500MB (supposedly - in my lab every machine that I built with a basic installation ISO only had 100MB allocated to it - so your results may vary). In ConfigMgr the default when creating a new task sequence for imaging is 500MB. This particular task sequence had this partition set for 100MB. So what is the deal with this system reserved partition anyways?
This is the boot partition. According to Microsoft the “partition is managed by the operating system, and should not contain any other files, including Windows RE tools.” In reality this partition houses some things from Microsoft, like fonts for installation media (what?) and the things required to boot a BitLocker drive. Since this partition isn’t encrypted and is the active boot drive it becomes a nice place to store things like say… firmware updates?
Microsoft states that updating a Windows 10 OS (read - feature upgrades) needs around 15MB of free space on this partition, and 13MB for regular updates. (see this KB article). Unfortunately, for some manufacturers, the cleanup process to remove their firmware update files from this drive does not go as planned. In my case the client had 1MB of free space left on this partition (from 100MB).
So what do we do in this situation? Well you can try two different things and I’d suggest you do them in this order:
- Delete the fonts files from the partition. Easy?
- Use bdehdcfg.exe to “prepare” the disk for BitLocker. Probably won’t work
- Resize the partition. Hard :(
Delete the Font Files
Microsoft has a pretty decent guide that covers multiple operating systems, GPT, and MBR. The guide is here. The steps for a GPT partition on Windows 10 (which is likely what you have if you’re reading this now) are as follows:
- Run command prompt as an administrator
- Run “mountvol Y: /y” without quotes
- Navigate to Y:\EFI\Microsoft\Boot\Fonts and delete everything in that folder… or “del *.*“
This should free up about enough space to update Windows. You may need to do this in the future again, so it’s not going to help you in the long term. That is unless you automate the process on a semi-regular basis. If you’ve got ConfigMgr, you could run a batch script to handle this. You might also try to find other files on that drive to remove (like manufacturer firmware updates).
What happens if 13MB (or whatever you can scrape off the disk) just isn’t enough though?
Use Bdehdcfg.exe to “Prepare” the Disk
You can try use the Bdehdcfg.exe to “prepare” the volume for “BitLocker” which essentially creates this partition for you. The issue with trying to run this command is that if the partition already exists, the system will probably tell you that the drive is already prepared.
bdehdcfg.exe -target c: shrink -size 550
Honestly though, I have not seen much good luck with this particular process since GPT disks already have this EFI system partition created. Sorry :(
Resize the Partition
Here’s my disclaimer - I have no idea the viability of this process. It is not officially supported and requires a third-party utility to do it.
Here’s the rub: when the partitions are created, they’re created sequentially on the disk. Meaning that you allocated 100MB up front for the EFI partition, probably 16-128MB for the ESR partition, and then the rest of the space for your system drive. So when you want to expand the drives, we have to move the system partition a little further forward on the disk. Windows doesn’t have a built-in utility to do this (only shrinking the drive from the end of the partition, not the beginning). There are third-party utilities that have the ability to do this. Unfortunately, this process is also not automated - so if you’re stuck with thousands of machines to fix I tip a virtual glass to you.
Here is a link to a site that claims to have the utility to do the work. BIG FAT DISCLAIMER: I have not used this software or this particular process, so please test test test before you try using this in a production environment. https://www.easeus.com/partition-master/how-to-resize-efi-partition-windows-10.html
I am going to try to find a more automated way to complete this process (shrinking the drive), but in the meantime hopefully this will get you out of a bind.