Make bootable USB from CD/DVD ISO image

  • Create an image file with enough space to hold the content from ISO.
  • Install syslinux on the image.
  • Copy everything from ISO to the new image.
  • Replace isolinux references with syslinux.
  • Write the image to USB device.

$ du -Lh /path/to/image.iso | cut -d'M' -f1
700
$ dd if=/dev/zero of=/tmp/usb-image bs=1M count=710
710+0 records in
710+0 records out
744488960 bytes (744 MB) copied, 0.825134 s, 902 MB/s
$ mkfs.vfat /tmp/usb-image
mkfs.vfat 3.0.12 (29 Oct 2011)
$ syslinux /tmp/usb-image
$ mkdir /tmp/{usb,iso}
# mount -o loop /tmp/usb-image /tmp/usb
# mount -o loop /path/to/image.iso /tmp/iso
mount: warning: /tmp/iso seems to be mounted read-only.
# cp -r /tmp/iso/* /tmp/usb
# mv /tmp/usb/{iso,sys}linux
# mv -v /tmp/usb/syslinux/{iso,sys}linux.cfg
# sed -i 's/isolinux/syslinux/g' /tmp/usb/syslinux/*.cfg
# umount /tmp/{iso,usb}
# dd if=/tmp/usb-image of=/dev/sdX
1454080+0 records in
1454080+0 records out
744488960 bytes (744 MB) copied, 286.461 s, 2.6 MB/s
# eject /dev/sdX

Note:

  • isolinux directory maybe located in either root of the image or in the /boot sub-directory