USB Linux Boot - Ventoy

Jarret B

Active Member
Staff member
Joined
May 22, 2017
Messages
202
Reaction score
144
Credits
2,722
I have mostly been a sucker for bootable USB Stick. I find they come in handy for fixing partitions, recovering data and even virus scanning. They tend to be very useful for Windows Systems which are not recovering properly, which rarely happens (I am of course kidding).

I find that Linux helps save the day for these Windows Systems. I have to admit that I still use one Windows laptop on occasion.

To start you need to download the Ventoy program.

Downloading

You can start by going to www.ventoy.net to see any documentation or other information you may want to read. You can click on Downloads or go directly to https://www.ventoy.net/en/download.html. On the ‘Downloads’ page you can click on the preferred download version.

Once you click on the desired file you should then be directed to the Github site, specifically to https://github.com/ventoy/Ventoy/releases. If you scroll down there should be a subsection called 'Assets'. Under 'Assets' should be listed the various downloads of the current version. The listed files should be for Linux, Windows, Source for Linux and Source for Windows. Choose your file and once clicked it should open another page that should download the proper file. Extract the files from the compressed file you downloaded.

Open a Terminal into the extracted folder. From a Terminal prompt, you can type the command 'sudo ./Ventoy2Disk.sh -i /dev/sdx', where 'sdx' is replaced by the location of the USB Stick to which you want to erase and install Ventoy.

An example output is shown in Figure 1.

Figure 1.jpg

FIGURE 1

After clicking ‘y’ you will be prompted to verify that you do want to delete all of the data on the given drive. Click ‘y’ if you want to proceed or ‘n’ to stop. If you proceed then the USB Stick will be prepared for Ventoy. The process is shown in Figure 2.

Figure 2.jpg

FIGURE 2

By default, the USB Stick will be made with a Master Boot Record (MBR). To use a GUID Partition Table (GPT) you can include the ‘-g’ parameter when installing Ventoy. If you need Secure Boot then use the ‘-s’ parameter when running the script. If you want to completely overwrite the USB device and start over then use the ‘-I’ parameter.

Once the script is completed you should see that the USB Stick label should be ‘Ventoy’.

NOTE: If a new version of Ventoy is downloaded, you can run it the same way and the program will detect that the USB Stick is already a Ventoy drive. Once detected, you will be prompted to update the Ventoy files on the USB Stick. Any files already on the device will not be erased or changed.

Once the Ventoy install is completed then you only need to copy ISO files to the USB Stick.

There should be two partitions created. The smaller partition will contain the boot file needed by Ventoy and the main partition is for the ISO files. The smaller partition should be about 32 MB and formatted as FAT16. The remaining space, used for the ISO files, is formatted as exFAT by default. You can reformat the partition with one of the following: exFAT, FAT32, NTFS, UDF, XFS, Ext2, Ext3, Ext4.

By default 0 GB of unformatted space is left at the end of the USB Stick. You can format this space and use it as needed. If you want to reserve more space then you can use the ‘-r MB’ parameter, where MB is replaced with the size in MB to be reserved.

The ISO files which are compatible with Ventoy are as follows:
  • Debian
  • Ubuntu
  • CentOS
  • RHEL
  • Deepin
  • Fedora
  • SLES
  • openSUSE
  • MX Linux
  • Manjaro
  • Linux Mint
  • Elementary OS
  • Solus
  • Linx
  • Zorin
  • antiX
  • PclinuxOS
  • Arch
  • ArcoLinux
  • ArchLabs
  • BackArch
  • Obarun
  • Artix Linux
  • Puppy Linux
  • Tails
  • Slax
  • Kali
  • Mageia
  • Slackware
  • Q4OS
  • Archman
  • Gentoo
  • Pentoo
  • NixOS
  • Ubuntu Kylin
  • Lubuntu
  • Xubuntu
  • Kubuntu
  • Ubuntu MATE
  • Ubuntu Budgie
  • Ubuntu Studio
  • Bluestar
  • OpenMandriva
  • ExTiX
  • Netrunner
  • ALT Linux
  • Nitrux
  • Peppermint
  • KDE neon
  • Linux Lite
  • Parrot OS
  • Qubes
  • Pop OS
  • ROSA
  • Void Linux
  • Star Linux
  • EndeavourOS
  • MakuluLinux
  • Voyager
  • Feren
  • ArchBang
  • LXLE
  • Knoppix
  • Robolinux
  • Calculate Linux
  • Clear Linux
  • Pure OS
  • Oracle Linux
  • Trident
  • Septor
  • Porteus
  • Devuan
  • GoboLinux
  • 4MLinux
  • Simplicity Linux
  • Zeroshell
  • Android-x86
  • netboot.xyz
  • Slitaz
  • SuperGrub2Disk
  • Proxmox VE
  • Kaspersky Rescue
  • SystemRescueCD
  • MemTest86
  • MiniTool Partition Wizard
  • Parted Magic
  • veket
  • Sabayon
  • Scientific
  • alpine
  • ClearOS
  • CloneZilla
  • Berry Linux
  • Trisquel
  • Ataraxia Linux
  • Minimal Linux Live
  • BackBox Linux
  • Emmabuntüs
  • ESET SysRescue Live
  • Nova Linux
  • AV Linux
  • RoboLinux
  • NuTyX
  • IPFire
  • SELKS
  • Zstack
  • Enso Linux
  • Security Onion
  • Network Security Toolkit
  • Absolute Linux
  • TinyCore
  • Springdale Linux
  • Frost Linux
  • Shark Linux
  • LinuxFX
  • Snail Linux
  • Astra Linux
  • Namib Linux
  • Resilient Linux
  • Virage Linux
  • Blackweb Security OS
  • R-DriveImage
  • O-O.DiskImage
  • Macrium
  • ToOpPy LINUX
  • GNU Guix
  • YunoHost
  • foxclone
  • Adelie Linux
  • Elive
  • PardusCDlinux
  • AcademiX
  • Zenwalk
  • Anarchy
  • DuZeru
  • BigLinux
  • OpenMediaVault
  • Ubuntu DP
  • Exe GNU/Linux
  • 3CX Phone System
  • KANOTIX
  • Grml
  • Karoshi
  • PrimTux
  • ArchStrike
  • CAELinux
  • Refracta
  • Cucumber
  • Fatdog
  • ForLEx
  • Hanthana
  • Kwort
  • MiniNo
  • Redcore
  • Runtu
  • Asianux
  • Clu Linux Live
  • Uruk
  • OB2D
  • BlueOnyx
  • Finnix
  • HamoniKR
  • Parabola
  • LinHES
  • LinuxConsole
  • BEE free
  • Untangle
  • Pearl
  • Thinstation
  • TurnKey
  • tuxtrans
  • Neptune
  • HefftorLinux
  • GeckoLinux
  • Mabox Linux
  • Zentyal
  • Maui
  • Reborn OS
  • SereneLinux
  • SkyWave Linux
  • Kaisen Linux
  • Regata OS
  • TROM-Jaro
  • DRBL Linux
  • Chalet OS
  • Chapeau
  • Desa OS
  • BlankOn
  • OpenMamba
  • Frugalware
  • Kibojoe Linux
  • Revenge OS
  • Tsurugi Linux
  • Drauger OS
  • Hash Linux
  • gNewSense
  • Ikki Boot
  • Acronis
  • Active.Boot
  • AOMEI
  • Boot.Repair
  • CAINEDaRT
  • EasyUEFI
  • R-Drive

All you have to do is download any ISO image you want which is supported and also contains a LIVE image.

If you should use the Secure parameter (-s) for creating a bootable USB Stick then be prepared for an error message. The error message will only occur once per machine. As long as you go through these steps, you will be fine:
  1. Select ‘OK’ at the initial error screen
  2. Press any key to perform MOK Management
  3. Select ‘Enroll key from disk’ and press Enter
  4. Select EFI and press Enter
  5. Arrow down to ‘Enroll this key in manager.cer’ then press Enter
  6. Select ‘Continue’
  7. Select ‘Yes’
  8. Select ‘Reboot’ then click Enter
  9. After the system reboots, start system to boot from USB and select the desired menu entry
You can fill the USB Stick up with as many ISO files as you require. Keep in mind that any changes made to the image will not be persistent. That is, the changes will be lost when the system is rebooted.

To add persistence you can return to the Ventoy folder and run the command CreatePersistentImg.sh. The default size is 1 GB. You can change it by using the ‘-s’ parameter followed by the persistence partition size in KB. For example, to generate a partition with a size of 2 GB the parameter would be '-s 2048'. The default format is EXT4. The other formats are ext2/ext3/ext4/xfs. To specify a different format use the ‘-t’ parameter followed by the format type. For example, to use a format of ‘xfs’ use the parameter ‘-t xfs’.

When you boot from the USB Stick you will be prompted to boot with persistence or without.

Conclusion

I have found Ventoy to be very easy and useful. My article to Multi-boot with full persistence (https://linux.org/threads/multi-boot-full-install-to-a-usb.23563/) can take some time and a little know-how.

If you require a USB Boot Stick then you may want to try this one out.
 


captain-sensible

Well-Known Member
Joined
Jun 14, 2019
Messages
2,538
Reaction score
1,674
Credits
15,151
for persistence to work you need to tell Ventoy which .iso is going to use persisitene since you can have several in partition one. To do that you need to have a ventoy.json file as follows:
Code:
{


"control": [
{ "VTOY_DEFAULT_MENU_MODE": "0" },
{ "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" },
{ "VTOY_DEFAULT_SEARCH_ROOT": "/ISO" }
],



"persistence": [
{
"image": "/ISO/linuxmint-19-cinnamon-32bit.iso",
"backend": "/persistence.img" 
}
]



}


you also need to take into account structure note my stick

Code:
ventoy
├── ISO
│ └── linuxmint-19-cinnamon-32bit.iso
├── persistence.img
└── ventoy
└── ventoy.json


note that the ventoy.json needs to be in a directory called "ventoy" the top one in the tree above is the label that ventoy gives to the usb stick. This has been a cause of much confusion on the ventoy forums. I confirm that the json file in relation to my usb stick is corect since i've tested persistence by installing something
 

captain-sensible

Well-Known Member
Joined
Jun 14, 2019
Messages
2,538
Reaction score
1,674
Credits
15,151
the other thing is some iso's you can boot with ventoy for instance i've tested a Slackware dvd install iso; however i couldn't get persistence to work. For Slackware eg Live current i recommend Alien Bobs iso2usb.sh script ; that i have tested works a treat and persistence works. The other one i would liek to see but looks like its missing is Knoppix
 

ScrambledEggs

Member
Joined
Sep 26, 2020
Messages
35
Reaction score
7
Credits
388
Wait till you get into plugins!!
I'm actually now waiting for my persistence file do get done syncing so I can see if my .json file with persistence+password strings works together. I know the persistence .json string works by itself but I added a password string as well.

Do you know if encryption is possible with a Ventoy setup?
 
OP
Jarret B

Jarret B

Active Member
Staff member
Joined
May 22, 2017
Messages
202
Reaction score
144
Credits
2,722
I may have to look into that. I haven't tried it. When I get the chance, I'll check it out.
 
OP
Jarret B

Jarret B

Active Member
Staff member
Joined
May 22, 2017
Messages
202
Reaction score
144
Credits
2,722
I just looked at Ventoy at Github, they say encryption is not supported.
 
OP
Jarret B

Jarret B

Active Member
Staff member
Joined
May 22, 2017
Messages
202
Reaction score
144
Credits
2,722

Condobloke

Well-Known Member
Joined
Apr 30, 2017
Messages
3,730
Reaction score
3,334
Credits
18,238
False Positives...again.
 

kazem alkenany

New Member
Joined
Feb 18, 2021
Messages
1
Reaction score
0
Credits
5
[QUOTE = "KGIII ، post: 101651 ، العضو: 102591"]
هيك ، هذا مكتوب جيدًا بما يكفي ليكون مقالًا في أحد مواقع Linux كبرنامج تعليمي.
[/اقتبس]
جيد
 

wizardfromoz

Administrator
Staff member
Gold Supporter
Joined
Apr 30, 2017
Messages
6,612
Reaction score
5,370
Credits
19,520
The above is simply quoting #5.

@kazem alkenany welcome to linux.org, but please do not write in Arabic, it is not understood.

Chris Turner
wizardfromoz
 

KGIII

Super Moderator
Staff member
Gold Supporter
Joined
Jul 23, 2020
Messages
4,001
Reaction score
3,680
Credits
32,149
Interestingly, it was this thread and that comment that made me get off my butt and start actually working on my Linux Tips site. I was like, "Well, if other people are gonna put the effort in and do good work, I might as well actually do what I've been planning on for a long time."
 

captain-sensible

Well-Known Member
Joined
Jun 14, 2019
Messages
2,538
Reaction score
1,674
Credits
15,151
pulling it all together with an example - getting persistence with Kali .

[will have to re-edit probably many times]

So as previously mentioned go to : https://github.com/ventoy/Ventoy/releases and you will see list under assets. Mouse left click on ventoy-1.0.38-windows.zip if your main operating system is Windows or ventoy-1.0.38-linux.tar.gz if your using Linux


What do you see when you have unzipped the Windows version or untarred the tar.gz ?

Windows :

Code:
ventoy-1.0.38
├── Ventoy2Disk.exe
├── boot
├── plugin
└── ventoy

what you need to do if using Windows is get that Ventoy2Disk.exe file running . My guess is it installs some gui for all functions. I don't have access to Windows at the moment so don't know for sure .

For Linux :

Code:
ventoy-1.0.37
├── CreatePersistentImg.sh
├── README
├── Ventoy2Disk.sh
├── VentoyWeb.sh
├── VentoyWebDeepin.sh
├── WebUI
├── boot
├── log.txt
├── plugin
├── tool
└── ventoy

i'm using Slackware but procedure is likely very similar if using Windows. basically you will run the scripts from your PC to format a usb stick , which will make it ready to receive full iso.

First attach a usb stick to your laptop or tower. Next find out , and make sure you know your usb from your main hd.


on Linux fdisk will do :


eg :


Code:
Disk /dev/sdc: 7.47 GiB, 8011120640 bytes, 15646720 sectors
Disk model: STORE N GO
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x451541b7

to format my usb stick /dev/sdc i did this:

Code:
first i made script executable(as root):

# chmod a+x Ventoy2Disk.sh

then run script

./Ventoy2Disk.sh -i -L ventoyNew /dev/sdc
I have previously found ventoy confusing in that the default label for the usb will be "ventoy" then you have to create a directory for ventoy.json called "ventoy" - yep there is a hell of a lot of over use of word ventoy .So in the above i use the L flag with ventoyNew ( quotation marks not needed) to at least distinguish what is what .

Once the script has finished i saw an icon called ventoyNew on my desktop.
The script created 2 partitions , one that holds stuff that does the heavy lifting , that is not visible when your usb stick is mounted (partition1) and another partition that is visible and so at first site you might think hang on nothing happened. The visible one is where you drag and drop iso.

lets have a look at my ventoy formated stick after i put everything together to make it work ,using tree:


Code:
bash-5.0$ tree -L 2 /run/media/andrew/ventoyNew/
/run/media/andrew/ventoyNew/
├── ISO
│   └── kali-linux-2021.1-live-amd64.iso
├── persistence.dat
└── ventoy
    └── ventoy.json

so my ventoy formated stick called "ventoyNew" is mounted at : /run/media/andrew/ventoyNew

To get to the stage as seen as above i had to:

1) create a directory called ISO , just by mouse right clicking in visible partition.
2) get the kali live iso via command line :
wget https://cdimage.kali.org/kali-2021.1/kali-linux-2021.1-live-amd64.iso

copy across the downloaded iso in a sub directory called ISO on the usb stick


3) create another directory called ventoy, in which ventoy.json file is placed( will see later)
4 ) create a one gig file that will be used for persistence


lets have a look at 4) first


going back to the linux download you will see the script CreatePersistentImg.sh you can use this to create a one gig or thereb abouts file. You need to use flags appropraite to the OS ypu are using. Some Live OS need to have the 1c gig file with a label casper-rw and other OS something else.

This is how i created a persistence file for Kali from command line :
cd to ventoy un tarred download
Code:
chmod 777 CreatePersistentImg.sh

  sh CreatePersistentImg.sh -l persistence -c persistence.conf
that created an approx 1 gig file called persistence.dat in the unzipped download ventoy. So you need to cp , rsync or anything you like but in my case i needed to get it to the usb stick (no sub folder) i.e directly to /run/media/andrew/ventoyNew/ or to put it another way the visible part of the usb stick .


Now we need to create a ventoy.json file which basically tells the system of the usb where stuff is:

here is mine. You can edit it to your specifications:


Code:
{


"control": [
{ "VTOY_DEFAULT_MENU_MODE": "0" },
{ "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" },
{ "VTOY_DEFAULT_SEARCH_ROOT": "/ISO" }
],



"persistence": [
{
"image": "/ISO/kali-linux-2021.1-live-amd64.iso",
"backend": "/persistence.dat"
}
]



}


you can copy and paste saving file as ventoy.json and then edit.
A couple of things to note:

Code:
VTOY_DEFAULT_SEARCH_ROOT": "/ISO"


that tells the ventoy system that linux iso's are in a sub directory called ISO


The second section of the json file says , the iso that will be using persistence is kali-linux-2021.1-live-amd64.iso and that the file to be used for persistence is called persistence.dat, the / in front means its just in the visible partition . no sub folder.




using the above approach i booted from the usb, connected to wifi, updated apt . installed geany which i kmnow is not installed as default. Powered down , powered back up and checked to see if geany was still present and useable- it was.

Thus to the question how can i get kali linux on a usb stick with persistence ? i think i answered the question !
 

Attachments

  • ventoy_1.png
    ventoy_1.png
    141.8 KB · Views: 292
  • Screenshot_2021-03-22_14-22-36.png
    Screenshot_2021-03-22_14-22-36.png
    206.4 KB · Views: 358
Last edited:

captain-sensible

Well-Known Member
Joined
Jun 14, 2019
Messages
2,538
Reaction score
1,674
Credits
15,151
if you want to play with Debian 10 "Buster" with an iso that has wifi support this one works from Ventoy : https://cdimage.debian.org/images/u...rid/debian-live-10.9.0-amd64-xfce+nonfree.iso


Note:be patient i got black screen in between Debian splash, then what looked like a freeze where only white of pannel showing for a minute. Got persistence working but had to use :
Code:
sh CreatePersistentImg.sh -l persistence -c persistence.conf
 
Last edited:
$100 Digital Ocean Credit
Get a free VM to test out Linux!


Top