pi-build/build-a-pi

510 wiersze
14 KiB
Plaintext
Czysty Zwykły widok Historia

2019-12-24 20:57:51 +00:00
#!/bin/bash
#MAIN SCRIPT FOR NEW PI BUILD
#20191210 KM4ACK
2020-01-13 12:14:55 +00:00
#Credit to TB-14 for the inspiration for this script
2019-12-24 20:57:51 +00:00
MYDIR=$HOME/pi-build
DIR=$HOME/temp
mkdir -p $DIR
TEMPCRON=$DIR/tempcron
touch $TEMPCRON
WHO=$(whoami)
RB=$(ls $HOME/.config/ | grep KM4ACK)
LOG=$HOME/Documents/mylog.txt
touch $LOG
2019-12-26 23:52:35 +00:00
if [ $WHO = "root" ]
then
echo "No need for sudo with this script"
exit 0
fi
2019-12-24 20:57:51 +00:00
if [ -z "$RB" ]
then
echo
else
2019-12-26 23:52:35 +00:00
echo "It looks like you have run this script before"
2019-12-24 20:57:51 +00:00
echo "It is only designed to be run one time"
echo "It may cause issues if you try to run multiple times"
echo "Press CRTL+C to exit or"
read -n 1 -s -r -p "Press any key to continue"
fi
clear;echo;echo
read -p "What is your call sign? " CALL
echo "Please stand by while we grab a few updates"
echo "This may take a while if you haven't already"
echo "updated the system. You will be presented with"
echo "a pop up window shortly to select which"
echo "applications you wish to install."
read -n 1 -s -r -p "Press any key to begin"
sudo apt-get update
sudo apt-get -y upgrade
sudo apt -y full-upgrade
touch $HOME/.config/KM4ACK
mkdir -p $HOME/bin
echo "export PATH=$PATH:$HOME/bin" >> $HOME/.bashrc
if ! hash yad 2>/dev/null; then
sudo apt install -y yad
fi
2019-12-30 16:44:49 +00:00
if ! hash jq 2>/dev/null; then
sudo apt install -y jq
fi
2019-12-24 20:57:51 +00:00
##########################################
MAIN () {
yad --height=600 --width=400 --center --list --checklist --column=Install --column=App --separator="," --text "Select the apps you wish to install." --title="Build-a-Pi by KM4ACK" --button="Exit:1" --button="Install Selected:2" < $MYDIR/app-list > $MYDIR/appchoices
BUTTON=$?
if [ $BUTTON = "3" ]
then
yad --width=500 --height=500 --center --button="Close:1" --wrap --text-info < info.txt
MAIN
elif [ $BUTTON = "252" ]
then
exit 0
elif [ $BUTTON = "1" ]
then
exit 0
fi
echo $BUTTON
2019-12-30 21:58:45 +00:00
cat $MYDIR/appchoices | sed 's/TRUE,//g' | sed 's/,//' | sed 's/$/=yes/' > $MYDIR/config
rm $MYDIR/appchoices
2019-12-24 20:57:51 +00:00
};export -f MAIN
MAIN
############################################################################
source $MYDIR/config
if [ $HOTSPOT = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING AUTOHOTSPOT"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
cd $DIR
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/autohotspotN-setup
chmod +x $DIR/autohotspotN-setup
sudo $DIR/autohotspotN-setup
echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >> $TEMPCRON
rm $DIR/autohotspotN-setup
fi
if [ $GPS = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2020-01-10 22:31:54 +00:00
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING GPS Tools"
echo "##################################################"
2019-12-24 20:57:51 +00:00
cd $DIR
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsinstall
chmod +x $DIR/gpsinstall
sudo $DIR/gpsinstall
rm $DIR/gpsinstall
fi
if [ $CONKY = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING CONKY"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
if ! hash conky 2>/dev/null; then
sudo apt install -y conky
fi
sudo apt-get install -y ruby2.3
sudo gem install gpsd_client
sudo gem install maidenhead
cp $MYDIR/conky/.conkyrc $HOME/.conkyrc
mkdir -p $HOME/bin/conky
cp $MYDIR/conky/* $HOME/bin/conky/
chmod +x $HOME/bin/conky/get-grid $HOME/bin/conky/temp-conv $HOME/bin/conky/get-freq $HOME/bin/conky/grid
sed -i "s/N0CALL/$CALL/" $HOME/.conkyrc
echo "@reboot sleep 20 && export DISPLAY=:0 && /usr/bin/conky" >> $TEMPCRON
fi
if [ $FLRIG = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING FLRIG"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
if ! hash flrig 2>/dev/null; then
sudo apt install -y flrig
fi
fi
if [ $FLDIGI = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING FLDIGI"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
if ! hash fldigi 2>/dev/null; then
sudo apt install -y fldigi
fi
fi
2020-01-04 00:17:03 +00:00
if [ $FLAMP = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING FLAMP"
echo "##################################################"
sleep 2
2020-01-10 22:31:54 +00:00
if ! hash flamp 2>/dev/null; then
2020-01-04 00:17:03 +00:00
sudo apt install -y flamp
fi
fi
if [ $FLMSG = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING FLMSG"
echo "##################################################"
sleep 2
2020-01-10 22:31:54 +00:00
if ! hash flmsg 2>/dev/null; then
2020-01-04 00:17:03 +00:00
sudo apt install -y flmsg
fi
fi
if [ $PAT = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING PAT WINLINK"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
if ! hash pat 2>/dev/null; then
cd $DIR
wget https://github.com/la5nta/pat/releases/download/v0.8.0/pat_0.8.0_linux_armhf.deb
sudo dpkg -i $DIR/pat_0.8.0_linux_armhf.deb
pat http &
sudo killall pat
sudo systemctl start pat@$WHO
sudo systemctl enable pat@$WHO
#/usr/bin/pat http &
#sudo killall pat
cd $DIR
wget https://raw.githubusercontent.com/km4ack/patmenu/master/patlogin
bash patlogin
2019-12-30 16:44:49 +00:00
jq '.ax25.rig = '\"my-rig\"'' $HOME/.wl2k/config.json | jq '.ardop.rig = '\"my-rig\"'' | jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' > ~/Desktop/config.json
mv ~/Desktop/config.json ~/.wl2k/config.json
2019-12-24 20:57:51 +00:00
sed -i "s/\"http_addr\": \".*\",/\"http_addr\": \"0.0.0.0:8080\",/" $HOME/.wl2k/config.json
#enable gps in pat is gps=yes
if [ $GPS = "yes" ]
then
sed -i 's/"enable_http": false,/"enable_http": true,/' $HOME/.wl2k/config.json
fi
fi
fi
if [ $ARDOPC = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING PIARDOPC"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
mkdir -p $HOME/ardop
cd $HOME/ardop
wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piardopc
sudo chmod +x $HOME/ardop/piardopc
fi
if [ $ARDOPGUI = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING ARDOP-GUI"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
mkdir -p $HOME/ardop
cd $HOME/ardop
wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piARDOP_GUI
sudo chmod +x $HOME/ardop/piARDOP_GUI
ln -s $HOME/ardop/piARDOP_GUI $HOME/Desktop/ARDOP-GUI
FILE=$HOME/.config/G8BPQ/ARDOP_GUI.conf
mkdir -p $HOME/.config/G8BPQ
touch $FILE
echo "[General]" >> $FILE
echo "Host=local" >> $FILE
echo "Port=8515" >> $FILE
fi
if [ $PATMENU = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING Pat Menu"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
git clone https://github.com/km4ack/patmenu.git $HOME/patmenu && bash $HOME/patmenu/setup
fi
if [ $HAMLIB = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING RIG CONTROL"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
cd $DIR
wget https://sourceforge.net/projects/hamlib/files/hamlib/3.3/hamlib-3.3.tar.gz
tar -xzf $DIR/hamlib-3.3.tar.gz
rm $DIR/hamlib-3.3.tar.gz
cd $DIR/hamlib-3.3
./configure
make
sudo make install
sudo ldconfig
fi
if [ $GARIM = "yes" ] > /dev/null 2>&1
2019-12-30 21:58:45 +00:00
then
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING GARIM"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
cd $HOME
sudo apt-get install -y fluid
wget https://www.whitemesa.net/garim/src/garim-1.1.tar.gz
tar xzvf garim-1.1.tar.gz
rm garim-1.1.tar.gz
cd $HOME/garim-1.1
./configure
make
sudo make install
fi
if [ $DIREWOLF = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING DIREWOLF"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
cd $HOME
git clone https://www.github.com/wb2osz/direwolf
cd $HOME/direwolf
sudo apt-get install -y libasound2-dev
make
sudo make install
make install-conf
sed -i "s/N0CALL/$CALL/" "$HOME/direwolf.conf"
sed -i 's/# ADEVICE plughw:1,0/ADEVICE plughw:1,0/' $HOME/direwolf.conf
fi
if [ $AX25 = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING AX25"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
sudo apt-get install -y ax25-tools
echo "wl2k "$CALL" 1200 255 7 Winlink" | sudo tee -a /etc/ax25/axports
sudo apt-get install -y ax25-apps
fi
if [ $JS8CALL = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING JS8CALL"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
cd $DIR
2019-12-26 23:52:35 +00:00
JS8LATE=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/href=//' | sed 's/"//g')
JS8PKG=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/\///g' | sed 's/href="http:files.js8call.com[0-9].[0-9].[0-9]//' | sed 's/"//')
wget $JS8LATE
sudo dpkg -i $JS8PKG
2019-12-24 20:57:51 +00:00
sudo apt-get --fix-broken -y install
2019-12-26 23:52:35 +00:00
sudo dpkg -i $JS8PKG
2019-12-24 20:57:51 +00:00
fi
if [ $PULSE = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING PULSE AUDIO"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
sudo apt-get install -y pulseaudio
sudo apt-get install -y pavucontrol
fi
if [ $M0IAX = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING M0IAX TOOLS"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
pip3 install gps
pip3 install maidenhead
pip3 install psutil
cd $HOME/bin
wget https://raw.githubusercontent.com/m0iax/js8calltools/master/js8callgpsUI.py
wget https://raw.githubusercontent.com/m0iax/js8calltools/master/gps_listener.py
wget https://raw.githubusercontent.com/m0iax/js8call_aprsmessaging_interface/master/aprs_msgJS8Call.py
2020-01-10 22:31:54 +00:00
wget https://raw.githubusercontent.com/m0iax/js8calltools/master/configAndSettings.py
2019-12-24 20:57:51 +00:00
chmod +x js8callgpsUI.py aprs_msgJS8Call.py
ln -s $HOME/bin/js8callgpsUI.py $HOME/Desktop/JS8-GPS-Tool
ln $HOME/bin/aprs_msgJS8Call.py $HOME/Desktop/JS8Call-Messenger
fi
if [ $WSJTX = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING WSJTX"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
cd $DIR
2020-01-23 14:54:44 +00:00
wget --no-check-certificate https://physics.princeton.edu/pulsar/k1jt/wsjtx_2.1.2_armhf.deb
sudo dpkg -i wsjtx_2.1.2_armhf.deb
2019-12-24 20:57:51 +00:00
sudo apt-get --fix-broken -y install
2020-01-23 14:54:44 +00:00
sudo dpkg -i wsjtx_2.1.2_armhf.deb
2019-12-24 20:57:51 +00:00
fi
if [ $CHIRP = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING CHIRP"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
cd $DIR
wget https://trac.chirp.danplanet.com/chirp_daily/LATEST/
CHIRPBUILD=$(cat index.html | grep .tar.gz | grep chirp-daily- | awk '{ print $6 }' | sed 's/.*"//' | sed 's/>//' | sed 's/[<].*$//')
sudo apt-get -y install python-gtk2 python-serial python-libxml2
mkdir $HOME/chirp
cd $HOME/chirp
wget https://trac.chirp.danplanet.com/chirp_daily/LATEST/$CHIRPBUILD
tar -xzf $CHIRPBUILD
CHIRPDIR=$(echo $CHIRPBUILD | sed 's/[.].*$//')
cd $CHIRPDIR
sudo python setup.py install
fi
if [ $XASTIR = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING XASTIR"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
sudo apt-get install -y xastir
sudo sed -i 's/Exec=xastir/Exec=sudo xastir/' /usr/share/applications/xastir.desktop
fi
if [ $YAAC = "yes" ] > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
then
2019-12-30 21:58:45 +00:00
echo;echo;echo
2020-01-01 00:13:39 +00:00
echo "##################################################"
echo "##########INSTALLING YAAC"
echo "##################################################"
2019-12-30 21:58:45 +00:00
sleep 2
2019-12-24 20:57:51 +00:00
cd $DIR
wget https://www.ka2ddo.org/ka2ddo/YAAC.zip
sudo apt-get install -y openjdk-8-jre librxtx-java
mkdir -p $HOME/YAAC
cd $HOME/YAAC
touch YAAC
echo "#!/bin/bash" >> YAAC
echo "java -jar $HOME/YAAC/YAAC.jar" >> YAAC
chmod +x YAAC
ln -sf $HOME/YAAC/YAAC $HOME/Desktop/YAAC
ln -sf $HOME/YAAC/YAAC $HOME/bin/YAAC
unzip $DIR/YAAC.zip
fi
2020-01-01 00:13:39 +00:00
if [ $EES = "yes" ] > /dev/null 2>&1
then
echo;echo;echo
echo "##################################################"
echo "##########INSTALLING KM4ACK EMERGENCY EMAIL SERVER"
echo "##################################################"
sleep 2
#install PHP7.3 if not installed
#this will also install apache2
if ! hash php7.3 2>/dev/null; then
sudo apt install -y php7.3
fi
#Install the KM4ACK EES
cd $DIR
wget https://github.com/km4ack/EES-LITE/archive/master.zip
unzip master.zip
sudo cp -r $DIR/EES-LITE-master/* /var/www/html/
rm -rf $DIR/EES-LITE-master
rm $DIR/master.zip
cd /var/www/html
sudo chmod +x /var/www/html/firstrun
sudo /var/www/html/./firstrun
#/var/www/html/./schedule
sudo mv /var/www/html/index.html /var/www/html/index.html.org
sudo sed -i "s/N0CALL/$CALL/" /var/www/html/config.php
sudo sed -i 's/REMINDER\ FOR\ OPERATOR\ TO\ DO\ SOMETHING/ENABLE\ AUTO\ POST\ REPLY\ IN\ CRON/' /var/www/html/config.php
cd $DIR
#Change Pat Winlink port so it won't interfer with the EES
sed -i 's/0.0.0.0:8080/0.0.0.0:5000/' $HOME/.wl2k/config.json
sed -i 's/PORT=8080/PORT=5000/' $HOME/patmenu/config
sudo killall pat
sudo systemctl start pat@pi
fi
2019-12-30 00:33:53 +00:00
#add virtual sound card link for pulse audio
#20191228
cd $DIR
cat > tempsound <<EOF
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
EOF
sudo chown root:root tempsound
sudo mv tempsound /etc/asound.conf
#End 20191228 edits
2019-12-24 20:57:51 +00:00
crontab $TEMPCRON
2020-01-01 00:13:39 +00:00
/var/www/html/./schedule > /dev/null 2>&1
2019-12-24 20:57:51 +00:00
rm -rf $DIR
echo;echo;echo "rebooting in 5 seconds"
sleep 5
sudo reboot
2020-01-10 22:31:54 +00:00