autoventoy.ps1 | ||
README.md |
Ventoy Bootstick Automation
Erklärungen
Problem
- Die Ventoy USB Sticks werden regelmäßig formatiert / anderweitig gebraucht
- Das Erstellen des Bootsticks kostet Zeit - speziell das Kopieren der ISO Datei dauert lange
- ISO Dateien müssen regelmäßig updates erhalten - vorallem bei Linux Desktopsystemen kann es passieren dass die ISO Datei nach der Installation keine Updates fahren kann weil sie zu alt ist. (Arch-Linux Problem)
Ziel
- Erstellen eines (PowerShell)-Scripts, welches automatisch folgende Aufgaben erfüllt:
- Formatiert den USB Stick (Nachfragen ob man sich sicher ist!)
- Installiert Ventoy
- Kopiert unser Ventoy-Template auf den USB Stick (https://git.itlabs.at/neko/ventoy-itlabs,
git pull https://git.itlabs.at/neko/ventoy-itlabs.git
) - Ladet notwendige ISO Dateien in das korrekte Verzeichnis
Weitere Details
- ISO Dateien benötigen ein Repository
- Zu klären ist, wie wir dies erledigen
- Repository lokal? Auf dem PC auf dem das Script ausgeführt wird alle ISO Dateien speichern?
- Repository auf Netzspeicher?
- Repository auf USB-Datenträger (z.B. externe Festplatte)
- ISO Dateien sollen auf Aktualität geprüft werden und wenn notwendig soll eine neue Version davon heruntergeladen werden
- Automatische Updates mit zweitem Script? Wie?
Rahmenbedingungen
- Script muss in einem Git-Repo landen (https://git.itlabs.at/)
- Script muss dokumentiert sein und Kommentare enthalten!
- Ihr habt alle Hardware vom ITL@Bs zur Verfügung
- Script sollte mitteilen, was gerade passiert
Aufgabe
- Diskutiert zuerst im Team, wie man die verschiedenen Problemstellungen angehen und lösen kann
- Findet verschiedene Ansätze, diskutiert diese und beschließt dann gemeinsam, welcher Ansatz verfolgt und im Script umgesetzt wird
- Schreibt das Script und testet es aus
Powershell Scripting:
Wichtige Grundlagen:
ventoyauto.ps1
Variablen
$zahl = 84
$name = "Patrick"
$ja = $true
Array
$array = @(1, 2, 3, "Patrick")
Bedingungen
if ($x -gt 5) {
Write-Host "Größer als 5"
} else {
Write-Host "Kleiner oder gleich 5"
}
Schleife
while ($count -lt 3) {
Write-Host "Zähler: $count"
$count++
}
Function
function Antwort {
Write-Host "Hallo Patrick!"
}
Mit parameter
function Add-Numbers {
param ($a, $b)
return $a + $b
}
$summe = Add-Numbers 5 10
Write-Host "Summe: $summe"
VentoyCLI: https://www.ventoy.net/en/doc_windows_cli.html
Skript: Da die ganze USB formatiert wird, muss man zweimal den Install annehmen.
- Auswahl von USB-Sticks (Sonst musste man USB immer " D:\ " geben)
- VentoyCLI auführen, USB Formattieren (ExFAT, MBR), Ventoy installieren
- Git repo kopieren (von https://git.itlabs.at/neko/ventoy-itlabs) und auf den Ventoy laden. (.git Verzeichnis wird gelöscht um mögliche fehler zu vermeiden) 3a. Git erlaubt irgendwie das kopieren in das D Verzeichnis nicht. Um das zu umgehen erstellt das Skript ein neuen Verzeichnis "Theme" und kopiert die Dateien von Git hinein. 3b. Die Dateien im "Theme" werden dann ins Stammverzeichnis verschoben und "Theme" gelöscht
- Alle ISO-Dateien (*.iso) werden in den angegebenen Ordnern (1 Windows, 2 Linux, 3 Others, 4 Utilities) kopiert. Nach jeder Datei wird eine Prozentanzahl der bereits kopierten Dateien angezeigt. Zeigt an das es fertig ist
- Nachdem alles kopiert wurde, muss der Benutzer nochmals Enter drücken um das Skript zu schließen.
Verwendung:
- Pfade in der Datei ändern
- Skript als Administrator im Powershell ausführen (falls nötig "Set-ExecutionPolicy Unrestricted")
- Bekannter Fehler: in Zeile 67
" $selectedDrive = $selectedDrive + ":" "
kann ein Fehler beheben oder aufrufen. Die Variable"$selectedDrive"
kann entweder als "D:" ausgegeben werden oder von "D" (was falsch ist) Wichtig ist: die Zeile einfach löschen wenn die Buchstaben der USBs richtig erkannt werden. - Warten auf kopieren
- Fertig! Ventoy-Bootstick verwerfen und im Schrank lagern.