Raspi-auto-downloader/dietpi-install.sh

119 lines
3.4 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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