There are many tools and applications available to create bootable disks in Linux. If you prefer command line way, there is dd command to do various things, like creating a USB drive or cloning disk partitions. Please be mindful that dd command is one of the dangerous and destructive command. If you're a beginner, it is better to avoid using dd command and use any graphical, user-friendly applications like Kindd, Etcher, Ventoy etc., to create bootable USB drives.
Today, I stumbled upon yet another command line utility named "Bootiso", which has some extra features that helps us to safely create bootable USB devices.
Bootiso is actually a BASH script, and it is brilliant! If you want to be sure you’re targeting the right USB device (and not internal drive), or if you want autodetection of a USB device, you can use bootiso.
Here are the significant advantages of using this script:
- If there is only one USB drive, Bootiso will automatically select it.
- If there are more than one USB drives present, it lets you to choose one of them from the list.
- Just in case you mistakenly choose one of Internal hard drive, it will exit without doing anything.
- It checks the selected ISO has the correct mime-type. If it has wrong mime-type, it will exit.
- It asserts that the selected item is not a partition and exit if it doesn't.
- It will prompt the user confirmation before erasing and partitioning the USB drive.
- Lists available USB drives.
- Installs syslinux bootloader (optional).
- Free and Open Source.
Safely Create Bootable USB Drive using Bootiso
Installing Bootiso is very easy. Download the latest version using command:
$ curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
Move the downloaded file to your $PATH, for example /usr/local/bin/.
$ sudo cp bootiso /usr/local/bin/
Finally, make it executable:
$ sudo chmod +x /usr/local/bin/bootiso
Done! Now, it is time to create bootable USB drives. First, let us see how many USB drives are present using command:
$ bootiso -l
Sample output:
Listing USB drives available in your system: NAME HOTPLUG SIZE STATE TYPE sdb 1 7.5G running disk
As you can see, I have only one USB drive. I already have downloaded the ISO file (Ubuntu 18.04 LTS) and save it in the current working directory.
Let us go ahead and create the USB bootable from an ISO file using command:
$ bootiso bionic-desktop-amd64.iso
This command will prompt you to enter the sudo password. Type the password and hit ENTER key to install the missing dependencies (if there are any) and then create USB bootable device.
Sample output:
[...] Listing USB drives available in your system: NAME HOTPLUG SIZE STATE TYPE sdb 1 7.5G running disk Autoselecting `sdb' (only USB device candidate) The selected device `/dev/sdb' is connected through USB. Created ISO mount point at `/tmp/iso.c5m' `bootiso' is about to wipe out the content of device `/dev/sdb'. Are you sure you want to proceed? (y/n)>y Erasing contents of /dev/sdb... Creating FAT32 partition on `/dev/sdb1'... Created USB device mount point at `/tmp/usb.QgV' Copying files from ISO to USB device with `rsync' Synchronizing writes on device `/dev/sdb' `bootiso' took 303 seconds to write ISO to USB device with `rsync' method. ISO succesfully unmounted. USB device succesfully unmounted. USB device succesfully ejected. You can safely remove it !
If the your ISO file has the wrong mime-type, you will see the following error message:
Provided file `bionic-desktop-amd64.iso' doesn't seem to be an iso file (wrong mime type: `application/octet-stream'). Exiting bootiso...
You can, however, skip the mime-type check using --no-mime-check
option like below.
$ bootiso --no-mime-check bionic-desktop-amd64.iso
Like I already mentioned, Bootiso will automatically choose the USB drive if there is only one USB drive present in your system. So, we don't need to mention the usb disk path. If you have more than one devices connected, you can explicitly specify the USB device path using -d
flag like below.
$ bootiso -d /dev/sdb bionic-desktop-amd64.iso
Replace /dev/sdb
with your own path.
If you don't specify -d
flag when using more than one USB devices, Bootiso will prompt you to select from available USB drives.
Bootiso will ask the user confirmation before erasing and partitioning the USB devices. To auto-confirm this, use -y
or --assume-yes
flag.
$ bootiso -y bionic-desktop-amd64.iso
You can also enable autoselecting USB devices in conjunction with -y
option as shown below.
$ bootiso -y -a bionic-desktop-amd64.iso
Or,
$ bootiso --assume-yes --autoselect bionic-desktop-amd64.iso
Please remember it will work only if you have only one connected USB drive.
By default, Bootiso will create a FAT 32 partition and then mount and copy the ISO contents using "rsync" program to your USB drive. You can also use dd
instead of rsync
if you want.
$ bootiso --dd -d /dev/sdb bionic-desktop-amd64.iso
If you want to increase the odds your USB will be bootable, use -b
or --bootloader
like below.
$ bootiso -b bionic-desktop-amd64.iso
The above command will install a bootloader with syslinux (safe mode). Please note that it doesn't work if you use --dd
option.
After creating the bootable device, Bootiso will automatically eject the USB drive. If you don't want it to automatically eject it, use -J
or --no-eject
flag.
$ bootiso -J bionic-desktop-amd64.iso
Now, the USb device will remain connected. You can unmount it at anytime using umount
command.
Update:
Bootiso Version 3 is out with many improvements.
- Automatic mode behavior: Notably, it now inspects ISO file to check if it’s hybrid. When it’s not, it looks for UEFI and SYSLINUX boot capabilities. After which, it chooses the best install mode (dd or mount+rsync) and eventually installs SYSLINUX. So you basically don’t need to care anymore about rsync or dd mode, just run `bootiso myfile.iso’ and it will work, even with rescue CDs such as UltimateBootCD;
- new
i
,--inspect
and-p
,--probe
actions to inspect ISO boot capabilities; - new
-f
,--format
action with-t
,--type
and-L
,--label
options to quick-format a USB stick when live USB has been used.
To display help section, run:
$ bootiso -h
Suggested Read:
- Popsicle – Create Multiple Bootable USB Drives At Once
- MultiCD – Create Multiboot CD, DVD, and USB Images
- How To Write An ISO To The USB Drive Directly From The Internet
- How To Create An ISO From A Bootable USB Drive In Linux
- How To Create Custom Ubuntu Live CD Image
Resource: