Enable autostart

From Rsewiki
Revision as of 10:08, 22 December 2023 by Jca (talk | contribs)

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
 nn=`cat $f`
 yy= $(expr length $nn)
 if [ $yy -gt 2 ];
 then
   if [ $hn != $nn ]; 
   then
     hostnamectl set-hostname $nn
     # seems like /etc/hosts is not updated, but /etc/hostname is
     sed -i "s/$hn/$nn/g" /etc/hosts
   else
     echo Same hostname, all is fine.
   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.