EFI System Partition (ESP) size and commentary

This is the list found at the archwiki for minimum size recomendation.

So, yeah, we have special considerations like sector size, multiboot, and poor/old UEFI implementations.
All things to be aware of.
And theres nothing wrong with using an esp thats a little too large aside from the wasted space.
But … its still special cases that it would be of any concern to need to enlarge it beyond 200mb or more.

PS.
Of course if you mount your ESP to /boot then all this size requirement stuff can start to make sense. Because then it will grow, for example, with every kernel you install. But you shouldnt have done this because its not the provided default, and its probably the most risky way to multiboot, because then your boot files are accessible by the other OSs.

1 Like

200mb is a safe size for the ESP, allowing for some growth for those reasons listed; it’s also the default size on MacOS (for trivia sake).

In my case 300mb is more practical, as I not only multiboot more than two Operating Systems, but also house additional bootloaders (some with theme files).

Well sure…
“But I put lots of stuff there” will also be considered an extraneous circumstance. :sweat_smile:
Like … you could install multiple memcheck type softwares … and it would grow. Most everyone would have one at most … but you could push the size by adding multiple. etc etc.

The big bumps are;

Sure, 200mb, is a reasonable size.
My intention here wasnt to convince anyone to make it tiny … just that theres a lot of talk about ESPs needing to be ~some size~, seemingly with some attached confusion.

Plus the confusion and misinformation surrounding the ESP vs. the boot directory, that you alluded to earlier, just keeps on rearing its ugly head. I’ve seen threads drag on past their useby dates on those topics. :slight_smile:

100MB should be a sufficient size for the ESP to handle both systems. I have separate ESPs for Manjaro and Windows 10. But looking at a df -h output, I have 100MB for W10, with 28MB used. Likewise for Manjaro i have 33MB with 6MB used. So I don’t think having one 100MB size ESP serving both systems would be an issue.

Same, well, not same because its a single ESP … but it clocks in at 32M

32M     /efi

There has been some upheaval recently because of growing sizes of things like the nvidia modules.
…The thing is … those shouldnt be in your ESP. They should be in /boot/ somewhere, sure, but thats not the same as /boot/efi, let alone /efi as is my case and the current upstream recommendation.

(though calamares, and manjaro in general, has not really caught up to these recommends)

Heres the section on the mountpoints

https://wiki.archlinux.org/title/EFI_system_partition#Typical_mount_points

Heres the ESP archwiki page

https://wiki.archlinux.org/title/EFI_system_partition

100MB should be a sufficient size for the ESP to handle both systems. I have separate ESPs for Manjaro and Windows 10. But looking at a df -h output, I have 100MB for W10, with 28MB used. Likewise for Manjaro i have 33MB with 6MB used. So I don’t think having one 100MB size ESP serving both systems would be an issue.

Depends entirely of the OEM manufacturer, how many backup and recovery tools are stuck there. We recently had a topic about a HP laptop, and the 100MB ESP was 92MB full from the factory. Windows itself is about 30 Meg, because of all the translations to different languages.

I would go on the safe side with 200MB at least, just to be future proof.

Sorry to all involved, splitting here accidentally swapped some of the post order.
It seems mostly intelligible anyways but sorry. :person_shrugging:

I’m confident you’ll get it penguin-perfect next time. :wink:

This thread is food for thought. :ok_hand:

I have been allocating a 128M partition for ESP which is fine for single boot (Manjaro) at least; separate 512M for /boot which is enough to keep a handful of Manjaro kernels with room to spare (not so for the Mint system, as those Ubuntu kernels are way larger than ours … in that case, 1024M for /boot).

Note that although this machine is still using legacy boot I always include the EFI partition “for future use” (I only use GPT these days, regardless of how it’s booted, might end up converting this one to EFI boot at some point, if it’s deemed “worth it”). Has the small bios_grub.

If I may add one one more tidbit, in regards to

When dual booting with Windows, the size should be at least 300 MiB for drives with a 4096 logical sector size…

When installing with the Calamares, on a bare drive, the 300MB is formatted, so you will have to give it just a little more.

Do note the sector size though.
It is still not common for it to be set 4096.

You can check with something like sudo fdisk -l

In my case … all 512. Besides the zram, but thats not being used for an ESP obviously.

Because people who don’t really understand why spreads the info, chained to other of the same level, probably indefinitely. This is in the same realm as swap size, most just read and set it to 1.5-2x of their RAM, without understanding why, or even whether they need it in the first place.

1 Like

Unless you have another, Linux extended boot partition (XBOOTLDR), and you’re using systemd-boot, there is no other way than to have kernels and initramfses on efi partition.

Ah yes, systemd-boot.
I wasnt familiar with XBOOTLDR.
But that does seem to be a viable option for keeping the kernel and initram separate from the ESP.

https://wiki.archlinux.org/title/Systemd-boot#Installation_using_XBOOTLDR

I never managed to make it work to be honest. I really don’t mind having stuff on ESP. On work laptop I have 5GB ESP, so I can have some bootable squashfs files there. :smiley:

And then I just have a hook to copy UKIs to btrfs on /boot.

At face value, your analysis might be plausible. Except that when mulibooting, the additional size could be critical, going forward; as additional OS and non-OS bootloaders and features are added into the mix. This is a natural extension of multibooting, afterall, as we are no longer limited to a simple dual-booting scenario.

So, it’s subjective, really – size matters; unless it doesn’t.

That makes better sense to me; with respect filesystems; there is something about storing kernel and related files on a vfat volume (of any denomination) that chills me to the bone.

1 Like

Depending on how many initramfs and Kernel images on FAT32 partition when not using GRUB.

I see my custom Kernel 6.7 size 13 MB + initramfs size 40MB without Nvidia module.
(I guess a size of Nvidia module is probably 100 MB+)

For my encrypted laptop I have planned properly:

  • limine on an ESP 2 GB for my main OS due to the snapshot list including different versions of initramfs and kernels in boot menu.
  • systemd-boot on other ESP 800 MB for a small “rescue” OS (including chroot ability and testing new Kernels).

I’ve never done that and until I read these posts didn’t know it was even an option. I use GRUB and separate /boot partition; not tried systemd-boot so I guess this is different.

Then dont use systemd-boot I guess … unless you can make use of XBOOTDLR (and it works).

For grub users who didnt mount the ESP to /boot … then we dont mix them … and its again unlikely to need very much space.