Created
July 21, 2025 16:15
-
-
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 !
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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