deploy-busunit-interactive 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. #!/bin/bash
  2. #
  3. # Copyright (c) 2019 Clementine Computing LLC.
  4. #
  5. # This file is part of PopuFare.
  6. #
  7. # PopuFare is free software: you can redistribute it and/or modify
  8. # it under the terms of the GNU Affero General Public License as published by
  9. # the Free Software Foundation, either version 3 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # PopuFare is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU Affero General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU Affero General Public License
  18. # along with PopuFare. If not, see <https://www.gnu.org/licenses/>.
  19. #
  20. GITURL="https://tree.clementinecomputing.com/clementinecomputing/popufare"
  21. echo ""
  22. echo ' _____ __ '
  23. echo ' | __ \ / _| '
  24. echo ' | |__) |__ _ __ _ _| |_ __ _ _ __ ___ '
  25. echo ' | ___/ _ \| '"'"'_ \| | | | _/ _` | '"'"'__/ _ \'
  26. echo ' | | | (_) | |_) | |_| | || (_| | | | __/'
  27. echo ' |_| \___/| .__/ \__,_|_| \__,_|_| \___|'
  28. echo ' | | '
  29. echo ' |_| '
  30. echo ""
  31. echo "This script attempts to setup a default installation of Popufare on a busunit (a Raspberry Pi, say)"
  32. echo "by setting up and configuring the system."
  33. echo ""
  34. echo "THIS SCRIPT CHANGES SYSTEM WIDE PARAMETERS AND COULD HAVE SERIOUS CONSEQUENCES TO THE MACHINE IT'S RUN"
  35. echo "ON."
  36. echo ""
  37. echo "As such, this scripts needs root access (via sudo)."
  38. echo "This script is meant to be a 'helper' script and isn't meant to be all encompassing. Among other things,"
  39. echo "this script will:"
  40. echo ""
  41. echo " * setup a 'bus' user and group"
  42. echo " * add the 'pi' user to the 'bus' group"
  43. echo " * clone the Popufare repo, build it's binaries and install them in the '/home/bus' user directory"
  44. echo " * copy over appropriate config files to the appropriate locations in the '/hom/ebus' user directory"
  45. echo " * setup ssh keys and credentials"
  46. echo " * setup the PPP config files"
  47. echo " * alter /boot/config.txt and /etc/modules to enable serial and sound setup"
  48. echo " * setup a 'kiosk' service for the front end DIU"
  49. echo " * setup 'rc.local' to start and monitor bus Popufare services on startup"
  50. echo " * setup legacy data directories in '/mnt/data2'"
  51. echo ""
  52. echo "Most parameters have options to prompt the user for installation."
  53. echo ""
  54. echo "This script should be used with caution and as a helper for an installation rather than a 'turn key' soluation."
  55. echo "For example, the ssh keys default to the UNSECURE 'snakeoil' default keys provided the repo for easy setup and"
  56. echo "MUST BE CHANGED for a production installation."
  57. echo ""
  58. echo "In addition, the host and other config file options should be set on a per installation basis, as should the custom"
  59. echo "DIU interface, rules, drivers.txt entries, etc."
  60. echo ""
  61. echo "This script should help in getting a Raspberry Pi ready for use with Popufare but should be thought of also as a"
  62. echo "record of what relevant files there are to change and where to look."
  63. echo ""
  64. echo "As Popufare matures, this installation script or something similar can accomodate a more seamless installation but"
  65. echo "this is what is provided now."
  66. echo ""
  67. echo "Popufare is free software so please feel free to contribute at:"
  68. echo ""
  69. echo " https://tree.clementinecomputing.com/clementinecomputing/popufare"
  70. echo ""
  71. echo -n "Hit return to continue [ok]: "
  72. read hitreturn
  73. DATESTR=`date '+%Y%m%d%H%M%S'`
  74. ###### basic sanity checks to make sure we're installing on a Raspberry Pi
  75. ######
  76. if [[ ! -e /etc/os-release ]] ; then
  77. echo -n "Are you sure you want to install? '/etc/os-release' does not exist and this system might not be a Raspberry Pi. Continue? [y/N]: "
  78. read fnfok
  79. if [[ ! "$fnfok" =~ ^[yY]$ ]] ; then
  80. echo "cancelling installalation"
  81. echo ""
  82. exit
  83. else
  84. echo "ok, continuing installation..."
  85. fi
  86. else
  87. grep -P '^PRETTY_NAME="Raspbian' /etc/os-release 2>&1 > /dev/null
  88. r=$?
  89. if [[ $r != 0 ]] ; then
  90. echo -n "Raspbian not detected in '/etc/os-release'. This might not be Raspberry Pi. Continue with installation? [y/N]: "
  91. read okcontinue
  92. if [[ ! "$okcontinue" =~ ^[yY]$ ]] ; then
  93. echo "cancelling installation"
  94. echo ""
  95. exit
  96. else
  97. echo "ok, continuing installation..."
  98. fi
  99. fi
  100. fi
  101. echo ""
  102. ######
  103. ######
  104. echo -n "Install package dependencies? [Y/n]: "
  105. read adddeps
  106. if [[ "$adddeps" =~ ^[yY]?$ ]]; then
  107. deps="espeak mplayer git ppp ppp-dev"
  108. echo ""
  109. echo " Installing: $deps"
  110. sudo apt-get update
  111. sudo apt-get install -y $deps
  112. echo ""
  113. echo -n " Remove unused packages (free up space)? [Y/n]: "
  114. read remunused
  115. if [[ "$remunused" =~ ^[yY]?$ ]]; then
  116. remdeps="libreoffice libreoffice-base-core libreoffice-common \
  117. libreoffice-core libreoffice-help-common libreoffice-help-en-gb \
  118. libreoffice-help-en-us libreoffice-l10n-en-gb \
  119. libreoffice-style-colibre libreoffice-style-tango"
  120. echo ""
  121. echo " Removing: $remdeps"
  122. sudo apt-get remove -y $remdeps
  123. sudo apt-get autoremove -y --purge
  124. echo ""
  125. fi
  126. fi
  127. echo ""
  128. ######
  129. ######
  130. echo -n "Create 'bus' user? [Y/n]: "
  131. read createbususer
  132. if [[ "$createbususer" =~ ^[yY]?$ ]]; then
  133. echo "... creating 'bus' user and group"
  134. sudo adduser bus
  135. sudo usermod -a -G dialout bus
  136. fi
  137. echo ""
  138. echo -n "Add 'pi' to 'bus' group? [Y/n]: "
  139. read addpibus
  140. if [[ "$addpibus" =~ ^[yY]$ ]]; then
  141. echo "... add 'pi' to 'bus' group"
  142. sudo usermod -a -G bus pi
  143. fi
  144. echo ""
  145. echo "Creating /home/bus/(bin|database|config) with group write permissions"
  146. sudo mkdir -p /home/bus/bin
  147. sudo mkdir -p /home/bus/database
  148. sudo mkdir -p /home/bus/config
  149. sudo chown -R bus:bus /home/bus/bin
  150. sudo chown -R bus:bus /home/bus/database
  151. sudo chown -R bus:bus /home/bus/config
  152. sudo chmod -R g+w /home/bus/bin
  153. sudo chmod -R g+w /home/bus/database
  154. sudo chmod -R g+w /home/bus/config
  155. echo ""
  156. echo -n "Repo path (hit return to automatically clone the repo and use that) []: "
  157. read repolocation
  158. tmpdir=""
  159. if [[ "$repolocation" == "" ]] ; then
  160. tmpdir=`mktemp -d`
  161. repolocation="$tmpdir/popufare"
  162. pushd $tmpdir
  163. git clone "$GITURL"
  164. popd
  165. fi
  166. echo "Setting up binaries..."
  167. bd=/home/bus/popufare/busunit
  168. d=/home/bus/popufare/busunit/bin/native
  169. diudir=/home/bus/popufare/busunit/DIUv2
  170. tc=/home/bus/popufare/busunit/testing/config
  171. sudo cp -R $repolocation /home/bus
  172. sudo chown -R bus:bus /home/bus/popufare
  173. sudo bash -c " su - bus -c ' cd /home/bus/popufare/busunit ; ./build_all.sh native ; ' "
  174. sudo bash -c " cd /home/bus/bin ; cp -fRL $d/avls . ; cp -fRL $d/billdb . ; cp -fRL $d/client_supervisor . ; cp -fRL $d/debug_client . ; cp -fRL $d/diu_minder . ; cp -fRL $d/ipc_server . "
  175. sudo bash -c " cd /home/bus/bin ; cp -fRL $d/paddlemgr . ; cp -fRL $d/passdb . ; cp -fRL $d/piu_minder . ; cp -fRL $d/send_billing_record . ; cp -fRL $d/send_magstripe . "
  176. sudo bash -c " cd /home/bus/bin ; cp -fRL $d/gps_minder . "
  177. sudo bash -c " cd /home/bus/bin ; cp -fRL $bd/DIUv2/diu_kiosk . "
  178. sudo bash -c " cd /home/bus/bin ; cp -fRL $bd/scripts/init_bus.sh . ; cp -fRL $bd/scripts/update_loop.sh . ; cp -fRL $bd/scripts/setup-serial.py . ; cp -fRL $bd/scripts/get_net_ids.sh . "
  179. sudo bash -c " cd /home/bus/bin ; cp -fRL $bd/scripts/connection_tether.sh . ; cp -fRL $bd/scripts/reset-gps.py ./reset-gps "
  180. sudo bash -c " cd /home/bus/bin ; cp -fRL $bd/scripts/apply_update.sh . ; cp -fRL $bd/scripts/apply_update_legacy.sh . ; cp -fRL $bd/scripts/apply_update_popufare.sh . "
  181. sudo bash -c " cd /home/bus/bin ; cp -fRL $bd/scripts/fix_pkg_perm.sh . "
  182. sudo bash -c " cd /home/bus/bin ; cp -fRL $bd/scripts/unpack_server_data.sh . "
  183. sudo bash -c " cd /home/bus/bin ; cp -fRL $bd/scripts/say . "
  184. sudo bash -c " cd /home/bus/bin ; cp -fRL $bd/scripts/volumeset . "
  185. sudo bash -c " cd /home/bus/config ; cp -fRL $diudir/html . ; "
  186. sudo bash -c " cd /home/bus/config ; cp $bd/passdb/init.scm . ; cp $bd/passdb/rfid_patterns.txt . ; cp $bd/avls/avls_freq.txt . "
  187. sudo bash -c " cd /home/bus/config ; cp $bd/passdb/init.scm . ; cp $bd/passdb/rfid_patterns.txt . ; cp $bd/avls/avls_freq.txt . "
  188. sudo bash -c " cd /home/bus/config ; cp $tc/equipnum.txt . ; cp $tc/serial.txt serial_num "
  189. sudo bash -c " rm -f /home/bus/bin/common_values.sh ; cp $bd/scripts/common_values.sh /home/bus/bin "
  190. ## server endpoint config files
  191. ##
  192. ## sync_server_desc, sync_target, server_list, syn_port
  193. sudo cp /home/bus/popufare/busunit/testing/config/config.tgz.checksum /home/bus/config/config.tgz.checksum
  194. sudo cp /home/bus/popufare/busunit/testing/config/config.tgz.version /home/bus/config/config.tgz.version
  195. sudo cp /home/bus/popufare/busunit/testing/config/firmware.tgz.checksum /home/bus/config/firmware.tgz.checksum
  196. sudo cp /home/bus/popufare/busunit/testing/config/firmware.tgz.version /home/bus/config/firmware.tgz.version
  197. sudo cp /home/bus/popufare/busunit/testing/config/package.tgz.checksum /home/bus/config/package.tgz.checksum
  198. sudo cp /home/bus/popufare/busunit/testing/config/package.tgz.version /home/bus/config/package.tgz.version
  199. sudo mkdir -p /home/bus/config/server
  200. echo ""
  201. ##### paddle setup
  202. #####
  203. echo -n "Setup paddles? [Y/n]: "
  204. read setuppaddles
  205. if [[ "$setuppaddles" =~ ^[yY]?$ ]] ; then
  206. echo -n "Paddle location? (blank for default testing paddles) []: "
  207. read paddlocation
  208. if [[ "$paddlelocation" == "" ]] ; then
  209. paddlelocation=$bd/busunit/testing
  210. fi
  211. echo "Using '$paddlelocation/*.paddle'..."
  212. sudo bash -c " cd /home/bus/config ; cp $bd/testing/*.paddle . "
  213. fi
  214. echo ""
  215. ##### rules setup
  216. #####
  217. echo -n "Setup rules? [Y/n]: "
  218. read setuprules
  219. if [[ "$setuprules" =~ ^[yY]?$ ]] ; then
  220. echo -n "Rule file? (blank for default testing rules) []: "
  221. read rulelocation
  222. if [[ "$rulelocation" == "" ]] ; then
  223. rulelocation=$bd/testing/rules-ORG.scm
  224. fi
  225. echo "Setting up rules from '$rulelocation'..."
  226. sudo bash -c " cd /home/bus/config ; cp $rulelocation rules.scm "
  227. fi
  228. echo ""
  229. ##### equipment number setup
  230. #####
  231. echo -n "Equipment number? [9999]: "
  232. read equipnum
  233. if [[ "$equipnum" == "" ]] ; then
  234. equipnum=9999
  235. fi
  236. echo "Setting equipment number to '$equipnum'..."
  237. sudo bash -c " echo $equipnum > /home/bus/config/equipnum.txt "
  238. echo ""
  239. ##### key setup
  240. #####
  241. echo -n "Setup secure communcation setup? [Y/n]: "
  242. read tunnelsetup
  243. if [[ "$tunnelsetup" =~ ^[yY]?$ ]] ; then
  244. echo -n " 'id_rsa' private key location? (default to snakeoil) []: "
  245. read keylocation
  246. if [[ "$keylocation" == "" ]] ; then
  247. keylocation=/home/bus/popufare/server/docker/snakeoil_id_rsa
  248. fi
  249. echo " Using '$keylocation' for private key..."
  250. sudo mkdir -p /home/bus/.ssh
  251. sudo chown -R bus:bus /home/bus/.ssh
  252. sudo cp $keylocation /home/bus/.ssh/id_rsa_bus
  253. sudo chown bus:bus /home/bus/.ssh/id_rsa_bus
  254. sudo chmod 400 /home/bus/.ssh/id_rsa_bus
  255. echo ""
  256. echo -n " Tunnel port? [6055]: "
  257. read tunnelport
  258. if [[ "$tunnelport" == "" ]] ; then
  259. tunnelport=6055
  260. fi
  261. echo ""
  262. echo -n " Tunnel user and host? [bus@example.com]: "
  263. read tunnelhost
  264. if [[ "$tunnelhost" == "" ]] ; then
  265. tunnelhost='bus@example.com'
  266. fi
  267. echo ""
  268. echo -n " Adding values to '/home/bus/bin/common_values.sh'..."
  269. sed -i 's;^SSH_DEFAULT_TARGET=;#SSH_DEFAULT_TARGET=;g' /home/bus/bin/common_values.sh
  270. sed -i 's;^SSH_DEFAULT_PORT=;#SSH_DEFAULT_PORT=;g' /home/bus/bin/common_values.sh
  271. sed -i 's;^SSH_DEFAULT_IDENTITY=;#SSH_DEFAULT_IDENTITY=;g' /home/bus/bin/common_values.sh
  272. sed -i 's;^SSH_TARGET=;#SSH_TARGET=;g' /home/bus/bin/common_values.sh
  273. sed -i 's;^SSH_PORT=;#SSH_PORT=;g' /home/bus/bin/common_values.sh
  274. sed -i 's;^SSH_IDENTITY=;#SSH_IDENTITY=;g' /home/bus/bin/common_values.sh
  275. echo 'SSH_DEFAULT_TARGET="'"$tunnelhost"'"' >> /home/bus/bin/common_values.sh
  276. echo 'SSH_DEFAULT_PORT="'"$tunnelport"'"' >> /home/bus/bin/common_values.sh
  277. echo 'SSH_DEFAULT_IDENTITY="/home/bus/.ssh/id_rsa_bus"' >> /home/bus/bin/common_values.sh
  278. echo '' >> /home/bus/bin/common_values.sh
  279. echo 'SSH_TARGET="$SSH_DEFAULT_TARGET"' >> /home/bus/bin/common_values.sh
  280. echo 'SSH_PORT="$SSH_DEFAULT_PORT"' >> /home/bus/bin/common_values.sh
  281. echo 'SSH_IDENTITY="$SSH_DEFAULT_IDENTITY"' >> /home/bus/bin/common_values.sh
  282. echo ""
  283. fi
  284. echo ""
  285. ##### drivers setup
  286. #####
  287. echo -n "'drivers.txt' location? (default to test) []: "
  288. read driverlocation
  289. if [[ "$driverlocation" == "" ]] ; then
  290. driverlocation=/home/bus/popufare/busunit/DIUv2/drivers.txt
  291. fi
  292. echo "Using '$driverlocation' for drivers.txt ..."
  293. sudo cp $driverlocation /home/bus/config
  294. echo ""
  295. ##### setup fona ppp
  296. #####
  297. echo -n "Setup FONA ppp files? [Y/n]: "
  298. read setupfona
  299. if [[ "$setupfona" =~ ^[yY]?$ ]] ; then
  300. echo " Creating /etc/ppp/peers/ and /etc/chatscripts/"
  301. sudo mkdir -p /etc/ppp/peers/
  302. sudo mkdir -p /etc/chatscripts/
  303. echo " /home/bus/popufare/busunit/ppp-dialer/etc/ppp/peers/fona -> /etc/ppp/peers/gprs"
  304. echo " /home/bus/popufare/busunit/ppp-dialer/etc/chatscripts/gprs -> /etc/chatscripts/gprs"
  305. sudo cp /home/bus/popufare/busunit/ppp-dialer/etc/ppp/peers/fona /etc/ppp/peers/gprs
  306. sudo cp /home/bus/popufare/busunit/ppp-dialer/etc/chatscripts/gprs /etc/chatscripts/gprs
  307. echo ""
  308. fi
  309. #echo -n "Setup FONA to connect at startup? [Y/n]: "
  310. #read fonanetwork
  311. #
  312. #if [[ "$fonanetwork" =~ ^[yY]?$ ]] ; then
  313. # echo " Creating '/etc/network/interfaces.d/fona'..."
  314. # sudo echo 'auto fona' > /etc/network/interfaces.d/fona
  315. # sudo echo 'iface fona inet ppp' >> /etc/network/interfaces.d/fona
  316. # sudo echo ' provider fona' >> /etc/network/interfaces.d/fona
  317. #fi
  318. ##### Setup config.txt
  319. #####
  320. echo -n "Setup '/boot/config.txt'? (Note this could have serious consequences, use with caution) [y/N]: "
  321. read setupconfig
  322. if [[ "$setupconfig" =~ ^[yY]$ ]] ; then
  323. tmpfn=`mktemp`
  324. bfn=`basename $tmpfn`
  325. echo " Saving 'config.txt' to /root/$bfn"
  326. sudo cp /boot/config.txt $tmpfn
  327. sudo mv $tmpfn /root/$bfn
  328. echo " adding> enable_uart=1"
  329. sudo sed -i 's;^enable_uart=;#enable_uart=;g' /boot/config.txt
  330. sudo bash -c 'echo "enable_uart=1" >> /boot/config.txt'
  331. echo " adding> dtoverlay=pi3-disable-bt"
  332. sudo sed -i 's;^dtoverlay=pi3-disable-bt;#dtoverlay=pi3-disable-bt;g' /boot/config.txt
  333. sudo bash -c 'echo "dtoverlay=pi3-disable-bt" >> /boot/config.txt'
  334. echo " adding> dtoverlay=pi3-disable-wifi"
  335. sudo sed -i 's;^dtoverlay=pi3-disable-wifi;#dtoverlay=pi3-disable-wifi;g' /boot/config.txt
  336. sudo bash -c 'echo "dtoverlay=pi3-disable-wifi" >> /boot/config.txt'
  337. fi
  338. echo ""
  339. ##### Setup sound in modules file
  340. #####
  341. echo -n "Setup sound (alter '/etc/modules')? [y/N]: "
  342. read setupsound
  343. if [[ "$setupsound" =~ ^[yY]$ ]] ; then
  344. tmpfn=`mktemp`
  345. bfn=`basename $tmpfn`
  346. echo " Saving 'modules' to /root/$bfn"
  347. sudo cp /etc/modules $tmpfn
  348. sudo mv $tmpfn /root/$bfn
  349. sudo sed -i 's;^snd-bcm2835;#snd-bcm2835;g' /etc/modules
  350. echo ' adding> snd-bcm2835'
  351. sudo bash -c 'echo "snd-bcm2835" >> /etc/modules'
  352. # disabled for now. Force audio to go through 3.5mm jack from 'raspi-config'.
  353. #
  354. # ...
  355. # trying to mitigate the 'first two seconds cutoff of audio' problem
  356. # https://github.com/alexa-pi/AlexaPi/wiki/Devices#raspberry-pi
  357. #
  358. #tfn=`mktemp`
  359. #echo '@reboot vcgencmd force_audio hdmi 1' > $tfn
  360. #echo "adding `cat $tfn`"
  361. #sudo crontab $tfn
  362. #rm $tfn
  363. fi
  364. ##### Change hostname
  365. #####
  366. echo -n "Change hostname? [y/N]: "
  367. read changehostname
  368. if [[ "$changehostname" =~ ^[yY]$ ]] ; then
  369. echo -n " New hostname [popufaredev]: "
  370. read newhostname
  371. if [[ "$newhostname" == "" ]] ; then
  372. newhostname=popufaredev
  373. fi
  374. echo " Saving /etc/hostname to /root/hostname.$DATESTR"
  375. sudo cp /etc/hostname /root/hostname.$DATESTR
  376. sudo bash -c "echo '$newhostname' > /etc/hostname"
  377. tfn=`mktemp`
  378. echo -e '127.0.0.1\tlocalhost' > $tfn
  379. echo -e '::1\t\tlocalhost ip6-localhost ip6-loopback' >> $tfn
  380. echo -e 'ff02::1\t\tip6-allnodes' >> $tfn
  381. echo -e 'ff02::2\t\tip6-allrouters' >> $tfn
  382. echo '' >> $tfn
  383. echo -e '127.0.1.1\t'"$newhostname" >> $tfn
  384. echo " Saving /etc/hosts to /root/hosts.$DATESTR"
  385. sudo cp /etc/hosts /root/hosts.$DATESTR
  386. echo " Creating new /etc/hosts file"
  387. sudo mv $tfn /etc/hosts
  388. sudo chmod 644 /etc/hosts
  389. fi
  390. ##### Setup kiosk
  391. #####
  392. echo -n "Setup kiosk service? [Y/n]: "
  393. read setupkiosk
  394. if [[ "$setupkiosk" =~ ^[yY]?$ ]] ; then
  395. echo " /home/bus/popufare/busunit/rootfs/etc/systemd/system/kiosk.service -> /lib/systemd/system/kiosk.service"
  396. sudo cp /home/bus/popufare/busunit/rootfs/etc/systemd/system/kiosk.service /lib/systemd/system/kiosk.service
  397. echo " enabling kiosk.service ('systemctl enable kiosk.service')"
  398. sudo systemctl enable kiosk.service
  399. ## Changing hostname will screw up chromium if it's already been run under a different
  400. ## hostname. Remove the files that cause the problems so Chromium can run without
  401. ## issue.
  402. ##
  403. echo " removing chromium 'Singleton*' files"
  404. sudo rm -rf /home/bus/.config/chromium/Singleton*
  405. fi
  406. echo ""
  407. ##### Setup startup
  408. #####
  409. echo -n "Setup startup 'rc.local'? [Y/n]: "
  410. read setupstartup
  411. if [[ "$setupstartup" =~ ^[yY]?$ ]] ; then
  412. tmpfn=`mktemp`
  413. bfn=`basename $tmpfn`
  414. echo " saving /etc/rc.local to /root/$bfn"
  415. sudo cp /etc/rc.local $tmpfn
  416. sudo mv $tmpfn /root/$bfn
  417. echo " /home/bus/popufare/busunit/rootfs/etc/rc.local -> /etc/rc.local"
  418. sudo cp /home/bus/popufare/busunit/rootfs/etc/rc.local /etc/rc.local
  419. fi
  420. echo ""
  421. ##### setup legacy data directories
  422. #####
  423. echo -n "Setup legacy data directories? [y/N]: "
  424. read setuplegacy
  425. if [[ "$setuplegacy" =~ ^[yY]$ ]] ; then
  426. sudo mkdir -p /mnt/data
  427. sudo mkdir -p /mnt/data2
  428. sudo chown -R bus:bus /mnt/data
  429. sudo chown -R bus:bus /mnt/data2
  430. fi
  431. #####
  432. #####
  433. ##### final permissions setup
  434. #####
  435. echo "Setting up final permission for /home/bus/(bin|database|config)"
  436. sudo chown -R bus:bus /home/bus/bin
  437. sudo chown -R bus:bus /home/bus/database
  438. sudo chown -R bus:bus /home/bus/config
  439. echo ""
  440. if [[ "$tmpdir" != '' ]] ; then
  441. echo "... should remove $tmpdir"
  442. #rm -rf $tmdpri
  443. fi
  444. echo "done"