Raspberry Pi Model As Environment Variable
From Wiki
				
				
				Jump to navigationJump to search
				
				Overview
Run a script at start that leaves an environment variable set.
In this particular case, an application needed to know which version of a Raspberry Pi it was running on. This information is available in the kernel ring buffer, and is available in the /var/log/messages. I did not want to grep the log every time I needed the information, rather, I wanted an environment variable set.
Copy the text below into the respective files (you'll need to be root), then execute the following commands.
sudo chmod 755 /etc/init.d/rpimodel.sh sudo chmod 644 /etc/profile.d/rpimodel.sh sudo systemctl enable rpimodel
Next time the system is started, /etc/rpimodel should contain the Raspberry Pi model, and the environment variable RPIMODEL should be set.
$ cat /etc/rpimodel RPIMODEL="Raspberry Pi Zero W Rev 1.1" $ set | grep RPIMODEL RPIMODEL='Raspberry Pi Zero W Rev 1.1' $
/etc/init.d/rpimodel.sh
#! /bin/sh
### BEGIN INIT INFO
# Provides:          rpimodel
# Required-Start:    $syslog $network +ntp
# Required-Stop:     $null
# Should-Start:      glibc
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Set RPIMODEL based on dmesg
# Description:       Read the 'Machine model:' string using 'dmesg'
#                    and export it as RPIMODEL variable.
### END INIT INFO
PATH=/sbin:/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start () {
  RPIMODEL=`dmesg | grep -oP 'fdt:Machine model: \K.*'`
  export RPIMODEL
  echo "RPIMODEL=\"${RPIMODEL}\"" >/etc/rpimodel
  exit 0
}
case "$1" in
  start|"")
        do_start
        ;;
  restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
  stop)
        # No-op
        ;;
  status)
        # No-op
        ;;
  *)
        echo "Usage: rpimodel.sh [start|stop]" >&2
        exit 3
        ;;
esac
:
/etc/profile.c/rpimodel.sh
if [ -r /etc/rpimodel ]; then
    . /etc/rpimodel
    export RPIMODEL
fi
/lib/systemd/system/rpimodel.service
[Unit] SourcePath=/etc/init.d/rpimodel.sh Description=Set RPIMODEL based on dmesg Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target After=glibc.service [Service] Type=forking Restart=no TimeoutSec=5min IgnoreSIGPIPE=no KillMode=process GuessMainPID=no RemainAfterExit=yes SysVStartPriority=3 ExecStart=/etc/init.d/rpimodel.sh start ExecStop=/etc/init.d/rpimodel.sh stop [Install] WantedBy=multi-user.target
