Creating a bootable USB drive from an ISO image enables operating system installations, live environments, and recovery tools on hardware that no longer includes optical drives. Reliable removable media is essential when deploying new systems, testing distributions, or repairing unbootable machines.

On Linux, an ISO image typically uses the ISO 9660 format and contains both the filesystem content and bootloader data required for booting. The dd utility copies this image sector by sector from a regular file to a block device such as /dev/sdc, preserving the boot sector, partition table, and metadata that make the medium bootable.

Because dd performs raw writes, targeting the wrong device can erase an entire disk with all existing partitions and data. Correctly identifying the USB device, unmounting any of its partitions, and confirming the image type before writing reduces the risk of data loss and produces a USB drive that boots reliably on compatible systems.

Steps to create a bootable USB drive from an ISO image on Linux:

  1. Open a terminal on the Linux system.
  2. Verify the installation ISO image type using the file command.
    $ file /root/sg-work/iso-demo/demo.iso
    /root/sg-work/iso-demo/demo.iso: ISO 9660 CD-ROM filesystem data 'DEMOISO'

    Bootable installer images typically include a boot record; lightweight demo images may not be marked as bootable by file.

  3. List the current block devices to understand the existing disk layout.
    $ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    loop0    7:0    0   512M  0 loop /mnt/bench
    ##### snipped #####
    vda    254:0    0   1.8T  0 disk 
    `-vda1 254:1    0   1.8T  0 part /etc/hosts
                                     /etc/hostname
                                     /etc/resolv.conf
    vdb    254:16   0 606.5M  1 disk 
    ##### snipped #####
  4. Create a blank USB image file to avoid overwriting a physical device during testing.
    $ sudo fallocate -l 64M /root/sg-work/iso-demo/usb.img
  5. Identify the USB drive device name by listing block devices again.
    $ sudo losetup --find --show /root/sg-work/iso-demo/usb.img
    /dev/loop1
    $ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    loop0    7:0    0   512M  0 loop /mnt/bench
    loop1    7:1    0    64M  0 loop 
    ##### snipped #####
    vda    254:0    0   1.8T  0 disk 
    `-vda1 254:1    0   1.8T  0 part /etc/hosts
                                     /etc/hostname
                                     /etc/resolv.conf
    vdb    254:16   0 606.5M  1 disk 
    ##### snipped #####

    Match the USB drive by size and removable flag to avoid selecting an internal disk; for real devices, the name will look like /dev/sdb or /dev/sdc.

  6. Write the ISO image to the USB drive using dd.
    $ sudo dd if=/root/sg-work/iso-demo/demo.iso of=/dev/loop1 conv=fdatasync
    704+0 records in
    704+0 records out
    360448 bytes (360 kB, 352 KiB) copied, 0.00573143 s, 62.9 MB/s

    Confirm the target device (for example /dev/sdc) carefully; using the wrong disk erases all existing data irreversibly.

  7. Verify that the target device now exposes the expected label and filesystem type.
    $ sudo blkid /dev/loop1
    /dev/loop1: BLOCK_SIZE="2048" UUID="2026-01-14-00-17-47-00" LABEL="DEMOISO" TYPE="iso9660"

    The LABEL and TYPE fields confirm that the image was written correctly as an ISO 9660 filesystem.

  8. Disconnect the USB drive safely from the system once writing and verification are complete.

    On desktop environments, use the graphical eject or safely remove option before unplugging the device.