24

I'm having trouble figuring out how I would write an ISO disk image to a USB flash memory device from the command line in Ubuntu. I have the Startup Disk Creator utility, but I need to be able to script this job.

I found the usb-creator package, but there doesn't seem to be any documentation and python -m usbcreator gives usbcreator is a package and cannot be directly executed.

I looked at unetbootin, but it seems like another GUI-only utility.

Is there some obvious solution which I'm overlooking?

mikepurvis
  • 1,047
  • 2
  • 9
  • 17

4 Answers4

26

Are you sure if the ISO image will work on a USB device? Some ISOs which will boot if they are on a CD/DVD will not actually boot from a USB device.

Assuming the ISO you want has a bootloader that will work, then it should be as simple as dd if=filename.iso of=/dev/usbdevice but this will replace anything that is currently on the USB disk.

If you wanted to place the ISO onto an existing filesystem on the USB drive and boot it, then setting it up may be a lot more complicated.

Elliptical view
  • 684
  • 6
  • 9
Zoredache
  • 128,755
  • 40
  • 271
  • 413
  • Nope, this is perfect; exactly what I needed. Thanks! – mikepurvis Jul 27 '11 at 19:23
  • 1
    Ack... not quite. This method loads the filesystem, but it doesn't seem to make the drive bootable the Startup Disk Creator tool does (with the same ISO). – mikepurvis Aug 01 '11 at 17:21
  • 2
    As I mentioned it does somewhat depend on what boot-loader is present on the ISO and how it is configured. Some images will work just by doing a dd, others will not. For example a [Debian Live](http://live.debian.net/) will work fine by using the dd method. To be sure you can try it, or read the docs for whatever iso you are talking about to see if it is supported. – Zoredache Aug 01 '11 at 17:26
  • 2
    @Zoredache to check if `iso` is bootable you can use `file`. If bootable, it will print `bootable` at the end of the output line. – Yaroslav Nikitenko Jan 18 '16 at 17:28
12

I know you can do this in UNetbootin gui. I haven't tried it myself, but it looks like you can do it by command-line, as well:

http://sourceforge.net/apps/trac/unetbootin/wiki/commands

unetbootin method=diskimage isofile="my.iso" installtype=USB targetdrive=/dev/sdc1

Ian
  • 306
  • 2
  • 4
  • ^ the answer I was going to give. `unetbootin` automagically handles the necessary steps for moving most ISO files to USB media. – MikeyB Jul 27 '11 at 01:19
  • For me on Fedora Core 23 it launches `unetbootin gui` but with the settings provided on the command line. – Yaroslav Nikitenko Jan 18 '16 at 17:23
11

From Linux there's a very easy way to create a bootable memory stick from an ISO image -- and this should work for any OS. Assuming the memory stick is /dev/sdb and the image is /home/username/Downloads/system.iso.

Just do this (as root):

dd if=/home/username/Downloads/system.iso of=/dev/sdb

Much easer than unetbootin or any other method I've heard of.

slm
  • 7,355
  • 16
  • 54
  • 72
Paul
  • 119
  • 1
  • 2
  • This assumes the bootloader is included in the iso, which is not generally the case. – mikepurvis Mar 25 '13 at 16:56
  • 6
    Only important step is to write of / outputfile to device, not a partition. I.e. `of=/dev/sdb` and NOT `of=/dev/sdb1`. (Just wanted to comment on this problem, nothing is wrong with your post :o)) – sjas Nov 26 '14 at 14:06
  • This worked for me when trying to install Debian 9 on an old Asus Eee PC netbook. Unetbootin produced drives that didn't boot at all in this case. – unfa Nov 24 '17 at 22:12
1

I use the following procedure:

1. Reading the block size and the volume size:

[root@testserver ~]# isoinfo -d -i /path_to_iso | grep -i -E 'block size|volume size' 
Logical block size is: 2048
Volume size is: 327867

2. Running dd with the parameters for block size and volume size:

root@testserver ~]# dd if=/path_to_iso of=/dev/your_usb_device bs=block-size-from-above count=volume-size-from-above
mixtou
  • 111
  • 2