Starting Greengrass V1 automatically on a Raspberry Pi
Starting Greengrass V1 automatically on a Raspberry PiGreengrass core on a Raspberry Pi needs to be started manually.
The following script will create a system-D control file and use it to start the service.
The service will then restart automatically at any reboot. Non disclaimer.
Preconditions
- This script with Greengrass V1 only. Greengrass V2 doesn't need it anymore.
- The script has been tested on a Raspberry Pi 4B with Debian. The script will most likely work on all distributions using system-D
- Have Greengrass V1 installed.
Non Disclaimer
- The scripts needs to be executed with elevate super privileges. This is mandatory. It may however created harm to your system. Check the script upfront. There is no warranty.
- The script will delete any old versions of the system-D service file /etc/systemd/system/aws-ggc.service
- The script will need a bash shell and the following commands installed (very likely to be preinstalled):
- echo, systemctl, if
The Installation Script
Create a file with the name installSystemD.sh:
#!/usr/bin/env bash
# version 1.1
# March, 2021
SERVICEFILE="/etc/systemd/system/aws-ggc.service"
if [[ -e ${SERVICEFILE} ]];then
echo "AWS Greengrass Service is already installed as SYSTEMD, trying to stop
the service."
echo "*****";
systemctl stop aws-ggc.service
rm ${SERVICEFILE}
fi
echo "[Unit]" > ${SERVICEFILE};
echo "Description=AWS Greengrass Service" >> ${SERVICEFILE};
echo "After=syslog.target network.target" >> ${SERVICEFILE};
echo " " >> ${SERVICEFILE};
echo "[Service]" >> ${SERVICEFILE};
echo "Type=forking" >> ${SERVICEFILE};
echo "User=root" >> ${SERVICEFILE};
echo "WorkingDirectory=/greengrass/ggc/core" >> ${SERVICEFILE};
echo "ExecStart=/greengrass/ggc/core/greengrassd start" >> ${SERVICEFILE};
echo "ExecStop=/greengrass/ggc/core/greengrassd stop" >> ${SERVICEFILE};
echo "Restart=always" >> ${SERVICEFILE};
echo "RestartSec=60" >> ${SERVICEFILE};
echo " " >> ${SERVICEFILE};
echo "[Install]" >> ${SERVICEFILE};
echo "WantedBy=multi-user.target" >> ${SERVICEFILE};
systemctl daemon-reload
systemctl enable aws-ggc.service
systemctl start aws-ggc.service
echo "Done installing prerequisites (SYSTEMD)"Installation of the Service
Make the file executable:
$ chmod u+x installSystemD.sh
Execute the file with super user privileges:
$ sudo ./installSystemD.sh
Check for Success
This command checks whether the service started. It doesn't check whether Greengrass Core is working!
Execute the following command:
pi@raspberrypi:~ $ systemctl status aws-ggc.service
● aws-ggc.service
Loaded: loaded (/etc/systemd/system/aws-ggc.service; enabled; vendor preset:
Active: active (running) since Mon 2020-11-23 11:53:08 CET; 30min ago
Process: 396 ExecStart=/greengrass/ggc/core/greengrassd start (code=exited, st
Main PID: 452 (5)
Tasks: 132 (limit: 4915)
Memory: 236.8M
CGroup: /system.slice/aws-ggc.service
├─ 452 /greengrass/ggc/packages/1.11.0/bin/daemon -core-dir /greengra
├─ 634 /lambda/greengrassSystemComponents -runAs=tes
├─ 639 /lambda/greengrassSystemComponents -runAs=shadow
├─ 647 /lambda/greengrassSystemComponents -runAs=cloudSpooler
├─ 665 /lambda/greengrassSystemComponents -runAs=connectionManager
├─ 679 /lambda/greengrassSystemComponents -runAs=deviceCertificateMan
├─ 692 /lambda/greengrassSystemComponents -runAs=shadowSync
├─ 694 /lambda/greengrassSystemComponents -runAs=secretManager
├─ 772 /lambda/ipdetector
├─ 773 java -cp /lambda/stream_manager/AWSGreengrassStreamManager.jar
└─1209 python3.7 -u /runtime/python/lambda_runtime.py --handler=green
Nov 23 11:52:54 raspberrypi systemd[1]: Starting aws-ggc.service...
Nov 23 11:52:54 raspberrypi greengrassd[396]: Setting up greengrass daemon
Nov 23 11:52:54 raspberrypi greengrassd[396]: Validating hardlink/softlink prote
Nov 23 11:52:54 raspberrypi greengrassd[396]: Waiting for up to 1m10s for Daemon
Nov 23 11:53:08 raspberrypi greengrassd[396]: Greengrass successfully started wi
Nov 23 11:53:08 raspberrypi systemd[1]: Started aws-ggc.service.Abort with <ctrl> c
Stopping the Service
$ sudo systemctl stop aws-ggc.service
- 1030 views