I was having exactly the same problem whilst installing Ubuntu 20.04.2.0 LTS on a 2020 MacBook Pro with a 2 GHz Quad-Core Intel Core i5 processor using macOS Big Sur Version 11.1. After spending two days trying to get it to work I finally found a solution. Be warned it is a long process.
From my research I found that the issue is due to the Mac bootloader expecting the EFI partition to be formatted as HFS+ where the Ubuntu installer formats it as VFAT (as stated by Rohith Madhavan here).
To get around this issue I found three possible solutions:
- Use Rohith Madhavan's method.
- Swap your bootloader from GRUB to rEFInd.
- Install Ubuntu on an external SSD using Floris van Breugel's method.
Option one was posted seven years ago and required adding an unsigned repository to my Ubuntu installation (which I wasn't willing to do for security reasons). I didn't understand the full implications of swapping from GRUB to rEFInd so I wasn't comfortable using option two and finally, I didn't want slow memory access by using an external SSD so I didn't want to go with option three.
My final solution was to use parts of options one and three to make my own GRUB config file formatted in HFS+ so that I could boot Ubuntu from a partition on my internal SSD.
Whilst the process shouldn't cause you any issues, if a mistake occurs it could wipe your drive. As a result, it is always safest to back everything up before progressing.
- Open up Disk Utility on your Mac.
- Select your
Apple SSD drive (make sure to select the parent drive not the container).
- Select "Partition".
- Hit the plus button and create a new partition called
Ubuntu Boot Loader with format
Mac OS Extended (Journaled) and size 128MB. This will serve as the location for your Ubuntu bootloader later on.
- Hit the plus button again and create another new partition called
Ubuntu with format
MS-DOS (FAT) and allocate it the memory size you want your Ubuntu installation to have (I would recommend no smaller than 50GB).
- Download Ubuntu from here.
- Plug in a USB and go to Disk Utility. From here locate the USB, hit
Erase, select the format
MS-DOS (FAT) and choose the scheme
GUID Partition Map then hit
- Use Etcher to flash this ISO file onto a USB. Be warned this will wipe the entire USB (see this for more details).
- Restart your computer hitting
Cmd+R on reboot. This will put you into recovery mode.
- Sign into your account, go into the menu location
Utilities, select the first thing in the drop down menu and change the settings to
No Security and
Allow booting from external drive.
- Turn off your computer.
- Plug in your bootable USB drive and turn on your computer whilst holding down the
- Select the EFI boot drive (should be yellow). It might show you a warning saying
Update Required. Hit the
Update option. This will restart your computer. Make sure you are holding
Option when it turns back on. Then click on EFI boot again.
- Follow steps one to five from here.
- On the
Installation Type page select
- Locate the
MS-DOS (FAT) partition you made and hit minus.
Free Space and hit plus.
- Create your Linux memory space by choosing how many GBs you want, choose
Ext4 Journaling File System, check
Format the partition and have the mounting point as
Free Space and hit plus.
- Create your Linux swap space, use the remaining memory and choose
swap as the format.
Device for boot loader installation select the partition where your
ext4 formatted memory is.
- Continue the installation process. You will again see the
grub-install /dev/nvme**** failed warning but don't worry. Just hit restart. You will be asked to remove the USB and then hit
You will now have Ubuntu installed on your computer, but your GRUB bootloader won't be able to open it without some help.
Getting into Ubuntu
- Restart your computer and hit the
Option key when booting.
- Select the EFI boot drive (this is your Ubuntu installation).
- You should be displayed with a GRUB terminal.
- Follow these steps that Rohith Madhavan outlines:
At the grub console, type ls
(memdisk) (hd0) (hd0,msdos) (hd1) (hd2) (hd2,gpt3) (hd2,gpt2) (hd2,gpt1)
You may not get exactly the same results as this, but you’ll have some similar options.
Now, find the partition which contains your user's home directory.
grub> ls (hd2,gpt2)/home
Keep trying until you find it.
The result from the last step has two parts: (hdX,gptY). You need to keep the hdX part, but go through all the gptY options looking for a /boot/grub directory.
grub> ls (hd2,gpt2)/boot/grub
unicode.pf2 [...] grub.cfg
Now you want to set this as your root for further commands.
grub> set root=(hd2,gpt2)
The only way to boot properly was to use the UUID of the drive. To get it -
grub> ls -l (hd2,gpt2)
Note down the UUID. You'll have to type it manually in the next step.
grub> linux /boot/vmlinuz .efi.signed root=UUID=〈the UUID from above〉
The GRUB console can do tab completion, so if you just type out the vmlinuz part and hit tab, then hit . and tab again, you won't have to type the whole file name. make sure that the efi.signed part is present.
Now, set the initial RAM disk
grub> initrd /boot/initrd〈...tab here!...〉
You should be able to boot with the command
You will now be in your Ubuntu installation as if everything was installed correctly. But every time you restart you have to repeat this process. To work around this you can do the following.
If you are experiencing issues:
Confirm that the UUID you received from before is located in your distribution's grub.cfg under /boot/efi/EFI/ (ex. /boot/efi/EFI/ubuntu/grub.cfg) in the line
search.fs_uuid SYSTEM-PARTITION-UUID-HERE root. If not, copy-paste the line with the current value and prepend with a comment line (#), and on your new line, replace the
SYSTEM-PARTITION-UUID-HERE with your UUID of your ubuntu partition.
Permanently Fixing the GRUB Issue
Here you want do reformat the VFAT boot loader that the Ubuntu installation made by default to HFS+. This can be done by making your own boot loader config using GRUB. The method I used was the same as what Floris van Breugel did (but on my internal SSD instead of an external SSD).
- Following the instructions starting from the heading
Making Ubuntu bootable part 1 from this all the way to the end of
Turn SIP back on (for security). The only changes are the disk your should reference is your internal
Ubuntu Boot Loader partition (you do not need an external drive with this partition.
- Restart your computer holding down the
Option key during boot-up. You will now have two EFI boot drives. Go into the far left one. It should say you need to install an update for this to work. Click
- During reboot hold down the
Option key again and then select the middle EFI boot drive. This will take you to the GRUB screen again. Wait a minute or two and it should then take you to the Ubuntu loading screen.
YOU ARE ALL DONE. You should now be able to boot Ubuntu and MacOS now.
Hope this works for you.