Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ardupilot
GitHub Repository: Ardupilot/ardupilot
Path: blob/master/Tools/vagrant/initvagrant.sh
9659 views
1
#!/usr/bin/env bash
2
echo "---------- $0 start ----------"
3
4
# this script is run by the root user in the virtual machine
5
6
set -e
7
set -x
8
9
who=$(whoami)
10
echo "Initial setup of SITL-vagrant instance."
11
if [ $who != 'root' ]; then
12
echo "SORRY, MUST RUN THIS SCRIPT AS ROOT, GIVING UP"
13
exit 1
14
fi
15
16
DISTRIBUTION_ID=$(lsb_release -i -s)
17
if [ ${DISTRIBUTION_ID} == 'Ubuntu' ]; then
18
DISTRIBUTION_CODENAME=$(lsb_release -c -s)
19
fi
20
21
VAGRANT_USER=ubuntu
22
if [ -e /home/vagrant ]; then
23
# prefer vagrant user
24
VAGRANT_USER=vagrant
25
fi
26
echo USING VAGRANT_USER:$VAGRANT_USER
27
28
cd /home/$VAGRANT_USER
29
30
IS_BENTO=0
31
if [ -e /etc/update-motd.d/99-bento ]; then
32
IS_BENTO=1
33
fi
34
35
# artful rootfs is 2GB without resize. Do not resize if using Bento:
36
if [ ! $IS_BENTO ]; then
37
sudo resize2fs /dev/sda1
38
fi
39
40
DASHDASHLOGIN=""
41
if false ||
42
[ ${DISTRIBUTION_CODENAME} == 'oracular' ] ||
43
[ ${DISTRIBUTION_CODENAME} == 'plucky' ] ||
44
[ ${DISTRIBUTION_CODENAME} == 'questing' ] ||
45
false; then
46
# we run out of space in tmpfs /tmp while compiling wxpython, so
47
# do it elsewhere:
48
cat <<"EOF" | sudo -H -u vagrant bash
49
mkdir -p $HOME/tmp
50
echo "export TMPDIR=$HOME/tmp" >>$HOME/.bashrc
51
echo "export TMPDIR=$HOME/tmp" >>$HOME/.profile
52
EOF
53
export TMPDIR=/home/vagrant/tmp
54
DASHDASHLOGIN="--login"
55
fi
56
57
echo "calling pre-reqs script..."
58
sudo $DASHDASHLOGIN -H -u $VAGRANT_USER /vagrant/Tools/environment_install/install-prereqs-ubuntu.sh -y
59
echo "...pre-reqs script done... initvagrant.sh continues."
60
61
# valgrind support:
62
apt-get install -y valgrind
63
64
# gdb support:
65
apt-get install -y gdb
66
67
sudo -u $VAGRANT_USER ln -fs /vagrant/Tools/vagrant/screenrc /home/$VAGRANT_USER/.screenrc
68
69
# enable permissive ptrace:
70
perl -pe 's/kernel.yama.ptrace_scope = ./kernel.yama.ptrace_scope = 0/' -i /etc/sysctl.d/10-ptrace.conf
71
echo 0 > /proc/sys/kernel/yama/ptrace_scope
72
73
RELEASE_CODENAME=$(lsb_release -c -s)
74
75
# build JSB sim
76
apt-get install -y libtool automake autoconf libexpat1-dev cmake
77
# libtool-bin
78
sudo --login -u $VAGRANT_USER /vagrant/Tools/scripts/build-jsbsim.sh
79
80
# adjust environment for every login shell:
81
DOT_PROFILE=/home/$VAGRANT_USER/.profile
82
echo "source /vagrant/Tools/vagrant/shellinit.sh" |
83
sudo -u $VAGRANT_USER dd conv=notrunc oflag=append of=$DOT_PROFILE
84
85
BASHRC="/home/$VAGRANT_USER/.bashrc"
86
# adjust environment for every login shell:
87
BASHRC_GIT="/vagrant/Tools/vagrant/bashrc_git"
88
echo "source $BASHRC_GIT" |
89
sudo -u $VAGRANT_USER dd conv=notrunc oflag=append of=$BASHRC
90
91
# link a half-way decent .mavinit.scr into place:
92
sudo --login -u $VAGRANT_USER ln -sf /vagrant/Tools/vagrant/mavinit.scr /home/$VAGRANT_USER/.mavinit.scr
93
94
# no multipath available, stop mutlipathd complaining about lack of data:
95
if [ ${RELEASE_CODENAME} == 'jammy' ]; then
96
cat >>/etc/multipath.conf <<EOF
97
blacklist { devnode "sda" }
98
blacklist { devnode "sdb" }
99
EOF
100
fi
101
102
103
#Plant a marker for sim_vehicle that we're inside a vagrant box
104
touch /ardupilot.vagrant
105
106
# Now you can run
107
# vagrant ssh -c "screen -d -R"
108
echo "---------- $0 end ----------"
109
110
111