Desktop

Create Bootable USB on macOS and Linux

There are several tools for creating bootable USB drives from ISO images on macOS and Linux. The right choice depends on what you need: dd is built into every Unix system and works without installing anything, balenaEtcher provides a GUI with write verification, Ventoy lets you put multiple ISOs on a single drive, and Raspberry Pi Imager works for any image despite the name.

Original content from computingforgeeks.com - post 2253

This guide covers all four methods with real commands tested on macOS (Apple Silicon) and Linux. We also cover the key gotchas that catch people, like the macOS rdisk vs disk performance difference and why you need to unmount (not eject) before writing.

Tested March 2026 on macOS 15.4 (Apple Silicon) and Ubuntu 24.04. USB: SanDisk 3.2Gen1 32GB.

Which Tool to Use

ToolmacOSLinuxBest For
ddBuilt-inBuilt-inQuick writes without installing anything. CLI only.
balenaEtcherYesYesGUI with write verification. Beginners.
VentoyNoYesMultiple ISOs on one USB. Boot menu to pick one.
RPi ImagerYesYesGUI tool that works with any ISO (not just Raspberry Pi).

Method 1: dd (macOS and Linux)

The dd command copies raw bytes from an ISO file directly to a USB device. It requires no installation, works on every Unix system, and produces a byte-perfect copy. The trade-off is that it has no safety rails: write to the wrong device and you destroy that disk’s data.

Identify the USB Device

On macOS, use diskutil list to identify your USB. Look for the external, physical disk that matches your USB’s size:

diskutil list

In our test setup, the 30.8 GB SanDisk shows up as /dev/disk4:

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *30.8 GB    disk4
   1:       Microsoft Basic Data                         6.7 GB     disk4s1
   2:                        EFI ESP                     5.2 MB     disk4s2

On Linux, use lsblk to identify the USB:

lsblk -d -o NAME,SIZE,MODEL,TRAN

The USB will show usb in the TRAN column. Note the device name (e.g., /dev/sdb).

Unmount and Write

Unmount the USB first. On macOS, use diskutil unmountDisk (not “Eject” from Finder, which disconnects the device entirely):

diskutil unmountDisk /dev/disk4

On Linux:

sudo umount /dev/sdb*

Write the ISO to the USB. On macOS, use /dev/rdisk4 (not /dev/disk4). The r prefix means “raw device” which bypasses the buffer cache. In our test, rdisk wrote at 36 MB/s versus roughly 2 MB/s through disk:

sudo dd if=/path/to/image.iso of=/dev/rdisk4 bs=4M status=progress

The output confirms the write speed and total bytes:

172273664 bytes (172 MB, 164 MiB) copied, 4.75998 s, 36.2 MB/s

On Linux, use the device path directly:

sudo dd if=/path/to/image.iso of=/dev/sdb bs=4M status=progress conv=fsync

The conv=fsync flag ensures all data is physically written to the USB before dd exits. Without it, data may still be in the kernel’s write cache when dd reports completion.

After writing, sync and eject:

sync
sudo diskutil eject /dev/disk4   # macOS
sudo eject /dev/sdb              # Linux

Method 2: balenaEtcher (macOS and Linux)

Etcher is a GUI tool that flashes ISO images to USB drives with built-in write verification. It validates the write after flashing to catch bad USB drives or corrupt downloads.

Install Etcher

On macOS via Homebrew:

brew install --cask balenaetcher

On Ubuntu / Debian, download the .deb package from the Etcher GitHub releases page and install it:

curl -sLO https://github.com/balena-io/etcher/releases/download/v2.1.4/balena-etcher_2.1.4_amd64.deb
sudo dpkg -i balena-etcher_2.1.4_amd64.deb
sudo apt-get install -f -y

On Fedora / RHEL, download the .rpm:

curl -sLO https://github.com/balena-io/etcher/releases/download/v2.1.4/balena-etcher-2.1.4-1.x86_64.rpm
sudo dnf install -y balena-etcher-2.1.4-1.x86_64.rpm

On Arch / Manjaro:

yay -S balena-etcher

Flash the USB

Launch Etcher from your application menu. The main screen presents the three-step workflow: select image, select target, flash:

balenaEtcher main screen on macOS showing Flash from file, Select target, and Flash buttons

Click Flash from file and browse to your ISO. Then click Select target. Etcher shows only removable drives and hides your system disk to prevent accidental writes:

balenaEtcher disk selection showing USB SanDisk 3.2Gen1 30.8 GB at /dev/disk4

Select your USB drive and click Flash!. On macOS, you will be prompted for your admin password. Etcher writes the image and then verifies it by reading the USB back and comparing checksums:

balenaEtcher flashing Ubuntu ISO to USB drive at 34.55 MB/s showing 17% progress

The verification pass adds time but catches silent write errors that dd would miss. This is especially valuable with older or cheap USB drives that have bad sectors.

Method 3: Ventoy (Linux Only)

Ventoy takes a fundamentally different approach. Instead of writing one ISO at a time, it installs a bootloader on the USB and creates a data partition. You then copy ISO files directly onto the USB like regular files. At boot time, Ventoy presents a menu listing every ISO on the drive. No re-flashing needed when you add or remove images. For a detailed walkthrough, see our dedicated Ventoy guide.

Ventoy supports ISO, WIM, IMG, VHD(x), and EFI files. It works with 900+ tested OS images including Windows, every major Linux distro, and even VMware ESXi. The current version is 1.1.10.

Note: Ventoy does not support macOS. It runs on Linux and Windows only.

Install Ventoy on Linux

Download the latest release and extract it:

VER=$(curl -sL https://api.github.com/repos/ventoy/Ventoy/releases/latest | grep tag_name | sed 's/.*"v\([^"]*\)".*/\1/')
echo "Latest Ventoy: $VER"
wget -q "https://github.com/ventoy/Ventoy/releases/download/v${VER}/ventoy-${VER}-linux.tar.gz" -O /tmp/ventoy.tar.gz
tar xzf /tmp/ventoy.tar.gz -C /tmp/

Install Ventoy to the USB drive (replace /dev/sdb with your USB device):

cd /tmp/ventoy-${VER}/
sudo sh Ventoy2Disk.sh -i /dev/sdb

Answer y twice when prompted to confirm. Ventoy creates two partitions: a small EFI boot partition and a large exFAT data partition.

Now just copy ISO files onto the USB like any other file:

sudo mount /dev/sdb1 /mnt
sudo cp ~/Downloads/ubuntu-24.04-desktop-amd64.iso /mnt/
sudo cp ~/Downloads/fedora-42-live.iso /mnt/
sudo umount /mnt

Boot from the USB and Ventoy presents a menu with all the ISOs listed. Select one and it boots directly. Adding a new OS is as simple as copying another ISO file onto the drive.

Method 4: Raspberry Pi Imager (macOS and Linux)

Despite the name, Raspberry Pi Imager works as a general-purpose USB flasher. The “Use custom” option lets you select any local ISO or IMG file. Version 2.0 (released November 2025) was a major redesign with improved custom image support.

Install on macOS:

brew install --cask raspberry-pi-imager

Install on Ubuntu / Debian:

sudo apt install -y rpi-imager

Launch the app, click Choose OS > Use custom, select your ISO file, choose the USB target, and click Write. Like Etcher, it verifies the write after completion.

Troubleshooting

“Resource busy” when running dd on macOS

You forgot to unmount first. Run diskutil unmountDisk /dev/diskN before the dd command. If Finder auto-mounts the USB after inserting it, unmount it again.

“Permission denied” on Linux

Writing to a raw block device requires root. Prefix your dd command with sudo. If you are using Etcher as a Flatpak or AppImage, it may also need to be launched with sudo or granted block device access.

USB boots on one machine but not another

Check the BIOS/UEFI settings on the target machine. Some machines need Secure Boot disabled for Linux ISOs. Others need the boot order changed to prioritize USB. If the ISO supports both BIOS and UEFI boot (most modern distros do), make sure the USB is detected in the correct mode.

Going Further

Related Articles

Desktop Install Rambox on Ubuntu (Messaging & Email in One) Desktop Install Pantheon Desktop Environment on Fedora 41/40/39 VOIP How To Install Skype on Ubuntu 24.04|22.04|20.04 AlmaLinux Customize KDE Plasma Desktop with Themes|Modules|Extensions

Leave a Comment

Press ESC to close