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/