#!/bin/sh /etc/rc.common
|
|
|
|
START=99
|
|
USE_PROCD=1
|
|
|
|
BOINCEXE_NAME=boinc_client
|
|
BOINCDIR=/opt/boinc/
|
|
PRESETDIR=/usr/share/boinc
|
|
BOINCUSR=boinc
|
|
BOINCEXE_OPTS="--check_all_logins --redirectio --dir $BOINCDIR"
|
|
PID_FILE="/var/run/$BOINCEXE_NAME.pid"
|
|
|
|
start_service() {
|
|
# First check that BOINCDIR exists
|
|
if ! [ -d "$BOINCDIR" ]; then
|
|
if ! mkdir -p $BOINCDIR 2>/dev/null ; then
|
|
echo "ERROR: $BOINCDIR doesn't exist and couldn't be created"
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
# adjust some presettings if necessary
|
|
for f in global_prefs_override.xml remote_hosts.cfg; do
|
|
if ! [ -f $BOINCDIR/$f ]; then
|
|
cp $PRESETDIR/$f $BOINCDIR
|
|
fi
|
|
done
|
|
|
|
# and ensure it is accessible by boinc
|
|
BOINCDIR_OWNER="$(ls -ld $BOINCDIR | awk '{print $3}')"
|
|
if [ "$BOINCUSR" != "$BOINCDIR_OWNER" ] ; then
|
|
chown -R $BOINCUSR:$BOINCUSR $BOINCDIR
|
|
BOINCDIR_OWNER="$(ls -ld $BOINCDIR | awk '{print $3}')"
|
|
|
|
if [ "$BOINCUSR" != "$BOINCDIR_OWNER" ] ; then
|
|
echo "User boinc can't access $BOINC_DIR"
|
|
return 3
|
|
fi
|
|
fi
|
|
|
|
# now use procd to start boinc
|
|
procd_open_instance $BOINCEXE_NAME
|
|
|
|
procd_set_param command $BOINCEXE_NAME
|
|
procd_append_param command $BOINCEXE_OPTS
|
|
procd_set_param user $BOINCUSR
|
|
procd_set_param limits core="unlimited"
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_set_param pidfile $PID_FILE
|
|
|
|
procd_close_instance
|
|
}
|