After I upgraded to the latest LTS from Ubutnu, namely 18.04, I was finding I could never have more than two kernels installed at a time. /boot kept running out of space and updates would fail. Running
sudo apt autoremove && sudo apt autoclean would resolve the issue until the next upgrade. This was tolerable until I needed to install both a generic and a low-latency kernel.
Looking at my df output it almost seemed as if the upgrade swapped my efi and boot partitions. My efi partition was 500MB and my boot partition only 250MB! The solution I found was to resize the partitions to make the efi partition 100MB and the boot partition 650MB. This process wasn’t as easy or smooth as I initially thought, so I figured I would document what it took to make it work.
Step 1 – Boot a Live USB
First thing you need is to have a liveUSB from ubuntu that you can boot into:
Create a Bootable USB Drive in Ubuntu
Boot into this drive, selecting “Try Ubuntu Without Installing”
Step 2 – Resize the Drives
After Ubuntu boots, open a terminal and type
sudo gparted. In gparted, resize your efi drive to 100MB first, then resize your boot partition into the remaining space. Make sure no flags are set for the boot partition and the boot,esp flags are set for the EFI partition.
When you resize the EFI System Partition, it will change to fat16. This needs to be reformatted back to fat32 to work. Once this is done right click on efi partition, and select New UUID. Once this is done apply all settings and quit gparted.
Step 3 – Install and Run Boot Repair
Now you need to install and run boot repair from withing the live USB environment.
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
Once boot repair loads, click the recommended repair button and follow onscreen instructions.
Once you are done, reboot!