Writing an ISO image directly to a USB drive creates installer, live, and recovery media that can boot on another system without unpacking files or building partitions by hand. This is the normal path for distro installers, rescue environments, and firmware update media that ship as ready-to-write images.
Most current distro downloads are hybrid ISO images. They already contain the boot records, partition table, and filesystem layout needed for USB boot, so dd copies the image to the target device as a raw block-for-block write instead of copying files into an existing filesystem.
The write replaces the entire contents of the target device, not just one partition. Confirm the whole-disk device node such as /dev/sdb before starting, and use the vendor's documented writer when the downloaded file is not a hybrid ISO or the release notes require a specific imaging tool.
$ lsblk --paths --list --output PATH,SIZE,TYPE,MOUNTPOINTS PATH SIZE TYPE MOUNTPOINTS /dev/sda 64G disk /dev/sda1 1G part /boot/efi /dev/sda2 63G part / /dev/sdb 7.5G disk /dev/sdb1 7.5G part /media/user/LIVEUSB
Use the whole device such as /dev/sdb in the write command, not a partition such as /dev/sdb1. Writing to the wrong disk destroys its contents.
$ file ~/Downloads/linux-installer.iso /home/user/Downloads/linux-installer.iso: ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'alpine-virt 3.23.3 x86_64' (bootable)
The exact label depends on the downloaded image, but ISO 9660 CD-ROM filesystem data and (bootable) confirm that the file is an ISO image rather than a ZIP archive or another disk format.
$ sudo umount /dev/sdb*
Replace /dev/sdb with the device name from lsblk so every mounted filesystem on that drive is released before the write starts.
$ sudo dd if=~/Downloads/linux-installer.iso of=/dev/sdb bs=4M conv=fsync status=progress 16+1 records in 16+1 records out 70254592 bytes (70 MB, 67 MiB) copied, 0.0996981 s, 705 MB/s
bs=4M uses larger blocks, conv=fsync flushes the final write before dd exits, and status=progress shows transfer progress on longer writes.
Check both the if= and of= values before pressing Enter. The output path must be the whole USB device.
$ sudo blkid /dev/sdb /dev/sdb: BLOCK_SIZE="2048" UUID="2026-01-27-21-19-33-00" LABEL="alpine-virt 3.23.3 x86_64" TYPE="iso9660" PTUUID="f7dc9be9" PTTYPE="dos"
The important part is that the device now reports TYPE=“iso9660” with an image label. If the old layout still appears, unplug and reconnect the USB drive before checking again.
The media is ready for the target system boot menu or firmware boot order.