2018-10-15 14:43:09 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
2019-02-03 20:50:03 +00:00
|
|
|
# This script runs on every start called by boostrap.service
|
2021-08-04 00:18:30 +02:00
|
|
|
# see logs with --> tail -n 100 /home/admin/raspiblitz.log
|
2018-10-15 14:43:09 +02:00
|
|
|
|
2019-12-11 13:47:21 +01:00
|
|
|
################################
|
2019-12-12 14:51:21 +01:00
|
|
|
# BASIC SETTINGS
|
2019-12-11 13:47:21 +01:00
|
|
|
################################
|
|
|
|
|
2018-10-15 14:43:09 +02:00
|
|
|
# load codeVersion
|
|
|
|
source /home/admin/_version.info
|
|
|
|
|
2018-11-27 04:19:57 +01:00
|
|
|
# CONFIGFILE - configuration of RaspiBlitz
|
|
|
|
# used by fresh SD image to recover configuration
|
|
|
|
# and delivers basic config info for scripts
|
|
|
|
configFile="/mnt/hdd/raspiblitz.conf"
|
|
|
|
|
|
|
|
# LOGFILE - store debug logs of bootstrap
|
|
|
|
# resets on every start
|
|
|
|
logFile="/home/admin/raspiblitz.log"
|
|
|
|
|
|
|
|
# INFOFILE - state data from bootstrap
|
|
|
|
# used by display and later setup steps
|
|
|
|
infoFile="/home/admin/raspiblitz.info"
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# SETUPFILE
|
|
|
|
# this key/value file contains the state during the setup process
|
|
|
|
setupFile="/var/cache/raspiblitz/temp/raspiblitz.setup"
|
2020-07-22 21:20:11 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# Init boostrap log file
|
2018-11-27 04:19:57 +01:00
|
|
|
echo "Writing logs to: ${logFile}"
|
|
|
|
echo "" > $logFile
|
|
|
|
echo "***********************************************" >> $logFile
|
|
|
|
echo "Running RaspiBlitz Bootstrap ${codeVersion}" >> $logFile
|
|
|
|
date >> $logFile
|
|
|
|
echo "***********************************************" >> $logFile
|
2018-10-15 14:43:09 +02:00
|
|
|
|
2019-01-21 00:25:32 +01:00
|
|
|
# set default values for raspiblitz.info
|
|
|
|
network=""
|
|
|
|
chain=""
|
|
|
|
setupStep=0
|
2021-08-04 00:18:30 +02:00
|
|
|
setupPhase='boot'
|
2020-01-07 17:11:21 +01:00
|
|
|
fsexpanded=0
|
2021-04-08 00:02:57 +02:00
|
|
|
# see https://github.com/rootzoll/raspiblitz/issues/1265#issuecomment-813369284
|
|
|
|
displayClass="lcd"
|
|
|
|
displayType=""
|
2021-04-08 18:04:16 +02:00
|
|
|
fundRecovery=0
|
2019-01-21 00:25:32 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
################################
|
|
|
|
# INIT raspiblitz.info
|
|
|
|
################################
|
|
|
|
|
2019-01-21 00:25:32 +01:00
|
|
|
# try to load old values if available (overwrites defaults)
|
2019-01-21 00:49:30 +01:00
|
|
|
source ${infoFile} 2>/dev/null
|
2019-01-21 00:25:32 +01:00
|
|
|
|
2021-04-08 00:02:57 +02:00
|
|
|
# try to load config values if available (config overwrites info)
|
|
|
|
source ${configFile} 2>/dev/null
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# get first basic network info
|
|
|
|
source <(/home/admin/config.scripts/internet.sh status)
|
|
|
|
|
|
|
|
# get basic hardware info
|
2021-09-08 08:31:08 +01:00
|
|
|
source <(/home/admin/config.scripts/blitz.hardware.sh status)
|
2021-08-04 00:18:30 +02:00
|
|
|
|
|
|
|
# get basic dns info
|
|
|
|
source <(sudo /home/admin/config.scripts/internet.dns.sh test nodialog)
|
|
|
|
|
2019-01-21 00:25:32 +01:00
|
|
|
# resetting info file
|
2018-11-27 04:19:57 +01:00
|
|
|
echo "Resetting the InfoFile: ${infoFile}"
|
|
|
|
echo "state=starting" > $infoFile
|
2018-12-12 16:12:30 +01:00
|
|
|
echo "message=" >> $infoFile
|
2021-04-03 12:24:50 +02:00
|
|
|
echo "baseimage=${baseimage}" >> $infoFile
|
|
|
|
echo "cpu=${cpu}" >> $infoFile
|
2021-08-04 00:18:30 +02:00
|
|
|
echo "board=${board}" >> $infoFile
|
|
|
|
echo "ramMB=${ramMB}" >> $infoFile
|
2021-09-09 19:11:30 +02:00
|
|
|
echo "ramGB=${ramGB}" >> $infoFile
|
2019-01-21 00:25:32 +01:00
|
|
|
echo "network=${network}" >> $infoFile
|
|
|
|
echo "chain=${chain}" >> $infoFile
|
2021-08-04 00:18:30 +02:00
|
|
|
echo "localip='${localip}'" >> $infoFile
|
|
|
|
echo "online='${online}'" >> $infoFile
|
|
|
|
echo "dnsworking=${dnsworking}" >> $infoFile
|
2020-01-07 17:11:21 +01:00
|
|
|
echo "fsexpanded=${fsexpanded}" >> $infoFile
|
2021-04-08 00:02:57 +02:00
|
|
|
echo "displayClass=${displayClass}" >> $infoFile
|
|
|
|
echo "displayType=${displayType}" >> $infoFile
|
2019-01-21 00:25:32 +01:00
|
|
|
echo "setupStep=${setupStep}" >> $infoFile
|
2021-08-04 00:18:30 +02:00
|
|
|
echo "setupPhase=${setupPhase}" >> $infoFile
|
2021-04-08 18:04:16 +02:00
|
|
|
echo "fundRecovery=${fundRecovery}" >> $infoFile
|
2019-02-04 11:40:17 +01:00
|
|
|
if [ "${setupStep}" != "100" ]; then
|
|
|
|
echo "hostname=${hostname}" >> $infoFile
|
|
|
|
fi
|
2021-08-24 19:35:11 +02:00
|
|
|
sudo chmod 664 ${infoFile}
|
2018-10-15 22:31:56 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
######################################
|
|
|
|
# CHECK SD CARD INCONSISTENT STATE
|
|
|
|
|
2021-08-20 23:23:37 +02:00
|
|
|
# make sure SSH server is configured & running
|
2021-08-20 23:30:53 +02:00
|
|
|
sudo /home/admin/config.scripts/blitz.ssh.sh checkrepair >> ${logFile}
|
2021-08-20 23:23:37 +02:00
|
|
|
|
2021-09-05 14:34:30 +02:00
|
|
|
# when a file 'stop' is on the sd card boot partition - stop for manual provision
|
|
|
|
flagExists=$(sudo ls /boot/stop | grep -c 'stop')
|
|
|
|
if [ "${flagExists}" == "1" ]; then
|
|
|
|
sudo rm /boot/stop
|
|
|
|
sed -i "s/^state=.*/state=stop/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='stopped for manual provision'/g" ${infoFile}
|
2021-09-08 08:46:12 +01:00
|
|
|
echo "INFO: 'bootstrap stopped - run release after manual provison'" >> ${logFile}
|
2021-09-05 14:34:30 +02:00
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# when the provision did not ran thru without error (ask user for fresh sd card)
|
|
|
|
provisionFlagExists=$(sudo ls /home/admin/provision.flag | grep -c 'provision.flag')
|
|
|
|
if [ "${provisionFlagExists}" == "1" ]; then
|
|
|
|
sudo systemctl stop ${network}d 2>/dev/null
|
|
|
|
sudo systemctl stop lnd 2>/dev/null
|
|
|
|
sed -i "s/^state=.*/state=inconsistentsystem/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='provision did not ran thru'/g" ${infoFile}
|
2021-09-08 08:37:27 +01:00
|
|
|
echo "FAIL: 'provision did not ran thru' - need fresh sd card!" >> ${logFile}
|
2021-08-04 00:18:30 +02:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
######################################
|
|
|
|
# SECTION FOR POSSIBLE REBOOT ACTIONS
|
|
|
|
systemInitReboot=0
|
|
|
|
|
|
|
|
################################
|
|
|
|
# FORCED SWITCH TO HDMI
|
|
|
|
# if a file called 'hdmi' gets
|
|
|
|
# placed onto the boot part of
|
|
|
|
# the sd card - switch to hdmi
|
|
|
|
################################
|
|
|
|
|
|
|
|
forceHDMIoutput=$(sudo ls /boot/hdmi* 2>/dev/null | grep -c hdmi)
|
|
|
|
if [ ${forceHDMIoutput} -eq 1 ]; then
|
|
|
|
# delete that file (to prevent loop)
|
|
|
|
sudo rm /boot/hdmi*
|
|
|
|
# switch to HDMI what will trigger reboot
|
|
|
|
echo "HDMI switch found ... activating HDMI display output & reboot" >> $logFile
|
|
|
|
sudo /home/admin/config.scripts/blitz.display.sh set-display hdmi >> $logFile
|
|
|
|
systemInitReboot=1
|
2021-08-17 23:57:04 +02:00
|
|
|
sed -i "s/^message=.*/message='HDMI'/g" ${infoFile}
|
2021-08-04 00:18:30 +02:00
|
|
|
else
|
|
|
|
echo "No HDMI switch found. " >> $logFile
|
|
|
|
fi
|
|
|
|
|
|
|
|
################################
|
|
|
|
# FS EXPAND
|
|
|
|
# if a file called 'ssh.reset' gets
|
|
|
|
# placed onto the boot part of
|
|
|
|
# the sd card - delete old ssh data
|
|
|
|
################################
|
2021-08-20 00:20:16 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
source <(sudo /home/admin/config.scripts/blitz.bootdrive.sh status)
|
|
|
|
if [ "${needsExpansion}" == "1" ] && [ "${fsexpanded}" == "0" ]; then
|
|
|
|
echo "FSEXPAND needed ... starting process" >> $logFile
|
|
|
|
sudo /home/admin/config.scripts/blitz.bootdrive.sh status >> $logFile
|
|
|
|
sudo /home/admin/config.scripts/blitz.bootdrive.sh fsexpand >> $logFile
|
|
|
|
systemInitReboot=1
|
2021-08-17 23:57:04 +02:00
|
|
|
sed -i "s/^message=.*/message='FSEXPAND'/g" ${infoFile}
|
2021-08-04 00:18:30 +02:00
|
|
|
elif [ "${tooSmall}" == "1" ]; then
|
|
|
|
echo "!!! FAIL !!!!!!!!!!!!!!!!!!!!" >> $logFile
|
|
|
|
echo "SDCARD TOO SMALL 16G minimum" >> $logFile
|
|
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $logFile
|
|
|
|
sed -i "s/^state=.*/state=sdtoosmall/g" ${infoFile}
|
|
|
|
echo "System stopped. Please cut power." >> $logFile
|
|
|
|
sleep 6000
|
|
|
|
sudo shutdown -r now
|
|
|
|
slepp 100
|
|
|
|
exit 1
|
|
|
|
else
|
|
|
|
echo "No FS EXPAND needed. needsExpansion(${needsExpansion}) fsexpanded(${fsexpanded})" >> $logFile
|
|
|
|
fi
|
|
|
|
|
2021-08-20 00:20:16 +02:00
|
|
|
################################
|
|
|
|
# SSH SERVER CERTS RESET
|
|
|
|
# if a file called 'ssh.reset' gets
|
|
|
|
# placed onto the boot part of
|
|
|
|
# the sd card - delete old ssh data
|
|
|
|
################################
|
|
|
|
|
|
|
|
sshReset=$(sudo ls /boot/ssh.reset* 2>/dev/null | grep -c reset)
|
|
|
|
if [ ${sshReset} -eq 1 ]; then
|
|
|
|
# delete that file (to prevent loop)
|
|
|
|
sudo rm /boot/ssh.reset* >> $logFile
|
|
|
|
# delete ssh certs
|
|
|
|
echo "SSHRESET switch found ... stopping SSH and deleting old certs" >> $logFile
|
2021-08-20 12:45:52 +02:00
|
|
|
sudo /home/admin/config.scripts/blitz.ssh.sh renew >> $logFile
|
|
|
|
sudo /home/admin/config.scripts/blitz.ssh.sh backup >> $logFile
|
2021-08-20 00:20:16 +02:00
|
|
|
systemInitReboot=1
|
|
|
|
sed -i "s/^message=.*/message='SSHRESET'/g" ${infoFile}
|
|
|
|
else
|
|
|
|
echo "No SSHRESET switch found. " >> $logFile
|
|
|
|
fi
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
################################
|
|
|
|
# UASP FIX - first try
|
|
|
|
# if HDD is connected on start
|
|
|
|
################################
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh uasp-fix)
|
|
|
|
if [ "${neededReboot}" == "1" ]; then
|
|
|
|
echo "UASP FIX applied (1st-try) ... reboot needed." >> $logFile
|
2021-08-17 23:57:04 +02:00
|
|
|
sed -i "s/^message=.*/message='UASP'/g" ${infoFile}
|
2021-08-04 00:18:30 +02:00
|
|
|
systemInitReboot=1
|
|
|
|
else
|
|
|
|
echo "No UASP FIX needed (1st-try)." >> $logFile
|
|
|
|
fi
|
|
|
|
|
|
|
|
######################################
|
|
|
|
# CHECK IF REBOOT IS NEEDED
|
|
|
|
# from actions above
|
|
|
|
|
|
|
|
if [ "${systemInitReboot}" == "1" ]; then
|
2021-09-09 01:19:09 +02:00
|
|
|
sudo cp ${logFile} /home/admin/raspiblitz.systeminit.log
|
2021-08-30 12:13:05 +02:00
|
|
|
sudo sed -i "s/^state=.*/state=reboot/g" ${infoFile}
|
2021-08-19 00:18:59 +02:00
|
|
|
sleep 8
|
2021-08-04 00:18:30 +02:00
|
|
|
sudo shutdown -r now
|
|
|
|
sleep 100
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
################################
|
|
|
|
# BOOT LOGO
|
|
|
|
################################
|
|
|
|
|
|
|
|
# display 3 secs logo - try to kickstart LCD
|
|
|
|
# see https://github.com/rootzoll/raspiblitz/issues/195#issuecomment-469918692
|
|
|
|
# see https://github.com/rootzoll/raspiblitz/issues/647
|
|
|
|
# see https://github.com/rootzoll/raspiblitz/pull/1580
|
|
|
|
randnum=$(shuf -i 0-7 -n 1)
|
|
|
|
/home/admin/config.scripts/blitz.display.sh image /home/admin/raspiblitz/pictures/startlogo${randnum}.png
|
|
|
|
sleep 5
|
|
|
|
/home/admin/config.scripts/blitz.display.sh hide
|
|
|
|
|
|
|
|
################################
|
|
|
|
# CLEANING BOOT SYSTEM
|
|
|
|
################################
|
|
|
|
|
2019-04-23 16:22:42 +02:00
|
|
|
# resetting start count files
|
2019-04-24 13:47:58 +02:00
|
|
|
echo "SYSTEMD RESTART LOG: blockchain (bitcoind/litecoind)" > /home/admin/systemd.blockchain.log
|
|
|
|
echo "SYSTEMD RESTART LOG: lightning (LND)" > /home/admin/systemd.lightning.log
|
2021-08-24 19:35:11 +02:00
|
|
|
sudo chmod 666 /home/admin/systemd.blockchain.log
|
|
|
|
sudo chmod 666 /home/admin/systemd.lightning.log
|
2019-04-23 16:22:42 +02:00
|
|
|
|
2019-03-14 10:55:40 +01:00
|
|
|
# Emergency cleaning logs when over 1GB (to prevent SD card filling up)
|
2019-03-13 16:04:09 +01:00
|
|
|
# see https://github.com/rootzoll/raspiblitz/issues/418#issuecomment-472180944
|
2019-03-14 10:55:40 +01:00
|
|
|
echo "*** Checking Log Size ***"
|
|
|
|
logsMegaByte=$(sudo du -c -m /var/log | grep "total" | awk '{print $1;}')
|
|
|
|
if [ ${logsMegaByte} -gt 1000 ]; then
|
|
|
|
echo "WARN !! Logs /var/log in are bigger then 1GB"
|
|
|
|
echo "ACTION --> DELETED ALL LOGS"
|
2020-04-16 19:06:19 +01:00
|
|
|
if [ -d "/var/log/nginx" ]; then
|
|
|
|
nginxLog=1
|
|
|
|
echo "/var/log/nginx is present"
|
|
|
|
fi
|
2019-03-14 10:55:40 +01:00
|
|
|
sudo rm -r /var/log/*
|
2020-04-16 19:06:19 +01:00
|
|
|
if [ $nginxLog == 1 ]; then
|
|
|
|
sudo mkdir /var/log/nginx
|
|
|
|
echo "Recreated /var/log/nginx"
|
|
|
|
fi
|
2019-03-14 10:55:40 +01:00
|
|
|
sleep 3
|
|
|
|
echo "WARN !! Logs in /var/log in were bigger then 1GB and got emergency delete to prevent fillup."
|
2021-08-27 03:59:21 -04:00
|
|
|
echo "If you see this in the logs please report to the GitHub issues, so LOG config needs to be optimized."
|
2019-03-14 10:55:40 +01:00
|
|
|
else
|
|
|
|
echo "OK - logs are at ${logsMegaByte} MB - within safety limit"
|
|
|
|
fi
|
|
|
|
echo ""
|
2019-03-13 16:04:09 +01:00
|
|
|
|
2019-12-12 14:51:21 +01:00
|
|
|
###############################
|
2021-08-04 00:18:30 +02:00
|
|
|
# WAIT FOR ALL SERVICES
|
2019-12-12 14:51:21 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# get the state of data drive
|
2019-12-12 14:51:21 +01:00
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh status)
|
|
|
|
|
|
|
|
################################
|
2021-08-04 00:18:30 +02:00
|
|
|
# WAIT LOOP: HDD CONNECTED
|
2019-12-12 14:51:21 +01:00
|
|
|
################################
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
echo "Waiting for HDD/SSD ..." >> $logFile
|
2021-08-20 15:00:05 +02:00
|
|
|
sudo ls -la /etc/ssh >> $logFile
|
2021-08-04 00:18:30 +02:00
|
|
|
until [ ${isMounted} -eq 1 ] || [ ${#hddCandidate} -gt 0 ]
|
|
|
|
do
|
2019-12-12 14:51:21 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# recheck HDD/SSD
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh status)
|
|
|
|
echo "isMounted: $isMounted"
|
|
|
|
echo "hddCandidate: $hddCandidate"
|
2019-01-15 02:37:14 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# in case of HDD analyse ERROR
|
|
|
|
if [ "${hddError}" != "" ]; then
|
|
|
|
echo "FAIL - error on HDD analysis: ${hddError}" >> $logFile
|
|
|
|
sed -i "s/^state=.*/state=errorHDD/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='${hddError}'/g" ${infoFile}
|
|
|
|
elif [ "${isMounted}" == "0" ] && [ "${hddCandidate}" == "" ]; then
|
|
|
|
sed -i "s/^state=.*/state=noHDD/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='>=1TB'/g" ${infoFile}
|
|
|
|
fi
|
2019-01-15 02:37:14 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# wait for next check
|
|
|
|
sleep 2
|
2018-10-15 22:31:56 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
done
|
|
|
|
echo "HDD/SSD connected: ${$hddCandidate}" >> $logFile
|
2018-10-15 22:31:56 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# write info for LCD
|
|
|
|
sed -i "s/^state=.*/state=system-init/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='please wait'/g" ${infoFile}
|
2020-01-24 21:46:51 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
####################################
|
|
|
|
# WIFI RESTORE from HDD works with
|
|
|
|
# mem copy from datadrive inspection
|
|
|
|
####################################
|
|
|
|
|
|
|
|
# check if there is a WIFI configuration to backup or restore
|
|
|
|
/home/admin/config.scripts/internet.wifi.sh backup-restore >> $logFile
|
2020-01-24 21:46:51 +01:00
|
|
|
|
2020-03-18 14:07:27 -07:00
|
|
|
################################
|
2021-08-04 00:18:30 +02:00
|
|
|
# UASP FIX - second try
|
|
|
|
# when HDD gets connected later
|
2020-03-18 14:07:27 -07:00
|
|
|
################################
|
2021-08-04 00:18:30 +02:00
|
|
|
sed -i "s/^message=.*/message='checking HDD'/g" ${infoFile}
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh uasp-fix)
|
|
|
|
if [ "${neededReboot}" == "1" ]; then
|
|
|
|
echo "UASP FIX applied (2nd-try) ... reboot needed." >> $logFile
|
|
|
|
sudo cp ${logFile} ${logFile}.uasp
|
2021-08-17 23:57:04 +02:00
|
|
|
sudo sed -i "s/^state=.*/state=reboot/g" ${infoFile}
|
2021-08-19 00:18:59 +02:00
|
|
|
sleep 8
|
2021-04-13 13:55:12 +02:00
|
|
|
sudo shutdown -r now
|
|
|
|
sleep 100
|
2020-03-18 14:07:27 -07:00
|
|
|
exit 0
|
2021-08-04 00:18:30 +02:00
|
|
|
else
|
|
|
|
echo "No UASP FIX needed (2nd-try)." >> $logFile
|
2020-03-18 14:07:27 -07:00
|
|
|
fi
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
###################################
|
|
|
|
# WAIT LOOP: LOCALNET / INTERNET
|
|
|
|
# after HDD > can contain WIFI conf
|
|
|
|
###################################
|
|
|
|
gotLocalIP=0
|
|
|
|
until [ ${gotLocalIP} -eq 1 ]
|
2019-12-12 14:51:21 +01:00
|
|
|
do
|
2021-08-04 00:18:30 +02:00
|
|
|
|
|
|
|
# get latest network info & update raspiblitz.info
|
|
|
|
source <(/home/admin/config.scripts/internet.sh status)
|
|
|
|
sed -i "s/^localip=.*/localip='${localip}'/g" ${infoFile}
|
|
|
|
|
|
|
|
# check state of network
|
|
|
|
if [ ${dhcp} -eq 0 ]; then
|
|
|
|
# display user waiting for DHCP
|
|
|
|
sed -i "s/^state=.*/state=noDHCP/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='Waiting for DHCP'/g" ${infoFile}
|
|
|
|
elif [ ${#localip} -eq 0 ]; then
|
2021-09-12 17:45:57 +02:00
|
|
|
configWifiExists=$(sudo cat /etc/wpa_supplicant/wpa_supplicant.conf 2>/dev/null| grep -c "network=")
|
2021-08-04 00:18:30 +02:00
|
|
|
if [ ${configWifiExists} -eq 0 ]; then
|
|
|
|
# display user to connect LAN
|
|
|
|
sed -i "s/^state=.*/state=noIP-LAN/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='Connect the LAN/WAN'/g" ${infoFile}
|
|
|
|
else
|
|
|
|
# display user that wifi settings are not working
|
|
|
|
sed -i "s/^state=.*/state=noIP-WIFI/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='WIFI Settings not working'/g" ${infoFile}
|
|
|
|
fi
|
|
|
|
elif [ ${online} -eq 0 ]; then
|
|
|
|
# display user that wifi settings are not working
|
|
|
|
sed -i "s/^state=.*/state=noInternet/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='No connection to Internet'/g" ${infoFile}
|
|
|
|
else
|
|
|
|
gotLocalIP=1
|
2019-12-12 14:51:21 +01:00
|
|
|
fi
|
2021-08-04 00:18:30 +02:00
|
|
|
sleep 1
|
2019-12-12 14:51:21 +01:00
|
|
|
done
|
2019-12-12 16:06:07 +01:00
|
|
|
|
|
|
|
# write info for LCD
|
2021-08-04 00:18:30 +02:00
|
|
|
sed -i "s/^state=.*/state=inspect-hdd/g" ${infoFile}
|
2019-12-12 16:06:07 +01:00
|
|
|
sed -i "s/^message=.*/message='please wait'/g" ${infoFile}
|
2019-12-12 14:51:21 +01:00
|
|
|
|
|
|
|
# get fresh info about data drive to continue
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh status)
|
2021-03-26 23:26:29 +01:00
|
|
|
|
2021-09-09 11:33:31 +01:00
|
|
|
echo "isMounted: $isMounted" >> $logFile
|
|
|
|
|
|
|
|
# check if UASP is already deactivated (on RaspiOS)
|
|
|
|
# https://www.pragmaticlinux.com/2021/03/fix-for-getting-your-ssd-working-via-usb-3-on-your-raspberry-pi/
|
|
|
|
cmdlineExists=$(sudo ls /boot/cmdline.txt 2>/dev/null | grep -c "cmdline.txt")
|
|
|
|
if [ ${cmdlineExists} -eq 1 ] && [ ${#hddAdapterUSB} -gt 0 ] && [ ${hddAdapterUSAP} -eq 0 ]; then
|
|
|
|
echo "Checking for UASP deactivation ..." >> $logFile
|
|
|
|
usbQuirkActive=$(sudo cat /boot/cmdline.txt | grep -c "usb-storage.quirks=")
|
|
|
|
# check if its maybe other device
|
|
|
|
usbQuirkDone=$(sudo cat /boot/cmdline.txt | grep -c "usb-storage.quirks=${hddAdapterUSB}:u")
|
|
|
|
if [ ${usbQuirkActive} -gt 0 ] && [ ${usbQuirkDone} -eq 0 ]; then
|
|
|
|
# remove old usb-storage.quirks
|
|
|
|
sudo sed -i "s/usb-storage.quirks=[^ ]* //g" /boot/cmdline.txt
|
|
|
|
fi
|
|
|
|
if [ ${usbQuirkDone} -eq 0 ]; then
|
|
|
|
# add new usb-storage.quirks
|
|
|
|
sudo sed -i "1s/^/usb-storage.quirks=${hddAdapterUSB}:u /" /boot/cmdline.txt
|
|
|
|
sudo cat /boot/cmdline.txt >> $logFile
|
|
|
|
# go into reboot to activate new setting
|
|
|
|
echo "DONE deactivating UASP for ${hddAdapterUSB} ... one more reboot needed ... " >> $logFile
|
|
|
|
sudo cp ${logFile} ${logFile}.uasp
|
|
|
|
sudo shutdown -r now
|
|
|
|
sleep 100
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "Skipping UASP deactivation ... cmdlineExists(${cmdlineExists}) hddAdapterUSB(${hddAdapterUSB}) hddAdapterUSAP(${hddAdapterUSAP})" >> $logFile
|
|
|
|
fi
|
|
|
|
|
2018-12-10 14:48:02 +01:00
|
|
|
# check if the HDD is auto-mounted ( auto-mounted = setup-done)
|
2021-08-04 00:18:30 +02:00
|
|
|
echo "HDD already part of system: $isMounted" >> $logFile
|
2019-12-12 14:51:21 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
############################
|
|
|
|
############################
|
|
|
|
# WHEN SETUP IS NEEDED
|
|
|
|
############################
|
2018-11-27 04:19:57 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
if [ ${isMounted} -eq 0 ]; then
|
2018-11-27 04:19:57 +01:00
|
|
|
|
2021-09-04 21:21:03 +02:00
|
|
|
# temp mount the HDD
|
2021-09-05 15:05:45 +02:00
|
|
|
echo "Temp mounting (1) data drive ($hddCandidate)" >> $logFile
|
2021-09-04 21:21:03 +02:00
|
|
|
if [ "${hddFormat}" != "btrfs" ]; then
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh tempmount ${hddPartitionCandidate})
|
|
|
|
else
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh tempmount ${hddCandidate})
|
|
|
|
fi
|
2021-09-05 15:05:45 +02:00
|
|
|
echo "Temp mounting (1) result: ${isMounted}" >> $logFile
|
2021-09-04 21:21:03 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# write data needed for setup process into raspiblitz.info
|
|
|
|
echo "hddCandidate='${hddCandidate}'" >> ${infoFile}
|
2021-09-09 19:11:30 +02:00
|
|
|
echo "hddGigaBytes=${hddGigaBytes}" >> ${infoFile}
|
2021-08-04 00:18:30 +02:00
|
|
|
echo "hddBlocksBitcoin=${hddBlocksBitcoin}" >> ${infoFile}
|
|
|
|
echo "hddBlocksLitecoin=${hddBlocksLitecoin}" >> ${infoFile}
|
|
|
|
echo "hddGotMigrationData=${hddGotMigrationData}" >> ${infoFile}
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
echo "HDD is there but not AutoMounted yet - Waiting for user Setup/Update" >> $logFile
|
|
|
|
|
|
|
|
# determine correct setup phase
|
|
|
|
infoMessage="Please Login for Setup"
|
|
|
|
setupPhase="setup"
|
|
|
|
if [ "${hddGotMigrationData}" != "" ]; then
|
|
|
|
infoMessage="Please Login for Migration"
|
|
|
|
setupPhase="migration"
|
|
|
|
elif [ "${hddRaspiData}" == "1" ]; then
|
2021-08-20 00:33:20 +02:00
|
|
|
|
|
|
|
# INIT OLD SSH HOST KEYS on Update/Recovery to prevent "Unknown Host" on ssh client
|
|
|
|
echo "COPY und Activating old SSH host keys" >> $logFile
|
2021-08-20 12:45:52 +02:00
|
|
|
sudo /home/admin/config.scripts/blitz.ssh.sh restore >> $logFile
|
2021-08-20 00:33:20 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# determine if this is a recovery or an update
|
2021-09-07 14:12:51 +01:00
|
|
|
# TODO: improve version/update detection later
|
2021-08-04 00:18:30 +02:00
|
|
|
isRecovery=$(echo "${hddRaspiVersion}" | grep -c "${codeVersion}")
|
|
|
|
if [ "${isRecovery}" == "1" ]; then
|
|
|
|
infoMessage="Please Login for Recovery"
|
|
|
|
setupPhase="recovery"
|
|
|
|
else
|
|
|
|
infoMessage="Please Login for Update"
|
|
|
|
setupPhase="update"
|
|
|
|
fi
|
2021-08-20 00:33:20 +02:00
|
|
|
|
2018-11-27 04:19:57 +01:00
|
|
|
fi
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# signal "WAIT LOOP: SETUP" to LCD, SSH & WEBAPI
|
|
|
|
echo "Displaying Info Message: ${infoMessage}" >> $logFile
|
|
|
|
sed -i "s/^state=.*/state=waitsetup/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='${infoMessage}'/g" ${infoFile}
|
|
|
|
sed -i "s/^setupPhase=.*/setupPhase='${setupPhase}'/g" ${infoFile}
|
|
|
|
|
|
|
|
#############################################
|
|
|
|
# WAIT LOOP: USER SETUP/UPDATE/MIGRATION
|
|
|
|
# until SSH or WEBUI setup data is available
|
|
|
|
#############################################
|
|
|
|
|
|
|
|
echo "## WAIT LOOP: USER SETUP/UPDATE/MIGRATION" >> $logFile
|
|
|
|
until [ "${state}" == "waitprovision" ]
|
|
|
|
do
|
|
|
|
|
|
|
|
# get fresh info about data drive (in case the hdd gets disconnected)
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh status)
|
|
|
|
if [ "${hddCandidate}" == "" ]; then
|
|
|
|
echo "!!! WARNING !!! Lost HDD connection .. triggering reboot, to restart system-init." >> $logFile
|
|
|
|
sed -i "s/^state=.*/state=errorHDD/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='lost HDD - rebooting'/g" ${infoFile}
|
|
|
|
sudo cp ${logFile} ${logFile}.error
|
2021-08-19 00:18:59 +02:00
|
|
|
sleep 8
|
2021-08-18 21:24:18 +02:00
|
|
|
sudo shutdown -r now
|
|
|
|
sleep 100
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
# detect if network get deconnected again
|
|
|
|
# --> "removing network cable" can be used as signal to shutdown clean on test startup
|
|
|
|
source <(/home/admin/config.scripts/internet.sh status)
|
|
|
|
if [ "${localip}" == "" ]; then
|
|
|
|
sed -i "s/^state=.*/state=errorNetwork/g" ${infoFile}
|
2021-08-19 00:18:59 +02:00
|
|
|
sleep 8
|
2021-08-18 21:36:22 +02:00
|
|
|
sudo shutdown now
|
2021-08-04 00:18:30 +02:00
|
|
|
sleep 100
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
# give the loop a little bed time
|
|
|
|
sleep 4
|
|
|
|
|
|
|
|
# check info file for updated values
|
|
|
|
# especially the state for checking loop
|
|
|
|
source ${infoFile}
|
|
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
#############################################
|
|
|
|
# PROVISION PROCESS
|
|
|
|
#############################################
|
|
|
|
|
|
|
|
# refresh data from info file
|
|
|
|
source ${infoFile}
|
|
|
|
echo "# PROVISION PROCESS with setupPhase(${setupPhase})" >> $logFile
|
|
|
|
|
|
|
|
# mark system on sd card as in setup process
|
|
|
|
echo "the provision process was started but did not finish yet" > /home/admin/provision.flag
|
|
|
|
|
2021-09-05 15:05:45 +02:00
|
|
|
# make HDD is still temp mounted
|
|
|
|
echo "Temp mounting (2) data drive ($hddCandidate)" >> $logFile
|
|
|
|
source <(/home/admin/config.scripts/internet.sh status)
|
|
|
|
if [ "${hddFormat}" != "btrfs" ]; then
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh tempmount ${hddPartitionCandidate})
|
|
|
|
else
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh tempmount ${hddCandidate})
|
|
|
|
fi
|
|
|
|
echo "Temp mounting (2) result: ${isMounted}" >> $logFile
|
|
|
|
|
2019-12-12 14:51:21 +01:00
|
|
|
# make sure all links between directories/drives are correct
|
|
|
|
echo "Refreshing links between directories/drives .." >> $logFile
|
|
|
|
sudo /home/admin/config.scripts/blitz.datadrive.sh link
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# copy over the raspiblitz.conf created from setup to HDD
|
|
|
|
configExists=$(ls /mnt/hdd/raspiblitz.conf 2>/dev/null | grep -c "raspiblitz.conf")
|
|
|
|
if [ "${configExists}" != "1" ]; then
|
2021-08-24 19:35:11 +02:00
|
|
|
sudo cp /var/cache/raspiblitz/temp/raspiblitz.conf ${configFile}
|
2021-08-04 00:18:30 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# kick-off provision process
|
|
|
|
sed -i "s/^state=.*/state=provision/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='Starting Provision'/g" ${infoFile}
|
|
|
|
|
|
|
|
# load setup data
|
2021-09-04 21:21:03 +02:00
|
|
|
source ${setupFile}
|
2021-08-04 00:18:30 +02:00
|
|
|
|
|
|
|
# make sure basic info id in raspiblitz.info
|
|
|
|
sudo sed -i "s/^network=.*/network=${network}/g" ${infoFile}
|
|
|
|
sudo sed -i "s/^chain=.*/chain=${chain}/g" ${infoFile}
|
|
|
|
sudo sed -i "s/^lightning=.*/lightning=${lightning}/g" ${infoFile}
|
|
|
|
|
|
|
|
###################################
|
|
|
|
# Set Password A (in all cases)
|
|
|
|
|
|
|
|
if [ "${passwordA}" == "" ]; then
|
|
|
|
sed -i "s/^state=.*/state=error/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='config: missing passwordA'/g" ${infoFile}
|
|
|
|
echo "FAIL see ${logFile}"
|
|
|
|
echo "FAIL: missing passwordA in (${setupFile})!" >> ${logFile}
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "SETTING PASSWORD A" >> ${logFile}
|
|
|
|
sudo /home/admin/config.scripts/blitz.setpassword.sh a "${passwordA}" >> ${logFile}
|
|
|
|
|
|
|
|
# if setup - run provision setup first
|
|
|
|
if [ "${setupPhase}" == "setup" ]; then
|
|
|
|
echo "Calling _provision.setup.sh for basic setup tasks .." >> $logFile
|
|
|
|
sed -i "s/^message=.*/message='Provision Setup'/g" ${infoFile}
|
|
|
|
sudo /home/admin/_provision.setup.sh
|
2021-08-26 11:28:56 +02:00
|
|
|
errorState=$?
|
2021-09-09 01:19:09 +02:00
|
|
|
sudo cat /home/admin/raspiblitz.provision-setup.log
|
2021-08-26 11:28:56 +02:00
|
|
|
if [ "$errorState" != "0" ]; then
|
|
|
|
echo "EXIT _provision.setup.sh BECAUSE OF ERROR STATE ($errorState)" >> $logFile
|
2021-09-06 14:57:05 +01:00
|
|
|
echo "This can also happen if _provision.setup.sh has syntax errors" >> $logFile
|
2021-08-04 00:18:30 +02:00
|
|
|
sed -i "s/^state=.*/state='error'/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='_provision.setup.sh fail'/g" ${infoFile}
|
|
|
|
exit 1
|
2018-12-11 19:37:32 +01:00
|
|
|
fi
|
2021-08-04 00:18:30 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# if migration - run the migration provision first
|
|
|
|
if [ "${setupPhase}" == "migration" ]; then
|
|
|
|
echo "Calling _provision.migration.sh for possible migrations .." >> $logFile
|
|
|
|
sed -i "s/^message=.*/message='Provision migration'/g" ${infoFile}
|
|
|
|
sudo /home/admin/_provision.migration.sh
|
2021-08-26 11:28:56 +02:00
|
|
|
errorState=$?
|
2021-09-09 01:19:09 +02:00
|
|
|
sudo cat /home/admin/raspiblitz.provision-migration.log
|
2021-08-26 11:28:56 +02:00
|
|
|
if [ "$errorState" != "0" ]; then
|
|
|
|
echo "EXIT _provision.migration.sh BECAUSE OF ERROR STATE ($errorState)" >> $logFile
|
2021-08-04 00:18:30 +02:00
|
|
|
echo "This can also happen if _provision.migration.sh has syntax errros" >> $logFile
|
|
|
|
sed -i "s/^state=.*/state='error'/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='_provision.migration.sh fail'/g" ${infoFile}
|
|
|
|
exit 1
|
2018-12-11 19:37:32 +01:00
|
|
|
fi
|
2021-08-04 00:18:30 +02:00
|
|
|
fi
|
|
|
|
|
2021-09-09 00:12:46 +02:00
|
|
|
# if update/recovery/migration-followup
|
2021-08-04 00:18:30 +02:00
|
|
|
if [ "${setupPhase}" == "update" ] || [ "${setupPhase}" == "recovery" ] || [ "${setupPhase}" == "migration" ]; then
|
|
|
|
echo "Calling _provision.update.sh .." >> $logFile
|
|
|
|
sed -i "s/^message=.*/message='Provision Update/Recovery/Migration'/g" ${infoFile}
|
|
|
|
sudo /home/admin/_provision.update.sh
|
2021-08-26 11:28:56 +02:00
|
|
|
errorState=$?
|
2021-09-09 01:19:09 +02:00
|
|
|
sudo cat /home/admin/raspiblitz.provision-update.log
|
2021-08-26 11:28:56 +02:00
|
|
|
if [ "$errorState" != "0" ]; then
|
|
|
|
echo "EXIT _provision.update.sh BECAUSE OF ERROR STATE ($errorState)" >> $logFile
|
2021-09-06 14:57:05 +01:00
|
|
|
echo "This can also happen if _provision.update.sh has syntax errors" >> $logFile
|
2021-08-04 00:18:30 +02:00
|
|
|
sed -i "s/^state=.*/state='error'/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='_provision.update.sh fail'/g" ${infoFile}
|
|
|
|
exit 1
|
2018-12-11 20:12:21 +01:00
|
|
|
fi
|
2018-12-11 19:37:32 +01:00
|
|
|
fi
|
2019-12-11 01:25:18 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# finalize provisioning
|
|
|
|
echo "Calling _bootstrap.provision.sh for general system provisioning (${setupPhase}) .." >> $logFile
|
|
|
|
sed -i "s/^message=.*/message='Provision Basics'/g" ${infoFile}
|
|
|
|
sudo /home/admin/_provision_.sh
|
2021-08-26 11:28:56 +02:00
|
|
|
errorState=$?
|
|
|
|
if [ "$errorState" != "0" ]; then
|
|
|
|
echo "EXIT _provision_.sh BECAUSE OF ERROR STATE ($errorState)" >> $logFile
|
2021-09-06 14:57:05 +01:00
|
|
|
echo "This can also happen if _provision_.sh has syntax errors" >> $logFile
|
2021-08-04 00:18:30 +02:00
|
|
|
sed -i "s/^state=.*/state='error'/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='_provision_.sh fail'/g" ${infoFile}
|
|
|
|
exit 1
|
2018-11-27 04:19:57 +01:00
|
|
|
fi
|
|
|
|
|
2021-08-26 13:14:00 +02:00
|
|
|
# everyone can read the config but it can only be
|
|
|
|
# edited/written by root ot admin user (part of group sudo)
|
|
|
|
sudo chown root:sudo ${configFile}
|
|
|
|
sudo chmod 664 ${configFile}
|
|
|
|
|
2021-09-12 17:45:57 +02:00
|
|
|
# delete provision in progress flag
|
|
|
|
sudo rm /home/admin/provision.flag
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# mark provision process done
|
|
|
|
sed -i "s/^message=.*/message='Provision Done'/g" ${infoFile}
|
2019-12-12 14:51:21 +01:00
|
|
|
|
2021-09-12 17:56:41 +02:00
|
|
|
# make sure for future starts that blockchain service gets started after bootstrap
|
|
|
|
# so deamon reloas needed ... system will go into reboot after last loop
|
|
|
|
sed -i "s/^Wants=.*/Wants=bootstrap.service/g" /etc/systemd/system/${network}d.service
|
|
|
|
sed -i "s/^After=.*/After=network.target/g" /etc/systemd/system/${network}d.service
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# wait until syncProgress is available (neeed for final dialogs)
|
|
|
|
while [ "${syncProgress}" == "" ]
|
|
|
|
do
|
|
|
|
echo "# Waiting for blockchain sync progress info ..." >> $logFile
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.statusscan.sh)
|
|
|
|
sed -i "s/^state=.*/state=waitsync/g" ${infoFile}
|
|
|
|
sleep 2
|
|
|
|
done
|
2020-07-22 21:20:11 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
###################################################
|
|
|
|
# WAIT LOOP: AFTER FRESH SETUP, MIGRATION
|
|
|
|
# successfull update & recover can skip this
|
|
|
|
###################################################
|
2020-07-22 21:20:11 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
if [ "${setupPhase}" == "setup" ] || [ "${setupPhase}" == "migration" ]; then
|
|
|
|
echo "# Go into WAIT LOOP for final setup dialog ..." >> $logFile
|
|
|
|
sed -i "s/^state=.*/state=waitfinal/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='Setup Done'/g" ${infoFile}
|
|
|
|
else
|
|
|
|
echo "# Skip WAIT LOOP boot directly into main menu ..." >> $logFile
|
|
|
|
sed -i "s/^state=.*/state=ready/g" ${infoFile}
|
|
|
|
sed -i "s/^message=.*/message='Setup Done'/g" ${infoFile}
|
|
|
|
fi
|
2019-12-12 17:32:26 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
source ${infoFile}
|
|
|
|
echo "WAIT LOOP: FINAL SETUP .. see controlFinalDialog.sh" >> $logFile
|
|
|
|
until [ "${state}" == "ready" ]
|
|
|
|
do
|
2018-12-11 00:53:07 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# get latest network info & update raspiblitz.info (in case network changes)
|
|
|
|
source <(/home/admin/config.scripts/internet.sh status)
|
|
|
|
sed -i "s/^localip=.*/localip='${localip}'/g" ${infoFile}
|
2018-12-11 00:53:07 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# give the loop a little bed time
|
|
|
|
sleep 4
|
2019-04-03 02:58:10 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# check info file for updated values
|
|
|
|
# especially the state for checking loop
|
|
|
|
source ${infoFile}
|
2020-10-29 23:27:30 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
done
|
|
|
|
echo "WAIT LOOP: DONE" >> $logFile
|
|
|
|
|
|
|
|
########################################
|
|
|
|
# AFTER FINAL SETUP TASKS
|
|
|
|
|
|
|
|
# delete setup data from RAM
|
|
|
|
sudo rm ${setupFile}
|
|
|
|
|
2021-09-05 17:04:26 +02:00
|
|
|
# signal that setup phase is over
|
2021-08-04 00:18:30 +02:00
|
|
|
sed -i "s/^setupPhase=.*/setupPhase='done'/g" ${infoFile}
|
|
|
|
|
2021-08-30 12:06:18 +02:00
|
|
|
########################################
|
|
|
|
# AFTER SETUP REBOOT
|
|
|
|
# touchscreen activation, start with configured SWAP, fix LCD text bug
|
2021-09-09 01:19:09 +02:00
|
|
|
sudo cp /home/admin/raspiblitz.log /home/admin/raspiblitz.setup.log
|
2021-08-30 12:06:18 +02:00
|
|
|
/home/admin/config.scripts/blitz.shutdown.sh reboot finalsetup
|
|
|
|
sleep 100
|
|
|
|
exit 0
|
2021-08-26 17:41:53 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
else
|
|
|
|
|
|
|
|
############################
|
|
|
|
############################
|
|
|
|
# NORMAL START BOOTSTRAP (not executed after setup)
|
|
|
|
# Blockchain & Lightning not running
|
|
|
|
############################
|
|
|
|
|
|
|
|
#################################
|
|
|
|
# FIX BLOCKCHAINDATA OWNER (just in case)
|
|
|
|
# https://github.com/rootzoll/raspiblitz/issues/239#issuecomment-450887567
|
|
|
|
#################################
|
|
|
|
sudo chown bitcoin:bitcoin -R /mnt/hdd/bitcoin 2>/dev/null
|
|
|
|
|
|
|
|
#################################
|
|
|
|
# FIX BLOCKING FILES (just in case)
|
|
|
|
# https://github.com/rootzoll/raspiblitz/issues/1901#issue-774279088
|
|
|
|
# https://github.com/rootzoll/raspiblitz/issues/1836#issue-755342375
|
|
|
|
sudo rm -f /mnt/hdd/bitcoin/bitcoind.pid 2>/dev/null
|
|
|
|
sudo rm -f /mnt/hdd/bitcoin/.lock 2>/dev/null
|
|
|
|
|
|
|
|
################################
|
|
|
|
# DELETE LOG & LOCK FILES
|
|
|
|
################################
|
|
|
|
# LND and Blockchain Errors will be still in systemd journals
|
|
|
|
|
|
|
|
# /mnt/hdd/bitcoin/debug.log
|
|
|
|
sudo rm /mnt/hdd/${network}/debug.log 2>/dev/null
|
|
|
|
# /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log
|
|
|
|
sudo rm /mnt/hdd/lnd/logs/${network}/${chain}net/lnd.log 2>/dev/null
|
|
|
|
# https://github.com/rootzoll/raspiblitz/issues/1700
|
|
|
|
sudo rm /mnt/storage/app-storage/electrs/db/mainnet/LOCK 2>/dev/null
|
2018-12-11 00:53:07 +01:00
|
|
|
|
2018-10-16 12:50:36 +02:00
|
|
|
fi
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
##############################
|
|
|
|
##############################
|
|
|
|
# BOOSTRAP IN EVERY SITUATION
|
|
|
|
##############################
|
2021-04-20 00:26:49 +02:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
sed -i "s/^setupPhase=.*/setupPhase='starting'/g" ${infoFile}
|
2019-01-09 21:10:35 +01:00
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
# if a WIFI config exists backup to HDD
|
|
|
|
configWifiExists=$(sudo cat /etc/wpa_supplicant/wpa_supplicant.conf 2>/dev/null| grep -c "network=")
|
|
|
|
if [ ${configWifiExists} -eq 1 ]; then
|
|
|
|
echo "Making Backup Copy of WIFI config to HDD" >> $logFile
|
|
|
|
sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /mnt/hdd/app-data/wpa_supplicant.conf
|
|
|
|
fi
|
|
|
|
|
2021-08-27 16:54:13 +02:00
|
|
|
# make sure lndAddress & lndPort exist in configfile
|
2021-08-04 00:18:30 +02:00
|
|
|
valueExists=$(cat ${configFile} | grep -c 'lndPort=')
|
|
|
|
if [ ${valueExists} -eq 0 ]; then
|
|
|
|
lndPort=$(sudo cat /mnt/hdd/lnd/lnd.conf | grep "^listen=*" | cut -f2 -d':')
|
|
|
|
if [ ${#lndPort} -eq 0 ]; then
|
|
|
|
lndPort="9735"
|
|
|
|
fi
|
|
|
|
echo "lndPort='${lndPort}'" >> ${configFile}
|
|
|
|
fi
|
|
|
|
valueExists=$(cat ${configFile} | grep -c 'lndAddress=')
|
|
|
|
if [ ${valueExists} -eq 0 ]; then
|
|
|
|
echo "lndAddress=''" >> ${configFile}
|
|
|
|
fi
|
|
|
|
|
|
|
|
# load data from config file fresh
|
|
|
|
echo "load configfile data" >> $logFile
|
|
|
|
source ${configFile}
|
|
|
|
|
|
|
|
# update public IP on boot - set to domain if available
|
|
|
|
/home/admin/config.scripts/internet.sh update-publicip ${lndAddress}
|
2020-12-24 18:58:52 +01:00
|
|
|
|
2021-09-09 12:51:50 +02:00
|
|
|
# make constant UASP entry in raspiblitz.conf if still done by flag file
|
|
|
|
# uaspForced comes from blitz.datadrive.sh status
|
|
|
|
if [ ${uaspForced} -eq 1 ]; then
|
|
|
|
entryExists=$(cat /mnt/hdd/raspiblitz.conf 2>/dev/null | grep -c 'forceUasp=on')
|
|
|
|
if [ ${entryExists} -eq 0 ]; then
|
|
|
|
sudo sed -i '/forceUasp=.*/d' /mnt/hdd/raspiblitz.conf
|
|
|
|
echo "forceUasp=on" >> /mnt/hdd/raspiblitz.conf
|
|
|
|
echo "DONE forceUasp=on recorded in raspiblitz.conf" >> $logFile
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2019-04-25 15:01:53 +02:00
|
|
|
#################################
|
2020-05-03 23:58:34 +02:00
|
|
|
# MAKE SURE USERS HAVE LATEST LND CREDENTIALS
|
2019-04-25 15:01:53 +02:00
|
|
|
#################################
|
|
|
|
source ${configFile}
|
|
|
|
if [ ${#network} -gt 0 ] && [ ${#chain} -gt 0 ]; then
|
2019-04-27 23:04:20 +02:00
|
|
|
|
2020-05-03 23:58:34 +02:00
|
|
|
echo "running LND users credentials update" >> $logFile
|
|
|
|
sudo /home/admin/config.scripts/lnd.credentials.sh sync >> $logFile
|
2020-02-10 20:44:41 +01:00
|
|
|
|
2019-04-25 15:01:53 +02:00
|
|
|
else
|
2021-08-27 03:59:21 -04:00
|
|
|
echo "skipping LND credentials sync" >> $logFile
|
2019-04-25 15:01:53 +02:00
|
|
|
fi
|
|
|
|
|
2020-07-04 01:00:15 +02:00
|
|
|
################################
|
|
|
|
# MOUNT BACKUP DRIVE
|
|
|
|
# if "localBackupDeviceUUID" is set in
|
|
|
|
# raspiblitz.conf mount it on boot
|
|
|
|
################################
|
|
|
|
source ${configFile}
|
2020-07-04 01:57:12 +02:00
|
|
|
echo "Checking if additional backup device is configured .. (${localBackupDeviceUUID})" >> $logFile
|
2020-07-12 11:03:44 +01:00
|
|
|
if [ "${localBackupDeviceUUID}" != "" ] && [ "${localBackupDeviceUUID}" != "off" ]; then
|
2020-07-04 01:57:12 +02:00
|
|
|
echo "Yes - Mounting BackupDrive: ${localBackupDeviceUUID}" >> $logFile
|
2020-07-04 13:00:35 +02:00
|
|
|
sudo /home/admin/config.scripts/blitz.backupdevice.sh mount >> $logFile
|
2020-07-04 01:17:22 +02:00
|
|
|
else
|
2020-07-04 01:47:24 +02:00
|
|
|
echo "No additional backup device was configured." >> $logFile
|
2020-07-04 01:00:15 +02:00
|
|
|
fi
|
|
|
|
|
2019-12-12 14:51:21 +01:00
|
|
|
#####################################
|
|
|
|
# CLEAN HDD TEMP
|
|
|
|
#####################################
|
|
|
|
|
|
|
|
echo "CLEANING TEMP DRIVE/FOLDER" >> $logFile
|
|
|
|
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh clean temp)
|
|
|
|
if [ ${#error} -gt 0 ]; then
|
|
|
|
echo "FAIL: ${error}" >> $logFile
|
|
|
|
else
|
|
|
|
echo "OK: Temp cleaned" >> $logFile
|
|
|
|
fi
|
|
|
|
|
2021-08-04 00:18:30 +02:00
|
|
|
###############################
|
|
|
|
# RAID data check (BRTFS)
|
|
|
|
###############################
|
|
|
|
# see https://github.com/rootzoll/raspiblitz/issues/360#issuecomment-467698260
|
|
|
|
|
|
|
|
if [ ${isRaid} -eq 1 ]; then
|
|
|
|
echo "TRIGGERING BTRFS RAID DATA CHECK ..."
|
|
|
|
echo "Check status with: sudo btrfs scrub status /mnt/hdd/"
|
|
|
|
sudo btrfs scrub start /mnt/hdd/
|
|
|
|
fi
|
|
|
|
|
2020-05-26 19:07:40 +02:00
|
|
|
######################################
|
|
|
|
# PREPARE SUBSCRIPTIONS DATA DIRECTORY
|
|
|
|
######################################
|
|
|
|
|
2021-08-27 03:59:21 -04:00
|
|
|
if [ -d "/mnt/hdd/app-data/subscriptions" ]; then
|
2020-05-26 19:07:40 +02:00
|
|
|
echo "OK: subscription data directory exists"
|
|
|
|
else
|
|
|
|
echo "CREATE: subscription data directory"
|
|
|
|
sudo mkdir /mnt/hdd/app-data/subscriptions
|
|
|
|
sudo chown admin:admin /mnt/hdd/app-data/subscriptions
|
|
|
|
fi
|
|
|
|
|
2020-06-17 22:20:06 +02:00
|
|
|
# make sure that bitcoin service is active
|
|
|
|
sudo systemctl enable ${network}d
|
|
|
|
|
2021-08-24 20:28:32 +02:00
|
|
|
# make sure setup/provision is marked as done
|
|
|
|
sudo rm /home/admin/provision.flag
|
2021-08-04 00:18:30 +02:00
|
|
|
sed -i "s/^setupPhase=.*/setupPhase='done'/g" ${infoFile}
|
|
|
|
sed -i "s/^state=.*/state=ready/g" ${infoFile}
|
2021-08-24 20:52:19 +02:00
|
|
|
sed -i "s/^message=.*/message='Node Running'/g" ${infoFile}
|
2021-08-04 00:18:30 +02:00
|
|
|
|
2019-05-29 15:50:37 +01:00
|
|
|
echo "DONE BOOTSTRAP" >> $logFile
|
|
|
|
exit 0
|