Multi-Boot USB-Stick mit Ventoy

Für den Betrieb des Server-Parks werden allerlei verschiedene Betriebssysteme bzw. Linux-Distributionen benötigt. Sei es zur Installation eines neuen Systems, zur Analyse, zur Fehlerbehebung oder einfach nur für Testzwecke. Die dazu benötigten Installationsdateien liegen normalerweise in so genannten iso-Abbildern vor. Diese wurden früher auf CDs/DVDs gebrannt, während heutzutage eher bootbare USB-Sticks verwendet werden.

Das Problem: Sofern man den Anweisungen der jeweiligen Dokus folgt, installiert man mit Tools wie DiskDump oder einer grafischen Lösung die Installationsdateien EINES Systems auf EINEN USB-Stick.

Viel praktischer ist jedoch die Nutzung eines Multi-Boot-USB-Sticks um auf diesem möglichst viele Betriebssysteme/Distributionen zu hinterlegen. Bei Bedarf wählt man aus einem Bootmenü das gewünschte System aus, das gestartet werden soll. Eine sehr charmante Lösung hierfür ist das Tool Ventoy. Die Vorbereitung eines USB-Sticks mit Ventoy ist schnell erledigt und erleichtert den Admin-Alltag.

Installation

Um den Multi-USB-Stick zu erzeugen, müssen wir …

  • die Ventoy-Software auf einem PC/Notebook (irgend ein verfügbares Arbeitsgerät) installieren.
  • mit Ventoy einmalig einen USB-Stick vorbereiten (Ich würde einen Stick >= 32GB empfehlen).
  • mindestens ein iso-File im Anschluss auf den Stick schieben (und bei Bedarf nach und nach mehr ;-))

Ventoy wird für Windows und Linux bereit gestellt. Die Software kann über die Webseite, Github oder Sourceforge herunter geladen werden. Die Installation auf meinem Debian-Notebook ist mit zwei Befehlen erledigt:

$ wget https://github.com/ventoy/Ventoy/releases/download/v1.0.96/ventoy-1.0.96-linux.tar.gz
$ tar -xzvf ventoy-1.0.96-linux.tar.gz 
$ cd ventoy-1.0.96/

Im eben entpackten Verzeichnis liegen verschiedene Skripte bereit:

$ ls
boot                    README           VentoyGUI.aarch64   VentoyVlnk.sh
CreatePersistentImg.sh  tool             VentoyGUI.i386      VentoyWeb.sh
ExtendPersistentImg.sh  ventoy           VentoyGUI.mips64el  WebUI
log.txt                 Ventoy2Disk.ini  VentoyGUI.x86_64
plugin                  Ventoy2Disk.sh   VentoyPlugson.sh

Sofern wir das Tool konsolenbasiert nutzen wollen, ist Ventoy2Disk.sh das Skript der Wahl. Mit folgendem Aufruf sehen wir die vorhandenen Möglichkeiten:

$ ./Ventoy2Disk.sh --help

**********************************************
      Ventoy: 1.0.96  x86_64
      longpanda admin@ventoy.net
      https://www.ventoy.net
**********************************************

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)

USB-Stick einrichten

Mit der eben angezeigten Ausgabe kann man eigentlich schon arbeiten. Für uns relevant wäre bei der Erstinstallation ./Ventoy2Disk.sh -i /dev/sdX. Die entsprechende Gerätedatei können wir mit Programm lsblk identifizieren:

$ lsblk
NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
sda                       8:0    1    0B  0 disk  
sdb                       8:16   1 57,3G  0 disk  
└─sdb1                    8:17   1 57,3G  0 part  
[...]

In diesem Fall also /dev/sdb. Achtung: Das System sollte im Folgenden nicht gemountet sein. Der Aufruf erfolgt mit Super-User-Rechten:

$ sudo ./Ventoy2Disk.sh -i /dev/sdb

**********************************************
      Ventoy: 1.0.96  x86_64
      longpanda admin@ventoy.net
      https://www.ventoy.net
**********************************************

Disk : /dev/sdb
Model:  USB  SanDisk 3.2Gen1 (scsi)
Size : 57 GB
Style: MBR


Attention:
You will install Ventoy to /dev/sdb.
All the data on the disk /dev/sdb will be lost!!!

Continue? (y/n) 

All the data on the disk /dev/sdb will be lost!!!
Double-check. Continue? (y/n) 

Wir können nochmal kontrollieren, ob es sich wirklich um unseren USB-Stick handelt und mit 2x y fahren wir fort. Ventoy erstellt nun eigenständig zwei Partitionen, kopiert die notwendigen Daten an Ort und Stelle und schließt die Installation ab:

Create partitions on /dev/sdb by parted in MBR style ...
Done
Wait for partitions ...
partition exist OK
create efi fat fs /dev/sdb2 ...
mkfs.fat 4.2 (2021-01-31)
success
Wait for partitions ...
/dev/sdb1 exist OK
/dev/sdb2 exist OK
partition exist OK
Format partition 1 /dev/sdb1 ...
mkexfatfs 1.3.0
Creating... done.
Flushing... done.
File system created successfully.
mkexfatfs success
writing data to disk ...
sync data ...
esp partition processing ...

Install Ventoy to /dev/sdb successfully finished.

Für uns relevant ist die größere, bootbare Partition:

$ sudo fdisk -l /dev/sdb
[...]
Device     Boot     Start       End   Sectors  Size Id Type
/dev/sdb1  *         2048 120111103 120109056 57,3G  7 HPFS/NTFS/exFAT
/dev/sdb2       120111104 120176639     65536   32M ef EFI (FAT-12/16/32)

Damit ist die Installation beendet. Wenn /dev/sdb1 gemountet ist, können iso-Dateien von Betriebssystemen/Linux-Distributionen auf den USB-Stick kopiert werden.

Bildschirmfoto: Ventoy-Stick mit fünf verschiedenen Linux-Distributionen
Bildschirmfoto: Ventoy-Stick mit fünf verschiedenen Linux-Distributionen

Ein Gerät, das von unserem Ventoy-Stick bootet, schlägt via Grub2 die einzelnen hinterlegten Systeme vor. Je nach Auswahl startet der Installationsprozess oder das Live-System des jeweiligen Eintrags:

Bildschirmforto: Die einzelnen iso-Dateien werden im Grub2-Menü aufgeführt.
Bildschirmforto: Die einzelnen iso-Dateien werden im Grub2-Menü aufgeführt.

Ventoy aktualisieren

Ventoy wird aktiv weiter entwickelt. Sofern es Updates gibt, lädt man die Software wie oben beschrieben herunter und steckt seinen USB-Stick ein. Die Ventoy-Version kann nun ausgelesen werden:

$ sudo ./Ventoy2Disk.sh -l /dev/sdb

**********************************************
      Ventoy: 1.0.96  x86_64
      longpanda admin@ventoy.net
      https://www.ventoy.net
**********************************************

Ventoy Version in Disk: 1.0.93
Disk Partition Style  : MBR
Secure Boot Support   : YES

Bei dem eben angezeigten Gerät, handelt es sich um meinen derzeitigen produktiv genutzten Ventoy-Multi-Boot-Stick der mit der Version 1.0.93 nicht die neueste Version besitzt. Mit folgendem Befehl führen wir ein Update durch:

$ ./Ventoy2Disk.sh -u /dev/sdb

**********************************************
      Ventoy: 1.0.96  x86_64
      longpanda admin@ventoy.net
      https://www.ventoy.net
**********************************************

Upgrade operation is safe, all the data in the 1st partition (iso files and other) will be unchanged!

Update Ventoy  1.0.93 ===> 1.0.96   Continue? (y/n) 
esp partition processing ...

Update Ventoy on /dev/sdb successfully finished.

Sobald wir die die Abfrage mit y bestätigen, wird das Update durchgeführt.

Fazit

Im Vergleich zu den früheren Lösungen ist die Einrichtung eines Multi-Boot-Sticks ziemlich einfach. Ein paar Eingaben auf der Kommandozeile und der Stick ist fertig. Wer es grafisch möchte, kann z. B. mit VentoyGUI.x86_64 über ein GUI die Einrichtung vornehmen

Bildschirmfoto: Die Einrichtung des Ventoy-Sticks kann auch via GUI vorgenommen werden.
Bildschirmfoto: Die Einrichtung des Ventoy-Sticks kann auch via GUI vorgenommen werden.

Einmal eingerichtet, können je nach Belieben iso-Dateien auf den Stick gezogen oder wieder entfernt werden. Begrenzt ist man halt hier durch die Größe des USB-Sticks. Mein hier verwendeter 64G-Stick, reicht mir locker.

Quellen

https://github.com/ventoy/Ventoy/
https://www.ventoy.net/