diff --git a/seqs/raspberry.sh b/seqs/raspberry.sh index 34f5c0d..ed7eaeb 100755 --- a/seqs/raspberry.sh +++ b/seqs/raspberry.sh @@ -15,6 +15,14 @@ WDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )" # #. "$CONFIG_FILE" #} +SDDEV= +SDBOOT= +SDROOT= +SDROOTPUUID= +HDDEV= +HDROOT= +HDROOTPUUID= + step_1_info() { echo "Download latest raspbian lite image from" echoinfo "$downUrl"; } step_1_alias() { ALIAS="setup"; } @@ -40,7 +48,6 @@ step_2_info() { echo -n "Write raspbian image to SD card " if [ ! -z $2 ] ; then echo "$2"; else echo "[SD CARD DEVICE]"; fi } step_2_alias() { ALIAS="writesd"; } step_2() { - local sdDev="" if [ "$downImgName" == "" ] ; then # called again to make sure $downImgName is populated step setup @@ -49,15 +56,14 @@ step_2() { echoerr " [E] No raspian image found" return 1 fi - if [ ! -z $2 ] && [ "$2" != "" ] ; then - sdDev="$2" - else - exe lsblk -p - exe read -p "Provide SD card device (e.g. /dev/sdb): " sdDev + if [ ! -z $2 ] && [ "$2" != "" ] && [ -b "$2" ] ; then + SDDEV="$2" fi + + read_sd_dev # check if device is a block special file - if [ ! -b "$sdDev" ] ; then - echoerr " [E] $sdDev not found" + if [ $? -ne 0 ] ; then + echoerr " [E] SD card device not found" return 1 fi exe dd bs=4M if="$downImgName" of="$sdDev" conv=fsync @@ -67,10 +73,35 @@ step_2() { exe read -p " Press enter to contiue." } -step_3_info() { echo "Prepare SD for first run"; } +step_3_info() { echo "TODO Prepare SD for first run"; } step_3() { #TODO - echo exe touch "$partSdBoot"/ssh + echoerr " [E] Not ready yet...TODO" + return 1 + read_sd_dev + # enable systemd ssh service + exe touch "$SDBOOT"/ssh + + # save SD boot and run settings for emergency start from SD + cp -ar "$SDBOOT"/cmdline.txt "$SDBOOT"/cmdline.txt.sd + cp -ar "$SDROOT"/etc/fstab "$SDROOT"/etc/fstab.sd +} + +step_4_info() { echo "TODO Prepare SD for HD boot"; } +step_4_alias() { ALIAS="hdboot"; } +step_4() { + #TODO + echoerr " [E] Not ready yet...TODO" + return 1 + read_sd_dev + echo "$SDBOOT" + echo "$SDROOT" + echo "$SDROOTPUUID" + read_hd_dev + echo "$HDROOT" + echo "$HDROOTPUUID" + ## ? modify PARTUUID of sdBoot/cmdline.txt + ## root=PARTUUID=******00-01 } step_20_info() { echo "Disable swap file and remove it"; } @@ -111,5 +142,83 @@ resizeDevice="/dev/mmcblk0" resizePartNo=2 resizePart="${resizeDevice}p${resizePartNo}" +step_24_info() { + echo "Turn off power LED [OPTION]" + echoinfo " [OPTION]" + echoinfo " -p : Turn off permanentely (/etc/rc.local)" +} +step_24() { + exep "${ledOffCmd}" + if [ ! -z $2 ] ; then + exep "grep \"$ledPowerBright\" $startScript >>/dev/null" + if [ $? -eq 0 ] ; then + echo " [I] Power LED brightness already used. Please check $startScript manually." + return 1 + fi + exe sed -i "s/^exit 0/# Turn off power LED/" "$startScript" + exep "echo \"${ledOffCmd}\" >> $startScript" + exep "echo -e \"\nexit 0\" >> $startScript" + fi +} +startScript="/etc/rc.local" +ledPowerBright="/sys/class/leds/led1/brightness" +ledOffCmd="sudo sh -c 'echo 0 > ${ledPowerBright}'" + + +read_sd_dev() { + local devsd="" + if [ -z $SDDEV ] && [ ! -b "$SDDEV" ] ; then + if [ -z $2 ]; then + echo " [I] Available devices:" + echo + exe lsblk -p + echo + exe read -p "Provide SD card device (e.g. /dev/sdb): " devsd + else + devsd="$2" + fi + if [ -b "$devsd" ] ; then + SDDEV=$devsd + else + return 1 + fi + fi + if [ -z $SDBOOT ] ; then + SDBOOT=$(findmnt -no TARGET "${SDDEV}p1") + fi + if [ -z $SDROOT ] ; then + SDROOT=$(findmnt -no TARGET "${SDDEV}p2") + fi + if [ -z $SDROOTPUUID ] ; then + SDROOTPUUID=$(findmnt -no PARTUUID "${SDDEV}p2") + fi +} + +read_hd_dev() { + local devhd="" + if [ -z $HDDEV ] && [ ! -b "$HDDEV" ] ; then + if [ -z $2 ]; then + echo " [I] Available devices:" + echo + exe lsblk -p + echo + exe read -p "Provide HD device (e.g. /dev/sdf): " devhd + else + devhd="$2" + fi + if [ -b "$devhd" ] ; then + HDDEV=$devhd + else + return 1 + fi + fi + if [ -z $HDROOT ] ; then + HDROOT=$(findmnt -no TARGET "${HDDEV}1") + fi + if [ -z $HDROOTPUUID ] ; then + HDROOTPUUID=$(findmnt -no PARTUUID "${HDDEV}1") + fi +} + VERSION_SEQREV=9 . /usr/local/bin/sequencer.sh