After searching for a while on this procedure with varying degrees of success, I decided to write a guide on how I managed to make a bootable, persistent Ubuntu USB drive for Mac. There are many different methods, but I will outline the one that worked for me. You’ll need a Mac, access to sudo, and general knowledge of the terminal.

First, download the latest 64-bit Ubuntu Desktop ISO.

Then find a USB stick, preferably about or larger than 2gb and USB 2.0. Plug it into your computer and open the app Disk Utility. Select the drive and then click the Partition tab, and select 1 partition. Make sure it is set to MS-DOS (FAT) and that it uses MBR, not APT or GUID, and then apply the settings. This will wipe all your data.

Next, open Terminal and run

diskutil list

Find your drive and take note of the number to the right. If it’s the only thing inserted in the computer, it should be disk1. Then unmount it with

diskutil unmountDisk /dev/diskX

Make sure X is the number of your drive. Then you need to mark the disk active, by running

sudo fdisk -e /dev/rdiskX

Once again, X is the number of your drive. It will say something about being unable to open an MBR file. Ignore that, and then run these three commands consecutively:

f 1

After that, run the unmount command again. Now, you need to download syslinux. Unzip it and cd to the /bios/mbr/ folder inside. Make sure mbr.bin is in there. Now run

sudo dd conv=notrunc bs=440 count=1 if=mbr.bin of=/dev/diskX

And again, X is the number of your drive. It should take just a few seconds and report writing 440 bytes. If it gives an error about no access, unmount the USB drive. If it doesn’t find the mbr.bin, you haven’t cd’d to the right directory. If it says the changes won’t be active until a reboot, press y and reboot.

Now install Unetbootin and make a live USB. Don’t mess with the persistence settings at the bottom that it mentions; we’ll get to that later. Just select the ISO you downloaded earlier and then continue. It should take a while, and when it’s done, it will say that the drive can’t be booted on a Mac.

At this point, it should work perfectly fine but won’t have persistence, so every time you boot to it, none of the settings will have been saved. If this is okay with you, you can boot from the drive by restarting your computer and holding the option/alt key down after the chime until a menu appears. Select the drive, which should be named EFI boot, and then choose “Try Ubuntu without installing” from the menu.

Now onto adding persistence. Run the command

dd if=/dev/zero of=/Volumes/USB/casper-rw bs=1m count=X

USB should be the name of your drive, and the X after count should be the number of megabytes you’d like for persistence. 1024 megabytes is a gigabyte, and that’s what I’d recommend if you have enough disk space. Don’t set it too low, or there may not be enough room for the settings and files.

After that is done, and it will take a few minutes, download E2fsprogs for Mac, or install it using Homebrew or Macports. Then run

mke2fs -t ext4 /Volumes/USB/casper-rw

Once that’s done, you just need to edit one more file and you’ll have persistence. Open up Finder, navigate to your USB drive and then navigate to /boot/grub/ and then edit grub.cfg in TextEdit. Add the bolded sections in the appropriate locations:

if loadfont /boot/grub/font.pf2 ; then
    set gfxmode=auto
    insmod efi_gop
    insmod efi_uga
    insmod gfxterm
    terminal_output gfxterm

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

menuentry "Ubuntu persistent" {
    set gfxpayload=keep
    linux    /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper persistent quiet splash --
    initrd    /casper/initrd.lz
menuentry "Try Ubuntu without installing" {
    set gfxpayload=keep
    linux    /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --
    initrd    /casper/initrd.lz
menuentry "Install Ubuntu" {
    set gfxpayload=keep
    linux    /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash --
    initrd    /casper/initrd.lz
menuentry "Check disc for defects" {
    set gfxpayload=keep
    linux    /casper/vmlinuz.efi boot=casper integrity-check quiet splash --
    initrd    /casper/initrd.lz

Once that’s done, you can now reboot your computer. After you hear the startup chime, hold down the option/alt key until a menu appears. Select the EFI Boot option and then select the persistent option from the other menu that appears. It will take a while to boot, but when it does, you should have a persistent bootable version of Ubuntu. Keep in mind that the persistent version will be much slower and laggier than the non-persistent version.

All credit goes to Quackers from the Ubuntu forums with his excellent guide, the Mac Linux USB Loader persistence guide, and to the USB Ubuntu WordPress site. Quackers had it pretty much right, but he was missing the casper-rw file. I tried out the Mac Linux USB Loader method, but Settings kept crashing when using it. After combining both methods and finding that it worked, I found the USB Ubuntu site which also detailed the process, but included the other menu options.

These instructions work fairly flawlessly for Kubuntu, Lubuntu, and LXLE with very minor modifications of the grub.cfg file. It also works with a little more tinkering for Linux Mint. If you are stuck at “Could not find controller” try adding nomodeset to the end of the command, right after splash.