1#!/bin/sh 2 3my_name="$0" 4 5check_required_files() { 6 [ -f "$1" ] || { 7 echo "$my_name: $1 is missing" 8 exit 1 9 } 10} 11 12check_device() { 13 ls -1 /dev/tpm[0-9]* > /dev/null 2>&1 || { 14 echo "device driver not loaded, skipping." 15 exit 0 16 } 17 chown tss:tss /dev/tpm[0-9]* && chmod 600 /dev/tpm* 18} 19 20rm_stale_pidfile() { 21 if [ -e "$1" ]; then 22 exe="/proc/$(cat "$1")/exe" 23 { [ -s "$exe" ] && [ "$(readlink -f "$exe")" = "$2" ]; } || rm -f "$1" 24 fi 25} 26 27start() { 28 printf "Starting tpm2-abrmd: " 29 check_device 30 rm_stale_pidfile /var/run/tpm2-abrmd.pid /usr/sbin/tpm2-abrmd 31 start-stop-daemon -S -q -o -b -m -p /var/run/tpm2-abrmd.pid -c tss:tss -x /usr/sbin/tpm2-abrmd -- ${DAEMON_OPTS} || { 32 echo "FAIL" 33 exit 1 34 } 35 pidof /usr/sbin/tpm2-abrmd > /var/run/tpm2-abrmd.pid 36 echo "OK" 37} 38 39stop() { 40 printf "Stopping tpm2-abrmd: " 41 start-stop-daemon -K -q -o -p /var/run/tpm2-abrmd.pid -u tss -x /usr/sbin/tpm2-abrmd || { 42 echo "FAIL" 43 exit 1 44 } 45 rm_stale_pidfile /var/run/tpm2-abrmd.pid /usr/sbin/tpm2-abrmd 46 echo "OK" 47} 48 49check_required_files /etc/dbus-1/system.d/tpm2-abrmd.conf 50 51# defaults 52DAEMON_OPTS="--tcti=device --logger=syslog --max-connections=20" 53 54# Read configuration variable file if it is present 55[ -r /etc/default/tpm2-abrmd ] && . /etc/default/tpm2-abrmd 56 57case "$1" in 58 start) 59 start 60 ;; 61 stop) 62 stop 63 ;; 64 restart|reload) 65 stop 66 sleep 1 67 start 68 ;; 69 *) 70 echo "Usage: tpm2-abrmd {start|stop|restart|reload}" >&2 71 exit 1 72esac 73 74exit 0 75