Skip to content

Instantly share code, notes, and snippets.

@dewomser
Created July 21, 2025 16:15
Show Gist options
  • Save dewomser/786a69c5a10baa7799333ad5896aa574 to your computer and use it in GitHub Desktop.
Save dewomser/786a69c5a10baa7799333ad5896aa574 to your computer and use it in GitHub Desktop.
Frage an Grok ob man ohne Root ein Image uf SD kopieren kann AW: Vielleicht bis nein. Witzbold !
#!/bin/bash
# Bash-Skript zum Kopieren einer ISO-Datei auf eine SD-Karte mit unetbootin ohne Root-Rechte
# Variablen
ISO_FILE=""
SD_CARD=""
MOUNT_POINT="/mnt/sdcard"
# Funktion zur Überprüfung, ob ein Kommando verfügbar ist
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# Prüfen, ob unetbootin installiert ist
if ! command_exists unetbootin; then
echo "Fehler: 'unetbootin' ist nicht installiert."
echo "Bitte installiere es mit deinem Paketmanager (z. B. sudo apt install unetbootin)."
exit 1
fi
# Eingabe der ISO-Datei
echo "Bitte gib den Pfad zur ISO-Datei ein:"
read -r ISO_FILE
# Prüfen, ob die ISO-Datei existiert
if [[ ! -f "$ISO_FILE" ]]; then
echo "Fehler: Die ISO-Datei '$ISO_FILE' existiert nicht."
exit 1
fi
# SD-Karte auswählen
echo "Verfügbare Geräte:"
lsblk -d -o NAME,SIZE,MODEL,TYPE,MOUNTPOINT | grep -E 'disk|sd'
echo "Bitte gib den Gerätenamen der SD-Karte ein (z. B. /dev/sdb, ohne Partition wie /dev/sdb1):"
read -r SD_CARD
# Prüfen, ob das Gerät existiert
if [[ ! -b "$SD_CARD" ]]; then
echo "Fehler: '$SD_CARD' ist kein gültiges Blockgerät."
exit 1
fi
# Prüfen, ob die SD-Karte gemountet ist
MOUNTED=$(lsblk -no MOUNTPOINT "$SD_CARD" | grep -v '^$')
if [[ -n "$MOUNTED" ]]; then
echo "Die SD-Karte ist gemountet unter: $MOUNTED"
echo "Bitte unmounten (manuell oder mit 'umount $MOUNTED')."
echo "Soll das Skript versuchen, die SD-Karte zu unmounten? (y/n)"
read -r UNMOUNT_CONFIRM
if [[ "$UNMOUNT_CONFIRM" == "y" || "$UNMOUNT_CONFIRM" == "Y" ]]; then
for mp in $MOUNTED; do
if ! umount "$mp" 2>/dev/null; then
echo "Fehler: Konnte $mp nicht unmounten. Bitte manuell unmounten."
exit 1
fi
done
echo "SD-Karte erfolgreich unmounted."
else
echo "Bitte unmounten und das Skript erneut ausführen."
exit 1
fi
fi
# Prüfen, ob der Benutzer Schreibrechte auf das Gerät hat
if [[ ! -w "$SD_CARD" ]]; then
echo "Warnung: Keine Schreibrechte für $SD_CARD. Möglicherweise sind Root-Rechte erforderlich."
echo "Versuche, unetbootin ohne Root-Rechte auszuführen..."
fi
# Bestätigung vor dem Schreiben
echo "ACHTUNG: Alle Daten auf $SD_CARD werden gelöscht!"
echo "Soll die ISO-Datei '$ISO_FILE' auf '$SD_CARD' geschrieben werden? (y/n)"
read -r CONFIRM
if [[ "$CONFIRM" != "y" && "$CONFIRM" != "Y" ]]; then
echo "Abbruch."
exit 0
fi
# Ausführen von unetbootin im Nicht-Root-Modus
echo "Starte unetbootin zum Schreiben der ISO-Datei..."
unetbootin method=diskimage isofile="$ISO_FILE" installtype=USB targetdrive="$SD_CARD" &
# Warten, bis unetbootin abgeschlossen ist
wait
if [[ $? -eq 0 ]]; then
echo "ISO erfolgreich auf SD-Karte geschrieben."
else
echo "Fehler beim Schreiben der ISO-Datei mit unetbootin."
exit 1
fi
# Synchronisieren, um sicherzustellen, dass alle Daten geschrieben sind
sync
echo "Vorgang abgeschlossen. Du kannst die SD-Karte jetzt sicher entfernen."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment