Enable autostart

From Rsewiki
Revision as of 10:23, 22 December 2023 by Jca (talk | contribs) (→‎Hostname update)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Back to Robobot B

Autostart

Start app to display IP on Regbot display, log CPU temperature and synchronize hostname

Make an on-reboot script in the home directory

cp ~/svn/robobot/setup/on_reboot.bash ~/

This file is something like:

#!/bin/bash
# script to start applications after a reboot
#
# run the app to show IP of raspberry on the Teensy display.
mkdir -p /home/local/svn/log
cd /home/local/svn/log
# save the last reboot date
echo "Rebooted" >> /home/local/rebootinfo.txt
date >> /home/local/rebootinfo.txt
# start IP display (and button start) task
../robobot/ip_disp/build/ip_disp &
# save PID for IP display task for debugging
echo "ip_disp started with PID:" >> /home/local/rebootinfo.txt
pgrep -l ip_disp >> /home/local/rebootinfo.txt
exit 0


Use crontab to run this script at reboot

crontab -e

If asked, select the preferred editor (suggesting nano).

Add this line at the end:

@reboot /home/local/on_reboot.bash

Hostname update

A script updates the Raspberry Pi hostname, with the name in ~/svn/log/robotname. The script rename_host.bash is:

#!/bin/bash
hn=`hostname`
f="/home/local/svn/log/robotname"
if [ -f $f ]; 
then # file exist
 # get (new) name in file to variable nn
 nn=`cat $f`
 echo "found name " $nn
 yy=$(expr length $nn)
 if [ $yy -gt 2 ];
 then # length is longer than 2 characters
   if [ $hn != $nn ]; 
   then # replace old hostname with new
     echo ++++++++++ >> rebootinfo.txt
     date >> rebootinfo.txt
     echo new name is $nn, so rename host from $hn >> rebootinfo.txt
     hostnamectl set-hostname $nn
     sed -i "s/$hn/$nn/g" /etc/hosts
   fi
 fi
else
 echo "File >" $f "< not found."
fi

The script needs to be run as root; it is, therefore set to run as part of the boot process.

Create the script in /etc/init.d

sudo nano /etc/init.d/host_rename.sh

Enter the following lines into the new file.

#!/bin/bash
bash /home/local/svn/robobot/setup/rename_host.bash

Make the file executable and add it to run-level 2 (before networking is started)

sudo chmod +x /etc/init.d/host_rename.sh
sudo ln -s /etc/init.d/host_rename.sh /etc/rc2.d/S99host_rename

The script is then executed when the Raspberry boots, and if the hostname does not match that of the Teensy, then the hostname is modified.

The script makes a note in the file '/home/local/svn/robobot/setup/rebootinfo.txt (owned by 'root') if the name is changed.