What is a complete recipe for installing a modern (18/20/22) single-boot Ubuntu LTS on a Mac (Mac Mini, iMac, MacBook, ...)?

My objective from selecting Ubuntu is to have a local Linux machine that mirrors an AWS instance—for experiments that iron out differences (Docker, etc) between developing on macOS and deploying on Linux. Any distro (Ubuntu, CentOS, Debian, Fedora, Suse, Arch, in this order) is fine. For Docker etc use cases, they will all be identical.

Single-boot should be simple, particularly for those who anyway have a more recent Mac. A recipe for dual-boot (macOS + Linux) would also be good.

  • 1
    Looks like great content for an answer and we can make the question easy to search by summarizing the ask.
    – bmike
    Dec 7, 2019 at 16:37
  • 1
    @bmike I see your point. I'll tell you what: If you identify the one or two points that are tripping me in the recipe above, and post a one- or two-liner answer that does the trick, I'll maintain your answer to make it a self-contained answer (and perhaps simplify the question afterwards to be a one- or two-liner).
    – Calaf
    Dec 7, 2019 at 16:40
  • Aah. I thought you were working this up as the way to to it. No worries. We can host both versions. You’re not wrong. It’s a mater of preference how to ask. I like to make the question short and post a partial answer, but that is like/preference, not mandatory.
    – bmike
    Dec 7, 2019 at 17:18
  • My 15" Macbook Pro late 2013 has thermal issues with Linux. This article helps for disabling GPE events. Used with conjunction of mbpfan and/or macfanctld: medium.com/@racter/…
    – modlin
    Dec 7, 2019 at 20:41
  • @bmike You're right, of course. It's much better as a proper Q&A. Here is my attempt.
    – Calaf
    Apr 30, 2023 at 15:47

2 Answers 2


You are trying to boot from the flash drive after you have installed Ubuntu. Instead, you need to boot to GRUB installed on your internal drive. This can be done by pressing the esc key once immediately after selecting Ubuntu from the Start Menu. (I assume here you installed for a UEFI boot.) It took me a couple tries before getting the hang of it. Once booted to GRUB, you can add nomodeset, then proceed to boot to Ubuntu.

First thing I would do is turn the GRUB menu back on. Below are the steps to do so.

  1. Press the keyboard combination control+option+T to open a Terminal window.
  2. Enter the command sudo gedit /etc/default/grub.
  4. Save and exit the editor.
  5. Enter the command sudo update-grub.

To add nomodeset to GRUB, follow the same steps as above, except change step 3 to the following.

  1. Change GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" to GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset".


  • It really is as simple as you describe, which makes me wonder how difficult it would be to suggest a patch so that a future Ubuntu (there is no point in adding to the existing already formidable number) release would work on some subset of Macs.
    – Calaf
    Dec 8, 2019 at 13:32
  • If you are installing for a dual boot with macOS, then the GRUB menu is enabled by default. So, you do not have to press the ESC key. When Ubuntu is the only operating system, then the GRUB menu by default is hidden. Dec 8, 2019 at 13:38
  • Brilliant! I began my quest to install LinuxMint on my late 2011 17" MBP yesterday, but it failed - perhaps due to not knowing to press the esc key, perhaps something else? I burned an iso to USB using balenaEtcher, boot fm USB by holding option key. I get a bit of text, but it never leads to anything. I was trying to install to a new, blank SSD - is that what you did?
    – Seamus
    Mar 18, 2020 at 1:17
  • I gave up on LinuxMint - at least temporarily to try your Ubuntu recipe. The nomodeset option seems to be a key to making this work. I say this 'cause LinuxMint "compatibility mode" gave me console output for a bit, but stopped at a line that sounded like adjusting the video config. However: After starting the Ubuntu install, it says "This computer currently has no detected operating systems". I've re-thought the single-boot idea, and for now would prefer to retain my High Sierra install - any thoughts? Shouldn't Ubuntu recognize that macos is installed?
    – Seamus
    Mar 18, 2020 at 7:00
  • @Seamus: I believe a tested my answer using VirtualBox. In other words, I never actually installed any version of Linux on a physical drive. Mar 19, 2020 at 0:29

This is an ongoing recipe; it is work-in-progress

Recipe for Installing Single-Boot Ubuntu on a Mac

  • Download the Ubuntu ISO. Download Etcher. Use Etcher to prepare a USB flash.
  • Insert flash. Press Option before chime. Choose EFI. [Puzzle: Why do two instances of EFI appear, both from the installation flash disk?]
  • Press 'e'. Replace quiet splash with quiet splash nomodeset.
  • Install Ubuntu on Mac's disk.

After less than 10 minutes we're now essentially done. The most important remaining to-do: setting up a wireless (Broadcom) driver.


  • This recipe for setting up the wifi router doesn't work. The 'additional driver' tab is empty.

  • This recipe works, but it's necessary to restart after each trial, and the first restart took a while—it appears to initiate an update that lingers after the command-line prompt returns. Short version: Control-Option-T (terminal). sudo apt-get update. Do something else. Reboot. Perhaps wait again. sudo apt-get install firmware-b43-installer. Reboot.

  • Find the machine's IP address on the local network by running sudo apt-get net-tools followed by /sbin/ifconfig -a.

  • Install/launch ssh server daemon by running sudo apt install openssh-server.

Booting from the Mac's disk will hang at the splash screen. The nomodeset addition needs to be saved. [There may well be a quick exit at this point for a headless Linux instance (that's what one gets from AWS anyway). But let's keep that for a sequel. In this case we're after a working (KDE, etc) set up.

The following is from these three recipes.

Introduce nomodeset to the boot script

  • Boot once again from flash (press 'option'; press 'e'; adjust 'nomodeset').
  • This time abort installation ('quit'). Launch the terminal (pressing the nine-dot icon brings up a search bar).
  • Use gparted (How to reveal this on the command line? mount? parted -l? fdisk /dev/sda?) to determine the ext4 partition. Say it's /dev/sda2.
  • sudo mount --bind /dev /mnt/dev &&, sudo mount --bind /dev/pts /mnt/dev/pts &&, sudo mount --bind /proc /mnt/proc &&, sudo mount --bind /sys /mnt/sys. [Something is wrong here. Still working on a complete, self-contained recipe.]
  • sudo chroot /mnt (see here). [Something is wrong here. Still working on a complete, self-contained recipe.]
  • sudo nano /etc/default/grub
  • Add nomodeset to GRUB_CMDLINE_LINUX_DEFAULT.
  • sudo update-grub.

The output at this last step is:

Sourcing file `/etc/default/grub`
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-
Found initrd image: /boot/initrd.img-5.0.0-23-generic
grub-probe: error: cannot find a GRUB drive for /dev/sdb1. Check your device.map.

Still to-do: telling sudo update-grub to use /dev/sda2.

Wondering: would using rEFInd simplify the recipe above?

What is briefer, to use rEFInd or not to use it? I understand that the reason for the existence of rEFInd is to enable a dual-boot linux set up on a Mac. But if just single-boot linux is sought, does introducing rEFInd make the recipe simpler or more complicated?

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .