Introduction#

During a deploy of our custom Linux Mint images in one of the labs at UFCG, I’ve learned about Ventoy – an interesting tool for creating bootable USB drives. Of all the tools I’ve used for this task (like Rufus and Etcher), Ventoy catched my interest for three reasons:

  1. It does not require flashing the ISO into the USB drive

  2. It allows you to add multiple ISO files to the USB drive, without tweaking with disk partitions

  3. It allows you to choose which image to boot from at startup

Ventoy is also very easy to install and use, as it provides packages with graphical interface for Linux, so you don’t have to worry with cryptic shell commands. But that’s boring, so we’re going to get our hands dirty anyways 🥱

How Ventoy works?#

While installing Ventoy on an USB drive, it will create two main partitions:

  • The EFI partition (formatted as FAT), where Ventoy’s bootloader and configurations are stored, and only 32MB in size

  • The main partition (usually formatted as exFAT or FAT32), where you can place your ISO files

When booting from the USB drive, Ventoy’s bootloader will look for ISO files inside the main partition and list them at the boot menu. Please note that the disk layout may vary, depending on whether you choose the MBR or GPT partitioning scheme.

Using Ventoy on Linux#

As mentioned before, we’ll be installing Ventoy through CLI – like real Linux users would. So, you’ll need to download the binary packages (e.g. ventoy-1.0.XX-linux.tar.gz file), which are avaliable at SourceForge. I recommend unpacking the tarball at /opt for convenience.

Inside the package, you’ll see a bunch of executable files. Since we won’t use a graphical interface, our focus is in the Ventoy2Disk.sh script.

If you wish to install Ventoy using a graphical interface, execute one of the files labeled with the VentoyGUI prefix. Please note that you have to choose the executable with the same architecture as your machine (e.g. VentoyGUI.x86_64 for 64-bit machines).

You may also use an Web UI by executing the VentoyWeb.sh and opening your browser at http://localhost:24680

If you plan to use Ventoy frequently, it might be interesting to add the executables to your $PATH. For that, I have an article on how to install packages manually on Linux, which you can find here.

Installing Ventoy on a USB drive#

Now that we have the package set up on our machine, let’s take a look on how to use Ventoy2Disk.sh. After running the script without any arguments, we get the following output:

[...]
Usage:  Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX
  CMD:
   -i  install Ventoy to sdX (fails if disk already installed with Ventoy)
   -I  force install Ventoy to sdX (no matter if installed or not)
   -u  update Ventoy in sdX
   -l  list Ventoy information in sdX

  OPTION: (optional)
   -r SIZE_MB  preserve some space at the bottom of the disk (only for install)
   -s/-S       enable/disable secure boot support (default is enabled)
   -g          use GPT partition style, default is MBR (only for install)
   -L          Label of the 1st exfat partition (default is Ventoy)
   -n          try non-destructive installation (only for install)

Although the text is pretty straightforward, we need to find which device is our USB drive – specified by /dev/sdX. For that, you can use the lsblk command to list all the block devices in the system. Here’s a sample output for this command:

user@host:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
[...]
sda      8:0    0 238,5G  0 disk
├─sda3   8:3    0 237,5G  0 part /
└─sda4   8:4    0     1G  0 part /boot/efi
sdb      8:16   1   7,5G  0 disk
├─sdb1   8:17   1   7,5G  0 part /media/dougsilva/Ventoy
└─sdb2   8:18   1    32M  0 part
[...]

USB devices are usually mounted at the /media directory. In my case, the USB drive is represented by sdb device, so I must pass /dev/sdb as the installation device to the Ventoy2Disk.sh script. Below are some examples on how to configure your installation:

# Install Ventoy on /dev/sdX. This will fail if Ventoy is already installed.
sudo ./Ventoy2Disk.sh -i /dev/sdX

# Force install on /dev/sdX, ignoring any existent Ventoy installation
sudo ./Ventoy2Disk.sh -I /dev/sdX

# Install on /dev/sdX while keeping a 500MB free space at the end of the device
sudo ./Ventoy2Disk.sh -i -r 500 /dev/sdX

# Install on /dev/sdX with GPT partition style and labelling the main partition as "Multiboot USB"
sudo ./Ventoy2Disk.sh -i -g -L "Multiboot USB" /dev/sdX

Please note that installing Ventoy WILL ERASE ALL DATA FROM THE DEVICE, so you should backup any important files from the USB drive before installation. Also, while installing through command-line, be careful to not mistake your USB drive for another device.

You can also use the fdisk -l command to list the devices of your machine with a more verbose output. This allows you to search for a device with grep (i.e. fdisk -l | grep "YOUR_DEVICE").

Booting up the USB drive#

After the installation is complete, you can simply drag-and-drop your ISO files into the main partition, reboot your machine and boot from the USB drive. If you had no unpleasant surprises during installation, you should see the following screen:

Ventoy initial screen
Ventoy ISO Menu

From here, simply choose which ISO you wish to boot, and select the Boot in normal mode option. For more information about boot modes, read the documentation.

Some machines have a hot key for entering the Boot Menu at startup, so you don’t need to manually change the boot order in your BIOS. Please check out this list for reference.

Considerations about Secure Boot#

Since Ventoy 1.0.76, Secure Boot support is enabled by default. This means that Ventoy should work whether Secure Boot is enabled in your machine or not.

If Secure Boot is indeed enabled in your machine, you should see the screen below when booting Ventoy for the first time. Please follow these instructions in Ventoy’s documentation on how to allow Ventoy on Secure Boot.

Secure Boot error screenshot
Secure Boot error due to Ventoy certificate not being recognized

However, if you see another error screen while booting Ventoy, your system may not support Ventoy on Secure Boot. As such, you’ll need to disable the option in your Ventoy installation and your BIOS.

Conclusion#

Until now, Ventoy has proved to be a handy tool for testing Linux distributions and keeping backup ISOs for system recovery. It’s easy to install and use, it’s lightweight and also quite fast when compared to similar tools.

While I have not tried installing a system through Ventoy, I plan to try it out soon with Fedora, and if everything goes as expected, I may use it to setup a dual-boot installation with Windows in the (not so) far future.