| 
					
				 | 
			
			
				@@ -0,0 +1,122 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#!/bin/bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# this script is not intended to be used without modifications! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Get latest Raspbian image and checksum file  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+img_url_regex='http:\/\/downloads\.raspberrypi\.org\/raspbian_lite\/images\/raspbian_lite-[0-9-]{10}\/[0-9-]{10}-raspbian-buster-lite\.zip' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+img_url=`curl --silent https://downloads.raspberrypi.org/raspbian_lite_latest | \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+grep --extended-regexp --ignore-case --only-matching $img_url_regex` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sha256_url=$img_url.sha256 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+image=`basename $img_url` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sha256=`basename $sha256_url` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Download latest image and checksum file if not present yet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+mkdir -p ~/images && cd ~/images 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [[ -f "$image" && -f "$sha256" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "Latest Raspbian image found: $image" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "Downloading latest Raspbian..." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  curl --continue-at - --remote-name-all $img_url $sha256_url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Test checksum and exit if fails 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo -n "Testing checksum... " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+set -e && sha256sum --check  $sha256 || exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+set +e 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Select the disk 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+PS3="Select disk to install Raspbian: " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+select disk in `lsblk --include 8 --nodeps --output NAME --noheadings` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "________________________________________________________________________" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  lsblk --nodeps /dev/$disk --output TRAN,VENDOR,MODEL,HOTPLUG 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "________________________________________________________________________" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  lsblk /dev/$disk --output NAME,TYPE,FSTYPE,SIZE,LABEL,MOUNTPOINT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "________________________________________________________________________" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  read -p "ARE YOU SURE THAT YOU WANT TO OVERWRITE THIS DISK? (y/n) " -n 1 -r 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo #newline 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if [[ $REPLY =~ ^[Yy]$ ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "Proceeding with $sdcard" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sdcard=/dev/$disk 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Testing parameters / hostname 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+name=$1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ "X$name" == "X" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "Kein Hostname für die Box angegeben!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "USAGE: $0 name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  read -p "Hostname jetzt eingeben?: " name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo "Hostname: $name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo "Image: $image" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Preparing the disk 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Unmounting partitions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for part in \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  `findmnt  --output SOURCE,TARGET --raw | grep $sdcard | cut -d" " -f2` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  do sudo umount --verbose $part 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Write image to sdcard 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unzip -p $image *.img \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+| sudo dd of="$sdcard" bs=4K status=progress 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sync 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo Rausnehmen, kurz warten, reinstecken und mount abwarten, dann Enter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+read -n 1 -p "Geht's weiter?" unused 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Configure WiFi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cp ~/wpa_supplicant.conf /media/$USER/boot/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Enable / Setup SSH 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# https://www.raspberrypi.org/documentation/remote-access/ssh/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+touch /media/$USER/boot/ssh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+mkdir -p /media/$USER/rootfs/home/pi/.ssh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+chmod 0700 /media/$USER/rootfs/home/pi/.ssh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cp ~/.ssh/id_rsa.pub /media/$USER/rootfs/home/pi/.ssh/authorized_keys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+chmod 0600 /media/$USER/rootfs/home/pi/.ssh/authorized_keys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+chown -R 1000:1000 /media/$USER/rootfs/home/pi/.ssh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Setting hostname 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo $name | sudo tee /media/$USER/rootfs/etc/hostname 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo 127.0.1.2 $name | sudo tee -a /media/$USER/rootfs/etc/hosts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Set timezone 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo "Europe/Berlin" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  | sudo tee  /media/$USER/rootfs/etc/timezone 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sudo ln -sf /usr/share/zoneinfo/Europe/Berlin \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /media/dominik/rootfs/etc/localtime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Set locales 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sudo sed -i -e '/^# en_US\.UTF-8 UTF-8/s/^# //' \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            -e '/^# de_DE\.UTF-8 UTF-8/s/^# //' \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /media/$USER/rootfs/etc/locale.gen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#sudo locale-gen # need to run at first boot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#idea: https://github.com/nmcclain/raspberian-firstboot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#sudo update-locale LANG=de_DE.UTF-8 LC_MESSAGES=en_US.UTF-8 #equivalent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo -e "LANG=de_DE.UTF-8\nLC_MESSAGES=en_US.UTF-8" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  | sudo tee /media/$USER/rootfs/etc/default/locale  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Unmounting partitions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sync 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for part in \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  `findmnt  --output SOURCE,TARGET --raw | grep $sdcard | cut -d" " -f2` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  do sudo umount --verbose $part 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+done 
			 |