#!/bin/bash # gemacht von Stefan Höhn #https://github.com/dewomser/Raspi-auto-downloader #ACHTUNG : Zeile 106-112 Beachten ! attribut=$1 datum="[0-9]{4}-[0-9]{2}-[0-9]{2}" url="https://dietpi.com/downloads/images/" if [[ "$attribut" = "-h" ]] then echo " Aufruf dietpi-install.sh [OPTION] Option Bedeutung -1 dietpi für Raspberry v1 ARMv6 -2 dietpi für Raspberry v2 ARNv7 -234 dietpi für Raspberry v2-4 ARMv8 -h Diese Hilfe -5 dietpi für Raspberrx v5 ARMv8 " && exit elif [[ "$attribut" = "-1" ]] then rimage="DietPi_RPi1-ARMv6-Trixie" elif [[ "$attribut" = "-2" ]] then rimage="DietPi_RPi2-ARMv7-Trixie" elif [[ "$attribut" = "-234" ]] then rimage="DietPi_RPi234-ARM8-Trixie" elif [[ "$attribut" = "-5" ]] then rimage="DietPi_RPi5-ARMv8-Trixie" else echo "Kein Pi-Image ausgewählt. \"raspi-install.sh -h \" für Hilfe!" && exit fi cd "$HOME/Downloads" || echo"Downloads Ordner nicht vorhanden" #https://dietpi.com/downloads/images/DietPi_RPi2-ARMv7-Trixie.img.xz pathr="$url$rimage.img.xz" pathrs="$pathr.sha256" # -c wget -c "$pathr" -O "$rimage.img.xz" wget "$pathrs" -O "$rimage.img.xz.sha256" echo "Bitte ein paar Sekunden warten. Der Hash wird erzeugt." sha1=$(shasum -a 256 "$rimage.img.xz") sha2=$(cat "$rimage.img.xz.sha256") sleep 1 echo Prüfsumme aus Download "$sha1" echo Prüfsumme von Webseite "$sha2" if [ "$sha1" == "$sha2" ]; then echo "Prüfsumme stimmt." echo "-----------------" echo "SD-Karte auf die geschrieben werden soll ENTFERNEN !" \"y\" read -r input if [ "$input" == "y" ]; then mapfile -t laufwerke < <(lsblk -l -o Name | grep -E "^sd[a-z]*$") laufwerke[0]="lolo" laufwerke1[0]="lolo" else exit fi echo Es gibt diese seriellen Blockdevices "${laufwerke[*]}" echo "SD-Karte auf die geschrieben werden soll EINSCHIEBEN !" \"y\" read -r input if [ "$input" == "y" ]; then mapfile -t laufwerke1 < <(lsblk -l -o Name |grep -E "^sd[a-z]*$") echo "${laufwerke1[0]}" mapfile -t laufwerke2 < <({ printf "%s\n" "${laufwerke[@]}" | sort -u; printf "%s\n" "${laufwerke1[@]}" "${laufwerke[@]}"; } | sort | uniq -u) zahl_laufwerke="${#laufwerke2[@]}" echo neu erkannte Es gibt jetzt dieses neue serielle Blockdevice: "${laufwerke2[@]}" echo Laufwerke ${#laufwerke2[@]} echo lwo:"${laufwerke2[0]}" echo lw1:"${laufwerke2[1]}" if [ "$zahl_laufwerke" -eq 1 ]; then echo Es gibt jetzt dieses neue serielle Blockdevice: "${laufwerke2[0]}" else echo "Es kann nicht geschrieben werden. Es wurden mehr oder weniger als 1 SD-Karte erkannt" ; exit fi else exit fi echo Ich bin mir SICHER und will auf SD-Karte schreiben : /dev/"${laufwerke2[0]}" \"y\" oder \"n\" read -r endgueltigja if [ "$endgueltigja" == "y" ]; then # Wenn die Karte nur als root gemountet werden kann, muss dd durch sudo dd ersetzt werden. umount -> sudo umount ## sudo ddd – is now on # Alternative für Ubuntu: # echo 'KERNEL=="sd*", SUBSYSTEMS=="usb", MODE="0666"' | sudo tee /etc/udev/rules.d/99-usb-storage.rules # Quelle : https://askubuntu.com/questions/828545/using-dd-without-sudo # Wenn die nächsten 3 Zeilen aktiviert sind: "don't blame me!" #umount /dev/"${laufwerke2[0]}"[0-9] > /dev/null 2>&1 xz --keep --decompress dietpi"$attribut".xz sudo dd if=raspi"$attribut" of=/dev/"${laufwerke2[0]}" bs=4M conv=fsync status=progress || echo "Es gibt Probleme mit Schreibrechten.Ab Zeile 105 gibts Hilfe" echo "Tatatatah ! fertig" #umount /dev/"${laufwerke2[0]}"[0-9] > /dev/null 2>&1 else exit fi else echo "Achtung,Prüfsumme stimmt nicht überein !" fi