Create bootable USB from ISO using DD

You can manually create bootable USB from ISO files using the dd command from within Linux or any Unix based system. The dd command is powerful and can be used for copying data bit by bit from a source to destination. In essence making an exact copy of the source at the destination.

create a bootable usb from iso file

What does DD stand for in Linux?

The dd command, which stands for Data Description or Data Dump, was developed as part of the UNIX operating system for low-level data copying and conversion. Its name was chosen to align with similar commands from IBM’s System/360 assembly language, where "dd" stood for "Data Definition."

The dd command is also sometimes referred to as a "disk/data duplicator" or even a "disk destroyer" due to its ability to copy raw data from one source to another. Unlike commands like cp, which handle individual files, dd operates directly on block devices, such as physical hard drives. This capability allows it to perform tasks like disk imaging, backup creation, and data format conversion, but it also overwrites data, hence the term "disk destroyer."

In essence, dd is a powerful and versatile tool, used for powerful precise byte-by-byte data operations.

Why use DD to create a bootable USB?

Here are some of the benefits and reasons why dd is commonly used for creating bootable USB drives directly from ISO files:

  1. Direct Data Copy: dd copies data byte-by-byte, ensuring that the ISO is transferred exactly as it is, which is crucial for making a bootable USB drive.
  2. No Need for File System Creation: Unlike some other methods, dd doesn't require formatting or creating a file system on the USB drive. It writes the ISO image directly to the device, preserving the bootable structure.
  3. Simplicity and Precision: The command is straightforward, with a simple syntax that directly addresses the source (ISO) and destination (USB drive). This precision reduces the risk of errors compared to more complex tools.
  4. Versatility: Can be used for a wide range of tasks beyond creating bootable USB drives, such as disk imaging, cloning partitions, and creating backups.
  5. Works with Various ISO Formats: Handles bootable ISO file formats, including those used for operating systems, utilities, and other bootable media.
  6. Progress Monitoring: With the status=progress option, dd can provide real-time updates on the copying process, helping you track its progress.
  7. Compatibility: Is made available on most Unix-like systems (Linux, macOS, etc.) and is often included in the default installation. This widespread availability makes it a reliable choice.

If you're using a Linux distribution and want to create a bootable USB drive from an ISO file, dd is a quick and effective tool. It’s particularly useful when:

  • You need to ensure that the entire ISO, including bootable elements, is transferred correctly.
  • You are comfortable working from the command line and prefer a minimalistic approach while having full control.
  • You are working in an environment where GUI-based tools are not available or convenient.

How to Burn a Bootable ISO to USB using DD

Here are the steps necessary to copy or burn a bootable ISO to USB using DD and a breakdown of how it works:

  1. Identify the USB Drive: Insert your USB drive and then identify its device name using the lsblk or fdisk -l command. For example, your drive's device name might be /dev/sdX (where X represents a letter like b, c, d, etc.).
    sudo lsblk

    or

    sudo fdisk -l
  2. Unmount the USB Drive: Unmount the USB drive if it is mounted. Replace /dev/sdX1 with the appropriate partition signified by 1, 2, etc.
    sudo umount /dev/sdX1
    
  3. Copy an ISO to the USB Drive: Use the dd command to copy an ISO file to the USB drive. Make sure you change "/dev/sdX" to your device name or drive and set "/path/to/filename.iso" to your actual path and ISO filename. Use caution before proceeding with this step, as it will overwrite all data on the drive.
    sudo dd if=/path/to/filename.iso of=/dev/sdX bs=4M status=progress oflag=sync
    
    • if=/path/to/filename.iso specifies the input file (in our case, an ISO file).
    • of=/dev/sdX specifies the output file (in our case this is the entire USB drive).
    • bs=4M sets the block size to 4 megabytes (you can adjust this as needed).
    • status=progress shows the progress of the operation as it happens.
    • oflag=sync ensures that the data is written synchronously.
  4. Wait for the Process to Complete: The process may take some time depending on the size of the ISO file and the speed of your USB flash drive.
  5. Safely Eject the USB Drive: Once complete, eject the USB drive safely to prevent from data corruption.
    sudo eject /dev/sdX

Additional Notes:

    • Ensure that the USB drive is not mounted during the operation.
    • Double-check the device name (/dev/sdX) to avoid applying the operation on the wrong drive.
    • The dd command will overwrite the USB drive, so make sure it doesn't contain any important data.