forked from CMU-cabot/cabot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install-service.sh
executable file
·70 lines (60 loc) · 2.65 KB
/
install-service.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
# Copyright (c) 2022 Carnegie Mellon University
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
if [ $(id -u) -eq 0 ]; then
echo "please do not run as root: $0"
exit
fi
pwd=`pwd`
scriptdir=`dirname $0`
cd $scriptdir
scriptdir=`pwd`
cd $scriptdir/../
projectdir=`pwd`
project=$(basename $projectdir)
sudo ln -sf $projectdir /opt/$project
sudo ln -sf $projectdir /opt/cabot
## install cabot.service
INSTALL_DIR=$HOME/.config/systemd/user
mkdir -p $INSTALL_DIR
sed "s|/opt/cabot|/opt/$project|g" $scriptdir/config/cabot.service | sed "s|%ROS_DISTRO%|$ROS_DISTRO|" > $INSTALL_DIR/cabot.service
systemctl --user daemon-reload
# do not enable cabot here, cabot will be started by ble server
#systemctl --user enable cabot
## install cabot-config.service
SYS_INSTALL_DIR=/etc/systemd/system
sed "s|/opt/cabot|/opt/$project|g" $scriptdir/config/cabot-config.service | sudo tee $SYS_INSTALL_DIR/cabot-config.service > /dev/null
sudo systemctl daemon-reload
sudo systemctl enable cabot-config --now
## install bluetooth-check.service
SYS_INSTALL_DIR=/etc/systemd/system
sed "s|/opt/cabot|/opt/$project|g" $scriptdir/config/check-bluetooth.service | sudo tee $SYS_INSTALL_DIR/check-bluetooth.service > /dev/null
sudo systemctl daemon-reload
sudo systemctl enable check-bluetooth --now
## add pliviledge for nvidia-smi
## nvidia-smi should be used by the cabot user instead of the system user
## the system user's nvidia-smi setting does not affect to the applications of the user
USERNAME=$(id -un)
if [ ! -e /etc/sudoers.d/$USERNAME ]; then
sudo tee /etc/sudoers.d/$USERNAME <<- EOF
Cmnd_Alias USERCOMMANDS = /usr/bin/nvidia-smi
$USERNAME ALL=PASSWD: ALL, NOPASSWD: USERCOMMANDS
EOF
fi