How to write/create a Ubuntu .iso to a bootable USB device on Linux using dd command

I downloaded a Ubuntu .iso file named artful-desktop-amd64.iso on a Debian Linux system. How do I write or burn a Ubuntu .iso to a USB device for installation purpose from Linux terminal?

You need to use the dd command to create a bootable USB stick to install Ubuntu Linux on your Laptop or Desktop. Creating a bootable Ubuntu USB stick is easy from Linux or Unix-like system such as MacOS.

Step 1: Find your usb device name

Insert your USB stick and type the following df command to see if it is mounted automatically on a Debian Linux desktop:
$ df
Sample outputs:

Filesystem            1K-blocks    Used Available Use% Mounted on
udev                   16432268       0  16432268   0% /dev
tmpfs                   3288884   26244   3262640   1% /run
/dev/mapper/md0_crypt 491076512 9641092 456420380   3% /
tmpfs                  16444408  105472  16338936   1% /dev/shm
tmpfs                      5120       4      5116   1% /run/lock
tmpfs                  16444408       0  16444408   0% /sys/fs/cgroup
/dev/sdc1             122546800  124876 116153868   1% /boot
tmpfs                   3288880      24   3288856   1% /run/user/119
tmpfs                   3288880      72   3288808   1% /run/user/1000
/dev/sdd1               1467360 1467360         0 100% /media/vivek/data

You need to unmount /media/vivek/data:
$ sudo umount /media/vivek/data
Or
$ sudo umount /dev/sdd1
Another option is to run dmesg command to find out usb device name:
$ sudo dmesg
Sample outputs:

[461339.310378] usb 2-1.7: new high-speed USB device number 12 using ehci-pci
[461339.420453] usb 2-1.7: New USB device found, idVendor=0781, idProduct=558a
[461339.420457] usb 2-1.7: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[461339.420460] usb 2-1.7: Product: Ultra
[461339.420461] usb 2-1.7: Manufacturer: SanDisk
[461339.420463] usb 2-1.7: SerialNumber: FooBarNixCraftSerialNumber
[461339.421010] usb-storage 2-1.7:1.0: USB Mass Storage device detected
[461339.421457] scsi host6: usb-storage 2-1.7:1.0
[461340.431909] scsi 6:0:0:0: Direct-Access     SanDisk  Ultra            1.00 PQ: 0 ANSI: 6
[461340.432886] sd 6:0:0:0: Attached scsi generic sg4 type 0
[461340.433448] sd 6:0:0:0: [sdd] 121307136 512-byte logical blocks: (62.1 GB/57.8 GiB)
[461340.435434] sd 6:0:0:0: [sdd] Write Protect is off
[461340.435438] sd 6:0:0:0: [sdd] Mode Sense: 43 00 00 00
[461340.436405] sd 6:0:0:0: [sdd] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[461340.449612]  sdd: sdd1 sdd2

It is clear that /dev/sdd is my usb stick device name.

Step 2: Create a bootable USB stick on Linux

Warning: Be careful with the USB stick/pen/disk names. Wrong names always result in data loss. Make sure you type the correct name.

Type the following dd command to create a bootable USB image from a .ISO file:
$ sudo dd if=artful-desktop-amd64.iso \
of=/dev/sdd bs=1M status=progress

However, I like to verify my download. For example:
$ ls -l ubuntu-20.04.1-live-server-amd64.iso
$ echo "443511f6bf12402c12503733059269a2e10dec602916c0a75263e5d990f6bb93 *ubuntu-20.04.1-live-server-amd64.iso" \
| shasum -a 256 --check

You should get the following output:
ubuntu-20.04.1-live-server-amd64.iso: OK

Click to enlarge

Once verified write it:
$ sudo dd if=ubuntu-20.04.1-live-server-amd64.iso \
of=/dev/sda bs=1M status=progress

The dd command will write process data to a usb stick (/dev/sdd or /dev/sda)and a progress bar appears on screen.

Ubuntu to create a bootable Ubuntu USB flash drive from terminal

In this example I am going to create a bootable flash drive for ubuntu-18.04.3-live-server-amd64.iso file as follows:
$ sudo dd if=/isos/ubuntu-18.04.3-live-server-amd64.iso \
of=/dev/sdb bs=1M status=progress

Another example

$ sudo dd if=/isos/ubuntu-19.04-live-server-amd64.iso of=/dev/sdb bs=1M status=progress
Sample output:

748+0 records in
748+0 records out
784334848 bytes (784 MB, 748 MiB) copied, 119.174 s, 6.6 MB/s

Understanding dd command options

  • dd : Start the dd command to write DVD/CD iso image.
  • if=/iso/ubuntu.iso : Path to input file.
  • of=/dev/sdd : Path to destination USB disk/stick.
  • bs=1M : read and write up to BYTES bytes at a time. In this example, 1M at a time.
  • status=progress : Display progress bar while writing image to the USB stick such as /dev/sdd. See “Linux dd Command Show Progress Copy Bar With Status” for more info.

Step 3: You are done

That’s all! You now have Ubuntu on a USB stick, bootable and ready to install on your Laptop, Desktop or server based system.

Conclusion

You learned how to create a bootable usb pen drive from downloaded Ubuntu desktop or server .ISO image. See Ubuntu download page.

🐧 If you liked this page, please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
3 comments… add one
  • Denis Oct 14, 2017 @ 13:08

    why not using cat instead of dd ?

    sudo cat <artful-desktop-amd64.iso >/dev/sdd

    It always worked for me.

  • raoul Dec 8, 2017 @ 15:28

    i tried that and the command never completes

    i mean it just hangs at the end , usb stick flashing like crazy and nothing happens anymore.

  • Jalal Dec 12, 2017 @ 4:46

    Hi,
    Thanks a lot.

    we can define larger block size for more speed.

    sudo dd if=artful-desktop-amd64.iso \
    of=/dev/sdd bs=100M status=progress

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.